文章目录
概述
阿里参考文档: https://help.aliyun.com/zh/pnp/?spm=a2c4g.11186623.0.0.2cb84000WTGnNA
因为业务需要,需要集成一下阿里的阿里隐私号码保护功能,在这边归纳记录一下,功能代码。
一、接口介绍
该功能使用到了一下接口
1、隐私号码绑定:BindAxb
2、查询隐私号码绑定关系:querySubscriptionDetail
3、修改隐私号码绑定关系:UpdateSubscription
4、解除隐私号码绑定关系:UnbindSubscription
二、使用步骤
添加依赖
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dyplsapi20170525</artifactId>
<version>2.0.5</version>
</dependency>
1.隐私号码绑定:BindAxb
代码如下(示例):
/**
* client 使用AK&SK初始化账号Client
* @param PoolKey 号码池Key。在号码隐私保护控制台,号码池管理页面获取号码池 Key
* @param phoneA AXB 中间号的 A 号码。A 号码可设置为手机号码或固定电话,固定电话请加区号,区号和固定电话之间不需要连字符。
* @param phoneB AXB 中间号的 B 号码。
* @param phoneNoX AXB 中间号的 X 号码。X 号码是您在控制台已购买的隐私号。
* @throws Exception
*/
public static BindAxbResponse BindAxb(Client client, String poolKey, String phoneA, String phoneB, String phoneNoX) throws Exception {
long timeStamp = System.currentTimeMillis()+1000*60*30;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
BindAxbRequest req = new BindAxbRequest()
.setPoolKey(poolKey)
.setPhoneNoA(phoneA)
.setPhoneNoB(phoneB)
.setExpectCity("常州")
.setPhoneNoX(phoneNoX)
.setIsRecordingEnabled(true)
.setCallRestrict("CONTROL_CLEAR_DISABLE")
.setExpiration(sdf.format(new Date(timeStamp)));
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
BindAxbResponse resp = client.bindAxbWithOptions(req,runtime);
if (!com.aliyun.teautil.Common.equalString(resp.body.code, "OK")) {
System.out.println("--------------------绑定失败--------------------");
throw new JSONException("绑定失败,"+resp.body.message);
}
System.out.println("------------绑定成功-------------");
return resp;
}
2.查询隐私号码绑定关系:querySubscriptionDetail
代码如下(示例):
/**
* client 使用AK&SK初始化账号Client
* @param PoolKey 号码池Key。在号码隐私保护控制台,号码池管理页面获取号码池 Key
* @param secretNo AXB 中间号的 X 号码。X 号码是您在控制台已购买的隐私号。
* @param subsId绑定关系 ID。请登录号码隐私保护控制台,在号码管理页面筛选号码,点击详情查看号码的绑定关系 ID,或者在调用 BindAxb 等号码绑定 API 时查看返回参数中的 SubsId。
* @throws Exception
*/
public static QuerySubscriptionDetailResponse querySubscriptionDetail(Client client, String poolKey, String secretNo,String subsId) throws Exception {
QuerySubscriptionDetailRequest req = new QuerySubscriptionDetailRequest()
.setPoolKey(poolKey).setSubsId(subsId).setPhoneNoX(secretNo);
QuerySubscriptionDetailResponse resp = client.querySubscriptionDetail(req);
if (!com.aliyun.teautil.Common.equalString(resp.body.code, "OK")) {
System.out.println("--------------------查询隐号码绑定关系失败--------------------");
throw new JSONException("查询隐号码绑定关系失败,"+resp.body.message);
}
System.out.println("------------查询隐号码绑定关系成功-------------");
return resp;
}
该处使用的url网络请求的数据。
3.修改隐私号码绑定关系:UpdateSubscription
代码如下(示例):
/**
* client 使用AK&SK初始化账号Client
* @param PoolKey 号码池Key。在号码隐私保护控制台,号码池管理页面获取号码池 Key
* @param phoneA AXB 中间号的 A 号码。A 号码可设置为手机号码或固定电话,固定电话请加区号,区号和固定电话之间不需要连字符。
* @param subsId绑定关系 ID。请登录号码隐私保护控制台,在号码管理页面筛选号码,点击详情查看号码的绑定关系 ID,或者在调用 BindAxb 等号码绑定 API 时查看返回参数中的 SubsId。
* @param phoneNoX AXB 中间号的 X 号码。X 号码是您在控制台已购买的隐私号。
* @param operateType 修改绑定关系的操作。取值:updateNoA:修改 A 号码。updateNoB:修改 B 号码。
* @throws Exception
*/
public static UpdateSubscriptionResponse UpdateSubscription(Client client,String poolKey,String phoneA, String subsId, String phoneNoX, String operateType) throws Exception {
UpdateSubscriptionRequest req = new UpdateSubscriptionRequest()
.setPoolKey(poolKey)
.setSubsId(subsId)
.setPhoneNoX(phoneNoX)
.setPhoneNoA(phoneA)
.setOperateType(operateType);
UpdateSubscriptionResponse resp = client.updateSubscription(req);
if (!com.aliyun.teautil.Common.equalString(resp.body.code, "OK")) {
System.out.println("--------------------修改绑定关系失败--------------------");
throw new JSONException("修改绑定关系失败,"+resp.body.message);
}
System.out.println("------------修改绑定关系成功-------------");
return resp;
}
4.解除隐私号码绑定关系:UnbindSubscription
代码如下(示例):
/**
* client 使用AK&SK初始化账号Client
* @param subsId绑定关系 ID。请登录号码隐私保护控制台,在号码管理页面筛选号码,点击详情查看号码的绑定关系 ID,或者在调用 BindAxb 等号码绑定 API 时查看返回参数中的 SubsId。
* @param secretNo AXB 中间号的 X 号码。X 号码是您在控制台已购买的隐私号。
*/
public static void UnbindSubscription(Client client, String subsId, String secretNo) throws Exception {
UnbindSubscriptionRequest req = new UnbindSubscriptionRequest()
.setSubsId(subsId)
.setSecretNo(secretNo);
UnbindSubscriptionResponse resp = client.unbindSubscription(req);
if (!com.aliyun.teautil.Common.equalString(resp.body.code, "OK")) {
System.out.println("--------------------解绑失败--------------------");
throw new JSONException("解绑失败,"+resp.body.message);
}
System.out.println("------------解绑成功-------------");
}
5.完成之后,测试
public static Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config()
// 必填,您的 AccessKey ID 在阿里申请
.setAccessKeyId(accessKeyId)
// 必填,您的 AccessKey Secret 在阿里申请
.setAccessKeySecret(accessKeySecret);
// Endpoint 请参考 https://api.aliyun.com/product/Dyplsapi
config.endpoint = "dyplsapi.aliyuncs.com";
return new Client(config);
}
public static void main(String[] args_) throws Exception {
// 号码池Key
String poolKey = "FC1...";
// AXB中的A号码
String phoneA = "137*****006";
// AXB中的B号码
String phoneB = "181*****291";
Client client = AliyunAXBUtils.createClient("LTA...","lVI...");
BindAxbResponse bindAxbResp = AliyunAXBUtils.BindAxb(client, poolKey, phoneA,phoneB,"170*****589");
System.out.println(JSONObject.toJSONString(bindAxbResp));
// QuerySubscriptionDetailResponse Queryresp = AliyunAXBUtils.querySubscriptionDetail(client, poolKey, "170*****589","1000*******106");
// System.out.println(JSONObject.toJSONString(Queryresp));
// UpdateSubscriptionResponse Updateresp = AliyunAXBUtils.UpdateSubscription(client,poolKey,"180*****295", "1000*******106", "170*****589", "updateNoA");
// System.out.println(JSONObject.toJSONString(Updateresp));
// QuerySubscriptionDetailResponse Queryresp2 = AliyunAXBUtils.querySubscriptionDetail(client, poolKey, "170*****589","1000*******106");
// System.out.println(JSONObject.toJSONString(Queryresp2));
// AliyunAXBUtils.UnbindSubscription(client, "1000*******106", "170*****589");
}