话单接口文档
- 通用api - 获取授权Token接口
- 通用api - 获取通话记录接口
- 通用api - 清除Token接口
- 通用api - 全局错误码和状态码
- 通用api - 通话记录回调参数说明
- 通用api - 通话录音下载链接接口
通用api - 获取授权Token接口
接口说明:
访问其他接口所需的token均需通过授权的Appid和Accesskey从此接口获取(批量IVR接口除外)。接口授权Token时效性为12小时。
请求方式
POST,form-data格式
请求参数
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| appid | string | 是 | 授权appid |
| accesskey | string | 是 | 授权accesskey |
| service | string | 是 | App.Sip_Auth.Login |
接口请求示例(PHP)
<?php
$apiUrl = 'http://127.0.0.1:8080';
$postFields = [
'service' => 'App.Sip_Auth.Login',
'appid' => 'ABCDEFG',
'accesskey' => 'ABCDEFG',
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $apiUrl);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
$curlError = curl_error($curl);
curl_close($curl);
var_dump($response);
?>
返回数据结构示例
{
"ret":200,
"data":{
"status":0,
"desc":"授权成功",
"result":{
"companycode":"1",
"companyname":"test",
"token":"773a70dd02f0695d50205e9b267692b9",
"authtime":"2020-01-01 00:00:00",
"authmodel":""
},
"reqtime":1581240882,
"rsptime":1581240882
},
"msg":""
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| companycode | int | 公司代码 |
| companyname | string | 公司名称 |
| token | string | 授权token,用来访问其他接口 |
通用api - 获取通话记录接口
接口说明
客户主动拉取通话记录列表的接口。
请求方式
POST,form-data格式
获取通话记录接口请求参数
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| service | string | 是 | App.Sip_Cdr.GetBill |
| token | string | 是 | 通过授权接口获取的token |
| starttime | string | 是 | (拔打)起始时间,格式:yyyy-mm-dd hh:mm:ss |
| endtime | string | 是 | (拔打)结束时间,格式:yyyy-mm-dd hh:mm:ss |
| syncflag | int | 是 | 获取记录类型:1、获取未查询过的记录(默认);2、获取已查询过的记录;3、获取全部记录。 |
| direction | int | 是 | 呼叫方向:1、呼入; 2、呼出;3、全部(默认)。 |
| callmethod | int | 是 | 呼叫方法:0、不限;1、分机互拨;2、分机直拨(手拨);3、API呼叫(默认);4、API双呼;5、预测式外呼;6、IVR/群呼。 |
| currentpage | int | 是 | 页数,默认:1 |
| itemsperpage | int | 是 | 每页数量,默认:10,最小:1;最大:1000 |
| extnumber | string | 是 | 分机号,多个分机号用英文逗号隔开,传空值时为全部 |
| destnumber | string | 是 | 呼叫的目标号码,传空值时为全部 |
| userid | string | 是 | 自定义数据(员工ID),可为空值 |
| memberid | string | 是 | 自定义数据(会员ID),可为空值 |
| ext | string | 否 | 自定义数据(扩展参数) |
| customuuid | string | 否 | 自定义数据(客户ID) |
获取通话记录接口请求示例(PHP)
<?php
$apiUrl = 'http://127.0.0.1:8080';
$postFields = [
'service' => 'App.Sip_Cdr.GetBill',
'token' => 'ABCDEFG',
'starttime' => '2019-01-12 00:00:00',
'endtime' => '2020-12-12 00:00:00',
'direction' => 3
'syncflag' => 3,
'callmethod' => 0,
'currentpage' => 1,
'itemsperpage' => 10,
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $apiUrl);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
$curlError = curl_error($curl);
curl_close($curl);
var_dump($response);
?>
返回数据结构示例
{
"ret": 200,
"data": {
"status": 0,
"desc": "获取成功",
"result": {
"totalitems": 8151,
"currentpage": 1,
"itemsperpage": 10,
"bills": [
{
"id": 823988364,
"companycode": "8888723",
"direction": "callout",
"callmethod": 5,
"starttime": "2025-10-16 16:18:07",
"answertime": "",
"endtime": "2025-10-16 16:18:43",
"duration": 36,
"billsec": 0,
"userid": "U_q1IBUeAn",
"memberid": "M_v9sKNEVV",
"ext": "{\"type\":\"robot\",\"level\":4}",
"chengshudu": "{\"type\":\"robot\",\"level\":4}",
"disnumber": "218888723001",
"destnumber": "15978995617",
"extnumber": "8888723002",
"recordfilename": "",
"downloadip": "",
"hangupdirection": 10041,
"hangupcase": 10020,
"uuid": "a526e04e-aa68-11f0-96ea-5ba23668545d",
"userkey": "",
"customuuid": "SIcqy3Bu-qBxv-hquJ-B80W-QaOpFkWMHe8h",
"taskid": "20251016161536503802",
"round": "1",
"recordurl": ""
}
]
},
"reqtime": 1581502410,
"rsptime": 1581502410
},
"msg": ""
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| result | objest | 返回的结果集 |
| —totalitems | int | 记录总数 |
| —currentpage | int | 当前页码 |
| —itemsperpage | int | 每页数量 |
| —bills | array | 记录数组 |
| ——id | int | 记录id |
| ——companycode | string | 企业code |
| ——extnumber | string | 分机号 |
| ——destnumber | string | 目标号码 |
| ——disnumber | string | 显示号码 |
| ——starttime | string | 呼叫时间 |
| ——answertime | string | 应答时间 |
| ——endtime | string | 通话结束时间 |
| ——duration | int | 呼叫等待时长 |
| ——billsec | int | 通话时长 |
| ——direction | string | 呼叫方向 |
| ——callmethod | int | 呼叫方式 |
| ——userid | string | 自定义参数(用户id) |
| ——memberid | string | 自定义参数(会员id) |
| ——chengshudu | string | 自定义参数(和ext值一样) |
| ——ext | string | 自定义参数(扩展参数) |
| ——customuuid | string | 自定义参数(客户id) |
| ——recordfilename | string | 通话记录文件名 |
| ——downloadip | string | 下载ip |
| ——hangupdirection | int | 挂断方向 |
| ——hangupcause | int | 挂断原因 |
| ——userkey | string | 用户按键 |
| ——taskid | string | 预测外呼任务id |
| ——round | string | 预测外呼轮次 |
| ——recordurl | string | 录音下载url |
Postman请求参数示例

通用api - 清除Token接口
接口说明
当有新增分机或是分机进行调整后出现异常时,可以通过该接口清除Token后,再重新获取Token继续操作。
请求方式
POST,form-data格式
请求参数
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| service | string | 是 | App.Sip_Auth.Logout |
| token | string | 是 | Token字符串 |
接口请求示例(PHP)
<?php
$apiUrl = 'http://127.0.0.1:8080';
$postFields = [
'service' => ' App.Sip_Auth.Logout',
'token' => 'ABCDEFG',
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $apiUrl);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
$curlError = curl_error($curl);
curl_close($curl);
var_dump($response);
?>
返回数据结构示例
{
"ret": 200,
"data": {
"status": 0,
"desc": "注销成功",
"reqtime": 1602655204,
"rsptime": 1602655204
},
"msg": ""
}
通用api - 全局错误码和状态码
一、接口异常错误
说明:ret为非200,msg为异常的错误信息。
{
"ret":400, // 状态码
"data":[],
"msg":"非法请求:参数不合法"
}
| ret | msg | 说明 |
|---|---|---|
| 400 | 非法请求 | 一般为参数不合法 |
| 500 | 服务器错误 | |
| 600 | token无效请重新登陆验证 | |
| 601 | appid未授权 | 请检查appid或联系云呼科技是否授权 |
| 602 | appid授权已到期 | |
| 603 | 模块未授权 | |
| 604 | IP未授权 | 请联系厂商授权访问 |
二、接口请求正常,内部处理错误
说明:ret为200。data结构体里status为1,desc为失败的中文描述,errors为详细错误信息,其中code码请参照对应说明。msg为空。
{
"ret": 200,
"data": {
"status": 1,
"desc": "xxx失败",
"errors": {
"code": "1003",
"codemsg": "授权失败"
},
"reqtime": 1507529858,
"rsptime": 1507529858
},
"msg": ""
}
| code | codemsg | 说明 |
|---|---|---|
| 1001 | 服务器连接失败 | 一般为网络原因 |
| 1002 | 操作异常 | 一般为校验异常等 |
| 1003 | 操作失败 | 一般是授权失败、注销失败、命令发送失败、服务器连接异常等 |
| 1010 | 分机异常 | 可能是新加的分机,需要重新登陆获取新token |
| 1011 | 非法分机 | 非本公司所有 |
| 1012 | 分机不存在 | 分机号码状态 |
| 1013 | 分机已停用 | 分机号码状态 |
| 1014 | 分机未注册 | 分机号码状态 |
| 1015 | 分机不在通话中 | 分机号码状态 |
| 1016 | 分机已启用 | 分机号码状态 |
| 1017 | 分机已注册 | 分机号码状态 |
| 1018 | 号码已启用 | 主叫号码状态 |
| 1019 | 号码已禁用 | 主叫号码状态 |
| 1020 | 号码不存在 | 主叫号码状态 |
| 1021 | 非法号码 | 非本公司所有 |
| 1024 | 任务不存在 | 预测式任务接口返回状态 |
| 1025 | 未开始 | 预测式任务接口返回状态 |
| 1026 | 进行中 | 预测式任务接口返回状态 |
| 1027 | 暂停 | 预测式任务接口返回状态 |
| 1028 | 已结束 | 预测式任务接口返回状态 |
| 1201 | 空闲 | 分机合法、已启用并已注册 |
| 1202 | 振铃 | 分机号返回 |
| 1203 | 摘机 | 分机号返回 |
| 1204 | 通话中 | 分机号返回 |
| 1205 | 用户拒接 | 被叫方拒接 |
| 1210 | 队列异常 | 预测式外呼中返回 |
| 1211 | 非法队列 | 不存在或非本公司所有 |
| 1212 | 未接听 | 已分配未接听 |
| 1213 | 等待中 | 等待分配(示闲) |
| 1214 | 接收中 | 队列中的分机状态 |
| 1215 | 已接听 | 队列里的分机状态 |
| 1216 | 拒接 | 队列里的分机状态 |
| 1217 | 暂停 | 示忙 |
| 1218 | 已签入 | 队列中已签入该分机 |
| 10001 | 正常挂断 | 挂机原因 |
| 10002 | 呼叫取消 | 挂机原因 |
| 10003 | 拒绝接听 | 挂机原因 |
| 10004 | 外呼通道线路失败 | 挂机原因 |
| 10005 | 用户超时未接听 | 挂机原因 |
| 10006 | 用户忙 | 挂机原因 |
| 10007 | 服务器端挂断 | 挂机原因 |
| 10008 | 分机未注册 | 挂机原因 |
| 10009 | 目标不可达 | 挂机原因 |
| 10011 | 定时器超时 | 挂机原因 |
| 10012 | 呼入时回调接口错误 | 挂机原因 |
| 10013 | 分机不存在 | 挂机原因 |
| 10014 | 未发现 | 挂机原因 |
| 10015 | 请求超时 | 挂机原因 |
| 10016 | 无人接听 | 挂机原因 |
| 10017 | 呼叫失效 | 挂机原因 |
| 10019 | 归属地未知 | 挂机原因 |
| 10020 | 其它原因 | 挂机原因 |
| 10024 | 错误请求 | 挂机原因 |
| 10025 | 呼叫被禁止 | 挂机原因 |
| 10027 | 号码被改变 | 挂机原因 |
| 10028 | 呼叫拦截 | 挂机原因 |
| 10031 | 未知 | 挂机原因 |
| 10040 | 主叫挂机 | 挂机方向 |
| 10041 | 被叫挂机 | 挂机方向 |
通用api - 通话记录回调参数说明
通话记录回调参数说明
话单回调需要给对应的账号配置上回调地址即可。 话单的回调地址配置:由客户提供一个可以接收json数据的接口地址,由我们配置或客户自行在后台配置都可以。
通话记录回调数据格式json
{
"id": 263056202,
"companycode": "9513923",
"direction": "callout",
"type": "callout",
"callmethod": 6,
"starttime": "2025-10-16 17:31:13",
"answertime": "",
"endtime": "2025-10-16 17:31:21",
"duration": 8,
"billsec": 0,
"userid": "0",
"memberid": "0",
"chengshudu": "0",
"ext": "0",
"disnumber": "219513923001",
"destnumber": "81351111451",
"extnumber": "",
"recordfilename": "",
"downloadip": "",
"hangupdirection": 10040,
"hangupcause": 10020,
"uuid": "db4a44cc-aa72-11f0-ad78-1d7ff0749d07",
"userkey": "",
"customuuid": "76c33d997640d36b033d43b1d2d3964e",
"taskid": "",
"round": 0,
"recordurl": ""
}
通话记录回调参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| callmethod | int | 呼叫方法:0、不限;1、分机互拨;2、分机直拨(手拨);3、API呼叫(默认);4、API双呼;5、预测式外呼;6、IVR/群呼。 |
| starttime | string | 呼叫时间 |
| answertime | string | 应答时间 |
| endtime | string | 通话结束时间 |
| duration | int | 呼叫等待时长 |
| billsec | int | 通话时长 |
| userid | string | 员工工号 |
| ext | string | 自定义参数-扩展参数 |
| chengshudu | string | 自定义参数-值和ext一致 |
| hangupdirection | int | 挂机方向 |
| hangupcause | int | 挂机原因代码 |
| memberid | string | 自定义参数-会员id |
| disnumber | string | 主叫号码 |
| destnumber | string | 被叫号码 |
| downloadip | string | 录音下载ip |
| recordfilename | string | 录音文件名 |
| id | int | 数据id |
| companycode | string | 公司code |
| type | string | 呼叫类型 callout呼出、callin呼入 |
| extnumber | string | 分机号 |
| uuid | string | 通话uuid |
| userkey | string | 用户按键 |
| customuuid | string | 自定义参数-客户id |
| taskid | string | 任务id |
| round | string | 呼叫轮次 |
| recordurl | string | 录音下载地址 |
通用api - 通话录音下载链接接口
接口说明
获取通话记录文件的下载链接。目前通话录音保存3个月时间,建议同步保存到本地。
请求参数
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| service | string | 是 | App.Sip_Cdr.GetRecodeFile |
| token | string | 是 | 通过授权接口获取的token |
| filename | string | 是 | 通话记录回调中返回的录音文件名 |
接口请求示例(PHP)
<?php
$apiUrl = 'http://127.0.0.1:8080';
$postFields = [
'service' => 'App.Sip_Cdr.GetRecodeFile',
'token' => 'ABCDEFG',
'filename' => 'abcdefg',
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $apiUrl);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
$curlError = curl_error($curl);
curl_close($curl);
var_dump($response);
?>
返回数据结构示例
{
"ret": 200,
"data": {
"status": 0,
"desc": "获取成功",
"result": {
"downurl": "http://127.0.0.1:8080/abcdefg",
"expiredtime": "失效时间:2020-02-11 17:27:23"
},
"reqtime": 1581412943,
"rsptime": 1581412943
},
"msg": ""
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| result | objest | 返回的结果集 |
| downurl | string | 通话录音文件下载链接 |
| expiredtime | string | 下载链接失效时间 |