# 话单接口文档

# 通用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 | 下载链接失效时间   |

# 通用API - 分机话务统计

#### 接口说明

按分机号汇总或按天统计指定时间范围内的呼叫量、接通率和通话时长

#### 请求参数

| 参数名      | 类型     | 是否必须 | 说明                         |
| :------- | :----- | :--- | :------------------------- |
| service  | string | 是    | App.Sip_Cdr.GetExtStats |
| token    | string | 是    | 通过授权接口获取的token             |
| starttime | string | 是    | 统计起始时间，格式：yyyy-mm-dd hh:mm:ss，时间范围最长31天            |
| endtime | string | 是    | 统计结束时间，格式：yyyy-mm-dd hh:mm:ss，时间范围最长31天           |
| extnumber | string | 否    | 分机号，多个分机号用英文逗号隔开；留空统计全部坐席            |
| granularity | string | 否    | 统计粒度：total时间范围汇总、day按天统计            |
| currentpage  | int    | 否    | 页数，默认：1                                                           |
| itemsperpage | int    | 否   | 每页数量，默认：10，最小：1；最大：1000                                           |

#### 接口请求示例（PHP）

```
<?php
    $apiUrl = 'http://127.0.0.1:8080';
    $postFields = [
        'service'   => 'App.Sip_Cdr.GetRecodeFile',
        'token'     => 'ABCDEFG',
        'starttime'  => 'yyyy-mm-dd hh:mm:ss',
        'endtime'  => 'yyyy-mm-dd hh:mm:ss',
        'extnumber'  => '121212',
        'granularity'  => 'day',
    ];
    $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": "success",
        "result": {
            "totalitems": 1,
            "currentpage": 1,
            "itemsperpage": 20,
            "stats": [
                {
                    "extnumber": "90020002",
                    "total_calls": 1,
                    "answered_calls": 0,
                    "unanswered_calls": 1,
                    "answer_rate": 0,
                    "total_talk_seconds": 0,
                    "avg_talk_seconds": 0,
                    "avg_wait_seconds": 18
                }
            ]
        },
        "reqtime": 1788932971,
        "rsptime": 1788932972
    },
    "msg": ""
}

```

#### 返回参数说明

| 参数名         | 类型     | 说明         |
| :---------- | :----- | :--------- |
| result      | objest | 返回的结果集     |

# 通用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,
                    "hangupcause": 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请求参数示例

![](https://doc-admin.infin8linx.com/uploads/202503/c65b2c52d15ac1a4f5775e9b19f9cfe5.jpg)

# 通用API - 企业话务统计

#### 接口说明

汇总或按天统计当前企业指定时间范围内的呼叫量、接通率和通话时长

#### 请求参数

| 参数名      | 类型     | 是否必须 | 说明                         |
| :------- | :----- | :--- | :------------------------- |
| service  | string | 是    | App.Sip_Cdr.GetCompanyStats |
| token    | string | 是    | 通过授权接口获取的token             |
| starttime | string | 是    | 统计起始时间，格式：yyyy-mm-dd hh:mm:ss，时间范围最长31天            |
| endtime | string | 是    | 统计结束时间，格式：yyyy-mm-dd hh:mm:ss，时间范围最长31天           |
| granularity | string | 否    | 统计粒度：total时间范围汇总、day按天统计            |

#### 接口请求示例（PHP）

```
<?php
    $apiUrl = 'http://127.0.0.1:8080';
    $postFields = [
        'service'   => 'App.Sip_Cdr.GetRecodeFile',
        'token'     => 'ABCDEFG',
        'starttime'  => 'yyyy-mm-dd hh:mm:ss',
        'endtime'  => 'yyyy-mm-dd hh:mm:ss',
        'granularity'  => 'day',
    ];
    $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": "success",
        "result": {
            "stats": [
                {
                    "active_extnumbers": 1,
                    "total_calls": 4,
                    "answered_calls": 0,
                    "unanswered_calls": 4,
                    "answer_rate": 0,
                    "total_talk_seconds": 0,
                    "avg_talk_seconds": 0,
                    "avg_wait_seconds": 10.25,
                    "inbound_calls": 0,
                    "outbound_calls": 4
                }
            ]
        },
        "reqtime": 1788933086,
        "rsptime": 1788933086
    },
    "msg": ""
}

```

#### 返回参数说明

| 参数名         | 类型     | 说明         |
| :---------- | :----- | :--------- |
| result      | objest | 返回的结果集     |

# 通用API - 录音识别结果

#### 接口说明

客户主动获取录音识别接口。

#### 请求方式

POST，form-data格式

#### 获取通话记录接口请求参数

| 参数名          | 类型     | 是否必须 | 说明                                                                |
| :----------- | :----- | :--- | :---------------------------------------------------------------- |
| service      | string | 是    | App.Sip_Cdr.GetAsrRecord                                             |
| token        | string | 是    | 通过授权接口获取的token                                                    |
| starttime    | string | 是    | 起始时间，格式：yyyy-mm-dd hh:mm:ss，最长31天                              |
| endtime      | string | 是    | 结束时间，格式：yyyy-mm-dd hh:mm:ss，最长31天                                |
| cdrid     | int    | 否    | CDR记录ID                      |
| calluuid    | int    | 否    | 通话UUID                                        |
| calleenumber   | int    | 否     | 被叫号码 |
| callstatus    | string | 否     | 通话识别状态：0待处理、1处理中、2成功、3失败、4跳过、5部分成功                      |
| voicemailstatus   | string | 否     | 0未知、1正常通话、2语音信箱                                                |
| currentpage  | int    | 是    | 页数，默认：1                                                           |
| itemsperpage | int    | 是    | 每页数量，默认：10，最小：1；最大：1000                                           |


#### 获取通话记录接口请求示例（PHP）

```
<?php
    $apiUrl = 'http://127.0.0.1:8080';
    $postFields = [
        'service'   => 'App.Sip_Cdr.GetAsrRecord',
        'token'     => 'ABCDEFG',
        'starttime'  => '2019-01-12 00:00:00',
        'endtime'    => '2020-12-12 00:00:00',
        'cdrid'  => 3
        'calluuid'   => 3,
        '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);
?>

```

#### 返回数据结构示例

```
{
    "status": 0,
    "desc": "成功",
    "result": {
      "totalitems": 1,
      "currentpage": 1,
      "itemsperpage": 20,
      "asrrecords": [
        {
          "id": 111,
          "cdrid": 6,
          "calluuid": "5adf71c4-bee0-11f0-8eb3-811da796b819",
          "calleenumber": "8179032525",
    
          "preduration": 11,
          "prestatus": 3,
          "pretext": "",
  
  
          "callduration": 90,
          "callstatus": 2,
          "lefttext": "左声道识别文本",
          "righttext": "右声道识别文本",
  
          "voicemailstatus": 1,
          "voicemailevidence": null,
          "voicemailclassifiedat": null,
  
          "createdat": "2025-11-12 01:25:25"
        }
      ]
    }
}

```

#### 返回参数说明

| 参数名               | 类型     | 说明          |
| :---------------- | :----- | :---------- |
| result            | objest | 返回的结果集      |
| —totalitems       | int    | 记录总数        |
| —currentpage      | int    | 当前页码        |
| —itemsperpage     | int    | 每页数量        |
| —asrrecords            | array  | 记录数组        |
| ——id              | int    | 记录id        |
| ——cdrid     | string | 通话id      |
| ——calluuid       | string | 呼叫uuid         |
| ——calleenumber      | string | 目标号码        |
| ——preduration       | string | 等待时长        |
| ——prestatus       | string | 前置识别状态        |
| ——pretext      | string | 前置文本        |
| ——callduration         | string | 通话时间      |
| ——callstatus        | int    | 识别状态      |
| ——lefttext         | int    | 左侧识别文本        |
| ——righttext       | string | 右侧识别文本        |
| ——voicemailstatus      | int    | 0未知、1正常通话、2语音信箱         |
| ——voicemailevidence          | string | 分类命中的文本关键词 |
| ——voicemailclassifiedat        | string |质检时间  |
| ——createdat      | string | 识别时间  |

# 通用API - 录音识别统计

#### 接口说明

按时间范围汇总或按天统计识别总数、失败数、语音信箱数和正常通话数

#### 请求方式

POST，form-data格式

#### 获取通话记录接口请求参数

| 参数名          | 类型     | 是否必须 | 说明                                                                |
| :----------- | :----- | :--- | :---------------------------------------------------------------- |
| service      | string | 是    | App.Sip_Cdr.GetAsrStats                                            |
| token        | string | 是    | 通过授权接口获取的token                                                    |
| starttime    | string | 是    | 起始时间，格式：yyyy-mm-dd hh:mm:ss，最长31天                              |
| endtime      | string | 是    | 结束时间，格式：yyyy-mm-dd hh:mm:ss，最长31天                                |
| granularity     | int    | 否    | 统计粒度：total汇总、day按天                      |
                                       |

#### 获取通话记录接口请求示例（PHP）

```
<?php
    $apiUrl = 'http://127.0.0.1:8080';
    $postFields = [
        'service'   => 'App.Sip_Cdr.GetAsrStats',
        'token'     => 'ABCDEFG',
        'starttime'  => '2019-01-12 00:00:00',
        'endtime'    => '2020-12-12 00:00:00',
        'cdrid'  => 3
        'calluuid'   => 3,
        '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": {
            "stats": [
                {
                    "totalcalls": 0,
                    "failedcalls": 0,
                    "voicemailcalls": 0,
                    "normalcalls": 0
                }
            ]
        },
        "reqtime": 1789459343,
        "rsptime": 1789459343
    },
    "msg": ""
}

```

#### 返回参数说明

| 参数名               | 类型     | 说明          |
| :---------------- | :----- | :---------- |
| result            | objest | 返回的结果集      |
| —totalitems       | int    | 记录总数        |
| —currentpage      | int    | 当前页码        |
| —itemsperpage     | int    | 每页数量        |
| —stats            | array  | 记录数组        |
| ——totalcalls              | int    | 总数        |
| ——failedcalls     | int | 失败数      |
| ——voicemailcalls       | int | 语音信箱数         |
| ——normalcalls      | int | 正常通话数        |

# 通用API - 获取IVR语音文件

#### 接口说明

用于获取通过后台上传的ivr语音文件下载链接，返回30分钟内有效的语音文件播放或下载地址

#### 请求参数

| 参数名      | 类型     | 是否必须 | 说明                         |
| :------- | :----- | :--- | :------------------------- |
| service  | string | 是    | App.Sip_Cdr.GetVoiceFile |
| token    | string | 是    | 通过授权接口获取的token             |
| filename | string | 是    | 校验后台上传的文件名            |

#### 接口请求示例（PHP）

```
<?php
    $apiUrl = 'http://127.0.0.1:8080';
    $postFields = [
        'service'   => 'App.Sip_Cdr.GetVoiceFile',
        '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 | 下载链接失效时间   |