数据管理和统计接口
呼叫记录查询接口
使用场景
使用http请求查询呼叫中心后台的通话记录,查询结果用json格式的字符串返回。
接口描述
日志查询接口,完整URL1:
http://127.0.0.1:12121/bridge/callctrl?first=0&maxResults=1000&beginDate=2020-02-01T08:30:00&endDate=2020-03-01&telnum=801&dirction=0&opt=CALL_LOG_QUERY
| 字段名 | 字段含义 | 描述 |
|---|---|---|
| first | int | 查询结果的索引值(默认从0开始) |
| maxResults | int | 为查询结果返回的数量 翻页参数实例: 第一页: first=0 maxResults=10 第二页: first=1 maxResults=10 第三页: first=2 maxResults=10 |
| beginDate | String | 可选,呼叫起始时间格式:yyyy-MM-dd 或者 yyyy-MM-ddTHH:mm:ss 注意:日期和时间用T隔开 |
| endDate | String | 可选,呼叫结束时间格式:yyyy-MM-dd 或者 yyyy-MM-ddTHH:mm:ss 注意:日期和时间用T隔开 |
| telnum | String | 可选,相关号码,不带该参数查询所有通话记录,多个号码可用逗号间隔 |
| dirction | int | 0: 全部 ,1: 接听记录 ,2:拨打记录 |
| shortestTalkTime | int | 可选:最小通话时长 |
| estimate | String | 评价查询,多个评价用逗号隔开. 默认:1:非常满意,2:满意,3:不满意. 若评价逻辑有重新定义,请安定义的来. |
| order | int | 0: 逆序(默认), 1:正序排列 |
| state | String | STATE_RECEIVED: 接通的 STATE_FAILED: 未接通的 不设置则查询全部 |
| opt | String | 常量不要修改CALL_LOG_QUERY |
| x.x.x.x:12121 | 呼叫中心服务器IP通讯地址 | 12121默认端口,如果手动修改过端口号请使用修改后的端口 |
日志查询数量接口,完整URL2:
http://127.0.0.1:12121/bridge/callctrl?beginDate=2020-02-01T08:30:00&endDate=2020-03-01&telnum=801&dirction=0&opt=CALL_LOG_COUNT
参数:同上 返回值:呼叫记录的数量
根据callid获取某条呼叫日子信息,完整URL3:
http://127.0.0.1:12121/bridge/callctrl?callid=df0897e8-b468-4b57-a5d8-9b48c92aa9c5%40192.168.1.86&opt=CALL_LOG_GET_WITH_CALLID
| 字段名 | 字段含义 | 描述 |
|---|---|---|
| callid | string | 来电弹屏等推送的编号 |
Http请求json响应字段解释:
| 实例说明 | Calllog呼叫日志信息 | Calllog呼叫日志信息 | Calllog呼叫日志信息 |
|---|---|---|---|
| id | Integer | 呼叫日志编号 | |
| caller | String | 主叫号码。 | |
| callee | String | 被叫号码 | |
| beginTime | Integer | 开始时间。 | |
| duration | Integer | 通话时长,秒 | |
| state | String | STATE_FAILED:失败, STATE_RECEIVED:成功, STATE_RECEIVING:通话中 | |
| callType | String | CENTREX_CALL: 内部通话, LOCAL_CALL:本地通话, NATIONAL_CALL:国内长途, OVERSEAS_CALL:国际长途, UNKNOW_CALL:未知 | |
| estimate | Integer | 客户评价,1:非常满意,2:满意,3不满意 | |
| Record | String | 文字呼叫记录(弹屏助手中录入) | |
| recordVoice | String | 服务器存储录音文件路径 | |
| Cname | String | 相关客户名称(弹屏助手中录入) | |
| servicetype | String | 对应配置管理后台“通话备注设置”售前,售后,批量外呼(弹屏助手中录入) | |
| manustate | String | 对应配置管理后台“通话备注设置”的子状态(弹屏助手中录入) | |
| clickcallid | String | 点击呼叫控制ID,用于对点击呼叫接口进行支持,点击呼叫接口会立刻返回clickcallid值,用于后续日志查询 | |
| Fxonum | String | 主叫FXO端口账号,用于记录来电是由哪一条线呼入的。 | |
| productid | Integer | 当前通话是对商机中的哪一个销售项目的外呼,用于统计针对某个销售项目外呼了多少电话。(弹屏助手中录入) | |
| _judge | Integer | 内部使用,请忽略 | |
| ivrAnwerTime | Long | 语音菜单响应时间 | |
| ivrAnwerDuration | Integer | 语音菜单放音时长 | |
| queueTime | Long | 进入排队的起始时间 | |
| queueDuration | Integer | 排队等待时长 | |
| ringTime | Long | 转人工后,分工分机振铃开始时间 | |
| ringDuration | Integer | 坐席分机振铃时长 | |
| business | String | BATCH_CALL: 批量自动外呼 INCOMING: 客户来电,没进入IVR菜单的情况 OUTGOING: 外呼客户电话 TRANSFER: 人工转接的来电 VOICE_MAIL: 语音留言 CONFERENCE: 会议 OUT_TRANSFER: 转外线 CENTREX_CALL: 内线呼叫 FORCE_PICKUP: 强插 TRANSFER_TO_IVR: 人工转IVR OUT_OUT: 双呼回拨 IVR_INCOMING: 语音菜单呼入,没有转接,IVR阶段就直接挂机了,没有任何操作 // 下面属于IVR转接的 IVR_TRANSFER: IVR来电转接人工 IVR_OUT_TRANSFER:IVR来电转接外部号码,例如转:110,120 QUEUE_TIMEOUT: 排队超时 QUEUE_HUNGUP: 排队客户挂机 AI_ROBOT: 机器人通话 // 机器人转人工会产生一条新的呼叫记录 AI_ROBOT_TRANSFER_IN: 机器人转入 INCOMING_CALL_FLOOD_CTRL: 流控拒绝的来电 | |
| accessnum | String | 若是通过IVR语音菜单打入,则记录客户的接入号码,一般用于E1线路区分线路的号码的打入情况。 | |
| ivrvoicemail | String | 客户打入IVR后进行留言,按键结束后生成的录音路径 | |
| standby | Integer | 就绪时间:置闲状态到来电振铃的时间,单位:秒 | |
| writetime | Integer | 案面时间:置忙状态下挂机到话务员置闲置闲的时间 | |
| holdtime | Integer | 通话中保持的次数 | |
| offwork | Boolean | True: 下班时间接打 False:上班时间接打 上下班时间设置请参考: 29.HTTP员工信息设置接口 | |
| standby | Long | 就绪时长,话务员接这通电话等待的时间,就绪时长会自动避开下班时间,保证合理性 | |
| writetime | Long | 案面时长(填写相关表单的耗时),话务员通话中置忙,当挂机时依旧时置忙状态,则启动案面时间计时,直到话务员置闲或下班结束案面时长计时。 | |
| holdtime | Integer | 保持次数,可用于分析话务员的求助次数,从侧面反馈话务员的业务熟练程度 |
| forward | String | 当次通话转接给某个号码的记录 | |
|---|---|---|---|
| earlymedia | String | 外呼失败,录制的运营商测得提示音 |
查询返回实例:
[
{"id":37,"caller":"60610123","callee":"816","beginTime":1459160867375,"duration":41,
"state":"STATE_RECEIVED","callType":"LOCAL_CALL","estimate":"","channel":"192.168.3.80",
"callid":"173a248c-8f85-4edb-b0c2-c11e1894a0d5%40192.168.1.82","calleeuid":32,
"record":"","recordVoice":"","cname":"","servicetype":"","manustate":"","clickcallid":"",
"fxonum":"","productid":0,"_callTime":"Mar 28, 2016 6:27:47 PM","_judge":0},
{"id":36,"caller":"60610123","callee":"3888","beginTime":1459160441301,"duration":0,
"state":"STATE_FAILED","callType":"LOCAL_CALL","estimate":"","channel":"192.168.3.82:5062",
"callid":"44530c9c-4184-43f1-a456-d51c272eff3b%40192.168.3.80","record":"",
"recordVoice":"","cname":"","servicetype":"","manustate":"","clickcallid":"","fxonum":"",
"productid":0,"_callTime":"Mar 28, 2016 6:20:41 PM","_judge":0}
]
呼叫记录,数据库字段说明,参考上述接口
数据库表名:telcrm.calllog
| 字段名称 | 描述 | 备注 |
|---|---|---|
| id | 编号(主键) | |
| caller | 主叫号码 | |
| callee | 被叫号码 | |
| channel | 呼叫通道 | |
| beginTime | 开始时间 | |
| duration | 持续时间 | |
| state | 通话状态,参考上述接口定义 | |
| callType | 呼叫类型,参考上述接口定义 | |
| estimate | 服务评价 | |
| callid | 呼叫CallID | |
| calleruid | 过期删除 | |
| calleeuid | 过期删除 | |
| record | 助手相关:通话备注 | |
| recordVoice | 录音文件路径 | |
| cname | 助手相关:客户名称 | |
| servicetype | 助手相关:服务类型 | |
| manustate | 助手相关:服务类型子类 | |
| clickcallid | 点击呼叫的CallID | |
| fxonum | 使用的相关落地线路编号 | |
| question | 助手相关:客户问题 | |
| productid | 过期删除 | |
| dtmfkey | 主机打入IVR的按键信息 | |
| ivrpoint | IVR转接的语音菜单节点 | |
| callerworknum | 主叫工号 | |
| calleeworknum | 被叫工号 | |
| business | 通话相关业务 | |
| prerecord | 坐席外呼客户彩铃等录制 | |
| robotrecord | AI机器人和客户沟通的录音文件 | |
| ivrAnwerTime | 主叫进入语音菜单时间 | |
| ivrAnwerDuration | 语音菜单放音时长 | |
| queueTime | 主叫排队起始时间 | |
| queueDuration | 主叫排队时长 | |
| ringTime | 被叫振铃起始时间 | |
| ringDuration | 振铃时长 | |
| stttxt | 过期删除 | |
| hungupside | 挂机方 | |
| ivrvoicemail | 语音菜单录制的客户留言录音地址 | |
| accessnum | 客户打入系统使用的接入号 | |
| clicktoken | 点击呼叫接口传入的字符串 |
呼叫记录推送接口
使用场景
配置一个呼叫中心后台配置 POST URL 推送地址后,系统会将呼叫记录数据推送到URL指定的服务上。
配置方式

推送数据格式
{
"client_ip": "192.168.3.86",
"datas": [
{
"id": 1476510,
"caller": "806",
"callee": "1000",
"beginTime": 1691059681306,
"duration": 0,
"state": "STATE_RECEIVED",
"callType": "LOCAL_CALL",
"estimate": "",
"callid": "105652437424950-326581766720130@192.168.3.9",
"question": "",
"record": "",
"recordVoice": "",
"earlymedia": "",
"dtmfkey": "",
"cname": "",
"servicetype": "",
"manustate": "",
"clickcallid": "",
"clicktoken": "",
"fxonum": "",
"accessnum": "1000",
"ivrpoint": "",
"callerworknum": "",
"calleeworknum": "",
"business": "",
"prerecord": "",
"robotrecord": "",
"ivrvoicemail": "",
"ivrAnwerTime": 1691059680144,
"ivrAnwerDuration": 1,
"queueTime": 0,
"queueDuration": 0,
"ringTime": 0,
"ringDuration": 0,
"pickupTime": 1691059681308,
"offwork": false,
"standby": 0,
"writetime": 0,
"holdtime": 0,
"forward": "",
"stttxt": "",
"hungupside": "",
"callervideo": "",
"calleevideo": "",
"peercallid": ""
}
]
}
JSON数据的具体意义请参考上一个接口的描述
推送数据响应
数据接收服务器需要及时返回字符串: 200:保存数据成功,可继续推送 400: 保存数据失败,需要重复推送
坐席接听和拨打KPI统计接口
使用场景
提供坐席接听电话的工作绩效统计接口。可使用分机进行统计,也可以通过《HTTP员工信息设置接口》的工号和上下班信息来进行统计。
接口描述
统计启动接口
| 参数名 | 参数定义 | 描述 |
|---|---|---|
| nums | string | 分机号,分组号 工号,参考《HTTP员工信息设置接口》 注:多个号码用逗号隔开 |
| type | string | extnum: 使用分机统计,不填写默认使用分机 worknum: 使用工号进行统计 |
| session | string | 由于统计是个耗时的工作,需要3步获取统计结果,这3步需要一个唯一字符串来关联。 |
| begin | string | 统计的呼叫记录开始时间,请使用如下格式提交 2021-01-01T00:00:00 注:日期和时间之间使用T字符间隔 |
| end | string | 统计的呼叫记录结束时间,请使用如下格式提交 2021-03-01T00:00:00 注:日期和时间之间使用T字符间隔 |
| opt | string | 接听统计: KPI_IN_HOUR: 按小时时间段统计(时间段不能超过31天) KPI_IN_DAY: 按天时间段统计 KPI_IN_MONTH: 按月时间段统计 KPI_IN_YEAR: 按年时间段统计 拨打统计: KPI_OUT_HOUR: 按小时时间段统计(时间段不能超过31天) KPI_OUT_DAY: 按天时间段统计 KPI_OUT_MONTH: 按月时间段统计 KPI_OUT_YEAR: 按年时间段统计 |
| x.x.x.x | CTI服务器IP地址或域名 |
- 返回值:
- 200 : 开始进行统计,可调用进度接口查询统计进度
- 400 : 参数错误
统计进度查询接口
| 参数名 | 参数定义 | 描述 |
|---|---|---|
| session | string | 保证和《统计启动接口》中得session一致 |
| opt | PROGRESS | 固定设置请不要修改 |
- 返回值:1-100 当返回100时,说明统计完成,可获取统计数据了。
统计数据获取接口
| 参数名 | 参数定义 | 描述 |
|---|---|---|
| session | string | 保证和《统计启动接口》中得session一致 |
| opt | GETDATA | 固定设置请不要修改 |
- 返回值:json格式的数据对象列表
[{"aname":"研发","cdatetime":"2021-02-19 10:00:00","durationType":"hour","ownerType":0,"num":"801","total":1,"ringDuration":9,"pickupCount":0,"quickPickCount":0,"talkingTime":0,"standbyTime":150,"writeTime":0,"avgTalkingTime":0,"avgStandbyTime":150,"avgWriteTime":0,"holdCount":0,"forwardCount":0,"judgeOpenCount":0,"judgeOpenRate":"","judgeCount":0,"goodCount":0,"badCount":0,"missCount":1,"restTime":0,"redialCount":0},{"aname":"研发","cdatetime":"2021-02-19 14:00:00","durationType":"hour","ownerType":0,"num":"801","total":1,"ringDuration":12,"pickupCount":0,"quickPickCount":0,"talkingTime":0,"standbyTime":6792,"writeTime":0,"avgTalkingTime":0,"avgStandbyTime":6792,"avgWriteTime":0,"holdCount":0,"forwardCount":0,"judgeOpenCount":0,"judgeOpenRate":"","judgeCount":0,"goodCount":0,"badCount":0,"missCount":1,"restTime":0,"redialCount":0},{"aname":"研发","cdatetime":"2021-02-19 16:00:00","durationType":"hour","ownerType":0,"num":"801","total":1,"ringDuration":6,"pickupCount":1,"quickPickCount":1,"talkingTime":15,"standbyTime":0,"writeTime":0,"avgTalkingTime":15,"avgStandbyTime":0,"avgWriteTime":0,"holdCount":0,"forwardCount":0,"judgeOpenCount":1,"judgeOpenRate":"100","judgeCount":1,"goodCount":1,"goodRate":"100","badCount":0,"missCount":0,"restTime":0,"redialCount":0},{"aname":"研发","cdatetime":"2021-02-20 17:00:00","durationType":"hour","ownerType":0,"num":"801","total":1,"ringDuration":8,"pickupCount":1,"quickPickCount":1,"talkingTime":3,"standbyTime":27,"writeTime":0,"avgTalkingTime":3,"avgStandbyTime":27,"avgWriteTime":0,"holdCount":0,"forwardCount":0,"judgeOpenCount":0,"judgeOpenRate":"","judgeCount":0,"goodCount":0,"badCount":0,"missCount":0,"restTime":0,"redialCount":0},{"aname":"TOTAL","cdatetime":"-","durationType":"-","ownerType":0,"num":"801","total":4,"ringDuration":8,"pickupCount":2,"quickPickCount":2,"talkingTime":18,"standbyTime":6969,"writeTime":0,"avgTalkingTime":9,"avgStandbyTime":1742,"avgWriteTime":0,"holdCount":0,"forwardCount":0,"judgeOpenCount":1,"judgeOpenRate":"50","judgeCount":1,"goodCount":1,"goodRate":"50","badCount":0,"missCount":2,"restTime":0,"redialCount":0},{"aname":"SUM TOTAL","cdatetime":"-","durationType":"-","ownerType":0,"num":"-","total":4,"ringDuration":8,"pickupCount":2,"quickPickCount":2,"talkingTime":18,"standbyTime":6969,"writeTime":0,"avgTalkingTime":9,"avgStandbyTime":1742,"avgWriteTime":0,"holdCount":0,"forwardCount":0,"judgeOpenCount":1,"judgeOpenRate":"50","judgeCount":1,"goodCount":1,"goodRate":"50","badCount":0,"missCount":2,"restTime":0,"redialCount":0}]
注意
- aname:TOTAL 表示已分机或工号为分组的汇总
- aname: SUM TOTAL 表示全部汇总的数据
效果图

字段说明
| 字段名 | 定义 | 描述 |
|---|---|---|
| aname | string | 坐席姓名 |
| cdatetime | string | 统计时间段开始时间 |
| durationType | string | 时间段类型 hour: 按小时统计 day: 按天统计 month: 按月统计 year: 按年统计 |
| ownerType | Integer | 0:按分机统计 1: 按工号统计 |
| total | Integer | 总打入或拨打量 |
| ringDuration | Integer | 平均振铃时长(秒) |
| pickupCount | Integer | 接起量 |
| quickPickCount | Integer | 快速接起量,默认15秒接听,可配置 |
| talkingTime | Integer | 总通话时长(秒) |
| standbyTime | Integer | 总就绪时长(秒) |
| writeTime | Integer | 总案面时长(秒) |
| avgTalkingTime | Integer | 平均通话时长(秒) |
| avgStandbyTime | Integer | 平均就绪时长(秒) |
| avgWriteTime | Integer | 平均案面时长(秒) |
| holdCount | Integer | 保持次数(接听特性) |
| holdRate | String | 保持率(接听特性) |
| forwardCount | Integer | 转接次数(接听特性) |
| forwardRate | Sting | 转接率(接听特性) |
| judgeOpenCount | Integer | 转满意度量 |
| judgeOpenRate | Sting | 转满意度率 |
| judgeCount | Integer | 客户平价量 |
| goodCount | Integer | 好评量 |
| goodRate | Sting | 好评率 |
| badCount | Integer | 差评量 |
| badRate | Sting | 差评率 |
| missCount | Integer | 漏接量(接听特性) |
| restTime | Integer | 小休时长(按小时统计无效) |
| redialCount | Integer | 按天统计时,客户来电重播量(接听特性) |
| redialRate | Sting | 二次来电率(接听特性) |
统计数据导出Excel接口
| 参数名 | 参数定义 | 描述 |
|---|---|---|
| session | string | 保证和《统计启动接口》中得session一致 |
| opt | EXPORT | 固定设置请不要修改 |
- 注意:导出需要再需要在统计完成后才能操作。
通话录音|视频下载接口
使用场景
使用http请求下载某通话的录音文件
接口描述
推荐根据录音文件路径下载录音,完整URL1:
http://127.0.0.1:12121/Oms/FileDownServlet?base64file=RDovVGVsQ1JNX1NSQy9UQ00wOF
| 字段名 | 字段含义 | 描述 |
|---|---|---|
| base64file | String | 文件路径的base64编码 |
| x.x.x.x:12121 | 呼叫中心服务器IP通讯地址 | 12121默认端口,如果手动修改过端口号请使用修改后的端口 |
根据呼叫记录编号下载录音,完整URL1:
http://x.x.x.x:12121/Oms/FileDownServlet?logId=8662
| 字段名 | 字段含义 | 描述 |
|---|---|---|
| logId | int | 对应呼叫记录查询接口返回的id |
| type | String | callervideo:主叫侧视频 calleevideo:被叫侧视频 若没有type参数则下载录音 |
| x.x.x.x:12121 | 呼叫中心服务器IP通讯地址 | 12121默认端口,如果手动修改过端口号请使用修改后的端口 |
根据callid下载录音,完整URL1:
http://x.x.x.x:12121/Oms/FileDownServlet?callid=1456383508555141554-0%40192.168.1.60
| 字段名 | 字段含义 | 描述 |
|---|---|---|
| callid | String | 来电弹屏时推送的callid |
| type | String | callervideo:主叫侧视频 calleevideo:被叫侧视频 若没有type参数则下载录音 |
| x.x.x.x:12121 | 呼叫中心服务器IP通讯地址 | 12121默认端口,如果手动修改过端口号请使用修改后的端口 |
根据callid下载关联的所有合并后的录音,完整URL1:
http://x.x.x.x:12121/Oms/FileDownServlet?allcallid=1456383508555141554-0%40192.168.1.60
| 字段名 | 字段含义 | 描述 |
|---|---|---|
| allcallid | String | 根据该参数查询出所有相关的通话并根据时间合并录音后提供下载 |
| backpath | String | true: 返回服务器语音文件路径 |
| x.x.x.x:12121 | 呼叫中心服务器IP通讯地址 | 12121默认端口,如果手动修改过端口号请使用修改后的端口 |
backpath=true的返回 {"msg":"/opt/data/records/monitor/2024-05-28/b595b42e-5c00-4f0d-9318-6f60feb46970@192.168.0.86.wav","success":true}
分机播放录音接口
使用场景
话务员使用电话机接打电话,电脑没有耳麦,可使用该接口来呼叫分机,接听后播放录音。 播放录音过程中,可不挂机,再次调用接口,切换播放的录音。
接口描述
根据callid下载录音,完整URL1:
http://x.x.x.x:12121/bridge/callctrl?callid=0123456789&extnum=801&skipseconds=4&opt=PLAY_CALL_LOG_RECORD
| 字段名 | 字段含义 | 描述 |
|---|---|---|
| callid | 呼叫记录中的callid | |
| extnum | 播放录音的分机号码 | |
| skipseconds | 跳过多少秒播放 | |
| x.x.x.x:12121 | 呼叫中心服务器IP通讯地址 | 12121默认端口,如果手动修改过端口号请使用修改后的端口 |
员工信息设置接口
使用场景
设置工号后,来电可以播报出来,并且在呼叫记录中会记录当前工号。
实现流程
略
接口描述
外呼接口完整URL:
http://x.x.x.x:12121/bridge/callctrl?extnum=801&workerid=41735&department=研发&uname=夏天&officehours=9:00-12:30,14:00-18:30&opt=SET_WORKER_ID
| 字段名 | 字段含义 | 描述 |
|---|---|---|
| extnum | 被叫分机号码 | |
| workerid | 工号 | |
| department | 员工姓名(UTF-8编码) | 分机管理->分机->员工姓名 注:因历史原因使用department,请不要给您带来困扰,这就是分机的员工姓名 |
| uname | 助手名称(UTF-8编码) | 电话助手管理->助手->员工姓名 |
| officehours | 上班时间 | 格式:9:00-12:30,14:00-18:30,19:00-20:30 该参数用于生成小休时间统计,避开下班时间 |
| opt | SET_WORKER_ID | 默认不要修改 |
| x.x.x.x:12121 | 服务器IP通讯地址 | 12121默认端口,如果手动修改过端口号请使用修改后的端口 |
Http请求响应码解释:
- 200: 成功
- 400: 参数错误
- 404: 分机不存在
