呼叫中心呼叫系统接入
呼叫系统事件对接
呼叫系统调用企业接口的 eventtype、请求字段、响应字段和示例。
呼叫事件对接
- 呼叫中心用户电话呼入的时候,七鱼系统通过该接口向第三方系统获取用户信息,包括访客VIP级别、外接IVR路由、crm信息,根据获取到的信息进行访客分配,及访客信息更新;IVR过程中,IVR校验以及导航项动作自定义IVR接口和播放内容接口也使用该接口对接;通话结束后,同步通话记录使用该接口对接。通过参数eventtype进行区分。
- 对接URL配置在七鱼系统中:系统管理》扩展与集成》CRM信息对接》呼叫对接接口URL
参数eventtype类型说明:
| 参数值 | 参数说明 |
|---|---|
| 1 | 获取访客信息 |
| 2 | IVR校验 |
| 3 | 自定义IVR接口 |
| 4 | 播放内容接口 |
| 5 | 挂断时同步通话记录 |
| 6 | 同步电话服务记录字段 |
| 7 | 接起时同步通话记录 |
| 8 | 外呼时同步通话信息 |
| 9 | 外呼任务同步自定义字段 |
| 10 | 回铃音检测结果 |
| 11 | IVR数据请求 |
| 12 | 实时asr实时转译结果 |
| 13 | 外呼时获取用户真实号码 |
七鱼服务器向第三方接口请求信息时,采用密钥安全认证机制,保证第三方系统的信息安全。
数据校验
调用说明
- 本接口只支持POST请求;
- 本接口请求Content-Type类型为:application/json;charset=utf-8;
- 本接口返回类型为JSON,同时进行UTF-8编码。
接口请求地址
curl请求样例如下
- 电话呼入或呼出时,获取并更新打通用户信息(包括访客名称、VIP级别)或更新呼入路由信息(路由客服、客服组或IVR)
curl -X POST \
'http://www.xxx.com/api/ivr/crminfo?checksum=f570a5eb049eb803b086e45829b07e48&time=1511832531' \
-H 'content-type: application/json;charset=utf-8' \
-d '{
"eventtype": 1,
"phone": "15854582215", //访客号码
"staffphone": "05718669163" //客服号码
}'- IVR校验请求
curl -X POST \
'http://www.xxx.com/api/ivr/crminfo?checksum=f570a5eb049eb803b086e45829b07e48&time=1511832531' \
-H 'content-type: application/json;charset=utf-8' \
-d '{
"eventtype": 2,
"phone": "15854582215", //访客号码
"staffphone": "05718669163", //客服号码
"sessionid": 216629286, //会话ID
"ivrid": 3545, //IVR导航ID
"keyrecord": "2-1-0", //按键记录
"input": "110226198501272116", //访客按键输入值
"nodeNames": "欢迎语-条件分支-转客服组" //IVR流转的节点名称
}'- IVR过程中自定义IVR接口事件通知
curl -X POST \
'http://www.xxx.com/api/ivr/crminfo?checksum=f570a5eb049eb803b086e45829b07e48&time=1511832531' \
-H 'content-type: application/json;charset=utf-8' \
-d '{
"eventtype": 3,
"phone": "15854582215",
"staffphone": "05718669163",
"sessionid": 216629286,
"ivrid": 3545,
"keyrecord": "1-3"
}'- IVR过程中播放内容接口请求播放内容
curl -X POST \
'http://www.xxx.com/api/ivr/crminfo?checksum=f570a5eb049eb803b086e45829b07e48&time=1511832531' \
-H 'content-type: application/json;charset=utf-8' \
-d '{
"eventtype": 4,
"phone": "15854582215",
"staffphone": "05718669163",
"sessionid": 216629286,
"ivrid": 3545,
"keyrecord": "1-2"
}'- 通话结束后同步通话记录请求
curl -X POST \
'http://www.xxx.com/api/ivr/crminfo?checksum=f570a5eb049eb803b086e45829b07e48&time=1511832531' \
-H 'content-type: application/json;charset=utf-8' \
-d '{
"eventtype": 5,
"sessionid": 216629286, //通话记录ID
"direction": "呼入", //方向,呼入或呼出
"createtime": "2022-04-22 16:41:15", //通话创建时间
"endtime": "2022-04-22 16:41:16", //通话结束时间
"connectionbeginetime": "2022-04-22 16:41:16", //接通时间
"connectionendtime": "2022-04-22 16:41:16", //挂断时间
"from": "15854582215", //主叫号码
"to": "05718690766", //被叫号码
"user": "客户名称",
"category": "售后问题/退货", //咨询分类
"staffid": 642656, //接待客服ID
"staffname": "丽娜", //接待客服名称
"staffNickname": "丽娜", //接待客服昵称
"status": "接通", //会话状态
"visittimes": 1, //重复咨询次数
"duration": "10:15", //通话时长
"evaluation": "满意", //满意度评价
"recordurl": "https://ysf.nosdn.127.net/9f670ff01dae290ad4bf83401d291069.wav", //通话录音文件地址
"overflowFrom": "溢出来源",
"shuntGroupName":"分流客服组",
"ivrPath":"ivr路径",
"mobileArea":"号码归属地",
"waitDuration":"5分10秒", //排队等待时长
"ringDuration":"1小时10分", //振铃时长
"sessionIdFrom": 216629286, //转接至该会话的上一通会话id
"firstEndDirection":"用户", //挂机方,客服、用户、--
"muteEventDuration":"00分01秒", //静音时长
"muteEventCount": 1, //静音次数
"pauseEventDuration":"00分02秒", //暂停时长
"pauseEventCount": 1, //暂停次数
"dealTime":"01分02秒", //处理时长
"relatedSessionType":"人工", //转接来源 外呼机器人/人工/顺振/呼入机器人
"resolved": 0, //问题解决状态
"ivrKeyRecords":"1-2-1",//按钮记录
"fromType":"双向回呼", // 未知、双向回呼、手机在线、软电话、SIP话机、AXB
"formatMobileArea":"广东-惠州", //访客号码归属地
"transferTo":"05718690766", //转接去向,ivr名称、转接的号码、转接客服名称
"worksheetIds":[],//关联工单id
}'- 通话结束后同步电话服务记录字段请求
curl -X POST \
'http://www.xxx.com/api/ivr/crminfo?checksum=f570a5eb049eb803b086e45829b07e48&time=1511832531' \
-H 'content-type: application/json;charset=utf-8' \
-d '{
"eventtype": 6,
"sessionid": 216629286,
"from": "15854582215",
"to": "05718690766",
"workNumber": "NE_123124", // 客服工号,没有则传空字符串
"counselCategory":"咨询分类1/咨询分析2/咨询分类3",
"remarks":"咨询小计",
"createTime":"2022-04-22 16:41:16",//服务记录的最早提交时间
"updateTime":"",//服务记录的最后修改时间
"resolved":0,//0未解决;1已解决;2解决中。 需要模板中有问题解决状态字段
"customValueArray":[
{
"key":"自定义字段1",
"value":"自定义value1"
},
{
"key":"自定义字段2",
"value":"自定义value2"
}
]
}'- 通话接起时同步通话记录请求
curl -X POST \
'http://www.xxx.com/api/ivr/crminfo?checksum=f570a5eb049eb803b086e45829b07e48&time=1511832531' \
-H 'content-type: application/json;charset=utf-8' \
-d '{
"eventtype": 7,
"sessionid": 216629286,
"direction": "呼入",
"createtime": "2022-04-22 16:41:15",
"connectionbeginetime": "2022-04-22 16:41:16",
"from": "15854582215",
"to": "05718690766",
"user": "客户名称",
"staffid": 642656,
"staffname": "丽娜",
"staffNickname": "丽娜", //接待客服昵称
"status": "接通", //会话状态
"visittimes": 1, //重复咨询次数
"overflowFrom": "溢出来源", // 溢出来源组名称
"shuntGroupName":"分流客服组",
"ivrPath":"ivr路径",
"mobileArea":"号码归属地",
"sessionIdFrom": 216629286, //转接至该会话的上一通会话id
"relatedSessionType":"人工", //转接来源 外呼机器人/人工/顺振/呼入机器人
"ivrKeyRecords":"1-2-1",//ivr按键记录
"fromType":"双向回呼", // 通话来源。未知、双向回呼、手机在线、软电话、SIP话机、AXB
}'- 坐席外呼时同步通话信息请求
curl -X POST \
'http://www.xxx.com/api/ivr/crminfo?checksum=f570a5eb049eb803b086e45829b07e48&time=1511832531' \
-H 'content-type: application/json;charset=utf-8' \
-d '{
"eventtype": 8,
"sessionid": 216629286,
"direction": "呼出",
"createtime":"2022-04-22 16:41:15",
"from": "15854582215",
"to": "05718690766",
"user": "客户名称",
"staffid": 642656,
"staffname": "丽娜",
"staffNickname": "丽娜", //接待客服昵称
"mobileArea":"号码归属地"
}'- 外呼结束时同步任务自定义字段请求
curl -X POST \
'http://www.xxx.com/api/ivr/crminfo?checksum=f570a5eb049eb803b086e45829b07e48&time=1511832531' \
-H 'content-type: application/json;charset=utf-8' \
-d '{
"eventtype": 9,
"sessionid": 216629286, //通话ID
"callTaskId": 111, //任务ID
"guestPhone": "15854582215", //客户手机号
"guestName": "张三", //客户名称
"remarks": "" //外呼更多资料(备注)
}'- 外呼未接通时同步回铃音检测结果请求
curl -X POST \
'http://www.xxx.com/api/ivr/crminfo?checksum=f570a5eb049eb803b086e45829b07e48&time=1511832531' \
-H 'content-type: application/json;charset=utf-8' \
-d '{
"eventtype": 10,
"sessionid": 216629286, //通话ID
"from": "15854582215", //主叫
"to": "05718690766", //被叫
"status": "无法接通-关机" //检测结果(无法接通-无法接通、无法接通-忙线中、无法接通-关机、无法接通-停机、无法接通-空号、无法接通-欠费、无法接通-外呼失败)
}'- IVR到数据请求节点时获取数据请求,请求的参数字段,为ivr数据请求节点上面设置的参数字段,字段名称保持一致
curl -X POST \
'http://www.xxx.com/api/ivr/crminfo?checksum=f570a5eb049eb803b086e45829b07e48&time=1511832531' \
-H 'content-type: application/json;charset=utf-8' \
-d '{
"eventtype": 11,
"city":"杭州"
}'- 实时asr实时转译结果,每句话实时推送。请求体详情(需申请):
{
"eventtype": 12,
"sessionId": 216629286, //会话id
"msgId": 216629286, //消息id
"content":"哈哈哈", //消息内容
"createTime": 15854582215, //消息生成时间
"userType": 1, //音频来源方类型:0-坐席 1-访客
"userId": 216629286, //坐席或访客id
"userName": "张三" //坐席或访客名称
}- 外呼时获取用户真实号码。请求体详情(需申请,且要保证RT在毫秒级别,否则坐席状态可能出现异常):
{
"eventtype": 13,
"sessionId": 216629286, //会话id
"thirdPartyClueId": "ert6629aa" //第三方的线索id
}通话记录数据项补充说明:
- resolved : 通话问题解决状态,0表示未解决,1表示已解决,2表示解决中
- connectionbeginetime : 主叫和被叫双方通道开始建立的时间
- connectionendtime : 主叫或被叫通道最早断开的时间
- createtime : 主叫发起通话的时间
- endtime : 主叫或被叫通道最晚断开的时间
- direction : 通话方向,1呼入2呼出
- status : 通话的最终状态
- 接通
- 客服未接听
- 无法接通-无法接通
- 无法接通-忙线中
- 无法接通-关机
- 无法接通-停机
- 无法接通-空号
- 无法接通-欠费
- 无法接通-外呼失败
- 无法接通-网络不稳定
- 无法接通-骚扰拦截
- 无人应答
- IVR中放弃
- 队列中放弃
- 队列中溢出
- 不在服务时间
- 无客服在线
- 转接成功
- IVR服务
- IVR信息校验失败
- 客户快速挂机
- 客服未接听(自动外呼)
- 无空闲坐席(自动外呼)
- evaluation : 评价结果
- 非常满意
- 满意
- 一般
- 不满意
- 非常不满意
第三方接口需返回的数据的说明
接口返回数据为JSON格式,最外层参数如下:
| 参数 | 是否必须 | 参数说明 |
|---|---|---|
| code | 是 | 返回码,200表示成功。如eventtype=2时,200就表示校验通过;eventtype=3时,200表示动作执行成功等。 |
| result | 否 | code为200时,该返回值有效。eventtype=1时返回访客信息,为JSON格式数据;eventtype=4时返回播放的文本内容,为String格式数据;eventtype= 11时返回IVR数据请求节点需要的信息,字段与ivr数据请求节点设置字段名称保持一致,为JSON格式,其他值可以为空。 |
| message | 否 | 请求错误时,填错误提示信息。 |
- 当eventtype=1时,result数据格式如下:
| 参数 | 是否必须 | 数据类型 | 参数说明 |
|---|---|---|---|
| uid | 否 | String | 访客唯一标识ID |
| name | 否 | String | 访客姓名 |
| level | 否 | Int | 访客VIP级别,值为0到10 |
| groupId | 否 | Int | 分流客服组ID(呼入) |
| staffId | 否 | Int | 分流客服ID(呼入) |
| ivrId | 否 | Int | 分流到指定IVR(呼入) |
- 非VIP用户l****evel等于0,VIP级别等级为1到10数值
- groupId和staffId值对应七鱼系统中的客服组ID和客服ID,从七鱼管理后台「在线系统」->「设置」->「会话流程」->「访客分配」->「分配规则」->「ID查询」中查找获取。ivrId对应七鱼系统中的ivrId,从七鱼管理系统「呼叫系统」->「设置」->「路由策略」->「IVR语音导航」中查找获取。三种ID的优先级为:staffId->groupId->ivrId。
- 如果只设置了 staffId,七鱼会查找staffId对应的呼叫客服,如果该客服正好空闲的话,电话将优先分配给他。
- 如果设置了staffId和groupId,七鱼会优先查找staffId对应的呼叫客服,如果该客服正好空闲,电话将优先分配给他,否则系统判断是否有返回groupId值。如果有groupId值,系统再优先查找groupId对应的呼叫客服组进行分配。
- 如果只设置了groupId,七鱼会优先查找groupId对应的呼叫客服组,如果该客服组内正好有空闲客服,电话将随机分配给空闲的客服。如果该客服组内没有空闲客服,若有溢出规则,则按溢出规则走。
- 如果只设置了ivrId,七鱼会优先按照ivrId来进行分配,会忽略ivr会员等级分配策略。
- 如果没有返回staffId、groupId和ivrId三种中的任意一种,或者返回的值不存在,则七鱼将执行一般IVR分流。
返回的完整参数格式如下:
{
"code": 200,
"message": "",
"result": {
"level": 0,
"groupId": 415451,
"staffId": 2164623,
...
}
}- 当eventtype=13时,响应体数据格式如下:
{
"code": 200,
"message": "",
"result": {
"outNumber": "02323232323"
}
}第三方接口样例
以SpringMVC框架为例,第三方系统提供的接口如下:
@RequestMapping(value = "/crminfo", method = RequestMethod.POST)
@ResponseBody
public String getClientCrmInfoByPhone(
@RequestParam(value = "checksum", required = true) String checksum,
@RequestParam(value = "time", required = true) String time,
@RequestBody(required = true) String jsonStr
) {
// 此处省略业务代码
}这篇文档有帮助吗?