文档中心>腾讯云智能数智人

长链接发送指令

最近更新时间:2023-12-26 16:12:43

我的收藏
基于长链接推送指令驱动数字人。
长连接指令分为发送文本指令、发送音频指令、发送心跳指令。
发送文本指令,是发送播报文本给云端,由云端合成语音进而驱动数字人讲话的指令;
发送音频指令,是发送语音流式分片给云端,由云端进行原声或变声驱动数字人讲话的指令;
发送心跳指令,是为了维系长链接不断开的指令,如果客户端不发送心跳,云端超过10分钟没有收到过任何指令,则会主动断开链接。如果要维系链接超过10分钟,需要定期发送心跳,建议30s发送一次。
长链接指令和的驱动类型(DriverType)的对应关系:
DriverType 1:文本驱动
支持发送文本指令(SEND_TEXT)、心跳指令(SEND_HEARTBEAT)
DriverType 2:语音驱动
支持发送文本指令(SEND_TEXT)、发送音频指令(SEND_AUDIO)、心跳指令(SEND_HEARTBEAT)
当文本正在播报时,如果要发送音频,需要发送文本指令的打断,直至收到 speak over 事件返回可开始发送音频。
当文本正在播报时,如果要播报新文本,直接发送新文本的文本指令,打断完成会收到 speak over 事件,新文本播报开始会收到 speak start,播报结束会收到 speak over 。
当语音驱动进行中,如果要中断发送文本指令驱动,需要发送音频指令(IsFinal 设置为 true)结束语音驱动,直至收到 speak over 事件可开始发文本指令。
应用场景和4.1接口建立会话的驱动类型(DriverType)的对应关系:
文本类客服场景,可使用 DriverType:1(文本驱动)
Avarta 场景(数智人代替真人客服出境),可使用 DriverType 2:(语音驱动模式)
其他如涉及到文本客服转人工坐席或者直播场景文本播报和语音驱动灵活切换等场景,可使用 DriverType 2:(语音驱动模式)。

1)调用协议

WebSocket + JSON
WSS /v2/ws/ivh/streammanager/streamservice/commandchannel
Header Content-Type: application/json;charset=utf-8

2)请求参数-发送文本

参数名称
类型
必选
描述
SessionId
String
会话唯一标识。
Command
string
SEND_TEXT:发送文本。
Data
Data
数据对象
Data
名称
必选
类型
描述
Text
string
需要播报的文本内容或提问的文本内容,缺省值:""发送空串时打断数字人,发送非空串文本时驱动数智人播报。
Interrupt
boolean
需配合交互数智人配置平台中话术配置功能使用,如果话术配置中未配置该文本,则发送新文本为全部打断,此参数不生效,如果配置了该文本为不可打断,则此参数传true是强制打断。默认为false。

3)请求参数-发送音频

参数名称
必选
类型
描述
SessionId
String
会话唯一标识。
Command
string
SEND_AUDIO,发送音频。
Data
Data
数据对象
Data
名称
必选
类型
描述
Audio
string
音频原始数据的byte数组,经Base64编码后的字符串。格式:PCM,采样率:16kHz,采样位深:16bits,声道:单声道,传输速率:6400B/200ms 或 3200B/100ms
IsFinal
bool
是否最后一个音频包,头包和过程包不填采用默认值false,最后一个音频包Audio填写空串,本字段填写true,会触发结束音频驱动回到静默态。
注意:
当发完一段音频后,一定要发送一个isFinal=true的尾包。不然数智人会在驱动结尾卡顿2s后才能回到静默状态。


4)请求参数-发送心跳

为避免链接建立后,终端用户长时间不发送指令和数智人交互占用无效并发,在超过10分钟后如果和云端没有任何调用交互,则云端会超时自动断开。在一些场景中,如果要保持会话超过10分钟,则可以通过此发送心跳接口,达到延续会话的目的。发送心跳请求建议每隔30s发送一次。
参数名称
必选
类型
描述
SessionId
String
会话唯一标识。
Command
string
SEND_HEARTBEAT,发送心跳。
Data
Data
数据对象
Data
名称
必选
类型
描述
Text
string
固定填写PING

5)返回参数

参见建立会话长链接接口,websocket 接口调用异步返回结果。

6)示例

输入参数
{
"Header": {},
"Payload": {
"SessionId": "m123adfafvbadsafd",
"Command": "SEND_TEXT",
"Data": {
"Text": "您好,我是人工合成的数智人",
}
}
}
{
"Header": {},
"Payload": {
"SessionId": "m123adfafvbadsafd",
"Command": "SEND_AUDIO",
"Data": {
"Audio": "声音二进制数据编码Base64后的值",
"IsFinal": false
}
}
}
{
"Header": {},
"Payload": {
"SessionId": "m123adfafvbadsafd",
"Command": "SEND_HEARTBEAT",
"Data": {
"Text": "PING",
}
}
}