不是 广告!不要限流!!
准备工作:
可直接下拉最后查看实例。
开通阿里服务:
条件:您已经完成注册阿里云账号,并完成企业实名认证,具体操作请参见阿里云账号注册流程、企业实名认证。
https://account.console.aliyun.com/?spm=a2c4g.11186623.2.3.2e5c748af0dEZN#/auth/home
- 隐私保护产品包括AXN隐私号、AXB中间号、AXN分机号、95AXN隐私号和AXG隐私号五种应用。
- 进入控制台开通:
- 注意:购买完号码之后用户可以在“号码管理”里面查看购买号码是否成功。
SDK 环境搭建(如果使用>https 调用不需要 SDK)
阿里文档:https://help.aliyun.com/document_detail/113040.html?spm=a2c4g.11186623.6.621.6a85697a9iff2Y
项目地址:https://github.com/aliyun/openapi-sdk-php-client?spm=a2c4g.11186623.2.9.d9c324efbadSja
推荐:获得并注册相关的服务后采用直接在 后端 直接Ajax 请求
例如:PHP 后端请求,不建议采用js>Ajax 会直接暴露 你的秘钥等保密信息
HTTPS方式具体如下:
请求结构
号码隐私保护支持基于URL发送HTTP/HTTPS请求。请求参数需要包含在URL中,请求及返回结果都使用 UTF-8
字符集编码。
请求结构示例
以下为一条SendSms未编码的URL请求示例:
https://dyplsapi.aliyuncs.com/?Action=BindAxb&<公共请求参数>
https
指定了请求通信协议。dyplsapi.aliyuncs.com
指定了号码隐私保护的服务接入地址(Endpoint)。Action=BindAxb
指定了要调用的API。<公共请求参数>
是系统规定的其他公共参数。
请求协议
请求中使用的协议包括
- 支持HTTP或HTTPS协议请求通信。为了获得更高的安全性,推荐您使用HTTPS协议发送请求。
- 绑定API采用Rest协议,其中签名算法使用了阿里云的POP协议。
- 发生通话行为后的话单消息回执采用的是阿里云消息服务MNS实现。
以下SDK 补充详细,(可直接下拉查看,AXB实例 一看就懂)
服务地址
号码隐私保护统一使用服务地址dyplsapi.aliyuncs.com
。
公共请求头和公共响应头
API接口中使用了公共请求头(Common Request Headers)和公共响应头(Common Response Headers),这些内容可以被所有的号码隐私保护请求使用。
公共请求参数?--下载SDK 可以生成,请求签名也是,或者利用阿里工具生成(实例:)
号码隐私保护支持通过URL发起HTTP请求。API接口中使用了公共请求头(Common Request Headers),这些公共请求头可以被所有的号码隐私保护请求使用。
创建AccessKey?---
阿里网址:https://help.aliyun.com/document_detail/53045.htm?spm=a2c4g.11186623.2.6.34f724efiDFrwz
请求示例
GET /?Signature=zJDF%2BLrzhj%2FThnlvIToysFRq6t4%3D
&AccessKeyId=testId
&Action=BindAxb
&Format=XML
&OutId=123
&PhoneNumbers=15300000001
&RegionId=cn-hangzhou
&SignName=%E9%98%BF%E9%87%8C%E4%BA%91%E7%9F%AD%E4%BF%A1%E6%B5%8B%E8%AF%95%E4%B8%93%E7%94%A8
&SignatureMethod=HMAC-SHA1
&SignatureNonce=45e25e9b-0a6f-4070-8c85-2956eda1b466
&SignatureVersion=1.0
&PoolKey=FC123456
&PhoneNoA=170000000
&PhoneNoB=171000000
&ExpireDate=2017-07-12T02%3A42%3A19Z
&Timestamp=2017-07-12T02%3A42%3A19Z
&Version=2017-05-25
请求参数
名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
Signature | String | 是 | 请求签名,即最终生成的签名结果值。 如何生成请求签名,请查看请求签名。 |
AccessKeyId | String | 是 | 访问密钥 ID。AccessKey 用于调用 API。 |
Action | String | 是 | API 的名称。 |
Format | String | 否 | 返回参数的语言类型。取值范围:json | xml。默认值:json。 |
RegionId | String | 否 | API支持的RegionID,如号码隐私保护API的值为:cn-hangzhou。 |
SignatureMethod | String | 是 | 签名方式。取值范围:HMAC-SHA1。 |
SignatureNonce | String | 是 | 签名唯一随机数。用于防止网络重放攻击,建议您每一次请求都使用不同的随机数。 JAVA语言建议用: |
SignatureVersion | String | 是 | 签名算法版本。取值范围:1.0。 |
Timestamp | String | 是 | 请求的时间戳。按照ISO8601 标准表示,并需要使用UTC时间,格式为yyyy-MM-ddTHH:mm:ssZ。示例:2018-01-01T12:00:00Z 表示北京时间 2018 年 01 月 01 日 20 点 00 分 00 秒。 |
Version | String | 是 | API 的版本号,格式为 YYYY-MM-DD。取值范围:2017-05-25。 |
公共响应参数
号码隐私保护支持通过URL发起HTTP请求。API接口中使用了公共响应头(Common Response Headers),这些公共响应头可以被所有的号码隐私保护请求使用。
返回示例
除业务参数之外,号码隐私保护还会返回公共参数,返回示例如下。
- JSON格式:
{ "RequestId":"2184201F-BFB3-446B-B1F2-C746B7BF0657" }
- XML格式:
<?xml version='1.0' encoding='UTF-8'?> <BindAxbResponse> <RequestId>E8534574-7381-4810-8F70-65B37BBA8970</RequesetNo> </BindAxbResponse>
API错误码
错误码(Code) | 错误信息(Message) |
---|---|
OK | OK |
isp.RAM_PERMISSION_DENY | RAM权限DENY |
isv.OUT_OF_SERVICE | 业务停机 |
isv.PRODUCT_UN_SUBSCRIPT | 未开通云通信产品的阿里云客户 |
isv.ACCOUNT_NOT_EXISTS | 账户不存在 |
isv.ACCOUNT_ABNORMAL | 账户异常 |
isp.SYSTEM_ERROR | isp.SYSTEM_ERROR |
isp.UNKNOWN_ERR_CODE | 运营商未知错误 |
isv.PARTNER_NOT_EXIST | 未知合作伙伴 |
isv.NO_NOT_EXIST | 号码不存在 |
isv.ILLEGAL_ARGUMENT | 参数非法 |
isp.DAO_EXCEPTION | 数据库异常 |
isv.NO_AVAILABLE_NUMBER | 无可用号码 |
isp.VENDOR_UNAVAILABLE | 运营商降级 |
isv.FLOW_LIMIT | 业务流控 |
isv.PARTNER_IS_CLOSED | partner被关停 |
isv.FORBIDDEN_ACTION | 无权操作 |
isv.NO_USED_BY_OTHERS | 号码被其他业务方占用 |
isv.VENDOR_BIND_FAILED | 运营商绑定失败 |
isv.EXPIRE_DATE_ILLEGAL | 过期时间非法 |
isv.MOBILE_NUMBER_ILLEGAL | 号码格式非法 |
isv.BIND_CONFLICT | 绑定冲突 |
AXB绑定:
绑定AXB号码前,请先明确您的业务场景中AXB三元组的A角色和B角色。例如,在打车应用场景中,A可以是乘客角色,B是司机角色;
示例
请求示例
http(s)://[Endpoint]/?PhoneNoA=15000000000&Expiration=2019-09-05 12:00:00&PhoneNoB=15000000001&PoolKey=FC123456&<公共请求参数>
正常返回示例
XML
格式
<BindAxbResponse> <Message>OK</Message> <RequestId>9297B722-A016-43FB-B51A-E54050D9369D</RequestId> <Code>OK</Code> <SecretBindDTO> <Extension>130</Extension> <SecretNo>17100000000</SecretNo> <SubsId>1000000768393849</SubsId> </SecretBindDTO></BindAxbResponse>
JSON
格式
{ “Message”:”OK”, “RequestId”:”9297B722-A016-43FB-B51A-E54050D9369D”, “Code”:”OK”, “S
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Expiration | String | 是 | 2019-09-05 12:00:00 | 绑定关系的过期时间。必须晚于当前时间1分钟以上。 |
PhoneNoA | String | 是 | 15000000000 | AXB中的A号码。 A号码可设置为手机号码或固定电话,固定电话需要加区号,区号和号码中间不需要加连字符,例如057188992688。 |
PhoneNoB | String | 是 | 15000000001 | AXB中的B号码,A号码拨打X号码时会转接到B号码,可通过接口UpdateSubscription更新B号码。 B号码可设置为手机号码或固定电话,固定电话需要加区号,区号和号码中间不需要加连字符,例如057188992688。 |
PoolKey | String | 是 | FC123456 | 号码池Key。请登录号码隐私保护控制台,在号码池管理中查看号码池Key。 |
AccessKeyId | String | 否 | LTAIP00vvvvvvvvv | 主账号AccessKey的ID。 |
Action | String | 否 | BindAxb | 系统规定参数。取值:BindAxb。 |
CallDisplayType | Integer | 否 | 1 | 重置绑定关系中的号码显示逻辑,1:主被叫显示中间号码X;2:B/N侧号码呼叫时,给A侧号码显示B/N的真实号码;3:A侧号码呼叫时,给B/N侧号码显示真实号码。 |
ExpectCity | String | 否 | 北京 | 指定城市进行X号码的选号。 如果当前号池中没有该城市的可用号码,或未指定此参数,将从当前号码池中随机分配一个其他城市的号码作为X号码。 如果配置了严格模式,则不存在符合条件的号码时会提示分配错误。 |
IsRecordingEnabled | Boolean | 否 | true | 是否需要针对该绑定关系产生的所有通话录制通话录音。 |
OutId | String | 否 | abcdef | 外部业务扩展字段,通话记录回执消息中会回传此参数。 |
OutOrderId | String | 否 | abcdef | 外部业务ID。 |
PhoneNoX | String | 否 | 17000000000 | AXB中的X号码。未指定X号码时,将根据参数ExpectCity从指定号码池中随机指定一个号码作为X号码。 X号码是您绑定号码前在控制台或通过接口BuySecretNo购买的电话号码,用于转接电话。 |
RingConfig | String | 否 | {“AXBRing_B”:”100000001”,”AXBRing_A”:”100000001”} | 设置AXB绑定级别企业彩铃放音,支持针对该绑定关系中设置,内容包括如下:
特殊说明:企业彩铃优先使用绑定级别设置的彩铃,如果未设置或设置未生效,则会使用号码池级别的彩铃音。 |
AXN绑定
AXN隐私号是为A号码分配一个专属的隐私号,任何号码N通过拨打X号码都可以转接到A。
示例
请求示例
http(s)://[Endpoint]/?Expiration=2019-09-05 12:00:00
&PhoneNoA=15000000000
&PoolKey=FC123456
&<公共请求参数>
正常返回示例
XML
格式
<BindAxnResponse>
<Message>OK</Message>
<RequestId>F655A8D5-B967-440B-8683-DAD6FF8DE990</RequestId>
<Code>OK</Code>
<SecretBindDTO>
<Extension>13100000000</Extension>
<SecretNo>17000000000</SecretNo>
<SubsId>1000000768798832</SubsId>
</SecretBindDTO>
</BindAxnResponse>
JSON
格式
{
"Message":"OK",
"RequestId":"F655A8D5-B967-440B-8683-DAD6FF8DE990",
"Code":"OK",
"SecretBindDTO":{
"Extension":"13100000000",
"SecretNo":"17000000000",
"SubsId":"1000000768798832"
}
}
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Expiration | String | 是 | 2019-09-05 12:00:00 | 绑定关系的过期时间。必须晚于当前时间1分钟以上。 |
PhoneNoA | String | 是 | 15000000000 | AXN中的A号码。 A号码可设置为手机号码或固定电话,固定电话需要加区号,区号和号码中间不需要加连字符,例如057188992688。 |
PoolKey | String | 是 | FC123456 | 号码池Key。请登录号码隐私保护控制台,在号码池管理中查看号码池Key。 |
AccessKeyId | String | 否 | LTAIP00vvvvvvvvv | 主账号AccessKey的ID。 |
Action | String | 否 | BindAxn | 系统规定参数。取值:BindAxn。 |
CallDisplayType | Integer | 否 | 1 | 重置绑定关系中的号码显示逻辑,1:主被叫显示中间号码X;2:B/N侧号码呼叫时,给A侧号码显示B/N的真实号码;3:A侧号码呼叫时,给B/N侧号码显示真实号码。 |
ExpectCity | String | 否 | 上海 | 指定城市进行X号码的选号。 如果当前号池中没有该城市的可用号码,或未指定此参数,将从当前号码池中随机分配一个其他城市的号码作为X号码。 如果配置了严格模式,则不存在符合条件的号码时会提示分配错误。 |
IsRecordingEnabled | Boolean | 否 | true | 是否需要针对该绑定关系产生的所有通话录制通话录音。 |
NoType | String | 否 | AXB_170 | 号码类型。 说明 适用于原阿里大于客户,阿里云用户可忽略。 |
OutId | String | 否 | abcdef | 外部业务扩展字段,通话记录回执消息中会回传此参数。 |
OutOrderId | String | 否 | abcdef | 外部业务ID。 |
PhoneNoB | String | 否 | 13100000000 | AXN中的B号码,A号码拨打X号码时会转接到B号码,可通过接口UpdateSubscription更新B号码。 B号码可设置为手机号码或固定电话,固定电话需要加区号,区号和号码中间不需要加连字符,例如057188992688。 |
PhoneNoX | String | 否 | 17000000000 | AXN中的X号码。未指定X号码时,将根据参数ExpectCity从指定号码池中随机指定一个号码作为X号码。 X号码是您绑定号码前在控制台或通过接口BuySecretNo购买的电话号码,用于转接电话。 |
RingConfig | String | 否 | {"AXNRing_N":"100000001","AXNRing_A":"100000001"} | 设置AXN绑定级别企业彩铃放音,支持针对该绑定关系中设置,内容包括如下:
特殊说明:企业彩铃优先使用绑定级别设置的彩铃,如果未设置或设置未生效,则会使用号码池级别的彩铃音。 |