将应用内、Web、视频通话和屏幕共享原生集成到您的应用程序中 - Amazon Connect

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将应用内、Web、视频通话和屏幕共享原生集成到您的应用程序中

要将 Amazon Connect 应用内、网络、视频通话和屏幕共享与您的应用程序集成,请执行以下操作:

  1. 使用 Amazon Connect StartWebRTCContactAPI 创建联系人。

  2. 然后使用 API 调用返回的详细信息使用适用于 iOSAndro id 或的 Amazon Chime 客户端库加入通话JavaScript

有关创建其他参与者的信息,请参阅启用多用户应用内通话、网络通话和视频通话

有关示例应用程序,请参阅以下 Github 存储库:amazon-connect-in-app-calling-examples

客户端设备如何发起应用内通话或网络通话

下图显示了客户端设备(移动应用程序或浏览器)发起应用内通话或网络通话的事件顺序。

显示客户端设备如何发起通话的概念图。
  1. 客户使用客户端应用程序(网站或应用程序)发起应用内通话或网络通话。

  2. 客户端应用程序(网站或移动应用程序)或 Web 服务器使用 Amazon Connect StartWebRTCContactAPI 启动联系人,向其传递任何属性或上下文 Amazon Connect。

  3. 客户端应用程序使用步骤 2 StartWebRTCContact中返回的详细信息加入呼叫。

  4. (可选)客户端使用 CreateParticipantConnectionAPI 接收用于通过 API 发送 DTMF 的SendMessageConnectionToken

  5. 联系到达流,再根据流进行路由,然后进入队列。

  6. 座席接受该联系。

  7. (可选)如果为客户和座席启用了视频,他们就可以开始播放视频了。

  8. (可选-未显示在图表中)可以使用CreateParticipant和添加其他参与者CreateParticipantConnection APIs。

开始使用

以下是入门的高级步骤:

  1. 使用 StartWebRTCContactAPI 创建联系人。API 会返回 Amazon Chime 软件开发工具包客户端加入通话所需的详细信息。

  2. 使用返回的配置实例化 Amazon Chime 软件开发工具包MeetingSessionConfiguration客户端对象。StartWebRTCContact

  3. 使用实例化 Amazon Chime SDK DefaultMeetingSession 客户端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 者服务:CreateParticipantConnection和。SendMessage

注意

contentType因为 SendMessage API 必须是audio/dtmf

  1. 调用CreateParticipantConnection以检索ConnectionToken。 (ParticipantToken是调用此 API 所必需的。 你可以在StartWebRTCContact回复中找到它。)

  2. 使用ConnectionToken,调SendMessage用发送 DTMF 数字。

选择音频设备

要选择音频 input/output 设备,您可以使用适用于安卓和 iOS 的 Amazon Chime SDK 客户端中的方法或适用于 iOS 的本机 iOS 功能

iOS/安卓

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/安卓

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

JavaScript

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

开始自拍视频

要开始自拍视频,请使用meetingSession.audioVideo.startLocalVideo()。有关如何枚举和选择特定设备的更多信息,请参阅客户端库 API 指南。

iOS/安卓

meetingSession.audioVideo.startLocalVideo()

JavaScript

meetingSession.audioVideo.startLocalVideoTile();

停止自拍视频

要停止自拍视频,请使用meetingSession.audioVideo.stopLocalVideo()

iOS/安卓

meetingSession.audioVideo.stopLocalVideo()

JavaScript

meetingSession.audioVideo.stopLocalVideoTile();

启用代理视频

要允许在应用程序内部接收和加载代理的视频,请使用meetingSession.audioVideo.startRemoteVideo()。您还需要实现视频磁贴观察器并绑定视频图块以显示视图。

iOS/安卓

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/安卓

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

JavaScript

meetingSession.audioVideo.unbindVideoElement(tileId);

使用数据消息

如果您需要将任何状态从代理端发送给最终用户,则可以使用数据消息。例如,当客户处于暂停状态时,您可以向客户的应用程序发送一条数据消息以显示一条消息,让他们知道他们处于暂停状态,并且他们的 video/screen 共享仍在发送中,或者您可以关闭共 video/screen 享。

iOS/安卓

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

  • 安卓:MeetingSessionStatusCode.AudioCallAtCapacityMeetingSessionStatusCode.AudioAuthenticationRejected

  • JavaScript: MeetingSessionStatusCode.AudioCallAtCapacityMeetingSessionStatusCode.AudioAuthenticationRejected

参与者已从通话中移除

当代理将某位参与者从通话中移除,但其他参与者的联系仍在继续,他们将收到以下状态码。请注意,如果移除参与者导致联系结束,则他们将收到此状态或联系结束状态。

  • iOS:MeetingSessionStatusCode.audioServerHungupMeetingSessionStatusCode.audioAuthenticationRejected

  • 安卓:MeetingSessionStatusCode.AudioServerHungupMeetingSessionStatusCode.AudioAuthenticationRejected

  • JavaScript: MeetingSessionStatusCode.AudioAttendeeRemovedMeetingSessionStatusCode.AudioAuthenticationRejected

触点结束

当所有参与者的实际联系完全结束时,他们将收到以下状态码。

  • iOS:MeetingSessionStatusCode.audioCallEnded

  • 安卓:MeetingSessionStatusCode.AudioCallEnded

  • JavaScript: MeetingSessionStatusCode.AudioCallEnded