对接方案
接口定义
首先,需要客户遵守下面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
否
机器人回答
controlParamsList
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
是
skg-1234*****
转接对象
transferor
String
否
转外部号码时需要传入主叫号码
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厂家多音字会造成语调问题。
函数计算Demo
配置流程
前置条件
开通函数计算
开通智能外呼机器人
配置函数计算
打开上海函数计算页面:https://fcnext.console.aliyun.com/cn-shanghai/functions
新建Web函数计算,本例是以Java实现的Demo为例,配置页面如下:
函数详情页面的配置
触发器配置,认证方式选择签名方式、禁用公网访问 URL选择是。
预留实例数策略,预留实例和水平扩容基于业务规模自行配置,预留实例至少要大于1,不然第一次调用极易超时。
获取Web函数计算配置信息
函数名称
函数地域
触发器地址,建议是内网访问地址(HTTP),这样可以最大限度地获取更低调用延迟。
配置智能外呼机器人
大模型场景管理-场景管理新建场景,填写对应的函数服务参数值。
创建完成后进入该场景进行对语音&VUI的配置。
配置完成后,可以点击语音调试进行测试。
返回大模型场景列表中点击发布并成功发布,即可在新建外呼任务时使用该场景。