Amazon ConnectのWebRTC通話をWebアプリケーションに実装する

西山です。

Amazon Connect アドベントカレンダー 2023、5日目の記事です!

ギークフィードとクラスメソッド、スカイアーチHRソリューションズのメンバーによるAmazon Connect盛りだくさんのカレンダーです。

ぜひ他の記事もチェックしてみてください。

 

Amazon Connectのre:Invent期間中のアップデートで1,2を争うものはWebRTCと双方向SMSのチャネル追加です。

これで音声通話、チャットと合わせて4つのチャネルに対応しています。

今回はWebRTCの通話についてです。

 

 

UIをカスタマイズしたWebRTC通話をWebアプリに実装したい

 

Amazon ConnectのWebRTC通話は利用するにあたって2つのオプションがあります。

 

  1. AWSによって用意されているウィジェットを利用する
  2. 自分で実装する

 

1のウィジェットの利用についてはクラスメソッド繁松さんのこちらの記事にまとめられています。

 

ウィジェットを利用することで、すぐにWebRTC通話を利用できますが、WebRTC通話を組み込むアプリケーションのUIにマッチするようにカスタマイズしたいというケースも多いのではないでしょうか。

 

今回はカスタマイズの第一歩として自分で実装し最低限のWebRTC通話を実現するところまでやってみたいと思います。

 

動作イメージ

 

今回はシンプルにボタンをクリックするとWeb通話が開始するだけです。

指定のコールフローに対してインバウンド通話がかかり、キューへ転送されます。

 

 

 

 

ソースコード(React)

 

実装のポイント

 

Amazon Connectのドキュメントには記載されていない点がいくつかありハマったのでそれらを含めてポイントをいくつか紹介します。

 

必要な権限は”connect:StartWebRTCContact”だけ

 

必要な権限はAmazon ConnectのStartWebRTCContactを実行するためのものだけです。CognitoのauthRoleなどにアタッチしましょう。

もしくは、ドキュメントにも記載されていますがStartWebRTCContactはバックエンド側の処理で行い、レスポンスをクライアントに返してChimeミーティングに参加させるという実装も可能です。

 

MeetingSessionConfigurationのパラメーターはstartWebRTCContactのレスポンスがきれいに入るわけではない

 

ぱっと見でstartWebRTCContactのレスポンスとMeetingSessionConfigurationは似ていますが、微妙に異なるのでMeetingとAttendeeでそれぞれオブジェクトを用意する必要があります。

 

meetingSession.audioVideo.start()の前にオーディオデバイスの設定を行う

 

Amazon Connectのドキュメントに書いてあるものだけで実装すると、通話は開始されますがWebアプリ側のマイクもスピーカーも全く動作しません。規定の通信デバイスを利用するようにデバイスを設定する必要があります。

 

アウトプット音声用のHTML要素を用意する

 

上記に続けて、アウトプット音声(Amazon Connectのフローアナウンスやエージェントの音声)をWebアプリ側に届けるにはaudioのHTML要素をつくってバインドする必要があります。

ビデオ通話を行う場合も、ビデオ用のHTML要素を作ってバインドする必要があります。

 

おわりに

 

今回はシンプルなin-app Web通話を実装してみました。

実際にやってみるとハマりどころが多く苦戦してしまいましたが、こちらの記事を参考にすれば比較的すぐに実装できると思います!

明日はクラスメソッド洲崎さんの投稿です。お楽しみに〜。

この記事が気に入ったら
いいね ! しよう

Twitter で

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ