智能外呼接入三方大模型

更新时间:
复制 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

    是

    231232121

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

    是

    123232123

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

    是

    12321231

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

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

说明

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

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

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

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

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

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

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

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

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

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

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

函数计算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. 大模型场景管理-场景管理新建场景,填写对应的函数服务参数值。image

  2. 创建完成后进入该场景进行对语音&VUI的配置。image

  3. 配置完成后,可以点击语音调试进行测试。image

  4. 返回大模型场景列表中点击发布并成功发布,即可在新建外呼任务时使用该场景。

    image