Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Amazon Chime SDK を用いて 音声通話機能をアプリに組み込む
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kohei Ito
September 28, 2024
Technology
0
210
Amazon Chime SDK を用いて 音声通話機能をアプリに組み込む
Izumo Developers' Guild #1 登壇資料
Kohei Ito
September 28, 2024
Tweet
Share
More Decks by Kohei Ito
See All by Kohei Ito
知識ゼロからAWS認定を全冠したときにもらった質問への回答集
zetton110
0
80
Other Decks in Technology
See All in Technology
今こそ学びたいKubernetesネットワーク ~CNIが繋ぐNWとプラットフォームの「フラッと」な対話
logica0419
5
540
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.4k
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
130
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
780
配列に見る bash と zsh の違い
kazzpapa3
3
170
pool.ntp.orgに ⾃宅サーバーで 参加してみたら...
tanyorg
0
1.4k
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.2k
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
130
量子クラウドサービスの裏側 〜Deep Dive into OQTOPUS〜
oqtopus
0
150
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2.1k
今日から始めるAmazon Bedrock AgentCore
har1101
4
420
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
Featured
See All Featured
Practical Orchestrator
shlominoach
191
11k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.9k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
350
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
440
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Site-Speed That Sticks
csswizardry
13
1.1k
The Curse of the Amulet
leimatthew05
1
8.7k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
180
We Have a Design System, Now What?
morganepeng
54
8k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Transcript
Amazon Chime SDK を用いて 音声通話機能をアプリに組み込む 株式会社ヌーラボ 伊藤 浩平 Izumo Developers' Guild
#1 (2024.9.28)
自己紹介 • 名前 伊藤 浩平 • 所属 株式会社ヌーラボ サービス開発部 • 業務でやっていること
- プロジェクト管理ツール Backlog の Git ホスティング機能の開発 - ビジネスチャットツール Typetalk の保守/運用 • その他 - 島根県出雲市出身 - 子二人
Amazon Chime SDK について • Amazon Chime SDK について -
Amazon Chime の機能を部分的にアプリへ組み込むためのライブラリ - Amazon Chime と同じ通信基盤を利用できるため、信頼性が担保できる • できること - PSTN Audio - SIP Trunking - メッセージング - Web RTCとライブ文字起こし - PSTN Audio 付き WebRTC
Amazon Chime SDK について • ChimeSDKの公式デモアプリを使っている様子 S3、Amazon Transcribe(文字起こし)、Amazon Translate(翻訳)といった他の
サービスを組み合わせることで機能が拡張できる
Amazon Chime SDKをアプリへ組み込む ⚫技術検証でチャットツールに音声通話機能を追加したので紹介 - 本機能は社内のβ環境でのみ利用可 とりあえずデモ見せマス 画像生成プロンプト ”デモがあると嬉しいおじさん ”
システム構成(後ほど説明します)
処理の流れ (後ほど説明します)
1. 音声通話を実施する 2. 会議の状態変更をアプリへリアルタイムに伝える 1-①. 最寄りの Media Region を取得する 1-②.
Chimeへ会議データを作成(登録) 1-③. Chimeへ会議に紐づく出席者を作成(登録) 1-④. WebRTC Session を開始/切断する 1-⑤. 会議から出席者を削除する 以下に沿って各処理を説明します。
1. 音声通話を実施する 2. 会議の状態変更をアプリへリアルタイムに伝える 1-①. 最寄りの Media Region を取得する 1-②.
Chimeへ会議データを作成(登録) 1-③. Chimeへ会議に紐づく出席者を作成(登録) 1-④. WebRTC Session を開始/切断する 1-⑤. 会議から出席者を削除する 以下に沿って各処理を説明します。
1-① 最寄りの Media Region を取得する - フロントエンドから以下の公開APIを叩き、利用 者にとって最寄りのAWSリージョンを取得する <Media Regionとは>
Amazon Chime SDKがメディアデータを処理および転送するための 物理的なAWSリージョン - 利用者に地理的に近いメディアリージョンを指定することで、音 声やビデオ会議を行う際に、データの転送レイテンシを最小化 し、通信の品質を向上させる - 指定可能なリージョンは限定される https://nearest-media-region.l.chime.aws/ 1. 音声通話を実施する
1-② Chimeへ会議データを作成(登録) - CreateMeeting API を呼ぶ - リクエスト - ClientRequestToken:
- 一意のリクエスト識別子 - 各リクエストは異なる値を持つ必要あり - MediaRegion - 手順1-①で取得した値 - レスポンス - MeetingId - Chime で発行される 一意の会議ID 参考) Amazon Chime SDK API Reference - CreateMeeting 1. 音声通話を実施する
1-③ Chimeへ会議に紐づく出席者を作成(登録) - CreateAttendee API を呼ぶ - リクエスト - MeetingId
- 手順①-2で取得した値 - レスポンス - AttendeeId - Chime で発行される 参加者の一意の識別 子 - JoinToken - 参加者が会議に参加するためのトークン。ク ライアントアプリケーションで会議へのアクセ スを認証するために使用されます。 参考)Amazon Chime SDK API Reference - CreateAttendee 1. 音声通話を実施する
1-④ WebRTC Session を開始する - ChimeSDKのライブラリの作法に従えば簡単に セッションを開始できる (具体的な実装は割愛します。気になる方は参考のドキュメ ントを見てみてください。) -
ざっとした流れ - これまでに取得したデータをもとに MeetingSessionConfigurationを作成 - 入出力デバイス(マイク /スピーカー)と接続 - Meeetingセッションの開始 1. 音声通話を実施する 参考)amazon-chime-sdk-js APIOverview
1-⑤ 会議から出席者を削除する - DeleteAttendee API を呼ぶ - Request Syntax -
DELETE /meetings/MeetingId/attendees/AttendeeId HTTP/1.1 - URI Request Parameters - MeetingId : - 手順②で取得したID - AttendeeId: - 手順③で取得したID 1. 音声通話を実施する 参考)Amazon Chime SDK API Reference - DeleteAttendee
1-⑤ 会議から出席者を削除する - DeleteAttendee API を呼ぶ - Request Syntax -
DELETE /meetings/MeetingId/attendees/AttendeeId HTTP/1.1 - URI Request Parameters - MeetingId : - 手順②で取得したID - AttendeeId: - 手順③で取得したID 会議が24時間非アクティブであればChime側で自動的に削 除される (DeleteMeeting APIを呼べば会議の削除もできますが、今回は すぐに削除する必要もないため呼んでません) 1. 音声通話を実施する
Media Region Send media data ① Backend から ChimeSDKのAPIを叩き、 会議・出席者の登録を行う
② ①で帰ったデータをもとに、 Frontend からWebRTC Session を開始する 1. 音声通話を実施する
1. 音声通話を実施する 2. 会議の状態変更をアプリへリアルタイムに伝える 1-①. 最寄りの Media Region を取得する 1-②.
Chimeへ会議データを作成(登録) 1-③. Chimeへ会議に紐づく出席者を作成(登録) 1-④. WebRTC Session を開始/切断する 1-⑤. 会議から出席者を削除する 以下に沿って各処理を説明します。
2. 会議の状態変更をアプリへリアルタイムに伝える Event Bridge に Chime イベントを捕捉するルールを 追加し、それをトリガーにRedisを更新 Redis の
pub/sub+WebSocket で Frontend へ変更を伝播させシー ムレスに画面を更新する 今回はRedis使ってま すが、DynamoDB + DynamoDB Streams でやってもよさそうです
会議への参加(AttendeeJoin)/ 退出(AttendeeLeft) のイベントを契機にデータの更新処理を実行 2. 会議の状態変更をアプリへリアルタイムに伝える
まとめ ”Amason ChimeSDK はいいぞ🎵” - アプリへリアルタイムコミュニケーション機能を 簡単に実装できる - Amazon Chime
と同じ通信基盤を利用でき、信頼性が高い - AWS他サービスとの連携により機能の拡張性が高い