云对讲集成套件
目录
| 序号 | 名称 |
|---|---|
| 1 | 方案简介 |
| 2 | 交互流程 |
| 3 | 使用指南 |
一. 方案简介
1.1 云对讲套件
云对讲套件是针对接入萤石云的硬件设备设计的不受距离限制,自由对讲通话的方案。为客户提供可用于访客通话、远程身份核验、指挥调度、及时沟通协调等场景的低代码集成套件,并针对场景扩展了丰富的特色功能,可一键生成匹配各场景的窗口模板。
1.2 套件功能概览
| 功能 | 描述 |
|---|---|
| 响铃/通话双状态 | 支持响铃状态下查看视频、快捷回复,接听与挂断,点击接听即可进入通话状态进行双向对讲。 |
| 远程开锁 | 针对门禁、锁等支持远程开锁的设备,可配置远程开锁功能,双重校验后即可开锁。 |
| 画中画 | 支持配置'画中画'(仅H5有该功能),可在播放框视频右下角增加小窗,播放响铃前10s后5s的录像。 |
| 变声 | 支持小丑音、大叔音、原生三种模式,配置后用户可灵活选择声音来保护自己。 |
| 合流录制 | 支持云对讲全过程录制,记录画面视频与双向声音,方便事后回溯,该功能需联系售前人员开通。 |
1.3 套件效果图
开放平台提供了低代码的云对讲套件,通过简单配置即可生成呼叫模板,可直接嵌入到应用中即可实现云对讲的主要交互流程;具体流程详见使用指南。

二. 交互流程
2.1 数据流图

- 说明:
1.开发者服务端需对接萤石消息推送服务,可推送呼叫消息至回调地址,详见 消息推送控制台
2.开发者前端可直接使用低代码配置模板生成呼叫模板,详见 轻应用控制台
3.生成的呼叫模板推送到指定用户可参考三方推送服务,如友盟、阿里云推送服务。
2.2 状态图

- 说明:
1.由于云对讲是触发式业务,由设备上报呼叫消息触发云对讲流程,开发者可根据结束回调返回应用。
三. 使用指南
3.1 接收呼叫消息(服务端对接)
目前有两类呼叫消息可做为对讲触发条件,ys.calling与ys.open.isapi透传消息中的voiceTalkEvent事件,在消息推送控制台开通后,即可根据收到的呼叫事件解析设备呼叫信息。如需了解更多可查看开通消息推送服务
-
门禁呼叫消息示例
{
"offset": 355784,
"header": {
"messageTime": 1683285503349,
"channelNo": 0,
"messageId": "6454e5ff008f60e681162ec6",
"type": "ys.open.isapi",
"deviceId": "J49882687"
},
"body": {
"payload": "{\n\t"ipAddress":\t"10.9.141.105",\n\t"portNo":\t80,\n\t"protocolType":\t"HTTP",\n\t"channelID":\t"0",\n\t"dateTime":\t"2023-05-05T19:18:26+08:00",\n\t"activePostCount":\t"1",\n\t"eventType":\t"voiceTalkEvent",\n\t"eventState":\t"active",\n\t"eventDescription":\t"Voice Talk Interactive Event",\n\t"VoiceTalkEvent":\t{\n\t\t"deviceName":\t"DS-K1T671MF",\n\t\t"cmdType":\t"request",\n\t\t"target":\t{\n\t\t\t"periodNumber":\t1,\n\t\t\t"buildingNumber":\t1,\n\t\t\t"unitNumber":\t1,\n\t\t\t"floorNumber":\t1,\n\t\t\t"roomNumber":\t23,\n\t\t\t"communityNumber":\t"0"\n\t\t}\n\t}\n}"
}
}
3.2 生成呼叫模板(前端对接)
在 轻应用控制台 开通呼叫模板,参考官方模板创建个性化呼叫模板,配置功能项后即可获得对应呼叫模板的代码示例,嵌入网页服务器上即可使用。如需了解更多可查看 UIKit JavaScript详细使用说明

3.3 弹窗通话与结束通话(前端对接)
在用户侧应用弹窗提示呼叫请求,用户点击后跳转呼叫模板进入响铃状态;用户操作进入通话状态或通话结束,通话结束后返回结束回调,关闭弹窗返回应用界面。
-
结束回调
hangUpCallback: (type) => {
console.log("hangUpCallback", type)
if (type == 'hangUp') { // hangUp 挂断
console.log('hangUp')
}
if(type == 'rejection') { // rejection 拒绝
console.log('rejection')
}
}