全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
号码隐私保护

回执消息-队列方式

更新时间:2018-05-08 10:20:03

简介

当您使用隐私号码服务绑定一组AXB(或者AXN、以下统一以AXB为代表说明)隐私关系后,可以通过使用MNS的Queue模型来接收话单回执消息,话单回执消息时记录了AXB三元组发生的所有的通话记录行为。

消息的订阅

云通信的所有业务消息都用过MNS消息服务向外发送。用户每订阅一个类别的消息(比如隐私号码话单回执消息(SecretReport),系统都会为用户分配一个独立的消息队列。用户可以通过阿里云账号拿到一个临时的token用于获取队列中的消息。用户可以下载demo,编写简单的消息处理类即可完成消息处理的任务。在页面上订阅消息,订阅完消息后,能拿到消息队列名称(queueName)。比如:Alicom-Queue-xxxxxx-SecretReport 。队列名字每个用户都不同。

消息类型

通话记录回执消息SecretReport

入参列表
名称 类型 描述 示例 是否必须
pool_key String 对应的号池Key FC1234567 必须
sub_id Number 通话对应的三元组的绑定关系ID 123456 必须
call_id String 唯一标识一通通话记录的ID abcdef1234 必须
phone_no String AXB中的A号码 15000000000 必须
secret_no String AXB中的X号码 1700000000 必须
peer_no String AXB中的B号码或者N号码 1580000000 必须
call_type Number 呼叫类型 0:主叫(phone_no打给peer_no);1:被叫(peer_no打给phone_no);2:短信发送;3:短信接收 必须
call_time Date 呼叫动作开始时间 “2017-09-01 12:00:00” 必须
ring_time Date 对端手机振铃时间 “2017-09-01 12:01:00” 必须
start_time Date 对端接听时间 “2017-09-01 12:01:00” 必须
release_time Date 对端挂断时间,release_time - start_time 代表通话时长 如果结果为0,代表呼叫未接通 “2017-09-01 12:02:00” 必须
release_dir Number 通话释放方向 0 ,1 ,2 ,3 必须
release_cause Number 释放原因
1:未分配的号码
2:无路由到指定的转接网
3:无路由到目的地
4:发送专用信息音
16:正常的呼叫拆线
17:用户忙
18:用户未响应
19:用户未应答
20:用户缺席
21:呼叫拒收
22:号码改变
27:目的地不可达
28:无效的号码格式(地址不全)
29:性能拒绝
31:正常—未指定
34: 无电路/通路可用
42: 交换设备拥塞
50:所请求的性能未预定
53:CUG中限制去呼叫
55: CUG中限制来呼叫
57:承载能力无权
58:承载能力目前不可用
65:承载能力未实现
69:所请求的性能未实现
87:被叫用户不是CUG的成员
88:不兼容的目的地
90:不存在的CUG
91:无效的转接网选择
95:无效的消息,未指定
97:消息类型不存在或未实现
99:参数不存在或未实现
102:定时器终了时恢复
103:参数不存在或未实现—传递
110:消息带有未被识别的参数—舍弃
111:协议错误,未指定
127:互通,未指定
1 可选

消息类型

短信托管报告消息SecretSmsIntercept

入参列表
名称 类型 描述 示例 是否必须
id Number 唯一标识一条短信记录的ID 123456 必须
pool_key String 对应的号池Key FC1234567 必须
sub_id Number 短信对应的三元组的绑定关系ID 123456 必须
send_no String AXB中的A号码 15000000000 必须
secret_no String AXB中的X号码 1700000000 必须
receive_no String AXB中的B号码 1800000000 必须
sms_content String 短信内容 hello world 必须
partner_key String AXB归属合作伙伴KEY 123456 必须
start_time Date 短信发送时间 “2018-01-05 12:01:00” 必须
out_id String 外部业务ID 123456 必须
sms_type Number 短信类型 1:上行 2:下行 必须

消息类型

录音完成事件消息SecretRecording (代表录音已经完成,可以进行下载)

入参列表
名称 类型 描述 示例 是否必须
pool_key String 对应的号池Key FC123456 必须
subs_id Number 对应的三元组的绑定关系ID 123456 必须
call_id String 对应的呼叫记录的call_id ACV-FSAC-DSA 必须
call_time Date 呼叫时间 2018-01-01 11:00:00 必须

技术对接步骤

下载消息SDK

下载对应语音的消息DEMO工程,工程所需要的所有依赖jar包都放在DEMO工程的lib目录下,将对于的jar包引入到您的工程当中既可按照DEMO样例编写接收消息的程序。

SDK&DEMO【下载地址】

样例
  1. /**
  2. * 只能用于接收云通信的消息,不能用于接收其他业务的消息
  3. */
  4. public class ReceiveAlicomMsgDemo {
  5. private static Log logger=LogFactory.getLog(ReceiveAlicomMsgDemo.class);
  6. static class MyMessageListener implements MessageListener{
  7. private Gson gson=new Gson();
  8. @Override
  9. public boolean dealMessage(Message message) {
  10. System.out.println("message handle: " + message.getReceiptHandle());
  11. System.out.println("message body: " + message.getMessageBodyAsString());
  12. System.out.println("message id: " + message.getMessageId());
  13. System.out.println("message dequeue count:" + message.getDequeueCount());
  14. try{
  15. Map<String,Object> contentMap=gson.fromJson(message.getMessageBodyAsString(), HashMap.class);
  16. String callId=(String)contentMap.get("call_id");
  17. String phoneNo=(String)contentMap.get("phone_no");
  18. String secretNo=(String)contentMap.get("secret_no");
  19. //TODO 这里开始写业务代码
  20. }catch(com.google.gson.JsonSyntaxException e){
  21. logger.error("error_json_format:"+message.getMessageBodyAsString(),e);
  22. }
  23. Boolean dealResult=true;
  24. return dealResult;//返回true,则工具类自动删除已拉取的消息。
  25. }
  26. }
  27. public static void main(String[] args) throws com.aliyuncs.exceptions.ClientException, ParseException {
  28. DefaultAlicomMessagePuller puller=new DefaultAlicomMessagePuller();
  29. String accessKeyId="yourAccessKeyId";
  30. String accessKeySecret="yourAccessKeySecret";
  31. //此处替换成您所需的消息类型名称
  32. String messageType="SecretReport";
  33. String queueName="Alicom-queue-xxxxxx-SecretReport";//在云通信页面开通相应业务消息后,就能在页面上获得对应的queueName
  34. puller.startReceiveMsg(accessKeyId,accessKeySecret ,messageType,queueName , new MyMessageListener());
  35. }
  36. }
本文导读目录