本文档介绍阿里云语音服务的回执消息接收机制与配置方法。当您使用语音服务的API接口发送外呼后,可以通过轻量消息队列(原MNS)消费模式或HTTP批量推送模式来接收语音服务的回执消息。
如果出现网络异常、响应超时等情况,可能导致回执消息推送重复。
HTTP批量推送模式的响应超时时间为700 ms。
回执消息不保证幂等性,如果开发者后续处理逻辑需要考虑幂等性,需要根据业务场景做合适的幂等处理。
一、回执消息模式
接收回执消息的模式有轻量消息队列(原MNS)消费模式和HTTP批量推送模式两种,您可根据实际情况选择合适的模式接收回执消息。
1.1 轻量消息队列(原MNS)消费模式
模式概述
轻量消息队列(原MNS)消费模式表示通过轻量消息队列(原 MNS)的队列(Queue)模型来接收回执消息。云通信的所有业务消息都支持轻量消息队列(原 MNS)向外发送。
工作原理
用户在语音服务控制台启用轻量消息队列(原 MNS)订阅指定的消息类型(MessageType)时,系统会自动生成该类型的独立消息队列及名称(QueueName)。
用户可使用此消息队列名称(QueueName)和消息类型(MessageType),通过阿里云AccessKey信息换取临时Token来获取队列中的详细内容。
适用场景
需要可靠的消息接收机制。
需要消息持久化存储。
需要按需拉取消息。
业务量较大,需要消息队列缓冲。
使用SDK拉取MNS消息,详情请参见轻量消息队列(原MNS)消费Demo。
1.2 HTTP批量推送模式
模式概述
HTTP批量推送模式表示通过HTTP POST方式发送消息到指定的Web URL。在语音服务控制台设置HTTP回调URL(callback_url)后,当业务消息产生时,系统会使用HTTP请求以POST方式将业务消息发送到指定的回调URL上,用户可直接接收此消息。
工作原理
在语音服务控制台配置HTTP回调URL。
当业务消息产生时,系统自动通过HTTP POST方式将消息推送到指定URL。
您的服务器接收并处理回执消息。
适用场景
需要实时接收消息。
服务器具备HTTP接收能力。
业务量适中,能够及时处理推送消息。
希望简化消息接收流程。
HTTP批量推送模式的响应超时时间为700 ms。
如果出现网络异常、响应超时等情况,可能导致回执消息推送重复。
在配置HTTP批量推送模式前,请您了解HTTP请求处理方式响应说明及推送机制,详情请参见HTTP批量推送模式。
1.3 模式对比
对比项 | 轻量消息队列(原MNS)消费模式 | HTTP批量推送模式 |
消息接收方式 | 主动拉取(Pull) | 被动推送(Push) |
消息持久化 | 支持,消息存储在队列中 | 不支持,需要自行存储 |
可靠性 | 高,消息不会丢失 | 中等,依赖网络稳定性 |
实时性 | 按需拉取,可控制频率 | 实时推送 |
适用场景 | 大业务量、需要缓冲 | 中小业务量、需要实时处理 |
配置复杂度 | 中等,需要配置队列 | 简单,只需配置URL |
响应超时 | 无限制 | 700 ms |
二、回执消息类型
语音服务提供的回执消息类型(MessageType)如下,您可根据业务需要进行选择。
2.1 消息类型列表
消息类型 | 名称 | 描述 |
VoiceReport | 呼叫记录消息 | 呼叫结束后获取呼叫的记录信息,包括通话类型、通话的开始及结束时间、通话时长、结束原因等 |
VoiceCallReport | 呼叫中间状态消息 | 获取呼叫过程中的通话状态的信息,通常包括开始、振铃、接听、挂断以及状态产生的时间等 |
VoiceRecordReport | 录音记录消息 | 通话结束后获取通话的录音记录 |
2.2 各功能回执消息数据结构
各功能的回执消息数据结构存在字段差异,您可点击以下链接跳转至语音服务各功能的回执消息数据结构描述文档:
三、配置回执消息接收模式
如果需要接收回执消息,必须先在控制台上开启消息接收。以下示例为呼叫记录消息的配置流程。
登录语音服务控制台。
在左侧导航栏,选择。
找到需要订阅的消息类型,开启指定模式
轻量消息队列(原 MNS)消费模式
开启轻量消息队列(原 MNS消息队列)消费模式左侧的功能开关。有关接收回执消息时的注意事项及示例代码,请参见轻量消息队列(原MNS)消费Demo。

HTTP批量推送模式
在配置HTTP批量推送模式前,请您了解HTTP请求处理方式响应说明及推送机制,详情请参见HTTP批量推送模式。
开启HTTP批量推送模式左侧的功能开关。

填写接收地址,并单击保存。
地址示例:http://push.example.com/contextpath/receive.do
单击确定。
设置完后,您可以单击测试,测试已填写的URL是否可以收到测试用的回执信
四、常见问题
语音服务如何将多个IP设置为回调地址?
同一个阿里云账号同一种类型的回执消息只支持配置一个回调地址。如果您有多个IP地址需要接收回执消息,建议您申请多个阿里云账号,配置不同的IP地址。 回执消息配置详情,请参见回执消息简介与配置流程。
语音服务VoiceReport设置回调地址报错?
您需要解析阿里服务器发送的测试内容:{"json":"test-content"},这个测试内容是JSON格式,不是Json Array格式。在设置回调地址进行测试的时候,需要您本地按照JSON格式进行校验;测试完成后,实际接收回执消息的时候,需要按照Json Array格式进行校验。
回执消息是否会重复推送?
是的,回执消息不保证幂等性。如果出现以下情况,可能导致回执消息推送重复:
网络异常。
响应超时(HTTP批量推送模式响应超时时间为700 ms)。
服务器处理异常。
建议:如果开发者后续处理逻辑需要考虑幂等性,需要根据业务场景做合适的幂等处理,例如:
使用消息ID作为唯一标识。
在数据库中记录已处理的消息ID。
使用分布式锁防止重复处理。
如何确保消息不丢失?
建议采用以下策略:
使用轻量消息队列(原MNS)消费模式:消息存储在队列中,不会丢失。
HTTP批量推送模式:
确保服务器稳定运行。
实现消息持久化存储。
及时响应HTTP请求(700 ms内)。
实现重试机制。
HTTP批量推送模式的响应超时时间是多少?
HTTP批量推送模式的响应超时时间为700 ms。如果您的服务器在700 ms内无法响应,可能导致消息推送失败或重复推送。
建议:
优化服务器处理逻辑,提高响应速度。
使用异步处理机制,先快速响应,再异步处理业务逻辑。
考虑使用轻量消息队列(原MNS)消费模式。