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

流量回执消息

更新时间:2017-07-17 16:39:30

简介

当您使用流量的API接口充值完流量后,可以通过使用MNS的Queue模型来接收充值的回执消息,假如服务出现异常情况时(如网络问题),导致消息回执未成功获取,还可以通过充值状态查询API接口进行一定的补偿(目前支持30天内发送记录的查询)。

消息的订阅

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

消息类型

流量提供一种消息类型,流量充值回执消息FlowReport

流量充值回执消息FlowReport消息体格式
名称 类型 描述 示例 是否必须
phone String 充值的手机号 13000000000 必须
out_id String 外部扩展ID,在充值接口调用时指定 123 必须
result String 充值结果 3-充值成功,4-充值失败 必须
err_code String 错误码 UNKNOW 可选
err_msg String 错误信息描述 未知错误 可选

技术对接步骤

下载消息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 phone=(String)contentMap.get("phone");
  17. Boolean outId=(Boolean)contentMap.get("out_id");
  18. String result=(String)contentMap.get("result");
  19. String errCode=(String)contentMap.get("err_code");
  20. String errMsg=(String)contentMap.get("err_msg");
  21. //TODO 这里开始写业务代码
  22. }catch(com.google.gson.JsonSyntaxException e){
  23. logger.error("error_json_format:"+message.getMessageBodyAsString(),e);
  24. }
  25. Boolean dealResult=true;
  26. return dealResult;//返回true,则工具类自动删除已拉取的消息。
  27. }
  28. }
  29. public static void main(String[] args) throws com.aliyuncs.exceptions.ClientException, ParseException {
  30. DefaultAlicomMessagePuller puller=new DefaultAlicomMessagePuller();
  31. String accessKeyId="yourAccessKeyId";
  32. String accessKeySecret="yourAccessKeySecret";
  33. String messageType="FlowReport";
  34. String queueName="yourQueueName";//在云通信页面开通相应业务消息后,就能在页面上获得对应的queueName
  35. puller.startReceiveMsg(accessKeyId,accessKeySecret ,messageType,queueName , new MyMessageListener());
  36. }
  37. }
本文导读目录