数字员工接入三方大模型对话机器人

对接方案

image

接口定义

首先,需要客户遵守下面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

    已播放出去的文本

    返回参数

    名称

    类型

    是否必填

    示例值

    描述

    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

    0

    转接类型

    -SkillGroup: 技能组

    -Agent: 坐席

    -External:外部号码

    transferee

    String

    1853821****

    转接对象

    transferor

    String

    转外部号码时需要传入主叫号码

    DtmfControlParams

    名称

    类型

    是否必填

    示例值

    描述

    terminator

    String

    #

    收号结束标志位

    限制:只支持#

    maxDigits

    Int

    最大按键输入个数

    限制:取值范围为1~100。

    timeout

    Int

    收号超时时间,单个按键超时时间,单位是秒

    限制:取值范围为1~10,推荐5s。

    disableVoiceInput

    boolean

    禁用语音收号功能

    默认值:false

    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。

    具体列表参考各家厂家文档

说明
  1. 尽可能在上海创建函数计算实例,方便提供内网地址降低网络开销,可以关闭公网地址提升安全性。

  2. ControlParams控制参数各个类型有不同的要求:

    1. Voice: 语音,如果需要的话,必须头包就传入,后续包传过来会被忽略掉

    2. GatherDtmf:收号,如果需要的话,必须头包就传入,后续包传过来会被忽略掉

    3. Transfer:抓接,可以在任何阶段传入

    4. HangUp: 挂断,可以在任何阶段传入

  3. beginSession虽然接口定义是流式,但是由于我们一期会进行同步阻塞调用,要求接口响应时间需要保证在200ms以内。

  4. 出于对话延迟体验的考虑,大模型机器人回复首包耗时要求在600ms以下。

  5. 大模型机器人回复文本有关TTS播放的注意事项

    1. 数字读法问题,文本输出格式需要基于实际情况进行特殊处理。

    2. 一些TTS厂家多音字会造成语调问题。

灰度方案

方案一

数字员工节点前面增加基于手机号灰度白名单分支节点和基于百分比灰度白名单分支节点,其中randomInt是[0,99]。

image

方案二

更复杂灰度逻辑需要自行实现一个函数计算自行控制

image.png

函数计算Demo

chatbot-proxy.zip

配置流程

前置条件

  1. 开通函数计算

  2. 开通数字员工

配置函数计算

  1. 打开上海函数计算页面:https://fcnext.console.aliyun.com/cn-shanghai/functions

    image.png

  2. 新建Web函数计算,本例是以Java实现的Demo为例,配置页面如下image.png

  3. 函数详情页面的配置

    1. 触发器配置,认证方式选择签名方式、禁用公网访问 URL选择是。

    2. 预留实例数策略,预留实例和水平扩容基于业务规模自行配置,预留实例至少要大于1,不然第一次调用极易超时。

  4. 获取Web函数计算配置信息

    1. 函数名称

    2. 函数地域

    3. 触发器地址,建议是内网访问地址(HTTP),这样可以最大限度地获取更低调用延迟。

配置数字员工

  1. 数字员工-系统管理-函数计算集成页面,新增Web函数计算信息

    image.png

  2. 数字员工-系统管理-函数计算集成页面,点击测试检查配置和代码是否正常

  3. 数字员工-场景管理页面,新增场景时选择Web函数计算选中配置好的函数计算IDimage.png

  4. 数字员工-场景详情页面,调试框测试即可,里面会透出一些控制参数和报错描述,比如转接的技能组、机器人说话是否可以被打断、接口调用报错信息等

    image.png