AXYB模式绑定接口
接口功能
该接口用于SP向隐私保护通话平台申请设置以下绑定关系:
- 用户A和隐私号码X的绑定关系
- AX、用户B和隐私号码Y的绑定关系
请求方向
客户应用(客户端) → 隐私保护通话平台(服务端)
使用说明
- 已创建隐私保护通话应用,获取了APP_Key,APP_Secret和APP接入地址。
- 已申请到至少两个隐私保护号码。
- 若需要使用自定义放音,需要提前在放音文件管理页面上传并等待审核通过。
- 一个X号码同时只能绑定一个A号码,一个A号码可以同时绑定5个X号码。
- 一个Y号码在同一个应用下可绑定多次,但绑定的AX关系不可重复。例如,允许同时绑定A1X1Y1B1和A2X2Y1B2,但不允许同时绑定A1X1Y1B1和A1X1Y1B2。
- Y号码可绑定的最大关系数量为1000(Y号码绑定一个AX关系计为一次绑定关系)。
- AXYB模式支持分别设置AX和YB绑定关系有效时长(通过duration和ybDuration参数设置)。AX绑定关系过期后,系统自动解绑AX和YB的绑定关系;YB绑定关系过期后,仅解绑YB绑定关系。
- 若只设置了AX绑定关系(未绑定YB),B拨打X时隐私保护通话平台会自动给B分配一个Y号码。形成AXYB的绑定关系后,A才能拨打Y联系B。此时的YB关系过期时间为绑定AX时携带的ybDuration参数值;若未携带ybDuration,则随AX解绑时解绑。
- 若要使用录音功能,需要完成以下两个步骤:
接口类型
请求方法 |
POST |
---|---|
访问URI |
/rest/omp/xyrelationnumber/v1.0 |
通信协议 |
HTTPS |
请求参数
参数名称 |
是否必选 |
参数类型 |
说明 |
---|---|---|---|
app_key |
是 |
String(1-128) |
AXYB能力标识,登录控制台,从“应用管理”页获取。 |
参数名称 |
是否必选 |
参数类型 |
说明 |
---|---|---|---|
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="随机数生成时间"。
|
编程语言 |
时间格式 |
---|---|
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()转换后的时间格式去除毫秒后即为本接口要求的时间格式。 |
参数名称 |
是否必选 |
参数类型 |
说明 |
---|---|---|---|
origNum |
是 |
String(1-32) |
AXYB中的A号码。 填写为全局号码格式。
说明:
因运营商管控,固话号码只能接收来自X号码的呼叫,不能作为主叫呼叫X号码。即当A号码为固话号码时,B(手机号码)可以拨打X号码联系A,但A无法通过拨打Y号码联系B。 |
areaCode |
是 |
String(1-32) |
区号,标示隐私号码归属的区域。 填写为标准格式的区号,如:0755、010等。 X号码对应城市码可在订购号码成功后返回的号码表中查看,点击查看如何下载号码表。 |
areaMatchMode |
否 |
String(枚举) |
号码筛选方式。
说明:
|
callDirection |
否 |
Integer |
表示该绑定关系允许的呼叫方向,取值范围:
如果不携带该参数,系统默认该参数为0。 |
duration |
否 |
Integer |
AX绑定关系保持时间,单位为秒。 取值范围
如果不携带该参数,系统默认该参数为7200。 |
ybDuration |
否 |
Integer |
YB绑定关系保持时间,单位为秒。 取值范围:
若在设置AX绑定关系和YB绑定关系时都不携带该参数,系统默认该参数为0。
说明:
|
recordFlag |
否 |
String(枚举) |
录音标识。
如果设置绑定关系时该参数为true,则本次绑定关系中的主叫和被叫所有通过隐私号码拨通的通话都会被录音。 该参数仅当添加应用时申请开通了录音功能才有效。 如果不携带该参数,系统默认该参数为false。 |
recordHintTone |
否 |
String(1-128) |
该参数仅在recordFlag为true时有效。 该参数用于设置录音提示音,填写为放音文件名,可在放音文件管理页面查看。
说明:
因隐私协议及运营商管控,录音的呼叫必须携带该参数,否则呼叫会被运营商拦截。 |
preVoiceX |
否 |
String(1-128) |
设置对X号码播放的个性化通话前等待音,系统边给X号码绑定用户放音(只放一次音)边拨打Y号码绑定用户。 填写放音文件名,例如x_hint_tone1.wav,文件名只能由数字、字母、以及特殊字符-_.@组成。放音文件需提前提交给管理员。 不携带该参数或填写空字符串时,使用系统默认放音,例如“嘟…嘟…嘟…”。 |
userData |
否 |
String(1-256) |
用户自定义数据,会在响应消息中原样返回。
说明:
若在设置绑定关系时携带该参数,绑定关系对应的呼叫、话单和短信通知消息中也会携带该参数。 |
参数名称 |
是否必选 |
参数类型 |
说明 |
---|---|---|---|
origNum |
是 |
String(1-32) |
AXYB中的B号码。 填写为全局号码格式。
说明:
因运营商管控,固话号码只能接收来自X号码的呼叫,不能作为主叫呼叫X号码。即当B号码为固话号码时,A(手机号码)可以拨打Y号码联系B,但B无法通过拨打X号码联系A。 |
subscriptionId |
是 |
String(1-64) |
填写为调用“AXYB模式绑定接口”绑定AX时返回的绑定ID。 |
areaCode |
否 |
String(1-32) |
区号,标示隐私号码归属的区域。 填写为标准格式的区号,如:0755、010等。 X号码对应城市码可在订购号码成功后返回的号码表中查看,点击查看如何下载号码表。 |
areaMatchMode |
否 |
String(枚举) |
号码筛选方式。
携带该参数时,必须同时携带areaCode。 当该参数为0,应用下无对应areaCode的号码时,号码分配失败。 当该参数为1,应用下无对应areaCode的号码时,会优先选择该应用下与areaCode对应区域的父区域下的号码,若父区域下也没有,号码分配失败。 不携带该参数时,系统默认为严格匹配模式。 |
ybDuration |
否 |
Integer |
YB绑定关系保持时间,单位为秒。 取值范围:
若在设置AX绑定关系和YB绑定关系时都不携带该参数,系统默认该参数为0。
说明:
|
preVoiceY |
否 |
String(1-128) |
设置对Y号码播放的个性化通话前等待音,系统边给Y号码绑定用户放音(只放一次音)边拨打X号码绑定用户。 填写放音文件名,例如y_hint_tone1.wav,文件名只能由数字、字母、以及特殊字符-_.@组成。放音文件需提前提交给管理员。 不携带该参数或填写空字符串时,使用系统默认放音,例如“嘟…嘟…嘟…”。 |
userData |
否 |
String(1-256) |
用户自定义数据,会在响应消息中原样返回。
|
响应参数
参数名称 |
是否必选 |
参数类型 |
说明 |
---|---|---|---|
resultcode |
是 |
String(1-32) |
请求返回的结果码。 |
resultdesc |
是 |
String(1-256) |
操作结果描述。 |
subscriptionId |
否 |
String(1-64) |
绑定ID,唯一标识一个绑定关系,由隐私保护通话平台自动分配。 在AXYB模式中,一个绑定关系是指将两个用户号码、两个隐私号码和呼叫方向等相关信息绑定起来的一组信息。 成功响应时必定返回。 |
relationNumber |
否 |
String(1-32) |
绑定的隐私号码,为全局号码格式(包含国家码),如:+86138****0021。 成功响应时必定返回。 |
结果码说明
响应码 |
结果码 |
英文描述 |
中文描述 |
处理方法 |
---|---|---|---|---|
200 |
0 |
Success. |
成功。 |
- |
400 |
1023006 |
Authorization not contained in the HTTP header. |
HTTP消息头未找到Authorization字段。 |
请检查HTTP消息头中是否携带了Authorization字段。 |
1023007 |
realm not contained in Authorization. |
Authorization字段中未找到realm属性。 |
请检查Authorization字段中的是否携带了realm属性。 |
|
1023008 |
profile not contained in Authorization. |
Authorization字段中未找到profile属性。 |
请检查Authorization字段中的是否携带了profile属性。 |
|
1023009 |
The value of realm in Authorization must be SDP. |
Authorization中realm属性值应该为“SDP”。 |
请检查Authorization字段中的realm属性值是否为“SDP”。 |
|
1023010 |
The value of profile in Authorization must be UsernameToken. |
Authorization中profile属性值应该为“UsernameToken”。 |
请检查Authorization字段中的profile属性值是否为“UsernameToken”。 |
|
1023011 |
The value of type in Authorization must be app_key. |
Authorization中type属性值应该为“Appkey”。 |
请检查Authorization字段中的type属性值是否为“Appkey”。 |
|
1023012 |
type not contained in Authorization. |
Authorization字段中未找到type属性。 |
请检查Authorization字段中是否携带了type属性。 |
|
1023033 |
HTTP header not found X-AKSK field. |
HTTP头未找到X-AKSK字段。 |
请检查HTTP消息头中是否携带了X-AKSK字段。 |
|
1023034 |
UserName not contained in X-AKSK. |
X-AKSK字段中未找到UserName属性。 |
请检查X-AKSK字段中的是否携带了Username属性。 |
|
1023035 |
Nonce not contained in X-AKSK. |
X-AKSK字段中未找到Nonce属性。 |
请检查X-AKSK字段中的是否携带了Nonce属性。 |
|
1023036 |
Created not contained in X-AKSK. |
X-AKSK字段中未找到Created属性。 |
请检查X-AKSK字段中的是否携带了Created属性。 |
|
1023037 |
PasswordDigest not contained in X-AKSK. |
X-AKSK字段中未找到PasswordDigest属性。 |
请检查X-AKSK字段中的是否携带了PasswordDigest属性。 |
|
1023038 |
UsernameToken not contained in X-AKSK. |
X-AKSK中没有携带UsernameToken。 |
请检查X-AKSK字段中的是否携带了UsernameToken属性。 |
|
401 |
1010010 |
Invalid digest. |
PasswordDigest校验失败。 |
请检查PasswordDigest字段填写是否正确。 |
1010013 |
Time out limit. |
时间超出限制。 |
请确认X-AKSK鉴权时,生成随机数的时间与发送请求时的本地时间不能相差太大(具体差值请与管理员确认)。 |
|
403 |
1010002 |
Invalid request. |
无效请求。 |
参考各接口参数说明,检查请求携带的参数格式是否正确,如以下参数格式问题:
|
1010003 |
Invalid app_key. |
无效的app_key。 |
请检查请求携带的app_key填写是否正确。 |
|
1010008 |
The status of the app_key is unavailable. |
app_key状态异常。 |
请联系管理员确认该app_key状态是否正常。应用状态可登录控制台后在“应用管理”界面查看。 |
|
1010010 |
The flow control upper limit is reached on the platform. |
平台达到系统流控上限。 |
请稍等一分钟后再试。 |
|
1010029 |
The subscriber status is frozen. |
用户账号已冻结。 |
|
|
1010040 |
The app_key is not allowed to invoke the API. |
app_key没有调用本API的权限。 |
调用的接口和app_key所属的应用模式不一致。如添加应用时选择的AXB模式的应用,调用接口时只能调用AXB模式的接口,不能调用其他模式的接口。 |
|
1012008 |
Insufficient number of resources |
资源不足。 |
没有可分配的X号码,请申请新的号码资源或修改areaCode的值。点击查看处理方法。 |
|
1012012 |
Application does not open recording function. |
应用未开启录音功能。 |
请确认app_key所属的应用是否开启了录音功能,点击查看如何开启录音功能。 |
|
1012102 |
The number status is abnormal. |
号码状态异常。 |
出现该错误码表示调用接口时指定的X号码因投诉或号码状态异常被隐私保护通话平台加入了黑名单,请查看订购号码时填写的邮箱是否有业务下线通知邮件,如果没有,请拨打400电话联系华为云客服处理。 |
|
1016001 |
The record does not exist. |
记录不存在。 |
未查询到绑定关系,请检查subscriptionId参数的填写是否正确。 |
|
1020166 |
The app client ip is not in ip white list. |
对端app IP不在白名单列表中。 |
联系管理员检查IP白名单是否配置正确。 |
|
1020176 |
Authentication failed, try again later |
鉴权失败,稍后重试 |
IP因鉴权失败次数过多导致被拉黑,请30分钟后重试,或联系管理员放通该IP。 |
|
500 |
1010001 |
Internal system error. |
系统错误。 |
请联系管理员处理。 |
1023001 |
Internal error. |
内部错误。 |
||
1023002 |
Response timeout. |
响应超时。 |
重新发送一次请求,若依然返回响应超时,请联系管理员处理。 |
接口示例
- 请求示例
POST /rest/omp/xyrelationnumber/v1.0 HTTP1.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 { "origNum":"+86138****0001", "areaCode":"0755", "areaMatchMode":"1" }
- 响应示例
HTTP/1.1 200 OK Content-Type: application/json;charset=utf-8 Content-Length: xx { "resultcode":"0", "resultdesc":"Success" , "subscriptionId":"****", "relationNumber":"+86138****0021" }