华为隐私保护通话接入总结

1 概述

1.1 背景

挪车服务中,使用虚拟号码保护车主手机号码隐私信息;实现用户B在需要挪车时,使用微信小程序扫码从SAAS服务中获取到一虚拟号码,可通过拨打该虚拟号码接通至车主的真实号码中。实现双方的隐私通话。

2 华为隐私号码服务

2.1 概述

华为隐私号码服务,分为 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号码可以被回收,供其他号码绑定。

2.2 账号及地址

华为隐号服务地址:https://console.huaweicloud.com/privatenumber/?region=cn-north-1#/management/overview
账号:***
密码:***

2.3 对接流程

华为隐私保护通话接入总结_第1张图片

2.4 开发准备

华为隐私保护通话接入总结_第2张图片

2.5 请求头参数

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’

2.6 对接接口

所有接口地址:https://support.huaweicloud.com/api-PrivateNumber/privatenumber_02_0010.html
开发中使用的接口有:
● 绑定接口
● 解绑接口
● 绑定查询接口
● 呼叫事件通知回调
● 话单通知回调
● 终止呼叫接口

3 开发设计

3.1 官方流程图

华为隐私保护通话接入总结_第3张图片

3.2 对接泳道图

华为隐私保护通话接入总结_第4张图片

3.3 数据库设计

3.3.1 虚拟号码管理表

说明:用于管理订购的虚拟号码状态与绑定信息;
华为隐私保护通话接入总结_第5张图片

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;

3.3.2 虚拟号码使用日志表

说明:用于记录调用绑定虚拟号码的日志记录;包括成功及失败原因,可根据该表日志统计是否需要新增订购虚拟号码数量;
华为隐私保护通话接入总结_第6张图片

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;

你可能感兴趣的:(综合)