当您使用融合通信服务时,可以通过使用MNS的Queue模型来接收通话的回执消息。

消息的订阅

云通信的所有业务消息都会通过MNS消息服务向外发送。目前融合通信服务支持的消息类型有:

  • ArtcCdrReport:呼叫话单消息。
注意 以上消息类型需要消息队列名称,获取名称请联系您的客户经理。

请按照以下步骤完成消息接收:

  1. 替换您自己的AK与SK。
  2. 设置相应的消息类型与消息队列名称。
  3. 启动应用开始接收消息。
说明 不同类型的消息返回的消息体内包含的字段是不一样的,您需要依据订阅的消息类型做适当修改。

消息类型

呼叫话单消息

消息类型为: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());
    }
}