阿里云号码隐私服务使用

产品最近的需求是,客户通过短链接点过预约之后,门店店员收到意向后联系客户进行引导,同时要对双方的号码进行隐私保护

(前提:入驻阿里云,获取阿里云访问密钥,开通号码隐私保护服务)

官方地址:https://help.aliyun.com/product/59433.html?spm=a2c4g.11186623.6.540.342b38980LMYaw

产品概念:

号码隐私保护(Phone Number Protection)是一款基于基础运营商通信网络能力的互联网产品,可以帮忙使用本产品的企业保护其客户电话号码不泄露、通过对虚拟号码服务过程进行录音来管理客户电话服务质量,同时该产品适用于出行、物流、外卖、招聘等多种业务场景,API接口简单易用,可以快速实现平台客户保护用户隐私的需求。

以下介绍其中一款常用的产品类型:

AXB中间号:AXB中间号是为了保护一对一专属服务场景中的用户A、服务方B的隐私,为A、B这一对通话的专属隐私保护功能;

功能描述:AXB中间号主要应用在1对1场景下的隐私保护,客户把A号码和B号码通过API在平台实现绑定关系,A拨打X转接到B,B拨打X转接到A;一个X可以供200对绑定关系复用,如A1XB1、A2XB2、A3XB3,只要A、B二元组不重复,X可以同时供200组绑定关系同时复用,通话也可以同时进行。

使用步骤: 1、导入阿里号码服务的两个依赖

<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dyplsapi</artifactId><version>1.2.0</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.1.0</version></dependency>

2、配置文件yml

oss:product: Dyplsapidomain: dyplsapi.aliyuncs.comaccessKeyId: XXXXXXXXXXXXXXXXXXXXXXaccessKeySecret: XXXXXXXXXXXXXXXX

解释
product:产品名称:云通信隐私保护产品,开发者无需替换
domain:产品域名,开发者无需替换
accessKeyId:你的accessKeyId,此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
accessKeySceret:你的密钥密码,此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)

3、编写代码

*** 阿里云号码隐私拨号保护API** @author java学习库(微信公众号)* @date 2020/11/28*/
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dyplsapi.model.v20170525.*;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;@Configurationpublic class PhoneEncryption {@Autowiredprivate RedisUtils redisUtils;@Value("${oss.product}")private String product;@Value("${oss.domain}")private String domain;@Value("${oss.accessKeyId}")private String accessKeyId;@Value("${oss.accessKeySecret}")private String accessKeySecret;/*** AXB绑定示例** @return* @throws ClientException*/public BindAxbResponse bindAxb(String phoneA, String phoneB) throws ClientException {//设置超时时间-可自行调整System.setProperty("sun.net.client.defaultConnectTimeout", "10000");System.setProperty("sun.net.client.defaultReadTimeout", "10000");//初始化ascClient,暂时不支持多regionIClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);IAcsClient acsClient = new DefaultAcsClient(profile);//AXB绑定请求结构体-参数说明详见参数说明BindAxbRequest request = new BindAxbRequest();//必填:号池Key-详见概览页面的号池管理功能request.setPoolKey("XXXXXXXXXXXXXX");//必填:AXB关系中的A号码-A号码支持固话(区号后面不需要连字符"-")request.setPhoneNoA(phoneA);//必选:AXB中的B号码-同样支持固话request.setPhoneNoB(phoneB);//可选:指定X号码选号request.setPhoneNoX("XXXXXXXXXXXXXX");//可选:指定需要分配归属城市的X号码-如果当前号码池没有该城市的可用号码将随机分配其他城市的号码//request.setExpectCity("南京");//必填:绑定关系对应的失效时间-不能早于当前系统时间(100秒)request.setExpiration(DateTimeHelper.timestampToLocalDateTimeStr((System.currentTimeMillis() + 100000L)));//可选:是否需要录制音频-默认是falserequest.setIsRecordingEnabled(false);//hint 此处可能会抛出异常,注意catchBindAxbResponse response = acsClient.getAcsResponse(request);if (response.getCode() != null && response.getCode().equals("OK")) {//请求成功return response;}return null;}/*** 订购关系解绑示例(解绑接口不区分AXB、AXN)** @return* @throws ClientException*/public UnbindSubscriptionResponse unbind(String subsId, String secretNo) throws ClientException {//可自助调整超时时间System.setProperty("sun.net.client.defaultConnectTimeout", "10000");System.setProperty("sun.net.client.defaultReadTimeout", "10000");//初始化acsClient,暂不支持region化IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);IAcsClient acsClient = new DefaultAcsClient(profile);//组装请求对象UnbindSubscriptionRequest request = new UnbindSubscriptionRequest();//必填:对应的号池Keyrequest.setPoolKey("XXXXXXXXXXXXXXXXXXXX");//必填-分配的X小号-对应到绑定接口中返回的secretNo;request.setSecretNo(secretNo);//可选-绑定关系对应的ID-对应到绑定接口中返回的subsId;request.setSubsId(subsId);UnbindSubscriptionResponse response = acsClient.getAcsResponse(request);return response;}public Boolean phoneEncryption(String phoneA, String phoneB) {// 这一步需要先拿到最新的redis保存的subsId, 解绑我们的隐私号码, 然后才能进行电话的拨打操作String cacheSubsId = redisUtils.get(CACHE_KEY);// 如果数据库中已经存在subsId的话, 就直接让它失效if (GeneralUtil.isNotNullAndEmpty(cacheSubsId)) {try {// 解绑之前的手机号unbind(cacheSubsId, "XXXXXXXXXXXXXXXXXXXX");} catch (ClientException e) {e.printStackTrace();}}// 如果subsId不为空的话,就直接绑定AXBBindAxbResponse axbResponse = null;try {axbResponse = bindAxb(phoneA, phoneB);} catch (ClientException e) {e.printStackTrace();}String axbSubsId = axbResponse.getSecretBindDTO() == null ? null : axbResponse.getSecretBindDTO().getSubsId();if (GeneralUtil.isObjNotNull(axbResponse) && GeneralUtil.isNotNullAndEmpty(axbSubsId)) {redisUtils.set(CACHE_KEY, axbSubsId);LogUtil.info("Processing phoneEncryption success!Code = %s , RequestId = %s , subsId = %s", axbResponse.getCode(), axbResponse.getRequestId(), axbSubsId);return true;}return false;}
}

考虑情况: 1、目前线上一个中间号同时能支持200对AXB绑定关系,但是这200对中A和B不能重复存在。 2、AXB业务中,A或B号码只有在国内才可以拨通。 3、单次最大通话时长为60分钟,超过60分钟后需要重新发起呼叫。

希望以上内容能够对远方的你产生帮助,如果觉得还ok,关注“java学习库”,私信我,一起学习吧。

java:阿里云号码隐私服务使用相关推荐

  1. Java对接阿里云号码隐私保护

    一.前期准备 阿里云号码隐私保护地址:https://help.aliyun.com/document_detail/110258.htm 二.目前需求概括 配送服务 需要将用户手机号脱敏处理 配送员 ...

  2. Springboot项目调用阿里云号码隐私保护服务【真实有用】

    1.首先去阿里云申请号码隐私保护服务,申请号码池以及专属号码,获取有效的阿里云AK. 2.导入以下两个依赖 <dependency><groupId>com.aliyun< ...

  3. Java 阿里云短信服务的集成

    Java 阿里云短信服务的集成 1.短信发送API(SendSms)---JAVA  [ https://help.aliyun.com/document_detail/55284.html?spm= ...

  4. java阿里云短信服务开通验证码功能实现(1)

    java阿里云短信验证码功能实现篇(一) 最近有朋友咨询java短信验证码,系统注册登录,修改密码时使用,作为小白的我也是第一次搞这个,若有不好之处,忘见谅,废话不多说,我将写两篇文章来说明如何开通短 ...

  5. java 阿里云短信服务

    提示:阿里云设置方面就省略了. 一.依赖 代码如下(示例): /*阿里云 短信服务 Java SDK*/compile group: 'com.aliyun', name: 'aliyun-java- ...

  6. java阿里云短信服务SDK使用方法

    对于单个发送短信功能而言,首先需要在阿里云平台注册并获取accessKeyId.accessSecret. 在由maven管理的项目中,需要添加依赖,这个只是测试用,如果要给向外发送需要申请签名,申请 ...

  7. 阿里云号码认证服务服务端PHP版

    TP5.1写的api 官方接入说明:https://github.com/aliyun/openapi-sdk-php/blob/master/README-zh-CN.md?spm=a2c4g.11 ...

  8. Java实现短信验证码(阿里云短信服务)

    前言: 很多时候我们做的项目都需要上图这样的验证码来帮助我们完成更好的功能,比如:什么登录注册,忘记密码需要发送手机验证码之类的啊...下面分享我今天通过阿里云短信服务实现的短信验证码,操作都很简单, ...

  9. 阿里云短信服务Java实现

    文章目录 1.阿里云用户权限 2.开通阿里云短信服务 3.帮助文档 4.编写测试代码 真实项目应用 1.阿里云用户权限 阿里云平台有很多业务,用户登录阿里云之后,要想使用业务,必须开通该业务的权限 登 ...

最新文章

  1. 推荐一个分布式JVM监控工具,非常实用!
  2. git cherry-pick 使用
  3. C++中常用的字符串函数
  4. 如何更改mysql的授权信息_Mysql 的用户权限等操作管理与设置(创建、授权、修改、查看)...
  5. 在网络推广外包中企业网站排名优化在网络推广外包中如何实现?
  6. python语言怎么输入-python/基础输出输入用法
  7. 移植uboot第八步:裁剪、修改默认参数、分区
  8. Windows Vista for Developers——第三部分补充:控件和桌面窗口管理器
  9. Boost:boost::source_location的用法测试程序
  10. kv存储对抗关系型数据库
  11. python opencv3 检测人
  12. 详述一次大量删除导致MySQL慢查的过程
  13. Python的subprocess模块(二)
  14. SCOM 2012 SP1安装过程
  15. OpenCV尽量不要打开CUDA参数编译,否则太慢了
  16. 通信基础 7 —— 遍历保密速率、谱分解物理意义
  17. pug 编译html,pug之HTML模板引擎安装编译教程
  18. VMware SDS之十: VMware SPBM之SolidFire篇
  19. Android UI基础 仿闲鱼发布页
  20. 计算机应用专业书本推荐,计算机应用基础

热门文章

  1. 有监督学习和无监督学习的区别
  2. 转:你提问的方式,影响你的一生
  3. 电脑为什么自动重启或者电脑自动关机是什么原因?
  4. 海康nvr 使用28181协议配置说明
  5. 基于Java语言的Android实现手机计算器
  6. Weka----怀卡托智能分析环境(Waikato Environment for Knowledge Analysis)
  7. java压缩图片内存大小,但不改变分辨率大小,第一种方式
  8. linux中运行c找不到conio.h,linux中无 conio.h的解决办法
  9. 南开大学计算机学院 肖嘉文,南开大学计算机学院导师教师师资介绍简介-张志刚...
  10. 怎么用python爬取老师_requests简单爬取佩奇老师Python目录下的文章内容