当您使用语音服务的API接口发送外呼后,可以通过MNS消息队列消费模式来接收语音服务的回执消息。

回执消息模式和配置流程,请参见回执消息简介与配置流程

消息类型

融合通信提供的消息类型为呼叫录音消息(VoiceRecordReport)

示例代码

/**
 * 只能用于接收云通信的消息,不能用于接收其他业务的消息
 */
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 callId=(String)contentMap.get("call_id");
                String startTime=(String)contentMap.get("start_time");
                String endTime=(String)contentMap.get("end_time");
                String duration=(String)contentMap.get("duration");
                String statusCode=(String)contentMap.get("status_code");
                String statusMsg=(String)contentMap.get("status_msg");
                String outId=(String)contentMap.get("out_id");
                String dtmf=(String)contentMap.get("dtmf");
                //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="VoiceReport"; //注意替换成你自己需要获取的消息的类型
        String queueName="yourQueueName";//在云通信页面开通相应业务消息后,就能在页面上获得对应的queueName
        puller.startReceiveMsg(accessKeyId,accessKeySecret ,messageType,queueName, new MyMessageListener());
    }
}