公众号接收语音消息

1. 消息识别

  • MsgType="voice",代表本次推送是语音消息
  • 和图片消息结构很像,核心两个XML节点:
  1. MediaId:语音媒体ID,调用微信多媒体下载接口,拉取语音原始文件
  2. Format:语音编码格式,常见 amr / speex

语音消息XML没有Content文本节点;如果需要语音转文字,公众号接口还提供 Recognition 节点(需开通语音识别能力)。

2. C# 代码示例

case "voice":
    VoiceHandle(xmldoc);
    break;

private void VoiceHandle(XmlDocument xmldoc)
{
    // 获取媒体ID
    XmlNode MediaId = xmldoc.SelectSingleNode("/xml/MediaId");
    // 获取语音格式
    XmlNode Format = xmldoc.SelectSingleNode("/xml/Format");
    
    string mediaIdStr = MediaId.InnerText;
    string voiceFormat = Format.InnerText;
    
    // 可在这里调用微信接口,下载语音文件
}
Code language: JavaScript (javascript)

3. 三种消息对比汇总

消息类型MsgType核心XML节点
文本消息textContent
图片消息imagePicUrl、MediaId
语音消息voiceMediaId、Format

4. 要点

  1. 语音文件有有效期,必须通过MediaId下载保存,不能长期依赖临时资源。
  2. amr/speex格式属于小众音频格式,网页端无法直接播放,一般需要转码成mp3。
  3. Recognition 节点:开启语音识别后,微信会自动把语音转成文字放到这个节点,不用自己做ASR。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注