本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将应用内、Web、视频通话和屏幕共享原生集成到您的应用程序中
要将 Amazon Connect 应用内、网络、视频通话和屏幕共享与您的应用程序集成,请执行以下操作:
-
使用 Amazon Connect StartWebRTCContactAPI 创建联系人。
-
然后使用 API 调用返回的详细信息使用适用于 iOS
、Andro id 或的 Amazon Chime 客户端库加入通话JavaScript 。
有关创建其他参与者的信息,请参阅启用多用户应用内通话、网络通话和视频通话。
有关示例应用程序,请参阅以下 Github 存储库:amazon-connect-in-app-calling-examples
客户端设备如何发起应用内通话或网络通话
下图显示了客户端设备(移动应用程序或浏览器)发起应用内通话或网络通话的事件顺序。

-
客户使用客户端应用程序(网站或应用程序)发起应用内通话或网络通话。
-
客户端应用程序(网站或移动应用程序)或 Web 服务器使用 Amazon Connect StartWebRTCContactAPI 启动联系人,向其传递任何属性或上下文 Amazon Connect。
-
客户端应用程序使用步骤 2 StartWebRTCContact中返回的详细信息加入呼叫。
-
(可选)客户端使用 CreateParticipantConnectionAPI 接收用于通过 API 发送 DTMF 的SendMessage。
ConnectionToken
-
联系到达流,再根据流进行路由,然后进入队列。
-
座席接受该联系。
-
(可选)如果为客户和座席启用了视频,他们就可以开始播放视频了。
-
(可选-未显示在图表中)可以使用CreateParticipant和添加其他参与者CreateParticipantConnection APIs。
开始使用
以下是入门的高级步骤:
-
使用 StartWebRTCContactAPI 创建联系人。API 会返回 Amazon Chime 软件开发工具包客户端加入通话所需的详细信息。
-
使用返回的配置实例化 Amazon Chime 软件开发工具包
MeetingSessionConfiguration
客户端对象。StartWebRTCContact -
使用实例化 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 );
-
-
使用
meetingSession.audioVideo.start()
方法加入有音频的 WebRTC 联系。-
iOS/Android
meetingSession.audioVideo.start()
-
JavaScript
await meetingSession.audioVideo.start();
-
-
使用
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
。
-
调用CreateParticipantConnection以检索
ConnectionToken
。 (ParticipantToken
是调用此 API 所必需的。 你可以在StartWebRTCContact回复中找到它。) -
使用
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);
使用数据消息
如果您需要将任何状态从代理端发送给最终用户,则可以使用数据消息
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.audioCallAtCapacity
或MeetingSessionStatusCode.audioAuthenticationRejected
-
安卓:
MeetingSessionStatusCode.AudioCallAtCapacity
或MeetingSessionStatusCode.AudioAuthenticationRejected
-
JavaScript:
MeetingSessionStatusCode.AudioCallAtCapacity
或MeetingSessionStatusCode.AudioAuthenticationRejected
参与者已从通话中移除
当代理将某位参与者从通话中移除,但其他参与者的联系仍在继续,他们将收到以下状态码。请注意,如果移除参与者导致联系结束,则他们将收到此状态或联系结束状态。
-
iOS:
MeetingSessionStatusCode.audioServerHungup
或MeetingSessionStatusCode.audioAuthenticationRejected
-
安卓:
MeetingSessionStatusCode.AudioServerHungup
或MeetingSessionStatusCode.AudioAuthenticationRejected
-
JavaScript:
MeetingSessionStatusCode.AudioAttendeeRemoved
或MeetingSessionStatusCode.AudioAuthenticationRejected
触点结束
当所有参与者的实际联系完全结束时,他们将收到以下状态码。
-
iOS:
MeetingSessionStatusCode.audioCallEnded
-
安卓:
MeetingSessionStatusCode.AudioCallEnded
-
JavaScript:
MeetingSessionStatusCode.AudioCallEnded