实时调用单通电话回调
更新时间:2024-09-14
描述
外呼系统通过用户配置的回调地址将实时调用的通话数据进行回调
注意:
服务端(接收方)需要保证配置回调地址的一定吞吐。
在电话拨打数据量大的时,请求方(百度) 会造成瞬时请求压力较大,(因为我们会尽可能的把数据尽快的推送给乙方).
例如采用如下实现方案时请求可能发生堵塞,甚至超时丢失数据。
接收方:采用流量入口带宽不足,接口实现采用直接插入数据库(数据库配置也比较低时),回调会产生堵塞,如果严重超时,可能会造成请求失败。
我们推荐:
- 采用异步的方式,例如Kakfa,打印日志 保证接口快速响应。
- 增加资源配置,例如插入数据库,保证数据库一定磁盘,cpu等资源配置。
URL
回调地址(配置台-API配置-其他配置)
HTTP Method
POST
请求参数
参数名称 | 类型 | 是否必须 | 说明 | 示例 |
---|---|---|---|---|
callbackType | int | 是 | 回调数据类型, 0-任务呼叫单通电话回调 1-号码组终态回调 2-任务状态变更回调 3-实时呼叫单通电话回调 | 3 |
data | obj | 是 | 回调数据 |
data数据
参数名称 | 类型 | 是否必须 | 说明 | 示例 |
---|---|---|---|---|
tenantId | long | 是 | 租户唯一标识 | 10363 |
memberId | long | 是 | 号码唯一标识,实时呼叫调用时,号码返回的对应标识 | 732722324373760 |
sessionId | string | 是 | 通话唯一标识 | "201bd45e-a375-47e1-bcee-e5bcd3c6b523" |
collectInfo | obj | 是 | 信息收集内容,流程节点中配置的收集信息 | {"hungupnode": "拒绝_首次施压"} |
record | array | 是 | 会话还原记录 | |
intent | string | 是 | 意向,在外呼机器人-流程节点-信息收集,配置key为「意向」,对应的value值 | "愿意购买" |
callerNum | string | 是 | 主叫号码 | "07567171348" |
endType | long | 是 | 接通状态 1-已接通 0-未接通 | 1 |
endTypeReason | string | 是 | 未接通原因,详见 endTypeReason 列表 | "notexist" |
contactUUID | string | 是 | 生成通话录音唯一标识,根据该标识去获取录音文件 | "c1ff838e-c2a4-11eb-a785-fa27000306ed" |
durationTimeLen | int | 是 | 拨号总时长,单位为秒 | 64 |
ringingTimeLen | int | 是 | 振铃时长,单位为秒 | 10 |
talkingTimeLen | int | 是 | 对话时长,单位为秒 | 5 |
startTime | long | 是 | 呼叫开始时间-Unix时间戳(单位:毫秒) | "1635909010000" |
ringStartTime | long | 是 | 振铃开始时间-Unix时间戳(单位:毫秒) | "1635909010000" |
talkingStartTime | long | 是 | 通话开始时间-Unix时间戳(单位:毫秒),未接通显示'-',已接通会有值 | "1635909010000" |
endTime | long | 是 | 呼叫结束时间-Unix时间戳(单位:毫秒) | "1635909010000" |
transResult | int | 否 | 转接结果 | 字段为空,或为0未发起;1成功,-1失败 |
extJson | String | 否 | 调用方的业务随路数据, 字符串,百度侧原文回传 | xxxx |
isRobotHangup | boolean | 否 | 是否机器人主动挂机 | true |
dialogVar | Object | 否 | 变量,导入名单的变量 | {"变量1": "已接通"} |
extJson | String | 否 | 导入名单的扩展信息 | 导入名单的扩展信息 |
mobile | string | 否 | 手机号码 | xxxxxxxxxxx |
sipCode | String | 否 | 接通状态 | 如200、480、407等 |
sipInfo | String | 否 | 接通描述 | 如No user responding等 |
record数据
参数名称 | 类型 | 是否必须 | 说明 | 示例 |
---|---|---|---|---|
role | string | 是 | 会话角色,分为机器人侧(speech)和客户侧(voice) | "voice" |
timestamp | long | 是 | 会话时间戳,微秒 | 1603542315800942 |
contextText | string | 是 | 会话文本 | "您好,这边是千言银行智能客服中心,巴拉巴拉,请问是女士吗?" |
intent | string | 是 | 意图 | |
start | string | 是 | 片段开始时间,基于对话开始的相对时间 | "00:00.310" |
stop | string | 是 | 片段结束时间,基于对话开始的相对时间 | "00:00.310" |
timeLen | long | 是 | 片段时长,毫秒 | 5500 |
interrupted | boolean | 是 | 打断标识 | false |
interruptedTime | string | 是 | 打断时间 (基于对话开始的相对时间) | "00:00.310" |
silent | boolean | 是 | 静默标识 | false |
nodeInfo | String | 否 | 节点信息,base64格式 | eyJwcm9jZXNzTmFtZSI6Iua4hea0l+e6v+e0oiIsIm5vZGVOYW1lIjoi6IKv5a6a6IqC54K5X3Vsc3JvMTU5IiwiaW50ZW50Ijoi6IKv5a6a5oSP5Zu+IiwiZW50aXR5IjpbXSwic3lzdGVtRXZlbnQiOiIiLCJmYXEiOiIifQ== |
未接通原因名称 | 类型 | 说明 |
---|---|---|
blacklist | string | 黑名单 |
notexist | string | 空号 |
stopped | string | 停机 |
poweroff | string | 关机 |
cantbeconnected | string | 无法接通 |
linebusy | string | 用户忙 |
nooneheard | string | 无人接听 |
ruleslimit | string | 规则限拨 |
beyonddeadline | string | 超过截止时间 |
nocallphone400 | string | 禁拨-400号码 |
nocallphone800 | string | 禁拨-800号码 |
nocallfixedphone | string | 禁拨-固话 |
nocalltelephone | string | 禁拨-手机号码 |
nocallphone95 | string | 禁拨-95号码 |
nocallphone96 | string | 禁拨-96号码 |
nocallphoneelse | string | 禁拨-其他 |
tasknotdial | string | 本任务不再拨打 |
mobilerepeat | string | 号码重复过滤 |
memberexistblacklist | string | 号码组存在黑名单 |
forbiddennum | string | 自定义禁呼号码 |
memberexistforbiddennum | string | 号码组存在自定义禁呼号码 |
else | string | 其他原因 |
响应参数
名称 | 类型 | 备注 |
---|---|---|
code | int | http响应码,比如200、400 |
msg | string | 响应信息,成功为success,失败时为具体原因 |
请求(回调)示例
{
"callbackType": 3, // 0-任务呼叫单通电话回调 1-号码组终态回调 2-任务状态变更回调 3-实时呼叫单通电话回调
"data": {
"sessionId": "201bd45e-a375-47e1-bcee-e5bcd3c6b523", // 电话唯一标识
"tenantId": 10363, // 租户id
"memberId": 732722324373760, // 号码组id
"collectInfo": {// 信息收集, map
"hungupnode": "拒绝_首次施压(11)"
},
"record": [// 会话还原记录
{
"role": "speech",//角色,现有机器人侧(speech)和客户侧(voice)
"timestamp": 1603542315800942,//时间戳,微秒
"contextText": "您好,这边是千言银行智能客服中心,巴拉巴拉,请问是女士吗?",//回复文本 **(speech角色下取此字段作为回复文本)**
"intent": "",//意图
"start": "00:00.310",//片段开始时间(基于对话开始的相对时间)
"stop": "00:05.810",//片段结束时间(基于对话开始的相对时间)
"timeLen": 5500,//片段时长,毫秒
"interrupted": false,//打断标识,未打断
"interruptedTime": "",//打断时间 (基于对话开始的相对时间)
"silent": false//静默标识
"nodeInfo": "eyJwcm9jZXNzTmFtZSI6Iua4hea0l+e6v+e0oiIsIm5vZGVOYW1lIjoi6IKv5a6a6IqC54K5X3Vsc3JvMTU5IiwiaW50ZW50Ijoi6IKv5a6a5oSP5Zu+IiwiZW50aXR5IjpbXSwic3lzdGVtRXZlbnQiOiIiLCJmYXEiOiIifQ=="
},
{
"role": "voice",
"timestamp": 1603542324669326,
"content": "是的,",// 回复文本 **(voice角色下取此字段作为回复文本)**
"context": "",
"contextText": "",
"audioId": "2020/10/24//20/94cd0dc6-d36f-44fe-a643-8a8154a83371.wav",
"sn": "3F480D8F-B09D-4553-80BE-114B7D8B80BA",
"intent": "",
"start": "00:07.839",
"stop": "00:08.960",
"timeLen": 1121,
"interrupted": false,
"interruptedTime": "",
"silent": false
}
],
"intent": "未分类",//意向
"callerNum": "07567171348", // 主叫号码
"endType": 1, // 接通状态 1-已接通 0-未接通
"endTypeReason" : null,
"contactUUID": "c1ff838e-c2a4-11eb-a785-fa27000306ed", // 生成通话录音唯一标识
"durationTimeLen": 64,// 拨号总时长
"ringingTimeLen": 10, // 振铃时长
"talkingTimeLen": 5, // 对话时长
"startTime": 1635909010000, //呼叫开始时间-Unix时间戳(单位:毫秒)
"ringStartTime": 1635909010000,//振铃开始时间
"talkingStartTime": 1635909010000,//通话开始时间
"endTime": 1635909010000 ,//呼叫结束时间
"transResult":1,//转接成功
"extjson":"extJson"
返回(回调)示例
{
"code": 200,
"msg": "success",
}