任务单通电话回调
更新时间:2024-09-14
描述
外呼系统通过用户配置的回调地址将批量任务中单通电话的呼叫数据进行回调
注意:
服务端(接收方)需要保证配置回调地址的一定吞吐。
在电话拨打数据量大的时,请求方(百度) 会造成瞬时请求压力较大,(因为我们会尽可能的把数据尽快的推送给乙方).
例如采用如下实现方案时请求可能发生堵塞,甚至超时丢失数据。
接收方:采用流量入口带宽不足,接口实现采用直接插入数据库(数据库配置也比较低时),回调会产生堵塞,如果严重超时,可能会造成请求失败。
我们推荐:
- 采用异步的方式,例如Kakfa,打印日志 保证接口快速响应。
- 增加资源配置,例如插入数据库,保证数据库一定磁盘,cpu等资源配置。
URL
回调地址(配置台-API配置-其他配置)
HTTP Method
POST
请求参数
参数名称 | 类型 | 是否必须 | 说明 | 示例 |
---|---|---|---|---|
callbackType | int | 是 | 回调数据类型, 0-任务呼叫单通电话回调 1-号码组终态回调 2-任务状态变更回调 3-实时呼叫单通电话回调 | 0 |
data | obj | 是 | 回调数据 |
data数据
参数名称 | 类型 | 是否必须 | 说明 | 示例 |
---|---|---|---|---|
sessionId | string | 是 | 通话唯一标识 | "201bd45e-a375-47e1-bcee-e5bcd3c6b523" |
tenantId | long | 是 | 租户唯一标识 | 10363 |
taskId | string | 是 | 任务标识 | "732721695686912" |
taskName | string | 是 | 任务名称 | "任务名称" |
robotId | string | 是 | 机器人ID | "2765019f-bef5-4f67-a3ac-1bd48db42e10" |
robotName | string | 是 | 外呼机器人名称 | "机器人名称1" |
memberId | long | 是 | 号码组唯一标识,导入名单后,返回的名单号码组对应标识 | 732722324373760 |
mobile | string | 是 | 被叫号码 | "16XX8937468" |
callTimes | int | 是 | 拨打次数 | 1 |
callerNum | string | 是 | 主叫号码 | "07567171348" |
endType | int | 是 | 接通状态,1-已接通 0-未接通 | 1 |
callType | int | 是 | 呼叫类型,0-首次呼叫;1-重试;2-预约呼叫;3-实时呼叫 | 1 |
endTypeReason | string | 是 | 未接通原因,详见 endTypeReason 列表 | "notexist" |
contactUUID | string | 是 | 生成通话录音唯一标识,可通过该标识,获取录音 | "c1ff838e-c2a4-11eb-a785-fa27000306ed" |
fileId | long | 是 | 文件id,名单导入任务时生成的文件ID | 732722299388160 |
collectInfo | obj | 是 | 信息收集内容 | {"hungupnode": "拒绝_首次施压"} |
record | array | 是 | 会话还原记录 | |
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" |
intent | string | 是 | 意向,在外呼机器人-流程节点-信息收集,配置key为「意向」,对应的value值 | "未分类" |
action | array | 是 | 动作,HUNGUP:挂机 | ["HANGUP"] |
isRobotHangup | boolean | 是 | 是否机器人主动挂机 | true |
dialogVar | obj | 是 | 变量,导入名单的变量 | {"变量1": "已接通"} |
smsVar | obj | 是 | 短信变量 | {"website":"深度啊感动"} |
extJson | String | 否 | 来自导入信息 | 来自导入信息 |
transResult | int | 否 | 转接结果 | 字段为空或值为0未发起,1成功,-1失败 |
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 |
endTypeReason 列表
未接通原因名称 | 类型 | 说明 |
---|---|---|
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": 0, // 0-任务单通电话回调 1-号码组终态回调 2-任务状态变更回调 3-实时任务通话记录回调
"data": {
"sessionId": "201bd45e-a375-47e1-bcee-e5bcd3c6b523", // 电话唯一标识
"tenantId": 10363, // 租户id
"taskId": "732721695686912", // 任务id
"taskName": "test_zjq_zpi_013", // 任务名称
"robotId": "2765019f-bef5-4f67-a3ac-1bd48db42e10", // 机器人id
"memberId": 732722324373760, // 号码组id
"mobile": "16XX8937468", // 电话号码
"callTimes": 1, // 拨打次数
"callerNum": "07567171348", // 主叫号码
"endType": 1, // 接通状态 1-已接通 0-未接通
"callType":0// 呼叫类型,0-首次呼叫;1-重试;2-预约呼叫;3-实时呼叫
"endTypeReason": "",//未接听原因string// 空号:notexist,停机:stopped,关机:poweroff,无法接通:cantbeconnected,用户忙:linebusy,规则限拨:ruleslimit,超过截止时间:beyonddeadline,黑名单:blacklist,其他原因:else,成功:success
"contactUUID": "c1ff838e-c2a4-11eb-a785-fa27000306ed", // 生成通话录音唯一标识
"fileId": 732722299388160, // 文件id
"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//静默标识
},
{
"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
}
],
"durationTimeLen": 64,// 拨号总时长
"ringingTimeLen": 10, // 振铃时长
"talkingTimeLen": 5, // 对话时长
"startTime": 1635909010000, //呼叫开始时间-Unix时间戳(单位:毫秒)
"ringStartTime": 1635909010000,//振铃开始时间
"talkingStartTime": 1635909010000,//通话开始时间
"endTime": 1635909010000 ,//呼叫结束时间
"intent": "未分类",//意向
"action":["HANGUP"]//动作,HUNGUP:挂机;
"isRobotHangup":true,//是否机器人主动挂机
"collectInfo": {// 信息收集, map
"hungupnode": "拒绝_首次施压(11)"
},
"dialogVar": { // 变量信息
"变量1": "已接通"
},
"extJson":"extJson",
"smsVar":{
"website":"深度啊感动"//短信变量
},
"transResult":1//转接成功
}
}
返回(回调)示例
{
"code": 200,
"msg": "success",
"data": {
"memberId": 673096993226752
}
}