调用语音服务API发起呼叫后,通过智能外呼回调HTTP接口,将通话中转换后的语音文本回传给业务方,业务方将下一步的执行动作返回到语音服务,完成机器人与用户通话中的智能语音交互。本文为您介绍智能语音交互呼出回调HTTP接口的配置,请求参数、返回参数以及请求和返回示例。
业务流程
语音平台通过HTTP协议实时推送语音转写的文本时,即使用户静音也会发送异常状态。在消息的响应中可以设置播放语音、终止播放当前语音、转接人工坐席、挂机等动作指示平台接下来的执行动作。智能语音交互呼出回调HTTP接口的业务流程,请参见智能语音交互呼出业务流程。
配置回调接口
-
登录语音服务控制台。
-
在左侧导航栏中,选择,开启智能语音交互回调地址开关。
-
在接收地址输入框中输入回调URL(例如
https://push.example.com/contextpath/receive.do)。页面上的响应信息区域展示的是JSON响应格式规范,仅供参考,无需编辑。说明接收地址用于接收语音实时转文本结果并返回下一步执行动作。
重要保存前,确保接收地址对应的服务端已部署完成,且能返回符合要求的JSON格式响应。响应必须包含
result、msg、code、data字段,其中data必须包含call_id、action、action_code、extend。具体格式请参见返回示例章节。 -
单击保存。系统会向接收地址发起一次HTTP验证请求,校验返回的数据是否符合指定的JSON格式。如果接收地址无法访问或返回格式不符合要求,保存将失败。
-
您也可以单击右侧测试按钮,对配置信息进行测试。
回调接口规范
|
规范 |
说明 |
|
接口协议 |
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 |
并行转接成功后呼叫中心名称。 |
返回示例
调用成功
{
"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 |
并行转接成功后呼叫中心名称。 |
使用说明
智能语音交互呼出回调HTTP接口用于实时推送单次通话中的语音转写文本和交互状态,不会记录或返回一段时间内的累计呼叫次数。如需统计呼叫次数,通过调用呼叫记录查询相关API获取通话记录后自行汇总。