调用语音服务API发起呼叫后,通过智能外呼回调HTTP接口,将通话中转换后的语音文本回传给业务方,业务方将下一步的执行动作返回到语音服务,完成机器人与用户通话中的智能语音交互。本文为您介绍智能语音交互呼出回调HTTP接口的配置,请求参数、返回参数以及请求和返回示例。
业务流程
语音平台通过HTTP协议实时推送语音转写的文本时,即使用户静音也会发送异常状态。在消息的响应中可以设置播放语音、终止播放当前语音、转接人工坐席、挂机等动作指示平台接下来的执行动作。智能语音交互呼出回调HTTP接口的业务流程,请参见智能语音交互呼出业务流程。
配置回调接口
登录语音服务控制台。
在左侧导航栏中,选择
,开启智能语音交互回调地址开关。根据页面提示设置响应信息和接收地址。
说明接收地址用于接收语音实时转文本结果并返回下一步执行动作。
单击保存。
您也可以单击右侧测试按钮,对配置信息进行测试。
回调接口规范
规范 | 说明 |
接口协议 | HTTP |
方式 | POST |
字符编码格式 | UTF-8 |
请求样例
http://127.0.0.1/test?call_id=100001616500^1000018****×tamp=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 | 消息类型。取值:
|
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_type为dtmf时的特有字段,代表用户的按键返回,如果用户超时未返回按键,则返回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 | 并行转接成功后呼叫中心名称。 |
返回示例
以JSON格式为例,返回示例如下:
调用成功
{
"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 | 下一步的动作。取值:
|
action_break | Boolean | 可选 | true | 是否打断上一个动作。默认true,打断。如果上一个动作的action_code_break为false,则无法打断。 |
action_code | String | 可选 | abc.wav,def.wav,$name$ | 播放的语音文件code,支持多文件播放,多个文件使用英文逗号(,)分隔,支持TTS参数,使用 |
action_code_break | Boolean | 可选 | true | 当前返回的媒体文件是否可以被打断。取值:
说明 action_break和action_code_break,action_code_break的优先级更高。 |
mute_time | Integer | 可选 | 10000 | 静音时长,单位:毫秒。取值范围为1000~20000,超过此范围默认取值10000。 |
dynamic_id | String | 可选 | abc | 预留给调用方使用的动态扩展 ID。在下次回调地址中携带,用于客户的开发标识需要。 |
action_code_param | String | 可选 | {"name":"喂,你好"} | TTS参数。JSON格式,key和action_code相对应。 |
number | String | 可选 | 1370000**** | 转接手机号码。当action设为transfer时有效。 |
action_code_time_break | Integer | 可选 | 120 | 基于用户持续说话时长打断,单位:毫秒。如果当前媒体文件actionCodeBreak为true,用户持续说话可以打断当前播放。不设置或者为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 | 并行转接成功后呼叫中心名称。 |