七鱼开发文档中心
总览服务端 APIWebiOSAndroid鸿蒙Uniapp微信小程序插件三方接入
呼叫中心呼叫系统接入

呼叫系统事件对接

呼叫系统调用企业接口的 eventtype、请求字段、响应字段和示例。

呼叫事件对接

  • 呼叫中心用户电话呼入的时候,七鱼系统通过该接口向第三方系统获取用户信息,包括访客VIP级别、外接IVR路由、crm信息,根据获取到的信息进行访客分配,及访客信息更新;IVR过程中,IVR校验以及导航项动作自定义IVR接口和播放内容接口也使用该接口对接;通话结束后,同步通话记录使用该接口对接。通过参数eventtype进行区分。
  • 对接URL配置在七鱼系统中:系统管理》扩展与集成》CRM信息对接》呼叫对接接口URL

参数eventtype类型说明:

参数值参数说明
1获取访客信息
2IVR校验
3自定义IVR接口
4播放内容接口
5挂断时同步通话记录
6同步电话服务记录字段
7接起时同步通话记录
8外呼时同步通话信息
9外呼任务同步自定义字段
10回铃音检测结果
11IVR数据请求
12实时asr实时转译结果
13外呼时获取用户真实号码

七鱼服务器向第三方接口请求信息时,采用密钥安全认证机制,保证第三方系统的信息安全。

数据校验

调用说明

  • 本接口只支持POST请求;
  • 本接口请求Content-Type类型为:application/json;charset=utf-8;
  • 本接口返回类型为JSON,同时进行UTF-8编码。

接口请求地址

curl请求样例如下

  1. 电话呼入或呼出时,获取并更新打通用户信息(包括访客名称、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"  //客服号码
  }'
  1. 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流转的节点名称
  }'
  1. 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"
  }'
  1. 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"
  }'
  1. 通话结束后同步通话记录请求
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
  }'
  1. 通话结束后同步电话服务记录字段请求
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"
        }
    ]

  }'
  1. 通话接起时同步通话记录请求
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
  }'
  1. 坐席外呼时同步通话信息请求
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":"号码归属地"
  }'
  1. 外呼结束时同步任务自定义字段请求
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": ""   //外呼更多资料(备注)
  }'
  1. 外呼未接通时同步回铃音检测结果请求
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": "无法接通-关机" //检测结果(无法接通-无法接通、无法接通-忙线中、无法接通-关机、无法接通-停机、无法接通-空号、无法接通-欠费、无法接通-外呼失败)
  }'
  1. 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":"杭州"
  }'
  1. 实时asr实时转译结果,每句话实时推送。请求体详情(需申请):
{
    "eventtype": 12,
    "sessionId": 216629286, //会话id
    "msgId": 216629286, //消息id
    "content":"哈哈哈", //消息内容
    "createTime": 15854582215, //消息生成时间
    "userType": 1, //音频来源方类型:0-坐席 1-访客
    "userId": 216629286, //坐席或访客id
    "userName": "张三" //坐席或访客名称
}
  1. 外呼时获取用户真实号码。请求体详情(需申请,且要保证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否请求错误时,填错误提示信息。
  1. 当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,
        ...
    }
}
  1. 当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
) {
    // 此处省略业务代码
}

这篇文档有帮助吗?

目录