將應用程式內、Web、視訊通話和螢幕共用原生整合到您的應用程式中 - Amazon Connect

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將應用程式內、Web、視訊通話和螢幕共用原生整合到您的應用程式中

若要將 Amazon Connect 應用程式內、Web、視訊通話和螢幕共用與您的應用程式整合:

  1. 使用 Amazon Connect StartWebRTCContact API 建立聯絡人。

  2. 然後使用 API 呼叫傳回的詳細資訊,使用 iOSAndroidJavaScript 的 Amazon Chime 用戶端程式庫來加入呼叫。

如需建立其他參與者的詳細資訊,請參閱 啟用多使用者應用程式內、Web 和視訊通話

如需範例應用程式,請參閱下列 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. (選用 - 圖中未顯示) 可以使用 CreateParticipantCreateParticipantConnection APIs 新增其他參與者。

開始使用

以下是要開始使用的高等級步驟:

  1. 使用 StartWebRTCContact API 以建立聯絡人。API 會傳回 Amazon Chime SDK 用戶端加入通話所需的詳細資訊。

  2. 使用 StartWebRTCContact 傳回的組態來執行個體化 Amazon Chime SDK 用戶端MeetingSessionConfiguration物件。

  3. DefaultMeetingSession 使用 執行個體化 Amazon Chime SDK 用戶端MeetingSessionConfiguration,該用戶端是在步驟 2 中建立的,以建立用戶端會議工作階段。

    • 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. 使用 meetingSession.audioVideo.start() 方法透過音訊加入 WebRTC 聯絡人。

    • iOS/Android

      meetingSession.audioVideo.start()
    • JavaScript

      await meetingSession.audioVideo.start();
  5. 使用 meetingSession.audioVideo.stop() 方法掛斷 WebRTC 聯絡人。

    • iOS/Android

      meetingSession.audioVideo.stop()
    • JavaScript

      meetingSession.audioVideo.stop();

選項步驟

如需其他操作和完整的 API 文件,請參閱平台特定的 API 概觀指南:

傳送 DTMF 音調

若要將 DTMF 傳送至呼叫,需要兩個 Amazon Connect 參與者服務 APIs:CreateParticipantConnectionSendMessage

注意

SendMessage API 的 contentType 必須是 audio/dtmf

  1. 調用 CreateParticipantConnection 以擷取 ConnectionToken。(需要 ParticipantToken 呼叫此 API。您可以在 StartWebRTCContact 回應中找到。)

  2. 使用 ConnectionToken,呼叫 SendMessage 以傳送 DT以傳送 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.audioCallAtCapacityMeetingSessionStatusCode.audioAuthenticationRejected

  • Android: MeetingSessionStatusCode.AudioCallAtCapacityMeetingSessionStatusCode.AudioAuthenticationRejected

  • JavaScript: MeetingSessionStatusCode.AudioCallAtCapacityMeetingSessionStatusCode.AudioAuthenticationRejected

參與者已從通話中移除

當客服人員將參與者從通話中移除,但其他參與者繼續聯絡時,他們將收到下列狀態碼。請注意,如果參與者移除導致聯絡結束,他們將收到此狀態或聯絡結束狀態。

  • iOS: MeetingSessionStatusCode.audioServerHungupMeetingSessionStatusCode.audioAuthenticationRejected

  • Android: MeetingSessionStatusCode.AudioServerHungupMeetingSessionStatusCode.AudioAuthenticationRejected

  • JavaScript: MeetingSessionStatusCode.AudioAttendeeRemovedMeetingSessionStatusCode.AudioAuthenticationRejected

聯絡結束

當所有參與者的實際聯絡完全結束時,他們將收到下列狀態碼。

  • iOS: MeetingSessionStatusCode.audioCallEnded

  • Android: MeetingSessionStatusCode.AudioCallEnded

  • JavaScript: MeetingSessionStatusCode.AudioCallEnded