全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 阿里云办公 培训与认证 物联网

语音回执消息---JAVA

更新时间:2017-06-19 11:09:25

简介

当您使用语音的API接口发送外呼后,可以通过使用MNS的Queue模型来接收语音的回执消息。

消息的订阅

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

消息类型

语音提供一种消息类型,呼叫记录消息(VoiceReport)

语音呼叫记录消息VoiceReport消息体格式
名称 类型 描述 示例
call_id String 呼叫ID 100001616500^100001871490
start_time String 通话开始时间,未接通则为空 2017-06-01 10:00:00
end_time String 通话结束时间,未接通则为空 2017-06-01 10:00:00
duration String 通话时长,未接通为0 10
status_code String 呼叫结果状态码 200010
status_msg String 结果描述 执行完成
out_id String 扩展字段回传,将调用api时传入的字段返回 123456
dtmf String DTMF按键 123456

技术对接步骤

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