挪车服务中,使用虚拟号码保护车主手机号码隐私信息;实现用户B在需要挪车时,使用微信小程序扫码从SAAS服务中获取到一虚拟号码,可通过拨打该虚拟号码接通至车主的真实号码中。实现双方的隐私通话。
华为隐私号码服务,分为 AXB、AX、X、AXE、AXYB等5种模式,区别请参考华为开放文档:https://support.huaweicloud.com/productdesc-PrivateNumber/privatenumber_04_0002.html
本次开发采用AX模式:
隐私保护通话AX模式中,A为业务受益用户,为了保护A的真实号码不被泄露,在隐私保护通话平台为A绑定一个虚拟号码X。
● 绑定关系建立后:所有人均可拨打X联系A,保护A的真实号码不被泄露。
○ 用户A呼叫其他用户时,企业需要通过API(AX模式设置临时被叫接口)指定呼叫对象(如B),然后A拨打X号码呼叫B。
● AX模式下的X号码只专属于A号码,即一个虚拟号码X同时只能绑定一个A号码。但1个A号码可以同时绑定5个X号码。
● 当X号码和A号码解除绑定关系后,该X号码可以被回收,供其他号码绑定。
华为隐号服务地址:https://console.huaweicloud.com/privatenumber/?region=cn-north-1#/management/overview
账号:***
密码:***
● Content-Type:固定填写为application/json;charset=UTF-8。
● Authorization:固定填写为WSSE realm=“SDP”,profile=“UsernameToken”,type=“Appkey”。
● X-WSSE:取值为UsernameToken Username=“APP_Key的值”, PasswordDigest=“PasswordDigest的值”, Nonce=“随机数”, Created=“随机数生成时间”。
● PasswordDigest:根据PasswordDigest = Base64 (SHA256 (Nonce + Created + Password))生成。其中,Password为APP_Secret的值。Nonce、Created、Password直接进行字符串拼接即可,无需包含+号和空格。
● Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。
● Created:随机数生成时间。采用标准UTC格式,例如:2018-02-12T15:30:20Z。不同编程语言中将UTC时间戳转换为普通时间时使用的格式不同;Java:yyyy-MM-dd’T’HH:mm:ss’Z’
所有接口地址:https://support.huaweicloud.com/api-PrivateNumber/privatenumber_02_0010.html
开发中使用的接口有:
● 绑定接口
● 解绑接口
● 绑定查询接口
● 呼叫事件通知回调
● 话单通知回调
● 终止呼叫接口
CREATE TABLE `virtual_number` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`virtual_num` varchar(20) NOT NULL COMMENT '虚拟号码',
`true_num` varchar(20) DEFAULT NULL COMMENT '真实号码',
`subscription_id` varchar(255) DEFAULT NULL COMMENT '华为绑定id',
`status` bit(1) NOT NULL DEFAULT b'0' COMMENT '状态 0空闲 1使用中',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `virtual_number_unique` (`virtual_num`),
UNIQUE KEY `true_number_unique` (`true_num`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
说明:用于记录调用绑定虚拟号码的日志记录;包括成功及失败原因,可根据该表日志统计是否需要新增订购虚拟号码数量;
CREATE TABLE `ax_service_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`virtual_num` varchar(20) DEFAULT NULL COMMENT '虚拟号码',
`true_num` varchar(20) NOT NULL COMMENT '真实号码',
`subscription_id` varchar(255) DEFAULT NULL COMMENT '绑定Id',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注',
`status` bit(1) NOT NULL DEFAULT b'1' COMMENT '状态: 0失败 1成功',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;