
# AXB模式呼叫事件通知接口
#### 接口功能
隐私保护通话平台通过此接口向客户推送隐私保护通话用户呼叫时的状态信息，如呼入、呼出、振铃、应答、挂机等状态的信息。
#### 请求方向
隐私保护通话平台（客户端） → 客户服务器（服务端）
#### 使用说明
- 前提条件 客户[添加应用](https://support.huaweicloud.com/usermanual-PrivateNumber/pn_um_01.html)时需设置**呼叫状态接收地址**，并确保提供的地址能够正常处理隐私保护通话平台发送的通知消息。
  如果需要单独接收呼入事件（callin），需联系客服，提供呼入事件状态接收地址。
  
- 注意事项
  - 若平台给客户推送呼叫事件通知后未收到成功响应，视为推送失败，平台会重新推送呼叫事件通知，直至客户返回成功响应。平台最多重推6次，分别于1分钟、4分钟、9分钟、106分钟、203分钟和300分钟后重推。
  
  - 若没有收到平台推送请参考[收不到呼叫事件和话单通知如何处理？](https://support.huaweicloud.com/PrivateNumber_faq/pn_faq_00028.html)
   
- 使用限制 业务平台推送呼叫状态给开发者应用，仅支持POST方式。
  
 
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限管理](https://support.huaweicloud.com/productdesc-PrivateNumber/privatenumber_permissions.html)。
#### 接口类型
表1接口类型说明 
|   请求方法    |          POST          |
|---|---|
| **访问URI** | 客户添加应用时填写的**呼叫状态接收地址** |
| **通信协议**  | HTTPS/HTTP             |
   
#### 请求参数
AXB模式中，A和B通过X号码形成绑定关系，使用隐私号码X互相通讯。
![](https://support.huaweicloud.com/api-PrivateNumber/public_sys-resources/note_3.0-zh-cn.png)
以下流程和接口示例以A拨打X，呼叫转接至B，B用户接听为例，流程和接口示例仅供参考，请以实际消息为准。
图1AXB业务流程   
![](https://support.huaweicloud.com/api-PrivateNumber/figure/zh-cn_image_0280513885.png "点击放大")
表2请求Headers参数说明 
| 参数名称          | 是否必选 | 参数类型   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| Content-Type  | 是    | String | **参数解释：** 消息体的类型（格式）。 **约束限制：** 不涉及。 **取值范围：** 固定填写为application/json;charset=UTF-8。 **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Authorization | 是    | String | 固定填写为AKSK realm="SDP",profile="UsernameToken",type="Appkey"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| X-AKSK        | 是    | String | 取值为UsernameToken Username="APP_Key的值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。 - PasswordDigest：根据PasswordDigest = Base64 (HMAC-SHA256 (Password，Nonce + Created))生成。其中，Password为APP_Secret的值。Nonce、Created、Password直接进行字符串拼接即可，无需包含+号和空格。  - Nonce：客户发送请求时生成的一个随机数，长度为1\~128位，可包含数字和大小写字母。例如：66C92B11FF8A425FB8D4CCFE0ED9ED1F。  - Created：随机数生成时间。采用标准UTC格式，例如：2018-02-12T15:30:20Z。不同编程语言中将UTC时间戳转换为普通时间时使用的格式不同，部分语言可参考[表3]。   |
   
 表3不同编程语言的时间格式 
| 编程语言    | 时间格式                                                                                                                                                              |
|:---|:---|
| Java    | yyyy-MM-dd'T'HH:mm:ss'Z'                                                                                                                                          |
| PHP     | Y-m-d\\TH:i:s\\Z                                                                                                                                                  |
| Python  | %Y-%m-%dT%H:%M:%SZ                                                                                                                                                |
| C#      | yyyy-MM-ddTHH:mm:ssZ                                                                                                                                              |
| Node.js | toISOString().replace(/.\[0-9\]+\\Z/, 'Z') 注：Node.js中，使用toISOString()转换后的时间格式去除毫秒后即为本接口要求的时间格式。 |
   
表4请求Body参数说明 
| 参数名称       | 是否必选 | 参数类型           | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| eventType  | 是    | String(枚举)     | **参数解释：** 通知的事件类型。 **约束限制：** 不涉及。 取值范围： - callin：呼入事件。  - callout：呼出事件。  - alerting：振铃事件。  - answer：应答事件。  - disconnect：挂机事件。   **默认取值：** 不涉及。                                                                                                                                                                                                                                                                                                                |
| statusInfo | 否    | CallStatusInfo | 呼叫状态事件的信息。 当eventType参数为callin、callout、alerting、answer、disconnect时携带。 - [callin：呼入事件]  - [callout：呼出事件]  - [alerting：振铃事件]  - [answer：应答事件]  - [disconnect：挂机事件]   |
   
CallStatusInfo定义
 表5callin：呼入事件 
| 参数名称           | 是否必选 | 参数类型          | 说明                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| timestamp      | 是    | String(1-128) | 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间（+8小时为北京时间）格式，即为"yyyy-MM-dd HH:mm:ss"。                                                  |
| sessionId      | 是    | String(1-256) | 唯一指定一条通话链路的标识ID。                                                                                                                                                                                                                                              |
| caller         | 否    | String(1-32)  | 主叫号码。 号码为全局号码格式（包含国家码），如+86138\*\*\*\*0021。 说明： 呼入事件的主叫号码为A号码。 |
| called         | 否    | String(1-32)  | 被叫号码。 说明： 呼入事件的被叫号码为X号码。                                                                                                     |
| subscriptionId | 否    | String(1-64)  | 绑定ID。                                                                                                                                                                                                                                                         |
| userData       | 否    | String(1-256) | 用户附属信息。 说明： 使用该参数的场景请联系华为云客服获取。                                                                                                                         |
   
接口示例
```
POST /status HTTP/1.1
content-type: application/json;charset=UTF-8
authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"
x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"
Content-Length: xx 
{"eventType":"callin","statusInfo":{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:15:14","caller":"+86138****0021","called":"+86138****0022","subscriptionId":"****"}}
```
 表6callout：呼出事件 
| 参数名称           | 是否必选 | 参数类型          | 说明                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| timestamp      | 是    | String(1-128) | 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间（+8小时为北京时间）格式，即为"yyyy-MM-dd HH:mm:ss"。                                                                                                                                         |
| sessionId      | 是    | String(1-256) | 唯一指定一条通话链路的标识ID。                                                                                                                                                                                                                                            |
| caller         | 否    | String(1-32)  | 主叫号码。 号码为全局号码格式（包含国家码），如+86138\*\*\*\*0021。 说明： 呼出事件的主叫号码为X号码。 |
| called         | 否    | String(1-32)  | 被叫号码。 说明： 呼出事件的被叫号码为B号码。                                                                                                                           |
| subscriptionId | 否    | String(1-64)  | 绑定ID。                                                                                                                                                                                                                                                       |
| userData       | 否    | String(1-256) | 用户附属信息。 当客户在AXB模式绑定接口、AXB模式绑定信息修改接口中携带了"userData"时，对应此呼叫事件的通知消息中都会携带此参数。                                                                                                                     |
   
接口示例
```
POST /status HTTP/1.1
content-type: application/json;charset=UTF-8
authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"
x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"
content-length:xx
{"eventType":"callout","statusInfo":{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:15:15","caller":"+86138****0021","called":"+86138****7021","subscriptionId":"****"}}
```
 表7alerting：振铃事件 
| 参数名称           | 是否必选 | 参数类型          | 说明                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| timestamp      | 是    | String(1-128) | 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间（+8小时为北京时间）格式，即为"yyyy-MM-dd HH:mm:ss"。                                                                                                                                                                |
| sessionId      | 是    | String(1-256) | 唯一指定一条通话链路的标识ID。                                                                                                                                                                                                                                                                    |
| caller         | 否    | String(1-32)  | 主叫号码。 号码为全局号码格式（包含国家码），如+86138\*\*\*\*0021。 说明： 振铃事件的主叫号码为X号码。 |
| called         | 否    | String(1-32)  | 被叫号码。 说明： 振铃事件的被叫号码为B号码。                                                                                                                             |
| subscriptionId | 否    | String(1-64)  | 绑定ID。                                                                                                                                                                                                                                                                               |
| userData       | 否    | String(1-256) | 用户附属信息。 当客户在AXB模式绑定接口、AXB模式绑定信息修改接口中携带了"userData"时，对应此呼叫事件的通知消息中都会携带此参数。                                                                                                                                                                    |
   
接口示例
```
POST /status HTTP/1.1
content-type: application/json;charset=UTF-8
authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"
x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"
content-length:xx
{"eventType":"alerting","statusInfo":{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:15:16","caller":"+86138****0021","called":"+86138****7021","subscriptionId":"****"}}
```
 表8answer：应答事件 
| 参数名称           | 是否必选 | 参数类型          | 说明                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| timestamp      | 是    | String(1-128) | 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间（+8小时为北京时间）格式，即为"yyyy-MM-dd HH:mm:ss"。                                                                                                                       |
| sessionId      | 是    | String(1-256) | 唯一指定一条通话链路的标识ID。                                                                                                                                                                                                                          |
| caller         | 否    | String(1-32)  | 主叫号码。 号码为全局号码格式（包含国家码），如+86138\*\*\*\*0021。 说明： 应答事件的主叫号码为X号码。 |
| called         | 否    | String(1-32)  | 被叫号码。 说明： 应答事件的被叫号码为B号码。                                                                                                          |
| subscriptionId | 否    | String(1-64)  | 绑定ID。                                                                                                                                                                                                                                     |
| userData       | 否    | String(1-256) | 用户附属信息。 当客户在AXB模式绑定接口、AXB模式绑定信息修改接口中携带了"userData"时，对应此呼叫事件的通知消息中都会携带此参数。                                                                                                                         |
   
接口示例
```
POST /status HTTP/1.1
content-type: application/json;charset=UTF-8
authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"
x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"
content-length:xx
{"eventType":"answer","statusInfo":{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"2019-01-23 09:15:36","caller":"+86138****0021","called":"+86138****7021","subscriptionId":"****"}}
```
 表9disconnect：挂机事件 
| 参数名称           | 是否必选 | 参数类型          | 说明                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| timestamp      | 是    | String(1-128) | 该呼叫事件发生时隐私保护通话平台的UNIX时间戳。 该参数取值为UTC时间（+8小时为北京时间）格式，即为"yyyy-MM-dd HH:mm:ss"。                                                                                                                                                           |
| sessionId      | 是    | String(1-256) | 唯一指定一条通话链路的标识ID。                                                                                                                                                                                                                                                              |
| caller         | 否    | String(1-32)  | 主叫号码。 号码为全局号码格式（包含国家码），如+86138\*\*\*\*0021。 说明： 此处返回号码非真实主被叫号码，真实主被叫号码请以fee事件中的返回值为准。               |
| called         | 否    | String(1-32)  | 被叫号码。 说明： 此处返回号码非真实主被叫号码，真实主被叫号码请以fee事件中的返回值为准。                                                                                                                      |
| stateCode      | 否    | Integer       | 通话挂机的原因值，仅当eventType为disconnect时携带。 取值范围及表示的含义请参考[通话挂机原因值说明](https://support.huaweicloud.com/api-PrivateNumber/privatenumber_02_0017.html)。 |
| stateDesc      | 否    | String(1-128) | 通话挂机的原因值的描述，仅当eventType为disconnect时携带。                                                                                                                                                                                                                                        |
| subscriptionId | 否    | String(1-64)  | 绑定ID。                                                                                                                                                                                                                                                                         |
| userData       | 否    | String(1-256) | 用户附属信息。 当客户在AXB模式绑定接口、AXB模式绑定信息修改接口中携带了"userData"时，对应此呼叫事件的通知消息中都会携带此参数。                                                                                                                                                             |
   
接口示例
```
POST /status HTTP/1.1
content-type: application/json;charset=UTF-8
authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey"
x-aksk: UsernameToken Username="************",PasswordDigest="*************",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z"
content-length:xx
 
{"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":"****"}}
```
#### 响应参数
客户服务器接收到隐私保护通话平台的呼叫事件通知后，返回的响应消息。
接口示例
```
HTTP/1.1 200 OK
```
