
# 新手必读
#### 业务流程
隐私保护通话二次开发业务整体流程如下：
![](https://support.huaweicloud.com/devg-PrivateNumber/public_sys-resources/note_3.0-zh-cn.png)
隐私保护通话各模式的二次开发业务流程不完全相同，以下流程以AXB模式为例。
![](https://support.huaweicloud.com/devg-PrivateNumber/figure/zh-cn_image_0309070349.png "点击放大")
1. 参考[开发准备](https://support.huaweicloud.com/devg-PrivateNumber/privatenumber_01_0005.html)，获取调用隐私保护通话API的关联数据。
2. 参考[代码样例](https://support.huaweicloud.com/devg-PrivateNumber/privatenumber_01_0002.html)调用AXB模式绑定接口，设置用户号码A、用户号码B和隐私号码X的绑定关系。
3. 根据请求响应消息，判断请求是否成功。
   - 请求成功 =\> [4]
   
   - 请求失败 =\> 参考[API错误码处理](https://support.huaweicloud.com/devg-PrivateNumber/privatenumber_04_0009_1.html)，修正后重新执行[2]
    
4. 发起呼叫验证绑定关系：使用A或B号码直接呼叫X号码（[点击查看其他模式的呼叫验证方法](https://support.huaweicloud.com/PrivateNumber_faq/pn_faq_00019.html)）。
   ![](https://support.huaweicloud.com/devg-PrivateNumber/public_sys-resources/note_3.0-zh-cn.png)
   因运营商管控，固话号码只能接收来自X号码的呼叫，不能作为主叫呼叫X号码。若用户号码A为固话号码，请使用用户号码B（手机号码）呼叫X号码进行验证，反之亦然。
   
5. 查看接收到的呼叫事件通知和话单通知（若要接收呼叫事件通知和话单通知，需在[添加应用](https://support.huaweicloud.com/usermanual-PrivateNumber/pn_um_01.html)时填写"呼叫状态接收地址"和"呼叫话单接收地址"）。
6. 根据呼叫是否接通（如A直接呼叫X，是否接通B），判断呼叫是否成功。
   - 呼叫成功 =\> [7]
   
   - 呼叫失败 =\> 参考[挂机原因值、Q850原因值、呼叫拆线点](https://support.huaweicloud.com/devg-PrivateNumber/privatenumber_04_0010.html)分析呼叫未接通原因，如果重新验证呼叫，请重新执行[4]。
    
7. 是否开启了录音功能？（[点击查看如何开启录音功能](https://support.huaweicloud.com/PrivateNumber_faq/pn_faq_00023_10.html)）
   - 是 =\>[获取录音文件下载地址](https://support.huaweicloud.com/api-PrivateNumber/privatenumber_02_0007.html)=\>结束
   
   - 否 =\> 结束
    
 
#### 调测指引
隐私保护通话二次开发过程中，开发者需关注的业务调测点如下：
![](https://support.huaweicloud.com/devg-PrivateNumber/figure/zh-cn_image_0309018745.png "点击放大")
注：隐私保护通话各模式的二次开发业务流程不完全相同，以下流程以AXB模式为例。
- **Check 1** ：发起AXB绑定请求前，对请求参数合法性做必要的检查，如：
  - 携带正确的APP接入地址。APP接入地址需登录隐私保护通话控制台，从"[应用管理](https://console.huaweicloud.com/privatenumber/#/appManagement)"页获取。
  
  - 携带的参数格式是否正确，无多余空格等。如：绑定接口携带的A号码需为全局号码格式（如：+86138\*\*\*\*0021），其他参数详见[API参考文档](https://support.huaweicloud.com/api-PrivateNumber/privatenumber_02_0010.html)。
   
- **Check 2** ：获取绑定请求结果时，请解析出响应结果码。若绑定失败，可参考[API错误码](https://support.huaweicloud.com/devg-PrivateNumber/privatenumber_04_0009_1.html)中的处理建议进行修正。
  ```
  HTTP/1.1 200 OK 
  Content-Type: application/json;charset=utf-8 
  Content-Length: xx 
  { 
  "resultcode":"0", 
  "resultdesc":"Success" ,
  "subscriptionId":"********",
  "relationNum":"+867552****08", 
  "callDirection":0,
  "duration":0，
  "maxDuration":0
  }
  ```
  
- **Check 3** ：隐私保护通话平台会推送呼叫事件通知给客户服务器。若呼叫失败，请解析出挂机事件通知（disconnect）中的挂机原因值（stateCode）并参考[挂机原因值](https://support.huaweicloud.com/api-PrivateNumber/privatenumber_02_0017.html)排查失败原因。
  注：仅在[添加应用](https://support.huaweicloud.com/usermanual-PrivateNumber/pn_um_01.html)时设置了呼叫状态接收地址时，隐私保护通话平台才会推送呼叫事件通知给客户服务器。
  ```
  POST /status HTTP/1.1
  {"eventType":"disconnect","statusInfo":{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:16:41","caller":"+86138****0021","called":"+86138****7021","stateCode":0,"stateDesc":"The user releases the call.","subscriptionId":"********"}}
  ```
  
- **Check 4** ：通话结束后，隐私保护通话平台会推送话单通知给客户。若呼叫失败，请解析出转接呼叫操作失败的Q850原因值（fwdUnaswRsn）和通话失败的拆线点（ulFailReason），并参考[Q850原因值说明](https://support.huaweicloud.com/api-PrivateNumber/privatenumber_02_0018.html)和[呼叫拆线点说明](https://support.huaweicloud.com/api-PrivateNumber/privatenumber_02_0019.html)排查失败原因。
  注：仅在[添加应用](https://support.huaweicloud.com/usermanual-PrivateNumber/pn_um_01.html)时设置了呼叫话单接收地址时，隐私保护通话平台才会推送话单通知给客户服务器。
  ```
  POST /fee  HTTP/1.1
  {"eventType":"fee","feeLst":[{"direction":1,"spId":"********","appKey":"************","icid":"ba171f34e6953fcd751edc77127748f4.3757223714.337238282.9","bindNum":"+86138****0022","sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","subscriptionId":"********","callerNum":"+86138****0021","calleeNum":"+86138****0022","fwdDisplayNum":"+86138****0022","fwdDstNum":"+86138****7021","callInTime":"2019-01-23 09:15:14","fwdStartTime":"2019-01-23 09:15:15","fwdAlertingTime":"2019-01-23 09:15:21","fwdAnswerTime":"2019-01-23 09:15:36","callEndTime":"2019-01-23 09:16:41","fwdUnaswRsn":0,"ulFailReason":0,"sipStatusCode":0,"callOutUnaswRsn":0,"recordFlag":1,"recordStartTime":"2019-01-23 09:15:37","recordDomain":"****.com","recordBucketName":"****","recordObjectName":"****.wav","ttsPlayTimes":0,"ttsTransDuration":0,"mptyId":"****","serviceType":"004","hostName":"callenabler246.huaweicaas.com"}]}
  ```
  
 
