本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon Connect Streams JS 将视频通话和屏幕共享集成到您的定制代理桌面
本主题适用于开发人员。对于自定义座席桌面,您需要进行更改以支持视频通话和屏幕共享。以下是高级步骤。
注意
如果您将CCP直接嵌入到自定义代理应用程序中,请确保在CCP使用 Amazon allowFramedVideoCall
Connect Streams JS
-
使用 Amazon Connect Streams JS
来检查传入的联系人是否是网络RTC联系人。使用联系子类型 "connect:WebRTC"
,如以下代码示例所示:contact.getContactSubtype() === "connect:WebRTC"
-
您可以使用
contact contact.getName()
中的名称字段检索客户显示名称。
添加对视频的支持
完成以下步骤,在客户启用视频处理功能后添加对视频处理的支持。
-
要检查联系人是否具有视频功能,请执行以下操作:
// Return true if any connection has video send capability contact.hasVideoRTCCapabilities() // Return true if the agent connection has video send capability contact.canAgentSendVideo() // Return true if other non-agent connection has video send capability contact.canAgentReceiveVideo()
-
要检查座席是否具有处理视频通话的视频权限,请执行以下操作:
agent.getPermissions().includes('videoContact');
-
要接受视频通话,联系人必须具有视频功能,并且座席必须具有视频权限。
function shouldRenderVideoUI() { return contact.getContactSubtype() === "connect:WebRTC" && contact.hasVideoRTCCapabilities() && agent.getPermissions().includes('videoContact'); }
-
要加入视频会话,请调用
getVideoConnectionInfo
:if (shouldRenderVideoUI()) { const response = await contact.getAgentConnection().getVideoConnectionInfo(); }
-
要构建视频 UI 并加入视频会议会话,请参阅:
-
Amazon Chime SDKfor JavaScript
on GitHub -
Amazon Chime SDKReact 组件库
已开启 GitHub
-
-
为简单起见,以下代码片段使用了 Amazon Chime SDK React 组件库中的示例。
import { MeetingSessionConfiguration } from "amazon-chime-sdk-js"; import { useMeetingStatus, useMeetingManager, MeetingStatus, DeviceLabels, useLocalAudioOutput } from 'amazon-chime-sdk-component-library-react'; const App = () => ( <MeetingProvider> <MyVideoManager /> </MeetingProvider> ); const MyVideoManager = () => { const meetingManager = useMeetingManager(); if (shouldRenderVideoUI()) { const response = await contact.getAgentConnection().getVideoConnectionInfo(); const configuration = new MeetingSessionConfiguration( response.meeting, response.attendee); await meetingManager.join(configuration, { deviceLabels: DeviceLabels.Video }); await meetingManager.start(); } function endContact() { meetingManager.leave(); } }
-
要渲染视频网格,请使用 Amazon Chime SDK React 组件库中的,或者使用自定义界面行为RemoteVideoTileProvider
。VideoTileGrid -
要渲染视频预览,可以使用VideoPreview
和CameraSelection 组件。要选择或更改摄像头视频,您可以使用 meetingManager.selectVideoInputDevice
或meetingManager.startVideoInput
(如果会议正在进行中)。const meetingManager = useMeetingManager(); const { isVideoEnabled } = useLocalVideo(); if (isVideoEnabled) { await meetingManager.startVideoInputDevice(current); } else { meetingManager.selectVideoInputDevice(current); }
-
要实现背景模糊,请参阅useBackgroundBlur
。 -
有关如何构建自定义视频体验的示例代码,请参阅此示 Amazon Chime SDK例:Amazon Chime React Meeting 演示
。
添加对屏幕共享的支持
注意
如果您 out-of-boxCCP直接在自定义代理应用程序中使用,请确保allowFramedScreenSharing
在CCP使用 Amazon Connect Streams JSallowFramedScreenSharingPopUp
设置allowFramedScreenSharing
为 true 仅在一个窗口或选项卡CCP中启用屏幕共享按钮。设置allowFramedScreenSharingPopUp
为 true 时,当代理选择屏幕共享按钮时,屏幕共享应用程序将在单独的窗口中启动。有关更多详细信息,请参阅 Amazon Connect Streams JS
完成以下步骤,在您的自定义代理桌面上启用屏幕共享。
-
检查联系人是否具有屏幕共享功能。
// Return true if any connection has screen sharing send capability contact.hasScreenShareCapability() // Return true if the agent connection has screen sharing send capability contact.canAgentSendScreenShare() // Return true if customer connection has screen sharing send capability contact.canCustomerSendScreenShare()
-
检查代理是否具有视频权限。
agent.getPermissions().includes('videoContact');
-
检查代理是否可以为符合条件的联系人启动屏幕共享会话。
fun canStartScreenSharingSession() { return contactgetContactSubtype() === "connect:WebRTC" && contact.hasScreenShareCapability() && agent.getPermissions().includes('videoContact'); }
-
startScreenSharing
致电启动屏幕共享会话。这会ScreenSharingActivated
添加到联系人中,使您能够在联系人记录中进行搜索。contact.startScreenSharing();
-
getVideoConnectionInfo
致电加入会议。如果代理已加入视频会话以处理视频,则可以跳过该步骤。if (canStartScreenSharingSession) { contact.startScreenSharing(); const response = await contact.getAgentConnection().getVideoConnectionInfo(); }
-
使用 Amazon Chime SDK React 组件库加入会议。有关代码片段,请参阅中的步骤 6。添加对视频的支持
-
使用 Amazon Chime SDK React Components 中的相同VideoTileGrid
内容来渲染屏幕共享视频磁贴。有关更多信息,请参阅useContentShare状态 和useContentShare控件 -
stopScreenSharing
会话结束时致电。contact.stopScreenSharing();
-
您可以通过订阅以下回传来接收屏幕共享活动的事件:
initScreenSharingListeners() { this.contact.onScreenSharingStarted(() => { // Screen sharing session started }); this.contact.onScreenSharingStopped(() => { // Screen sharing session ended }); this.contact.onScreenSharingError((error) => { // Screen sharing session error occurred }); } }