AXE模式绑定接口 - CreateAXEBinding
接口功能
该接口用于客户向隐私保护通话平台设置用户A和隐私号码X之间的绑定关系,并由隐私保护通话平台自动分配分机号E或由用户指定分机号E。
请求方向
客户应用(客户端) → 隐私保护通话平台(服务端)
使用说明
前提条件
- 已创建隐私保护通话应用,获取了APP_Key,APP_Secret和APP接入地址。
- 已申请到隐私保护号码。
- 已报备实际使用人号码(隐私号A路)。

未报备的A号码不会影响绑定,但呼叫会被拦截。
- 若需要使用自定义放音,需要提前在放音文件管理页面上传并等待审核通过。
注意事项
授权信息
账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限,具体权限要求请参见权限管理。
URI
POST /rest/caas/extendnumber/v1.0
请求参数
参数名称 | 是否必选 | 参数类型 | 说明 |
|---|---|---|---|
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()转换后的时间格式去除毫秒后即为本接口要求的时间格式。 |
参数名称 | 是否必选 | 参数类型 | 说明 |
|---|---|---|---|
virtualNum | 否 | String(0-32) | 指定已申请到的X号码进行绑定。 可在隐私保护通话控制台的“号码管理”页面或订购号码成功后返回的号码表中查看已申请到的X号码。 填写为全局号码格式(国家码+11位数字的手机号码),如:+86138****0021。 该参数与areaCode是二选一关系。 同时携带virtualNum和areaCode时系统以virtualNum为准。 |
areaCode | 否 | String(0-32) | 指定城市码,由隐私保护通话平台从客户已申请到的X号码中选择可用号码进行绑定。 填写为标准格式的城市码,如:0755、010等。 X号码对应城市码可在订购号码成功后返回的号码表中查看,点击查看如何下载号码表。 该参数与virtualNum是二选一关系。 同时携带virtualNum和areaCode时系统以virtualNum为准。 |
areaMatchMode | 否 | String(枚举) | 号码筛选方式。
说明:
|
bindNum | 是 | String(1-32) | AXE中的A号码。 填写为全局号码格式。
说明: 因运营商管控,固话号码只能接收来自X号码的呼叫,不能作为主叫呼叫X号码。即当A号码为固话号码时,其他用户(手机号码)可以拨打X号码后输入分机号联系A,但A无法通过拨打X号码回呼之前通话用户或企业指定号码。 |
extendNum | 否 | String(1-4) | 分机号,即AXE中的E。仅支持数字,最大4位 ,例如:1234。 取值范围:1-9,01-99,001-999,0001-9999。 该参数仅在指定virtualNum进行绑定时有效。 不携带该参数或取值为空时,则系统自动分配分机号E。 |
displayNumMode | 否 | String(枚举) | 非A用户呼叫X号码时,A看到的主显号码。
如不携带此参数,系统默认值为0。 说明: 由于运营商管控,当前平台要求该参数必须设置为0,否则呼叫会被运营商拦截。 |
recordFlag | 否 | String(枚举) | 是否需要针对该绑定关系产生的所有通话录音。
该参数仅当客户添加应用时申请开通了录音功能才有效。 如果不携带该参数,系统默认不录音。 |
recordHintTone | 否 | String(1-128) | 该参数仅在recordFlag为true时有效。 该参数用于设置录音提示音,填写为放音文件名,可在放音文件管理页面查看。 说明: 因隐私协议及运营商管控,录音的呼叫必须携带该参数,否则呼叫会被运营商拦截。 |
callbackTone | 否 | String(1-128) | A呼叫X时,如果不存在回呼记录,则播放该参数指定的语音文件。填写为放音文名,可在放音文件管理页面查看。 参数callbackTone和callbackNum为二选一关系,两者不能同时携带,两者都不携带时以添加应用时的配置为准。 |
callbackNum | 否 | String(1-32) | A呼叫X时,如果不存在回呼记录,则转接到该参数指定的号码。填写为全局号码格式(包含国家码),如:+86180****0021或+8675528****08。 参数callbackTone和callbackNum为二选一关系,两者不能同时携带,两者都不携带时以添加应用时的配置为准。 |
timeUnit | 否 | String(枚举) | 时间单位。
携带该参数时,必须同时携带bindExpiredTime和callbackExpiredTime。如不携带此参数,则系统默认为小时。 |
bindExpiredTime | 否 | Integer | 绑定关系的有效时间,过期后系统会自动解除绑定关系,该绑定关系下的主叫和回呼都不可达。单位:由timeUnit控制。
0代表绑定关系永不过期。 说明: 该参数取值须大于等于callbackExpiredTime。 |
callbackExpiredTime | 否 | Integer | 回呼记录有效时间,过期后系统会自动清除回呼记录,回呼将转接到callbackNum或播放callbackTone提示音。单位:由timeUnit控制。
0代表绑定有效期内回呼一直有效。 当绑定关系失效时,回呼记录有效时间无论是否已经到达失效时间都会被清除。 说明: 该参数取值须小于等于bindExpiredTime。当bindExpiredTime为0时,callbackExpiredTime可设置为适用范围的任意值。 |
userData | 否 | String(1-256) | 用户自定义数据,会在响应消息中原样返回。
说明: 若在设置绑定关系时携带该参数,绑定关系对应的呼叫、话单通知消息中也会携带该参数。 |
响应参数
参数名称 | 是否必选 | 参数类型 | 说明 |
|---|---|---|---|
resultcode | 是 | String(1-32) | 请求返回的结果码。 |
resultdesc | 是 | String(1-256) | 操作结果描述。 |
subscriptionId | 否 | String(1-64) | 绑定ID,唯一标识一组绑定关系。成功响应时必定返回。请记录该ID用于后续接口调用。 |
virtualNum | 否 | String(1-32) | X号码,为全局号码格式(包含国家码),如:+86180****0021。 成功响应时必定返回。 |
extendNum | 否 | String(1-4) | 分机号,即AXE中的E。由隐私保护通话平台自动分配或由用户指定,最大4位,例如:1234 。 成功响应时必定返回。 |
bindExpiredTime | 否 | Integer | 绑定关系有效时间,单位:小时。 |
callbackExpiredTime | 否 | Integer | 回呼记录有效时间,单位:小时。 |
userData | 否 | String(1-256) | 用户自定义数据。 |
结果码说明
响应码 | 结果码 | 英文描述 | 中文描述 | 处理方法 |
|---|---|---|---|---|
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模式的接口,不能调用其他模式的接口。 | |
1012001 | Resource of number is not to be applied. | 资源未申请 | 携带的app_key和X号码没有绑定关系,请检查携带的X号码是否属于该应用。 | |
1012008 | Insufficient number of resources | 号码资源不足。 | 没有可分配的X号码,请申请新的号码资源或修改areaCode的值。点击查看处理方法。 | |
1012010 | The number $ has been bound. | 绑定关系已存在。 | 出现该错误码表示调用AXE模式绑定接口时指定的X号码(virtualNum)和A号码(bindNum)已有绑定关系,无需再次绑定。 | |
1012012 | Application does not open recording function. | 应用未开启录音功能。 | 请确认app_key所属的应用是否开启了录音功能,点击查看如何开启录音功能。 | |
1012102 | The number status is abnormal. | 号码状态异常。 | 出现该错误码表示调用接口时指定的X号码因投诉或号码状态异常被隐私保护通话平台加入了黑名单,请查看订购号码时填写的邮箱是否有业务下线通知邮件,如果没有,请拨打400电话联系华为云客服处理。 | |
1020166 | The app client ip is not in ip white list. | 对端app IP不在白名单列表中。 | 联系管理员检查IP白名单是否配置正确。 | |
1020167 | No idle extend Number. | 没有空闲的分机号。 | 出现该错误码表示调用AXE模式绑定接口时指定的分机号(extendNum)已被占用,请重新指定分机号。 | |
1020176 | Authentication failed, try again later | 鉴权失败,稍后重试 | IP因鉴权失败次数过多导致被拉黑,请30分钟后重试,或联系管理员放通该IP。 | |
1020178 | The transparent mode is not allowed. | 不允许显示真实主叫号码。 | 您的应用不支持显示真实主叫号码,请修改displayNumMode参数的取值为“0”(显示X号码)后再次绑定。 | |
500 | 1010001 | Internal system error. | 系统错误。 | 请联系客服处理。 |
1023001 | Internal error. | 内部错误。 | ||
1023002 | Response timeout. | 响应超时。 | 重新发送一次请求,若依然返回响应超时,请联系管理员处理。 |
接口示例
接口示例仅供参考,请以实际消息为准。
- 请求示例
POST /rest/caas/extendnumber/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 { "virtualNum":"+86138****8888", "bindNum":"+86139****8888", "callbackTone":"callbackTone.wav", "bindExpiredTime":0, "callbackExpiredTime":0 }
- 响应示例
HTTP/1.1 200 OK Content-Type: application/json;charset=utf-8 Content-Length: xx { "resultcode":"0", "resultdesc":"Success", "subscriptionId":"******", "virtualNum":"+86138****8888", "extendNum":"1234", "bindExpiredTime":0, "callbackExpiredTime":0 }

