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

更新时间:
复制 MD 格式

对接方案

image

接口定义

首先,需要客户遵守下面4个接口约定进行对接。然后,通过Web函数计算代理这组接口,其中Web函数计算主要功能是签名认证、代理转发。最后,在数字员工页面按照下面配置流程部分配置即可使用。

  • /proxy/beginSession 开启会话

    描述

    开启会话

    协议

    SSE

    请求参数

    名称

    类型

    是否必填

    示例值

    描述

    requestId

    String

    是

    UUID

    请求ID

    tenantId

    Long

    是

    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

    Long

    是

    123321123

    租户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

      Long

      是

      123321123

      租户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

    Long

    是

    123321123

    租户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]。

image

方案二

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

image.png

函数计算Demo

chatbot-proxy.zip

配置流程

前置条件

  1. 开通函数计算

  2. 开通数字员工

配置函数计算

  1. 打开函数计算页面,上面地域选为上海即可。

    image

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

  3. 函数详情页面的配置:

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

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

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

    • 函数名称。

    • 函数地域。

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

配置数字员工

  1. 登录数字员工控制台,选择系统管理>函数计算集成页面,单击添加新增Web函数计算信息。

    8b876657f8b6bd49f447ece09b12a3e1

  2. 单击测试检查配置和代码是否正常。

    1. 若选择普通函数计算,则点击测试后,填入定义好的参数以及值。image

    2. 若选择流式函数计算,在填写参数基础上还要填写对应路径接口。

      接口是指定的四个接口或者自定义接口,格式:/xxx/xxx,比如约定的接口:/proxy/beginSession等。

      image

    3. 调用成功后,会提示调用成功,并返回json。image

  3. 在左侧导航栏选择场景管理,单击新建场景,选择Web函数计算选中配置好的函数计算ID。image

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

    image