当您使用融合通信服务时,可以通过使用MNS的Queue模型来接收通话的回执消息。
消息的订阅
云通信的所有业务消息都会通过MNS消息服务向外发送。目前融合通信服务支持的消息类型有:
- ArtcCdrReport:呼叫话单消息。
注意 以上消息类型需要消息队列名称,获取名称请联系您的客户经理。
请按照以下步骤完成消息接收:
- 替换您自己的AK与SK。
- 设置相应的消息类型与消息队列名称。
- 启动应用开始接收消息。
说明 不同类型的消息返回的消息体内包含的字段是不一样的,您需要依据订阅的消息类型做适当修改。
消息类型
呼叫话单消息
消息类型为:ArtcCdrReport,您可以通过订阅这个消息获取呼叫的话单信息,包括通话时长,通话发起时间,结束时间等。
点对点消息体格式
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
channelId | String | amdc7a6a9ds90sad0a | 一次通话过程唯一Id |
startTime | String | 2017-06-01 10:00:00 | 通话开始时间,未接通则为空 |
endTime | String | 2017-06-01 10:00:00 | 通话结束时间,未接通则为空 |
duration | String | 10 | 通话时长,未接通为0 |
caller | String | 20000000000000001 | 主叫用户ID |
callee | String | 20000000000000001 | 被叫用户ID |
alicomRtcType | String | voip2voip | 通话类型,当前类型有:voip2voip,video2video等 |
extend | String | 123456 | 扩展字段 |
集成步骤
下载消息SDK
下载融合通信对应的消息DEMO工程,工程所依赖的jar包都放在lib目录下,将对应的jar包引入到您的工程中即可编写接收消息的程序。
SDK&DEMO[下载地址。
/**
* 只能用于接收云通信的消息,不能用于接收其他业务的消息
*/
public class ReceiveAlicomMsgDemo {
private static Log logger=LogFactory.getLog(ReceiveAlicomMsgDemo.class);
static class MyMessageListener implements MessageListener{
private Gson gson=new Gson();
@Override
public boolean dealMessage(Message message) {
System.out.println("message handle: " + message.getReceiptHandle());
System.out.println("message body: " + message.getMessageBodyAsString());
System.out.println("message id: " + message.getMessageId());
System.out.println("message dequeue count:" + message.getDequeueCount());
try{
Map<String,Object> contentMap=gson.fromJson(message.getMessageBodyAsString(), HashMap.class);
//依据自己的消息类型,获取对应的字段
String uuid=(String)contentMap.get("uuid");
//TODO 这里开始写业务代码
}catch(com.google.gson.JsonSyntaxException e){
logger.error("error_json_format:"+message.getMessageBodyAsString(),e);
}
Boolean dealResult=true;
return dealResult;//返回true,则工具类自动删除已拉取的消息。
}
}
public static void main(String[] args) throws com.aliyuncs.exceptions.ClientException, ParseException {
DefaultAlicomMessagePuller puller=new DefaultAlicomMessagePuller();
String accessKeyId="yourAccessKeyId";
String accessKeySecret="yourAccessKeySecret";
String messageType="ArtcCdrReport"; //注意替换成您需要获取的消息类型
String queueName="yourQueueName";//联系您的客户经理获取queueName
puller.startReceiveMsg(accessKeyId,accessKeySecret ,messageType,queueName, new MyMessageListener());
}
}
在文档使用中是否遇到以下问题
更多建议
匿名提交