
# 生成话单和录音索引
#### 场景描述
调用该API，则会根据条件生成话单文件和录音索引文件。文件生成后，文件名称（billFileName）会通过回调的方式发送到callBackURL携带的回调地址上。
回调callBackURL需要鉴权，详见[C2 监控/系统外呼/话单/知识库类接口鉴权方式](https://support.huaweicloud.com/api-ccfs-cec/cec_07_0003.html#ZH-CN_TOPIC_0000002481273406)。
#### 前提条件
- 开发者环境已经构建，能够正常进行呼叫，开发者有独立服务器并且已经绑定回调地址（callBackURL）。
- 企业帐号（租间ID：accountId）、座席ID（agentId）以及话单ID（callId）为可选组合参数，可自由组合生成话单和录音索引文件。如果三者均没有传入，则生成指定时间段内该开发者下相应的数据记录。
- 已通过鉴权（Authorization）、获得接入地址。
 
#### 导入证书步骤
![](https://support.huaweicloud.com/api-ccfs-cec/public_sys-resources/note_3.0-zh-cn.png)
AICC对第三方系统进行回调时，必须先让AICC信任第三方https证书，通过证书建立安全信任关系，否则通信会被安全机制阻止。
1. 获取证书。 
   1. 在浏览器中打开第三方网页，单击地址栏左侧的不安全按钮，单击证书详情。 ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002524498011.png)
      
   
   2. 在证书详情弹窗中，选择详细信息页签，单击"导出"按钮。 ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002492338312.png)
      
   
   3. 导出扩展名为.pem或.cer的文件。通过DV下发证书时，要求大小不能超过512KB。 ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002524498005.png)
      
   
   
   
   
2. 导入证书（DV管理证书场景）。 
   如果局点是非DV管理证书场景，请参考[3]导入证书。
   1. 使用admin账户登录DV平台，单击左上角"![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002492498284.png "点击放大")"图标按钮，选择"系统设置"
      图1系统设置   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002492338306.png "点击放大")
      图2系统设置   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002524617981.png "点击放大") 
   
   2. 顶部菜单栏选择"网元证书管理"，然后点击左侧"站点管理"菜单，找到站点名称为"AICC_VM"的记录，单击右侧"查看"按钮进入查看界面。
      图3AICC_VM   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002524617979.png "点击放大")
      图4AICC_VM   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002492338310.png "点击放大") 
   
   3. 在查看界面找到"AICC客户端证书"记录，单击右侧"查看"按钮，进入证书详情页面。
      图5查看按钮   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002492498282.png "点击放大")
      图6查看按钮   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002492498290.png "点击放大") 
   
   4. 单击"导入证书"按钮，进入导入证书页面。
      图7导入证书按钮   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002492338304.png "点击放大")
      图8导入证书按钮   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002492338314.png "点击放大") 
   
   5. 填写证书相关信息，点击"导入"按钮，上传的证书仅支持扩展名为.pem,.crt,.cer,.keystore,.truststore,.jks的文件，大小不能超过512KB。
      图9导入按钮   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002524498001.png "点击放大")
      图10导入按钮   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002524617985.png "点击放大") 
   
   6. 导入成功后，单击左侧的"证书更新"菜单，再单击右上角"创建"按钮。
      图11创建按钮   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002524617977.png "点击放大")
      图12创建按钮   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002492498288.png "点击放大")
      
      
   
   7. 填写任务信息，站点选择"AICC_VM"，点击下一步：
      图13AICC_VM   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002524617983.png "点击放大")
      图14AICC_VM   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002524498009.png "点击放大") 
   
   8. "AICC虚拟化网元证书"选择"AICC客户端证书"，服务选择"AICC CCFS"。
      图15AICC CCFS   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002492498280.png "点击放大")
      图16AICC CCFS   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002524617987.png "点击放大") 
   
   9. 勾选"AICC客户端证书"，单击"下一步"
      图17AICC客户端证书   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002492498278.png "点击放大")
      图18AICC客户端证书   
      ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002492498286.png "点击放大") 
   
   10. 选择目标主机，点击完成后，自动跳转到证书"更新列表"，此时任务状态为"待执行"。
       图19目标主机   
       ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002492338308.png "点击放大")
       图20目标主机   
       ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002524617991.png "点击放大") 
   
   11. 找到刚刚新建的任务，单击"更新"按钮，完成证书下发。
       图21更新按钮   
       ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002524498007.png "点击放大")
       图22更新按钮   
       ![](https://support.huaweicloud.com/api-ccfs-cec/figure/zh-cn_image_0000002524498003.png "点击放大") 
    
   
   
3. 导入证书（非DV管理证书场景）。
   
   1. 以运维用户登录CC-FS的服务器，切换到root用户。
      ```
      su - root
      ```
      
   
   2. 请检查CC-FS配置文件"/home/ccfsapp/webapps/ccfsapp/WEB-INF/classes/config/servicecloud.base.properties"的"aicc.ssl.trustAll"是否配置为false，请配置为false。
   
   3. 将CC-FS生成索引文件通知回调地址加载的第三方证书上传至AICC的truststore.jks证书的同一目录中，目录为："$HOME/conf"，具体目录请以实际环境为准。
   
   4. 修改上传的第三放证书的属组。具体证书名称及后缀以实际导入为准。
      ```
      chown ccfsapp:ccfsapp XXX.pem
      ```
      
   
   5. 执行如下命令检查证书实际格式，查看输出内容的Keystore type的值，若结果为PKCS12 ，需要执行步骤[3.6]转换证书为pem格式，否则执行步骤[3.7]。
      ```
      keytool -list -v -keystore XXX.pem
      ```
      
   
   6. 转换证书为pem格式：执行如下命令后，输入客户证书密码，转换后得到文本格式的pem文件。
      ```
      openssl pkcs12 -in 原证书名称.xxx -out 目标证书名称.pem -nodes
      ```
      
   
   7. 执行下面的命令将第三方证书导入到*truststore.jks* 中。
      ```
      keytool -import -alias xxx -file XXX.pem -keystore truststore.jks
      ```
      请依据界面提示输入*truststore.jks*证书密码。
      
   
   8. 在环境上删除*XXX.pem*证书。
   
   9. 进入"/home/ccfsapp/bin"目录，执行如下命令重启CC-FS。。
      ```
      ./shutdown.sh;./startup.sh
      ```
      
   
   
   
   
 
#### 使用限制
开发者只能访问该帐号下的数据信息，开发者帐号（appId）和企业帐号（租间ID：accountId）必须对应。
开发者账号（appId）包含在鉴权认证字符串中，详见[C2 监控/系统外呼/话单/知识库类接口鉴权方式](https://support.huaweicloud.com/api-ccfs-cec/cec_07_0003.html#ZH-CN_TOPIC_0000002481273406)。
#### 接口方法
POST
#### 接口URI
https://ip:port/CCFS/resource/ccfs/queryBillData
其中，ip为CC-FS安装的服务器IP地址，port为CC-FS的HTTPS端口号。
如果经过NSLB路由，ip为NSLB的服务器IP地址，port为CC-FS服务在NSLB映射的HTTPS端口号。
#### 请求说明
表1请求Headers参数说明 
| 序号 | 名称            | 参数类型   | 是否必选 | 默认值 | 说明                                                                                                                            |
|:---|:---|:---|:---|:---|:---|
| 1  | Content-Type  | String | True | 无   | 固定填 application/json; charset=UTF-8。                                                                                          |
| 2  | Authorization | String | True | 无   | 生成方式参见[C2 监控/系统外呼/话单/知识库类接口鉴权方式](https://support.huaweicloud.com/api-ccfs-cec/cec_07_0003.html#ZH-CN_TOPIC_0000002481273406)。 |
   
表2请求Body中request参数说明 
| 序号 | 名称      | 参数类型         | 是否必选 | 默认值 | 说明              |
|:---|:---|:---|:---|:---|:---|
| 1  | version | String（1-32） | True | 2.0 | 协议版本。当前固定值为2.0。 |
   
表3请求Body中msgBody参数说明 
| 序号 | 名称          | 参数类型         | 是否必选  | 默认值 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|:---|:---|
| 1  | beginTime   | String       | True  | 无   | 话单和录音记录的起始时间，为租间所在时区的时间，起始时间和截止时间需要做范围限制，最大为3天内。格式为：yyyy-MM-dd HH:mm:ss。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 2  | endTime     | String       | True  | 无   | 话单和录音记录的截止时间，为租间所在时区的时间，起始时间和截止时间需要做范围限制，最大为3天内。格式为：yyyy-MM-dd HH:mm:ss。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 3  | accountId   | String（1-20） | False | 无   | 企业帐号（租间ID）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 4  | agentId     | String（1-20） | False | 无   | 座席ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 5  | callId      | String（1-25） | False | 无   | 呼叫标识，可从已调用的"下载话单和录音索引"返回的文件中获取。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 6  | callerNo    | String（1-25） | False | 无   | 主叫号码                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 7  | calleeNo    | String（1-25） | False | 无   | 被叫号码，当calleeNo2不存在时为被叫号码，当calleeNo2存在时为主叫号码。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| 8  | calleeNo2   | String（1-25） | False | 无   | 被叫号码2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 9  | dataType    | String（1-11） | True  | 无   | 需生成的数据记录文件类型。 - call：话单记录  - record：录音记录索引  - call_record：话单记录和录音记录索引   |
| 10 | callBackURL | String       | True  | 无   | 回调地址，来源于第三方服务。平台生成数据记录文件后将billFileName返回到该地址。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
#### 响应说明
调用本接口获得响应分为两部分：
（1）调用本接口立即得到响应
表4响应消息参数说明 
| 序号 | 名称         | 参数类型   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| 1  | resultCode | String | 请求返回的结果码， - 0：成功  - 非0：失败。   |
| 2  | resultDesc | String | 请求结果描述，详见[错误码参考](https://support.huaweicloud.com/api-ccfs-cec/cec_07_0835.html#ZH-CN_TOPIC_0000002481113938)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 3  | resultData | Object | 请求响应数据，参数说明详见[表6-响应消息resultData参数说明。]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 4  | response   | Object | 请求结果对象，参数说明详见[表6] 不推荐使用，为兼容老版本保留字段。                                                                                                                                                                                                                                                                                                                                                                                                          |
   
 表5响应消息resultData参数说明 
| 序号  | 名称         | 参数类型   | 说明                           |
|:---|:---|:---|:---|
| 3.1 | responseId | String | 调用本接口成功后，生成的唯一标识，是文件名称的组成部分。 |
   
 表6响应消息response参数说明 
| 序号  | 名称         | 参数类型         | 说明                                                                                                              |
|:---|:---|:---|:---|
| 4.1 | version    | String（1-32） | 协议版本，如2.0。                                                                                                      |
| 4.2 | resultCode | String(1-32) | 请求返回的结果码，详见[错误码参考](https://support.huaweicloud.com/api-ccfs-cec/cec_07_0835.html#ZH-CN_TOPIC_0000002481113938)。 |
| 4.3 | resultMsg  | String       | 请求结果描述。                                                                                                         |
   
（2）平台生成数据记录文件后回调第三方的响应。
该响应由request，msgBody两部分组成。
request包含响应版本号version（默认2.0）。
msgBody由responseId（话单文件名组成部分），billName（待下载话单zip名称），accountId（租间ID）组成。
表7回调返回消息请求Body中msgBody参数说明 
| 序号 | 名称           | 参数类型   | 说明                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| 1  | responseId   | String | 调用本接口成功后，生成的唯一标识，是文件名称的组成部分。                                                                                                                                                                                                                                                 |
| 2  | billFileName | String | 话单和录音索引文件名称。格式：yyyyMMdd_{responseId}.zip。 例如：调用本接口的日期为2018-07-02，获取到的responseId为9239cb50-a838-4bb0-ab50-3441bf089446，则该参数值为20180702_9239cb50a8384bb0ab503441bf089446.zip。 |
| 3  | accountId    | String | 企业帐号（租间ID），请求参数中带的企业账号，用来将文件名和企业进行关联，如果请求参数中未填accountId，则不会返回该值。                                                                                                                                                                                                             |
   
![](https://support.huaweicloud.com/api-ccfs-cec/public_sys-resources/note_3.0-zh-cn.png)
若回调没有成功（ccfs没有收到回调地址的成功响应，或没有响应体），ccfs会重试，间隔10分钟重试一次，直到成功或者超过重试次数。
#### 报文样例
- 请求头
  ```
  POST /CCFS/resource/ccfs/queryBillData HTTP/1.1
  Authorization: auth-v2/ak/2018-07-02T02:42:49Z/content-length;content-type;host
  /7a8fb9d620ee488******************85c5df0cce3c6a253
  Accept: */*
  Content-Type: application/json;charset=UTF-8
  Content-Length: 297
  ```
  
- 请求参数
  ```
  {
      "request": {
          "version": "2.0"
      },
      "msgBody": {
          "beginTime": "2018-06-29 10:42:49",
          "endTime": "2018-07-02 10:42:49",
          "accountId": "",
          "agentId": "",
          "callId": "",
          "dataType": "call_record",
          "callBackURL": "https://10.57.118.171:8000"
      }
  }
  ```
  
- 响应头
  ```
  HTTP/1.1 200 OK
  Content-Type: application/json;charset=UTF-8
  Date: Mon, 02 Jul 2018 02:43:03 GMT
  ```
  
- 响应示例
  ```
  {
      "response": {
          "version": "2.0",
          "resultCode": "0",
          "resultMsg": "success"
      },
      "resultData": {
          "responseId": "9239cb50a8384bb0ab503441bf089446"
      },
      "resultCode": "0",
      "resultDesc": "success"
  }
  ```
  
- 呼叫中心向回调地址返回的消息示例 消息头：
  ```
  POST / HTTP/1.1
  Accept: */*
  Content-Type: application/json;charset=UTF-8
  Authorization: auth-v2/ak/2018-07-02T02:43:03Z/content-length;content-type;host
  /c5bd683******************9def5747bd572c28
  Host: 10.57.118.171
  Content-Length: 208
  ```
  消息参数：
  ```
  {
      "request": {
          "version": "2.0"
      },
      "msgBody": {
          "responseId": "9239cb50a8384bb0ab503441bf089446",
          "billFileName": "20180702_9239cb50a8384bb0ab503441bf089446.zip",
          "accountId": ""
      }
  }
  ```
  
 
