注意事项
3.6 AXB 模式呼叫事件通知接口
3.6 AXB 模式呼叫事件通知接口
接口功能
隐私保护通话平台通过此接口向客户推送隐私保护通话用户呼叫时的状态信息,如呼 入、呼出、振铃、应答、挂机等状态的信息。
请求方向
隐私保护通话平台(客户端) → 客户服务器(服务端)
使用说明
● 前提条件
客户添加应用时需设置呼叫状态接收地址,并确保提供的地址能够正常处理隐私 保护通话平台发送的通知消息。
如果需要单独接收呼入事件(callin),需联系客服,提供呼入事件状态接收地 址。
● 注意事项
若平台给客户推送呼叫事件通知后未收到成功响应,视为推送失败,平台会重新 推送呼叫事件通知,直至客户返回成功响应。平台最多重推6次,分别于1分钟、4 分钟、9分钟、106分钟、203分钟和300分钟后重推。
● 使用限制
业务平台推送呼叫状态给开发者应用,仅支持POST方式。
接口类型
表3-29 接口类型说明 请求方法 POST
访问URI 客户添加应用时填写的呼叫状态接收地址 通信协议 HTTPS/HTTP
请求参数
AXB模式中,A和B通过X号码形成绑定关系,使用隐私号码X互相通讯。
注:以下流程和接口示例以A拨打X,呼叫转接至B,B用户接听为例,流程和接口示例 仅供参考,请以实际消息为准。
图3-1 AXB 业务流程
表3-30 请求 Headers 参数说明 参数名称 是否
必选
参数类型 说明
Content-Type 是 String 固定填写为application/json;charset=UTF-8。
参数名称 是否 必选
参数类型 说明
Authoriza
tion 是 String 固定填写为WSSE
realm="SDP",profile="UsernameToken",type="
Appkey"。
X-WSSE 是 String 取值为UsernameToken Username="APP_Key的 值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。
● PasswordDigest:根据PasswordDigest = Base64 (SHA256 (Nonce + Created + Password))生成。其中,Password为 APP_Secret的值。Nonce、Created、
Password直接进行字符串拼接即可,无需包含 +号和空格。
● Nonce:客户发送请求时生成的一个随机数,
长度为1~128位,可包含数字和大小写字母。
例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。
● Created:随机数生成时间。采用标准UTC格 式,例如:2018-02-12T15:30:20Z。不同编程 语言中将UTC时间戳转换为普通时间时使用的 格式不同,部分语言可参考表3-31。
表3-31 不同编程语言的时间格式
编程语言 时间格式
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()转换后的时间格式去除毫秒后即 为本接口要求的时间格式。
表3-32 请求 Body 参数说明 参数名称 是否
必选
参数类型 说明
eventType 是 String(枚
举) 该参数标识通知的事件类型。
取值范围如下:
● callin:呼入事件
● callout:呼出事件
● alerting:振铃事件
● answer:应答事件
● disconnect:挂机事件 statusInfo 否 CallStatus
Info 呼叫状态事件的信息。
当eventType参数为callin、callout、alerting、
answer、disconnect时携带。
● callin:呼入事件
● callout:呼出事件
● alerting:振铃事件
● answer:应答事件
● disconnect:挂机事件
CallStatusInfo定义
表3-33 callin:呼入事件 参数名称 是否
必选
参数类型 说明
timestam
p 是 String(1-1
28) 该呼叫事件发生时隐私保护通话平台的UNIX时间 戳。
该参数取值为UTC时间(+8小时为北京时间)格 式,即为“yyyy-MM-dd HH:mm:ss”。
sessionId 是 String(1-2
56) 唯一指定一条通话链路的标识ID。
caller 否 String(1-3
2) 主叫号码。
号码为全局号码格式(包含国家码),如 +86138****0021。
注:呼入事件的主叫号码为A号码。
called 否 String(1-3
2) 被叫号码。
注:呼入事件的被叫号码为X号码。
subscripti
onId 否 String(1-6
4) 绑定ID。
接口示例
POST /status HTTP/1.1
Content-Length: xx
{"eventType":"callin","statusInfo":
{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"201 9-01-23 09:15:14","caller":"+86138****0021","called":"+86138****0022","subscriptionId":"****"}}
表3-34 callout:呼出事件 参数名称 是否
必选
参数类型 说明
timestam
p 是 String(1-1
28) 该呼叫事件发生时隐私保护通话平台的UNIX时间 戳。
该参数取值为UTC时间(+8小时为北京时间)格 式,即为“yyyy-MM-dd HH:mm:ss”。
sessionId 是 String(1-2
56) 唯一指定一条通话链路的标识ID。
caller 否 String(1-3
2) 主叫号码。
号码为全局号码格式(包含国家码),如 +86138****0021。
注:呼出事件的主叫号码为X号码。
called 否 String(1-3
2) 被叫号码。
注:呼出事件的被叫号码为B号码。
subscripti
onId 否 String(1-6
4) 绑定ID。
userData 否 String(1-2
56) 用户附属信息。
当客户在AXB模式绑定接口、AXB模式绑定信息 修改接口中携带了“userData”时,对应此呼叫 事件的通知消息中都会携带此参数。
接口示例
POST /status HTTP/1.1
content-length:xx
{"eventType":"callout","statusInfo":
{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"201 9-01-23 09:15:15","caller":"+86138****0021","called":"+86138****7021","subscriptionId":"****"}}
表3-35 alerting:振铃事件 参数名称 是否
必选
参数类型 说明
timestam
p 是 String(1-1
28) 该呼叫事件发生时隐私保护通话平台的UNIX时间 戳。
该参数取值为UTC时间(+8小时为北京时间)格 式,即为“yyyy-MM-dd HH:mm:ss”。
sessionId 是 String(1-2
56) 唯一指定一条通话链路的标识ID。
caller 否 String(1-3
2) 主叫号码。
号码为全局号码格式(包含国家码),如 +86138****0021。
注:振铃事件的主叫号码为X号码。
called 否 String(1-3
2) 被叫号码。
注:振铃事件的被叫号码为B号码。
subscripti
onId 否 String(1-6
4) 绑定ID。
userData 否 String(1-2
56) 用户附属信息。
当客户在AXB模式绑定接口、AXB模式绑定信息 修改接口中携带了“userData”时,对应此呼叫 事件的通知消息中都会携带此参数。
接口示例
POST /status HTTP/1.1
content-length:xx
{"eventType":"alerting","statusInfo":
{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"201 9-01-23 09:15:16","caller":"+86138****0021","called":"+86138****7021","subscriptionId":"****"}}
表3-36 answer:应答事件 参数名称 是否
必选
参数类型 说明
timestam
p 是 String(1-1
28) 该呼叫事件发生时隐私保护通话平台的UNIX时间 戳。
该参数取值为UTC时间(+8小时为北京时间)格 式,即为“yyyy-MM-dd HH:mm:ss”。
参数名称 是否 必选
参数类型 说明
sessionId 是 String(1-2
56) 唯一指定一条通话链路的标识ID。
caller 否 String(1-3
2) 主叫号码。
号码为全局号码格式(包含国家码),如 +86138****0021。
注:应答事件的主叫号码为X号码。
called 否 String(1-3
2) 被叫号码。
注:应答事件的被叫号码为B号码。
subscripti
onId 否 String(1-6
4) 绑定ID。
userData 否 String(1-2
56) 用户附属信息。
当客户在AXB模式绑定接口、AXB模式绑定信息 修改接口中携带了“userData”时,对应此呼叫 事件的通知消息中都会携带此参数。
接口示例
POST /status HTTP/1.1
content-length:xx
{"eventType":"answer","statusInfo":
{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"201 9-01-23 09:15:36","caller":"+86138****0021","called":"+86138****7021","subscriptionId":"****"}}
表3-37 disconnect:挂机事件 参数名称 是否
必选
参数类型 说明
timestam
p 是 String(1-1
28) 该呼叫事件发生时隐私保护通话平台的UNIX时间 戳。
该参数取值为UTC时间(+8小时为北京时间)格 式,即为“yyyy-MM-dd HH:mm:ss”。
sessionId 是 String(1-2
56) 唯一指定一条通话链路的标识ID。
参数名称 是否 必选
参数类型 说明
caller 否 String(1-3
2) 主叫号码。
号码为全局号码格式(包含国家码),如 +86138****0021。
注:此处返回号码非真实主被叫号码,真实主被 叫号码请以fee事件中的返回值为准。
called 否 String(1-3
2) 被叫号码。
注:此处返回号码非真实主被叫号码,真实主被 叫号码请以fee事件中的返回值为准。
stateCode 否 Integer 通话挂机的原因值,仅当eventType为disconnect 时携带。
取值范围及表示的含义请参考通话挂机原因值说
明。
stateDesc 否 String(1-1
28) 通话挂机的原因值的描述,仅当eventType为 disconnect时携带。
subscripti
onId 否 String(1-6
4) 绑定ID。
userData 否 String(1-2
56) 用户附属信息。
当客户在AXB模式绑定接口、AXB模式绑定信息 修改接口中携带了“userData”时,对应此呼叫 事件的通知消息中都会携带此参数。
接口示例
POST /status HTTP/1.1
content-length:xx
{"eventType":"disconnect","statusInfo":
{"sessionId":"1200_1029_4294967295_20190123091514@callenabler246.huaweicaas.com","timestamp":"201 9-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