对接方案
接口定义
首先,需要客户遵守下面4个接口约定进行对接。然后,通过Web函数计算代理这组接口,其中Web函数计算主要功能是签名认证、代理转发。最后,在数字员工页面按照下面配置流程部分配置即可使用。
/proxy/beginSession 开启会话
描述
开启会话
协议
SSE
请求参数
名称
类型
是否必填
示例值
描述
requestId
String
是
UUID
请求ID
tenantId
String
是
378210
租户ID, 即阿里云UID
instanceId
String
是
n1
实例ID
scriptId
String
是
数字员工场景ID
sessionId
String
是
UUID
会话ID
streamId
String
是
UUID
对话轮次ID
vendorParams
Map
是
随路参数
callingNumber
String
是
主叫号码
calledNumber
String
是
被叫号码
其他字段
String
否
客户自定义随路字段
返回参数
名称
类型
是否必填
示例值
描述
requestId
String
是
1
RequestID
httpStatusCode
Int
是
200
HTTP状态码
code
String
是
OK
响应码
message
String
否
错误信息
data
Object
是
streamEnd
Boolean
是
流式结束标志位
updatedTime
Long
是
更新时间,单位是ms
sessionId
String
否
会话ID
streamId
String
否
对话轮次ID
answer
String
否
机器人回答
controlParamsList
List<ControlParams>
否
机器人发言语音控制参数
type
String
是
HangUp
控制类型:
HangUp: 挂断
Transfer:转接
GatherDtmf: 获取按键
Voice:语音
/proxy/dialogue 对话
描述
对话中的对话接口
协议
SSE
请求参数
名称
类型
是否必填
示例值
描述
requestId
String
是
UUID
请求ID
tenantId
String
是
租户ID, 即阿里云UID
instanceId
String
是
n1
实例ID
scriptId
String
是
数字员工场景ID
sessionId
String
是
UUID
会话ID
streamId
String
是
UUID
对话轮次ID
utterance
String
是
查话费
用户发言
extras
List<Map>
扩展内容
dataType
String
DTMF
DTMF/Silence
dtmf
String
1234
按键数字
返回参数
名称
类型
是否必填
示例值
描述
requestId
String
是
1
RequestID
httpStatusCode
Int
是
200
HTTP状态码
code
String
是
OK
响应码
message
String
否
错误信息
data
Object
是
streamEnd
Boolean
是
流式结束标志位
updatedTime
Long
是
更新时间
sessionId
String
否
会话ID
streamId
String
否
对话轮次ID
answer
String
否
机器人回答
List<ControlParams>
控制参数
type
String
是
HangUp
控制类型:
HangUp: 挂断
Transfer:转接
GatherDtmf: 获取按键
Voice:语音
/proxy/abortDialogue 终止当前轮次对话
描述
终止当前轮次对话,会返回当前已播放的文本并终结接下来的Action
协议
HTTPS
请求参数
名称
类型
是否必填
示例值
描述
requestId
String
是
UUID
请求ID
tenantId
String
是
租户ID, 即阿里云UID
instanceId
String
是
"n1"
实例ID
scriptId
String
否
数字员工场景ID
sessionId
String
是
UUID
会话ID
streamId
String
是
UUID
对话轮次ID
answer
String
否
已播放出去的文本
type
String
是
Canceled
Canceled:取消
Interrupted:打断
返回参数
名称
类型
是否必填
示例值
描述
requestId
String
是
1
RequestID
httpStatusCode
Int
是
200
HTTP状态码
code
String
是
OK
响应码
message
String
否
错误信息
/proxy/endSession 结束会话
描述
结束会话
协议
HTTPS
请求参数
名称
类型
是否必填
示例值
描述
requestId
String
是
UUID
请求ID
tenantId
String
是
租户ID, 即阿里云UID
instanceId
String
是
n1
实例ID
scriptId
String
是
数字员工场景ID
sessionId
String
是
UUID
会话ID
返回参数
名称
类型
是否必填
示例值
描述
requestId
String
是
1
RequestID
httpStatusCode
Int
是
200
HTTP状态码
code
String
是
OK
响应码
message
String
否
错误信息
通用控制参数
HangUpControlParams
名称
类型
是否必填
示例值
描述
delay
Int
否
0
延迟挂机,单位是秒,默认值0。
限制:取值范围为0~10。
reason
String
否
挂机原因
TransferControlParams
名称
类型
是否必填
示例值
描述
transferType
String
是
SkillGroup
转接类型:
SkillGroup: 技能组
Agent: 坐席 (暂不支持)
External:外部号码(暂不支持)
transferee
String
是
1853821****
转接对象
transferor
String
否
skg-1234****
转外部号码时需要传入主叫号码
DtmfControlParams
名称
类型
是否必填
示例值
描述
terminator
String
是
#
收号结束标志位
限制:只支持#
maxDigits
Int
是
最大按键输入个数
限制:取值范围为1~100。
timeout
Int
是
收号超时时间,单个按键超时时间,单位是秒
限制:取值范围为1~10,推荐5s。
disableVoiceInput
boolean
否
禁用语音收号功能
默认值:true
VoiceControlParams
名称
类型
是否必填
示例值
描述
interruptible
Boolean
否
false
机器人是否支持被打断,默认值fasle。
silenceDetectionTimeout
Int
否
用户静默超时时间,默认5s
限制:取值范围为1~10,推荐5s。
synthesizerConfig
Object
否
机器人声音控制参数,方便客户做到千人千面效果。
支持厂家如下:
阿里云小模型版本
阿里云CosyVoice大模型版本
豆包大模型版本
voice
String
是
音色,具体列表参考各家厂家文档。
volume
Double
否
音量,默认值是50。
具体列表参考各家厂家文档。
pitchRate
Double
否
音调,默认值是0。
具体列表参考各家厂家文档。
speechRate
Double
否
语速,默认值是0。
具体列表参考各家厂家文档。
尽可能在上海创建函数计算实例,方便提供内网地址降低网络开销,可以关闭公网地址提升安全性。
ControlParams控制参数各个类型有不同的要求:
Voice:语音,如果需要的话,必须头包就传入,后续包传过来会被忽略掉。
GatherDtmf:收号,如果需要的话,必须头包就传入,后续包传过来会被忽略掉。
Transfer:抓接,可以在任何阶段传入。
HangUp:挂断,可以在任何阶段传入。
beginSession虽然接口定义是流式,但是由于我们一期会进行同步阻塞调用,要求接口响应时间需要保证在200ms以内。
出于对话延迟体验的考虑,大模型机器人回复首包耗时要求在600ms以下。
大模型机器人回复文本有关TTS播放的注意事项:
数字读法问题,文本输出格式需要基于实际情况进行特殊处理。
一些TTS厂家多音字会造成语调问题。
灰度方案
方案一
数字员工节点前面增加基于手机号灰度白名单分支节点和基于百分比灰度白名单分支节点,其中randomInt是[0,99]。
方案二
更复杂灰度逻辑需要自行实现一个函数计算自行控制。
函数计算Demo
配置流程
前置条件
配置函数计算
打开上海函数计算页面。
新建Web函数计算,本例是以Java实现的Demo为例,配置页面如下:
函数详情页面的配置:
触发器配置,认证方式选择签名方式、禁用公网访问 URL选择是。
预留实例数策略,预留实例和水平扩容基于业务规模自行配置,预留实例至少要大于1,不然第一次调用极易超时。
获取Web函数计算配置信息:
函数名称。
函数地域。
触发器地址,建议是内网访问地址(HTTP),这样可以最大限度地获取更低调用延迟。
配置数字员工
登录数字员工控制台,选择系统管理>函数计算集成页面,单击添加新增Web函数计算信息。
单击测试检查配置和代码是否正常。
在左侧导航栏选择场景管理,单击新建场景,选择Web函数计算选中配置好的函数计算ID。
单击编辑进入场景详情页面,单击场景测试即可,里面会透出一些控制参数和报错描述,比如转接的技能组、机器人说话是否可以被打断、接口调用报错信息等。