智能语音交互呼出回调HTTP接口

更新时间:
复制 MD 格式

调用语音服务API发起呼叫后,通过智能外呼回调HTTP接口,将通话中转换后的语音文本回传给业务方,业务方将下一步的执行动作返回到语音服务,完成机器人与用户通话中的智能语音交互。本文为您介绍智能语音交互呼出回调HTTP接口的配置,请求参数、返回参数以及请求和返回示例。

业务流程

语音平台通过HTTP协议实时推送语音转写的文本时,即使用户静音也会发送异常状态。在消息的响应中可以设置播放语音、终止播放当前语音、转接人工坐席、挂机等动作指示平台接下来的执行动作。智能语音交互呼出回调HTTP接口的业务流程,请参见智能语音交互呼出业务流程

配置回调接口

  1. 登录语音服务控制台

  2. 在左侧导航栏中,选择通用设置 > 回调地址,开启智能语音交互回调地址开关。

  3. 接收地址输入框中输入回调URL(例如https://push.example.com/contextpath/receive.do)。页面上的响应信息区域展示的是JSON响应格式规范,仅供参考,无需编辑。

    说明

    接收地址用于接收语音实时转文本结果并返回下一步执行动作。

    重要

    保存前,确保接收地址对应的服务端已部署完成,且能返回符合要求的JSON格式响应。响应必须包含resultmsgcodedata字段,其中data必须包含call_idactionaction_codeextend。具体格式请参见返回示例章节。

  4. 单击保存。系统会向接收地址发起一次HTTP验证请求,校验返回的数据是否符合指定的JSON格式。如果接收地址无法访问或返回格式不符合要求,保存将失败。

  5. 您也可以单击右侧测试按钮,对配置信息进行测试。

回调接口规范

规范

说明

接口协议

HTTP

方式

POST

字符编码格式

UTF-8

请求样例

http://127.0.0.1/test?call_id=100001616500^1000018****&timestamp=1504174341229&content_type=normal&content={"words": "你好","begin_offset": "1000","end_offset": "9000","begin_time": "2017-06-01 10:00:00"}

请求参数

名称

类型

是否必填

示例

说明

call_id

String

必须

100001616500^1000018****

此次呼叫的唯一ID。

timestamp

Long

必须

1504174341229

当前时间戳。

content_type

String

必须

normal

消息类型。取值:

  • normal:标准。

  • mute:静音。

  • timebreak:按时长打断消息。

  • dtmf:按键消息。

  • parallel_transfer:并行转接状态。

content

JSON

必须

{"role": "B","identity": "id2","words": "你好","begin_offset": "1000","end_offset": "9000","begin_time": "2017-06-01 10:00:00"}

具体的语音内容,JSON格式。详细说明请参见下表。

content_type取值为normal时,content参数说明如下:

名称

类型

是否必填

示例

说明

words

String

必须

你好

这个角色说的一句话。

begin_offset

String

必须

6000000

相对本次会话起始点的开始时间偏移,单位为毫秒。

end_offset

String

必须

7000000

相对本次会话起始点的结束时间偏移,单位为毫秒。

begin_time

String

必须

7000000

通话开始时间,单位为毫秒。

is_playing

String

可选

true

是否正在播放语音。

current_media_code

String

可选

xxxx.wav

当前播放的语音文件,当值为early_media 时,表示为早媒体消息。

dynamic_id

String

可选

abcdefgh

预留给调用方使用的动态扩展ID,在下次回调地址中带回,用于客户的开发标识需要。

record_begin_time

Long

可选

1543856399000

录音开始时间。

asr_begin_time

String

可选

1543856399000

用户开始说话时间。Unix时间戳格式,单位为毫秒。

asr_end_time

String

可选

1543856399000

用户结束说话时间。Unix时间戳格式,单位为毫秒。

play_begin_time

String

可选

1543856399000

服务器开始放音时间。Unix时间戳格式,单位为毫秒。

play_end_time

String

可选

1543856399000

服务器放音结束时间。Unix时间戳格式,单位为毫秒。如果播放未结束,则为0。

content_type取值为mute时,content参数说明如下:

名称

类型

是否必填

示例

说明

dynamic_id

String

可选

abcdefgh

预留给调用方使用的动态扩展ID,在下次回调地址中带回,用于客户的开发标识。

content_type取值为dtmf时,content参数说明如下:

名称

类型

是否必填

示例

说明

dynamic_id

String

可选

abcdefgh

预留给调用方使用的动态扩展ID,在下次回调地址中带回,用于客户的开发标识。

dtmf_digits

String

可选

1

content_typedtmf时的特有字段,代表用户的按键返回,如果用户超时未返回按键,则返回noInputTimeout字符串。

content_type取值为timebreak时,content参数说明如下:

名称

类型

是否必填

示例

说明

current_media_code

String

可选

xxxx.wav

当前播放的语音文件。

asr_begin_time

String

可选

1543856399000

用户开始说话时间。Unix时间戳格式,单位为毫秒。

play_begin_time

String

可选

1543856399000

服务器开始放音时间。Unix时间戳格式,单位为毫秒。

dynamic_id

String

可选

abcdefgh

预留给调用方使用的动态扩展 ID,在下次回调地址中带回,用于客户的开发标识需要。

content_type取值为parallel_transfer时,content参数说明如下:

名称

类型

是否必填

示例

说明

dynamic_id

String

可选

abcdefgh

预留给调用方使用的动态扩展ID,在下次回调地址中带回,用于客户的开发标识。

transfer_status

String

可选

success\fail

并行转接状态,是否成功。

fail_cause

String

可选

transfer fail.

转接失败原因。

is_monitor

Boolean

可选

true

呼叫中心并行转接成功后是否监控。

cc_name

String

可选

aliyun_cc

并行转接成功后呼叫中心名称。

返回示例

调用成功

{
    "result": "success",
    "msg": "成功",
    "code": 200,
    "data": {
        "call_id": "100001616500^100001871490",
        "action": "play",
        "action_code": "411111",
        "extend": "111"
    }
}

调用失败

{"result":"fail","msg":"fail reason", "data":{}}

返回参数

名称

类型

是否必填

示例

说明

call_id

String

必须

B

此次呼叫的唯一ID。

action

String

必须

play

下一步的动作。取值:

  • play:播放下一段语音。

  • break:打断当前正在播放的语音。

  • continue:继续播放当前语音。

  • hangup:挂机。

  • transfer:转接。

  • donothing:不做任何处理。

  • dtmf:接收dtmf消息。

  • parallel_transfer:并行转接命令。

action_break

Boolean

可选

true

是否打断上一个动作。默认true,打断。如果上一个动作的action_code_breakfalse,则无法打断。

action_code

String

可选

abc.wav,def.wav,$name$

播放的语音文件code,支持多文件播放,多个文件使用英文逗号(,)分隔,支持TTS参数,使用$

action_code_break

Boolean

可选

true

当前返回的媒体文件是否可以被打断。取值:

  • true(默认值):可被打断。

  • false:即使下一个动作action_breaktrue,也无法打断当前放音。

说明

action_breakaction_code_break,action_code_break的优先级更高。

mute_time

Integer

可选

10000

静音时长,单位:毫秒。取值范围为1000~20000,超过此范围默认取值10000。

dynamic_id

String

可选

abc

预留给调用方使用的动态扩展 ID。在下次回调地址中携带,用于客户的开发标识需要。

action_code_param

String

可选

{"name":"喂,你好"}

TTS参数。JSON格式,keyaction_code相对应。

number

String

可选

1370000****

转接手机号码。当action设为transfer时有效。

action_code_time_break

Integer

可选

120

基于用户持续说话时长打断,单位:毫秒。如果当前媒体文件actionCodeBreaktrue,用户持续说话可以打断当前播放。不设置或者为0,不生效。

dtmf_nonin_overtime

Integer

可选

3

dtmf命令时的特有字段,表示无输入超时时间,默认值3s。取值范围为3s~60s。

dtmf_max_numbers

Integer

可选

5

dtmf命令时的特有字段,表示最大收号长度,取值范围为1~50。

dtmf_end_character

String

可选

#

dtmf命令时的特有字段,表示收号停止符号,只支持* #,也支持为空。

transfer_playfile

String

可选

#

并行转接成功后给坐席播放音频文件。

is_monitor

Boolean

可选

true

呼叫中心并行转接成功后是否监控。

cc_name

String

可选

aliyun_cc

并行转接成功后呼叫中心名称。

使用说明

智能语音交互呼出回调HTTP接口用于实时推送单次通话中的语音转写文本和交互状态,不会记录或返回一段时间内的累计呼叫次数。如需统计呼叫次数,通过调用呼叫记录查询相关API获取通话记录后自行汇总。