アプリ内通話、ウェブ通話、ビデオ通話、および画面共有をアプリケーションにネイティブに統合する - Amazon Connect

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

アプリ内通話、ウェブ通話、ビデオ通話、および画面共有をアプリケーションにネイティブに統合する

Amazon Connect のアプリ内通話、ウェブ通話、ビデオ通話、画面共有をアプリケーションに統合する手順は、次のとおりです。

  1. Amazon Connect の StartWebRTCContact API を使用してコンタクトを作成します。

  2. 次に、API コールによって返された詳細を使用して、iOSAndroid、または JavaScript 用の Amazon Chime クライアントライブラリを使って通話に参加します。

追加の参加者の作成については、「マルチユーザーのアプリ内通話、ウェブ通話、ビデオ通話を有効にする」を参照してください。

サンプルアプリケーションについては、Github リポジトリで amazon-connect-in-app-calling-examples を参照してください。

クライアントデバイスでアプリ内通話またはウェブ通話を開始する方法

次の図は、クライアントデバイス (モバイルアプリケーションまたはブラウザ) がアプリ内通話またはウェブ通話を開始するためのイベントの順序を示しています。

クライアントデバイスの通話開始方法を示す概念図
  1. 顧客はクライアントアプリケーション (ウェブサイトまたはアプリケーション) を使用してアプリ内通話またはウェブ通話を開始します。

  2. クライアントアプリケーション (ウェブサイトまたはモバイルアプリケーション) またはウェブサーバーは Amazon Connect StartWebRTCContact API を使用してコンタクトを開始し、 Amazon Connectに属性やコンテキストを渡します。

  3. クライアントアプリケーションは、ステップ 2 で StartWebRTCContact から返された詳細を使用して通話に参加します。

  4. (オプション) クライアントは CreateParticipantConnection API を使用して、SendMessage API を介して DTMF を送信するために ConnectionToken を受け取ります。

  5. コンタクトがフローに到達し、フローに基づいてルーティングされ、キューに入れられます。

  6. エージェントがコンタクトを受け入れます。

  7. (オプション) 顧客とエージェントに対してビデオを有効にしている場合、顧客ととエージェントはビデオを開始できます。

  8. (オプション - 図には示されていません) CreateParticipant API と CreateParticipantConnection API を使用して、参加者を追加できます。

はじめに

開始するための高レベルのステップは、次のとおりです。

  1. StartWebRTCContact API を使用してコンタクトを作成します。この API は、Amazon Chime SDK クライアントが通話に参加するのに必要な詳細を返します。

  2. StartWebRTCContact が返した設定を使用して、Amazon Chime SDK クライアントの MeetingSessionConfiguration オブジェクトをインスタンス化します。

  3. クライアントの会議セッションを作成するためにステップ 2 で作成した MeetingSessionConfiguration を使用して、Amazon Chime SDK クライアントの DefaultMeetingSession をインスタンス化します。

    • iOS

      let logger = ConsoleLogger(name: "logger") let meetingSession = DefaultMeetingSession( configuration: meetingSessionConfig, logger: logger )
    • Android

      val logger = ConsoleLogger() val meetingSession = DefaultMeetingSession( configuration = meetingSessionConfig, logger = logger, context = applicationContext )
    • JavaScript

      const logger = new ConsoleLogger('MeetingLogs', LogLevel.INFO); const deviceController = new DefaultDeviceController(logger); const configuration = new MeetingSessionConfiguration( meetingResponse, attendeeResponse ); const meetingSession = new DefaultMeetingSession( configuration, logger, deviceController );
  4. WebRTC コンタクトに音声で参加するには、meetingSession.audioVideo.start() メソッドを使用します。

    • iOS/Android

      meetingSession.audioVideo.start()
    • JavaScript

      await meetingSession.audioVideo.start();
  5. WebRTC コンタクトの接続を解除するには、meetingSession.audioVideo.stop() メソッドを使用します。

    • iOS/Android

      meetingSession.audioVideo.stop()
    • JavaScript

      meetingSession.audioVideo.stop();

オプションのステップ

追加のオペレーションと包括的な API ドキュメントについては、プラットフォーム固有の API 概要ガイドを参照してください。

DTMF トーンを送信する

通話に DTMF を送信するには、CreateParticipantConnectionSendMessage のそれぞれ 2 つの Amazon Connect Participant Service API が必要となります。

注記

SendMessage API の contentType は、audio/dtmf である必要があります。

  1. CreateParticipantConnection を呼び出して、ConnectionToken を取得します(この API を呼び出すには、ParticipantToken が必要です。これは、StartWebRTCContact で見つかります)。

  2. ConnectionToken を使用する場合は、SendMessage を呼び出して DTMF 数値を送信します。

オーディオデバイスを選択する

音声入出力デバイスを選択するには、Android および iOS 向け Amazon Chime SDK クライアントのメソッド、または iOS 向けのネイティブ iOS 機能を使用できます。

iOS/Android

meetingSession.audioVideo.listAudioDevices() meetingSession.audioVideo.chooseAudioDevice(mediaDevice)

JavaScript

await meetingSession.audioVideo.listAudioInputDevices(); await meetingSession.audioVideo.listAudioOutputDevices(); await meetingSession.audioVideo.startAudioInput(device); await meetingSession.audioVideo.chooseAudioOutput(deviceId);

音声をミュートまたはミュート解除する

ミュートしたりミュートを解除したりするには、meetingSession.audioVideo.realtimeLocalMute()meetingSession.audioVideo.realtimeLocalUnmute() を使用します。

iOS/Android

meetingSession.audioVideo.realtimeLocalMute() meetingSession.audioVideo.realtimeLocalUnmute()

JavaScript

meetingSession.audioVideo.realtimeMuteLocalAudio(); meetingSession.audioVideo.realtimeUnmuteLocalAudio();

自撮り動画を開始する

自撮り動画を開始するには、meetingSession.audioVideo.startLocalVideo() を使用します。特定のデバイスを列挙して選択する方法については、クライアントライブラリ API ガイドを参照してください。

iOS/Android

meetingSession.audioVideo.startLocalVideo()

JavaScript

meetingSession.audioVideo.startLocalVideoTile();

自撮り動画を停止する

自撮り動画を停止するには、meetingSession.audioVideo.stopLocalVideo() を使用します。

iOS/Android

meetingSession.audioVideo.stopLocalVideo()

JavaScript

meetingSession.audioVideo.stopLocalVideoTile();

エージェントのビデオを有効にする

アプリケーション内でエージェントのビデオを受信してロードすることを許可するには、meetingSession.audioVideo.startRemoteVideo() を使用します。また、ビデオタイルオブザーバーを実装し、ビデオタイルを表示ビューにバインドする必要があります。

iOS/Android

meetingSession.audioVideo.startRemoteVideo() // Implement VideoTileObserver to handle video tiles meetingSession.audioVideo.addVideoTileObserver(observer) // In videoTileDidAdd callback: meetingSession.audioVideo.bindVideoView(videoView, tileId: tileState.tileId)

JavaScript

// Remote video is received automatically when available // Implement AudioVideoObserver to handle video tiles meetingSession.audioVideo.addObserver(observer); // In videoTileDidUpdate callback: meetingSession.audioVideo.bindVideoElement(tileId, videoElement);

ビデオタイルの実装の詳細については、プラットフォーム固有の SDK ガイドを参照してください。

エージェントのビデオを無効にする

アプリケーション内でエージェントのビデオの受信やロードを禁止するには、meetingSession.audioVideo.stopRemoteVideo() を使用します。

iOS/Android

meetingSession.audioVideo.stopRemoteVideo() meetingSession.audioVideo.unbindVideoView(tileId)

JavaScript

meetingSession.audioVideo.unbindVideoElement(tileId);

データメッセージを使用する

エージェント側からエンドユーザーにステータスを送信する必要がある場合は、データメッセージを使用できます。例えば、顧客が保留中の場合、顧客のアプリケーションにデータメッセージを送信して、顧客が保留中であることとビデオ/画面共有がまだ有効になっていることを知らせるメッセージを表示したり、ビデオ/画面共有をオフにしたりできます。

iOS/Android

meetingSession.audioVideo.realtimeSendDataMessage(topic, data, lifetimeMs) meetingSession.audioVideo.addRealtimeDataMessageObserver(topic, observer)

JavaScript

meetingSession.audioVideo.realtimeSendDataMessage(topic, data, lifetimeMs); meetingSession.audioVideo.realtimeSubscribeToReceiveDataMessage(topic, callback);

停止イベントをリッスンする

audioVideoDidStop オブザーバーを通じて、コンタクトへの参加が終了したときのイベントをリッスンできます。具体的なステータスコードはプラットフォームによって異なる場合があります。

通話参加者が上限に達した場合

6 人以上のユーザーが通話に参加しようとすると、追加の参加者は次のエラーを受け取り、他の参加者が退出するまで参加できません。

  • iOS: MeetingSessionStatusCode.audioCallAtCapacity または MeetingSessionStatusCode.audioAuthenticationRejected

  • Android: MeetingSessionStatusCode.AudioCallAtCapacity または MeetingSessionStatusCode.AudioAuthenticationRejected

  • JavaScript: MeetingSessionStatusCode.AudioCallAtCapacity または MeetingSessionStatusCode.AudioAuthenticationRejected

通話から参加者が削除された場合

特定の参加者がエージェントによって通話から削除されても、他の参加者のコンタクトが続行される場合は、参加者に次のステータスコードが表示されます。参加者の削除によってコンタクトが終了する場合、参加者にはこのステータスかコンタクト終了のステータスのいずれかが表示されることに注意してください。

  • iOS: MeetingSessionStatusCode.audioServerHungup または MeetingSessionStatusCode.audioAuthenticationRejected

  • Android: MeetingSessionStatusCode.AudioServerHungup または MeetingSessionStatusCode.AudioAuthenticationRejected

  • JavaScript: MeetingSessionStatusCode.AudioAttendeeRemoved または MeetingSessionStatusCode.AudioAuthenticationRejected

コンタクトが終了した場合

すべての参加者の実際のコンタクトが完全に終了すると、次のステータスコードが表示されます。

  • iOS: MeetingSessionStatusCode.audioCallEnded

  • Android: MeetingSessionStatusCode.AudioCallEnded

  • JavaScript: MeetingSessionStatusCode.AudioCallEnded