话单推送
通话结果推送功能是在通话结束后,向使用云服务的企业或公司组织实时推送通话记录, 企业用户可以使用云客服平台提供的数据进行二次开发可以达到规范的数据交互,系统整合,功能整合; 使用此功能需要在manage后台系统开启 【高级设置==>开发者模式==>通话结果推送配置】 需要开启以及设置推送地址
推送参数说明
post方式推送,结果是一个json串放入到post body中(php 可以通过file_get_contents("php://input")来获取)
result字段说明
'0 '=> "接通",
'1' => "IVR挂机",
'2' => "留言",
'3' => "未接通",
'4' => "未接通留言",
'9' => "非白名单号码",
'101' => "ivr超限",
'102' => "企业未启用",
'103' => "企业已过期",
'104' => "余额不足",
'105' => "不在接通时间内",
'106' => "未设置日程",
'107' => "企业不存在",
'108' => "黑名单",
'109' => "非白名单号码"
'200' => "第一方未接通",
'201' => "第一方接通第二方未接通",
'202' => "第一第二方都接通",
双向外呼 event_code 字段说明
'1' => "第一方开始呼叫",
'2' => "第一方振铃",
'3' => "第一方接通",
'4' => "第一方挂机",
'5' => "第二方开始呼叫",
'6' => "第二方振铃",
'7' => "第二方接通",
'8' => "第二方挂机",
call_type(呼叫类型)说明
'1' => '呼出',
'2' => '呼入',
'3' => '呼出转接',
'4' => '呼入转接',
'5' => '呼出拦截',
'6' => '呼入拦截',
'7' => '被咨询',
'9' => '监听',
呼入记录字段说明
{
"type": 2,//1呼出,2呼入,5 双向外呼推送
"data": {
"callid": "yd_9760085",//呼叫唯一id
"vcc_code": "baoying",//企业代码
"server_num": "61194903",//中继号
"server_400": "4001321",//400号码
"cus_phone": "1359619xxxx",//客户号码
"cus_phone_areaname": "吉林 长春市",//客户号码归属地
"cus_phone_areacode": "0431",//客户号码 区号
"cus_phone_type": "MOBILE",//客户号码类型(MOBILE手机,TEL固话)
"que_id": "1",//技能组id
"que_name": "乘客端",//技能组名称
"group_name": "华北组",//业务组名称
"ag_name": "小明",//坐席名称
"ag_num": "20025",//坐席工号
"ag_phone": "2107",//坐席分机
"ag_phone_areaname": "",//坐席号码归属地
"ag_phone_areacode": "",//坐席号码区号
"ag_phone_type": "",//坐席号码类型(MOBILE手机,TEL固话)
"start_time": "1476064437",//开始时间
"quein_time": "1476064465",//进入技能组时间
"conn_time": "1476064509",//接通时间
"end_time": "1476064711",//结束时间
"ivr_secs": "28",//IVR时长
"wait_secs": "44",//等待时长
"conn_secs": "202",//通话时长
"all_secs": "274",//总时长
"result": "接通",//呼叫结果
"result_code" => "0",//结果码
"ivr_path": "按键1->转技能->关机",//ivr轨迹
"record_url": "http://xxxx/1.mp3"//录音地址
"endreult": "用户挂断", //用户挂断,坐席挂断
"endResult_code": "11", //11用户挂断,12坐席挂断 13转接
"ivr_vars": [], //ivr变量,如果开通了小号telx就放到这里面
"trans_mark": "1", //0x0001-转技能组;0x0002-转坐席;0x0004-转电话;0x0008-转机器人
"user_data" : {}, //自定义一些数据
}
}
呼出记录字段说明
{
type: 2,//1呼出,2呼入, 5 双向外呼推送
data: {
callid: "1",//呼叫唯一id
server_num: "61194903",//中继号
vcc_code: "12321",//企业代码
cus_phone: "136xxxxxxxx",//客户号码
cus_phone_areacode: "021",//客户号码归属地
cus_phone_areaname: "上海",//客户号码 区号
cus_phone_type: "MOBILE",//客户号码类型(MOBILE手机,TEL固话)
ag_name: "坐席",//坐席名称
ag_num: "9527",//坐席工号
ag_phone: "2107",//坐席号码
ag_phone_areacode: "",//坐席号码区号
ag_phone_areaname: "",//坐席号码归属地
ag_phone_type: "TEL",//坐席号码类型(MOBILE手机,TEL固话)
ag_conn_time: "",//坐席接听时间
cus_conn_time: "",//客户接听时间
end_time: "",//结束时间
ring_secs: "",//振铃时长
conn_secs: "",//通话时长
all_secs: "",//总时长
result: "接通",//呼叫结果
result_code => "0",//结果码
record_url: "http://xxxx/1.mp3"//录音地址
endreult: "用户挂断", //用户挂断,坐席挂断
endResult_code: "11", //11用户挂断,12坐席挂断 13转接
telx: "13151463265", //开通了小号才有此字段;
call_type: "2" //码表查看该页面上方
ag_start_time:"1623999985", // 呼叫坐席开始时间 如果不存在则为"0"
ag_ring_time: "1623999985", // 呼叫坐席振铃时间 如果不存在则为"0"
asr_int: 1, // 和asr_str对应 对应ASR消息中的 rd_int字段,如果没有ASR消息可能取ext_data里面的asr_int
asr_str: "用户忙", //归纳 如果没有ASR消息可能取ext_data里面的asr_str
}
}
呼入,呼出接通事件字段说明
{
"type": 101,//101呼出接通,102呼入接通
"data": {
"callid": "6580006382223777792",
"vcc_code": "12312",//企业代码
"serv_num": "12321",//中继号
"cus_phone": "1232313",//客户号码
"cus_phone_areacode": "0592",//区号
"cus_phone_areaname": "福建 厦门市",//归属地
"cus_phone_type": "MOBILE",//号码类型
"que_id": "0",//技能组id
"que_name": "",//技能组名称
"group_name": "",//业务组名称
"ag_name": "杨静10",//坐席名称
"ag_num": "1096",//坐席工号
"ag_phone": "8096",//坐席分机
"ag_phone_areaname": "",
"start_time": "1568795772",//通话开始时间
"que_time": "0",//进入技能组时间
"conn_time": "1568795790",//接通时间
"ivr_secs": "0",//ivr时长
"wait_secs": "0"//等待时长
}
}
双向外呼话单字段说明
{
type: 5,//1呼出,2呼入, 5 双向外呼推送
data: {
vcc_code: "12321",//企业代码
callid: "1",//呼叫唯一id
caller_id: "01057624341",//呼叫第一方来电时显示的主叫号码 取消息体中的
tel: "136xxxxxxxx",//呼叫的第一方的电话号码
tel_areacode: "010",//第一方号码的区号
tel_areaname: "北京",//第一方号码的归属地
trans_caller: "01057624341",//呼叫第二方来电时显示的主叫号码
trans_called: "136xxxxxxxx",//呼叫的第二方的电话号码
trans_areacode: "010",//第二方号码的区号
trans_areaname: "北京",//第二方号码的归属地
caller_ring_time: "1554103397",//第一方振铃时间
caller_ring_secs: "11",//第一方振铃时长
caller_conn_time:"12321312",//第一方接通时间
called_ring_time:"123123123",//第二方振铃时间 时间戳
called_ring_secs:"12",//第二方振铃时长 秒
called_conn_time: "123123123",//第二方接通时间 时间戳
end_time: "11111111",//通话结束时间 时间戳
conn_secs: "1",//通话总时长 秒
all_secs: "30",//总时长
result_code => "201",//结果码
result: "第一第二方都接通",//呼叫结 查看最上面的 result 码对应的意思
record_url: "http://xxxx/1.mp3"//录音地址
endresult: "第二方挂断", //结束类型: 用户挂断,坐席挂断
endResult_code: "11", //结束类型码: 11用户(第二方)挂断, 12坐席(第一方)挂断 13转接
asr_int: 1, // 和asr_str对应 对应ASR消息中的 rd_int字段,如果没有ASR消息可能取ext_data里面的asr_int
asr_str: "用户忙", //归纳 如果没有ASR消息可能取ext_data里面的asr_str
}
}
第一方开始呼叫事件推送
{
type: 6,//1呼出,2呼入, 5 双向外呼推送,6 双向外呼事件
data: {
callid: "1",//呼叫唯一id
event_code: "1",//事件编号
event_name: "第一方开始呼叫",//事件名称
vcc_code: "hfj",//企业代码
caller_id: "57624341",//第一方显示号
tel: "1831013xxxx",//第一方号码
start_time: "1554100354",//第一方开始呼叫时间
user_data: {} // 自定义扩展数据 这个字段如果有就取;没有得话得就是一个空对象;
}
}
第一方振铃事件推送
{
type: 6,//1呼出,2呼入, 5 双向外呼推送,6 双向外呼事件
data: {
callid: "1",//呼叫唯一id
event_code: "2",//事件编号
event_name: "第一方振铃",//事件名称
vcc_code: "hfj",//企业代码
caller_id: "57624341",//第一方显示号
tel: "1831013xxxx",//第一方号码
start_time: "1554100354",//第一方呼叫开始时间
ring_time: "1554100355",//第一方振铃开始时间
user_data: {} // 自定义扩展数据
}
}
第一方接通事件推送
{
type: 6,//1呼出,2呼入, 5 双向外呼推送,6 双向外呼事件
data: {
callid: "1",//呼叫唯一id
event_code: "3",//事件编号
event_name: "第一方接通",//事件名称
vcc_code: "hfj",//企业代码
caller_id: "57624341",//第一方显示号
tel: "1831013xxxx",//第一方号码
start_time: "1554100354",//第一方呼叫开始时间
ring_time: "1554100355",//第一方振铃开始时间
answer_time: "1554100364",//第一方接通时间
user_data: {} // 自定义扩展数据
}
}
第一方挂机事件推送
{
type: 6,//1呼出,2呼入, 5 双向外呼推送,6 双向外呼事件
data: {
callid: "1",//呼叫唯一id
event_code: "4",//事件编号
event_name: "第一方挂机",//事件名称
vcc_code: "hfj",//企业代码
caller_id: "57624341",//第一方显示号
tel: "1831013xxxx",//第一方号码
start_time: "1554100354",//开始时间
ring_time: "1554100355",//第一方振铃开始时间
answer_time: "1554100364",//第一方接通时间
hangup_time: "1554102717",//第一方挂机时间
user_data: {} // 自定义扩展数据
}
}
第二方开始呼叫事件推送
{
type: 6,//1呼出,2呼入, 5 双向外呼推送,6 双向外呼事件
data: {
callid: "1",//呼叫唯一id
event_code: "5",//事件编号
event_name: "第二方开始呼叫",//事件名称
vcc_code: "hfj",//企业代码
caller_id: "57624341",//第一方显示号
tel: "1831013xxxx",//第一方号码
start_time: "1554100364",//呼叫第二方开始时间
trans_caller: "57624341",//第二方显示号
trans_called: "1554100364",//第二方号码
user_data: {} // 自定义扩展数据
}
}
第二方振铃事件推送
{
type: 6,//1呼出,2呼入, 5 双向外呼推送,6 双向外呼事件
data: {
callid: "1",//呼叫唯一id
event_code: "6",//事件编号
event_name: "第二方振铃",//事件名称
vcc_code: "hfj",//企业代码
caller_id: "57624341",//第一方显示号
tel: "1831013xxxx",//第一方号码
start_time: "1554100364",//呼叫第二方开始时间
trans_caller: "57624341",//第二方显示号
trans_called: "1554100364",//第二方号码
ring_time: "1554100370",//第二方振铃时间
user_data: {} // 自定义扩展数据
}
}
第二方接通事件推送
{
type: 6,//1呼出,2呼入, 5 双向外呼推送,6 双向外呼事件
data: {
callid: "1",//呼叫唯一id
event_code: "7",//事件编号
event_name: "第二方接通",//事件名称
vcc_code: "hfj",//企业代码
caller_id: "57624341",//第一方显示号
tel: "1831013xxxx",//第一方号码
start_time: "1554100364",//呼叫第二方通话开始时间
trans_caller: "57624341",//第二方显示号 trans_caller
trans_called: "1554100364",//第二方号码 trans_caller
ring_time: "1554100370",//第二振铃时间
answer_time: "1554102713",//第二方接通时间
user_data: {} // 自定义扩展数据
}
}
第二方挂机事件推送
{
type: 6,//1呼出,2呼入, 5 双向外呼推送,6 双向外呼事件
data: {
callid: "1",//呼叫唯一id
event_code: "8",//事件编号
event_name: "第二方挂机",//事件名称
vcc_code: "hfj",//企业代码
caller_id: "57624341",//第一方显示号
tel: "1831013xxxx",//第一方号码
start_time: "1554100364",//呼叫第二方通话开始时间
trans_caller: "57624341",//第二方显示号
trans_called: "1554100364",//第二方号码
ring_time: "1554100370",//第二振铃时间
answer_time: "1554102713",//第二方接通时间
hangup_time: "1554100424",//第二方挂机时间
user_data: {} // 自定义扩展数据
}
}
未接通ASR推送
{
type: 7,//1呼出,2呼入, 5 双向外呼推送,6 双向外呼事件, 7ASR推送
data: {
callid: "1",//呼叫id
ag_cdrid: "1",//如果发生转接了可能需要用到该字段标识唯一
asr_int: 1,//和asr_str对应
asr_str: "用户忙",//归纳
asr_str_detail: "S-回铃:通话中",//详细信息
}
}
asr_int 和 asr_str对应关系
'1' => '用户忙',
'2' => '无法接通',
'3' => '关机',
'4' => '停机',
'5' => '空号',
'6' => '号码错误',
'11' => '呼叫限制',
'98' => '无法识别',
'99' => '录音文件错误',
满意度推送
{
"type": 3,//1呼出,2呼入, 3满意度推送, 5 双向外呼推送,6 双向外呼事件, 7ASR推送
"data": {
"vcc_id": 1, //企业ID
"ag_id": 1, //坐席ID
"ag_num": "230111",//坐席工号
"ag_name": "11",//坐席姓名
"callid": "6787322435717853184",
"eva_0": "客户挂机", //评价结果
"eva_x": "如果具备多个满意度依次 0,1,2..."
}
}
**注意满意度和话单属于异步推送有一定的概率满意度先推送,接收接口如果想把满意度更新到话单中需要注意顺序问题, 根据callid,ag_id可以对应话单**
评价结果类型
'坐席挂机'
'客户挂机'
'转接'
'强拆'
'坐席强退'
'超时未评价'
'评价失败'
0 //如果老版本满意度就是具体按键;如果是新版本满意度配置就是对应配置的结果
1
2
3
4
5
6
7
8
9
转接字段说明
{
type: 4, // 转接
data: {
callid: "1",//呼叫唯一id
server_num: "61194903",//中继号
vcc_code: "12321",//企业代码
cus_phone: "136xxxxxxxx",//客户号码
cus_phone_areacode: "021",//客户号码归属地
cus_phone_areaname: "上海",//客户号码 区号
cus_phone_type: "MOBILE",//客户号码类型(MOBILE手机,TEL固话)
ag_name: "坐席",//坐席名称
ag_num: "9527",//坐席工号
ag_phone: "2107",//坐席号码
ag_phone_areacode: "",//坐席号码区号
ag_phone_areaname: "",//坐席号码归属地
ag_phone_type: "TEL",//坐席号码类型(MOBILE手机,TEL固话)
ag_conn_time: "",//坐席接听时间
cus_conn_time: "",//客户接听时间
end_time: "",//结束时间
ring_secs: "",//振铃时长
conn_secs: "",//通话时长
all_secs: "",//总时长
result: "接通",//呼叫结果
result_code => "0",//结果码
record_url: "http://xxxx/1.mp3"//录音地址
endreult: "用户挂断", //用户挂断,坐席挂断
endResult_code: "11", //11用户挂断,12坐席挂断 13转接
telx: "13151463265", //开通了小号才有此字段;
call_type: "2" //码表查看该页面上方
ag_start_time:"1623999985", // 呼叫坐席开始时间 如果不存在则为"0"
ag_ring_time: "1623999985", // 呼叫坐席振铃时间 如果不存在则为"0"
asr_int: 1, // 和asr_str对应 对应ASR消息中的 rd_int字段,如果没有ASR消息可能取ext_data里面的asr_int
asr_str: "用户忙", //归纳 如果没有ASR消息可能取ext_data里面的asr_int
}
}
语音识别结果字段说明
{
"data":{
"agId":"5042", //坐席id
"vccId":"782", //企业id
"beginTime":2960, //一句话的开始时间(毫秒)
"callId":"6834064536178405376", //通话id
"direction":1, //1:坐席 2:用户
"endTime":3860, //一句话的结束时间(毫秒)
"index":1, //识别的句子编号,从1开始
"index2":0, //0为最终结果,大于0为中间结果编号(大于0的不会推)
"result":"喂。" //最新语音识别结果
"final":1 //该字段返回1时表示音频流全部识别结束(结束才有)
},
"type":13 //语音识别
}
录音完成推送
{
"data": {
"record_url": "xxxx.mp3/wav", // 录音地址
"call_id": "6836506161412313088" // callid
},
"type": 14 // 录音完成推送
}
回调说明
如果数据接收成功需要返回一个响应消息
{"code":200,"msg":"ok"}
如果code不为200或格式不正确,我们会识别为推送失败,将重新推送该条记录
重推策略
第一次 1s
第二次 1s
第三次 1s
第四次 10s
第五次 20s
第六次 30s
第七次 1m
第八次 2m
第九次 5m
第十次 10m
第十一次 20m
第十二次 30m
第十三次 60m
可以在“http推送日志”中手动重新推送失败的记录