不想听我扯皮的,直接看官方:
微信官方的文档 :
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453

开发前说明:
我们需要用到 StreamReader

所以需要引用:using System.IO;

如果我们发现,我们的用户,发送语音消息到公众号。我们就针对语音消息进行处理。

首先我们看看官方文档。

<xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[fromUser] ]></FromUserName><CreateTime>1357290913</CreateTime><MsgType>< ![CDATA[voice] ]></MsgType><MediaId>< ![CDATA[media_id] ]></MediaId><Format>< ![CDATA[Format] ]></Format><MsgId>1234567890123456</MsgId></xml>
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType 语音为voice
MediaId 语音消息媒体id,可以调用多媒体文件下载接口拉取数据。
Format 语音格式,如amr,speex等
MsgID 消息id,64位整型

现在正式讲开发

上面讲了一些微信给我们的规则

我们现在要用这些规则获取我们想要的东西。

第一步:获取那串 XML 这个是最重要的,因为没这个XML,我们就相当于啥都没有。(我们的信息来源就是这个XML)

这里我使用 StreamReader 来获取 Request.Body

因为XML主要是 Request.Body 里面的

//声明一个XML方便调用
string xml="";
//获取我们的流
var reader = new StreamReader(Request.Body);
//把流里面的读取出来,就是我们这串XML了。
var contentFromBody = reader.ReadToEnd();
//再保存进我们的这个字符串里,方便后期使用
xml = contentFromBody;

我们读取XML中的信息,并将其转成我们的微信信息对象。

这里呢。我借用了一位大佬的代码:

专门处理微信消息的几个类

第一个类:
MessageFromWeiXin:

第二个类:

ResponseClient:

这两个类,我就不放出来了。大家可以去上几篇文章看看,如果不想翻文章,请留下邮箱,或者直接联系我

有了这两个类,我们的东西就好开展了,如果大家有发现报错的话,是因为string扩展类的问题。需要的留下邮箱,这个东西太长了。不好发,不过大家应该都看的懂,自己写一套也好。

使用上面第二个类中的,这个方法,进行转换 : XmlToMessageFromWeiXin

得到我们 msg 对象

我们这个对象里面有msgtype,这个type枚举呢,就对应了各个事件。

我们写个switch就能将他们分开了。不同事件进入不同分支处理。

/// <summary>
///     接收来自微信的消息
/// </summary>
[HttpPost]
[Route("api/WeChat")]
public string Post(string xml)
{System.Console.WriteLine("进入消息处理");var reader = new StreamReader(Request.Body);var contentFromBody = reader.ReadToEnd();System.Console.WriteLine($"xml:{contentFromBody}");xml = contentFromBody;try{var msg = ResponseClient.XmlToMessageFromWeiXin(xml);var Response = "";switch (msg.MsgType){case MessageFromWeiXinType.voice:var voiceMsg = (VoiceMessageFromWeiXin)msg;//如果有开通语音识别的功能,我们可以使用这个字段:RecognitionSystem.Console.WriteLine($"音频转文字:{voiceMsg.Recognition}");//我们下载这串语音的话就要使用这个字段:MediaId,根据这个字段加上微信提供的多媒体下载接口 ,下载 我们的音频文件。记得及时下载哟System.Console.WriteLine($"音频下载地址:{voiceMsg.MediaId}");Response = "<xml> <ToUserName><![CDATA[" + voiceMsg.FromUserName +"]]></ToUserName> <FromUserName><![CDATA[" + voiceMsg.ToUserName +"]]></FromUserName> <CreateTime>" +ResponseClient.ConvertDateTimeToInt(DateTime.Now) +"</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[您发了一串 语音,小女子已经帮您保存起来了]]></Content> </xml>";break;}return Response;// return "success";}catch (Exception ex){return "error";}
}

接收语音识别接口。

下面是下载多媒体的调试工具。我们参考他们这个做一个下载给自己就行了。

关于大家还有些使用问题,有不懂的或需要代码的,留下邮箱

欢迎进qq群交流:704028989

微信公众号简单开发(7)语音消息相关推荐

  1. 微信公众号简单开发(4)普通消息

    我们在接收微信普通消息的时候呀,我们会发现我们有很多种普通消息. 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id= ...

  2. 微信公众号java开发:验证消息的确来自微信服务器

    微信公众号开发,微信服务需要认证服务,官方文档如下: 引入jar包如下: <dependency><groupId>com.github.binarywang</grou ...

  3. 微信公众号简单开发(1)介绍流程

    上一篇文章我们介绍了微信公众号开发需要用到一些id和密码之类的 如果还不清楚我们可以看看这篇文章 点我 : https://mp.weixin.qq.com/wiki?t=resource/res_m ...

  4. 微信公众号简单开发(6)图片消息

    不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...

  5. 微信公众号简单开发(9)地理位置消息

    不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...

  6. 微信公众号简单开发(5)文本消息

    不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...

  7. 微信公众号简单开发(10)链接消息

    不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...

  8. 微信公众号简单开发(11)综合案例

    不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...

  9. 微信公众号简单开发(8)视频消息 和 小视频消息

    不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...

最新文章

  1. 360金融携手上海交大共建AI实验室,开启人才战略新布局
  2. 今晚8点直播 | 深入浅出理解A3C强化学习
  3. PHP框架 one 1.6.0 发布
  4. error C2440 “static_cast” 无法从“void (__thiscall CPppView )(void)”转换为“LRESULT (__thiscall
  5. idea工具debug断点红色变成灰色
  6. 解决ubuntu首次安装Mysql之后,首次登录出现ERROR 1698 (28000): Access denied for user 'root'@'localhost'的方法
  7. 如何优雅的理解ECMAScript中的对象
  8. 人工智能将助力智能家居产业发展
  9. Windows7和Ubuntu9.10完美硬盘安装(2)
  10. Iphone革了谁的命?
  11. activiti历史数据的查看
  12. Bzoj4480: [Jsoi2013]快乐的jyy 广义后缀自动机 倍增 哈希 manacher
  13. SQLServer启动和关闭bat脚本
  14. 第七届蓝桥杯省赛--方格填数--DFS或全排列
  15. 欧姆龙CP/CJ系列PLC包含哪些通讯方式呢?
  16. 文曲星猜数字游戏java代码_Python版的文曲星猜数字游戏代码
  17. led背光源工作的条件及结构
  18. adobe framemaker 资料
  19. android-sdk-windows版本下载
  20. 这个“安装macOS High sierra”应用程序副本已损坏,不能用来安装macOS

热门文章

  1. discuz admin.php,Discuz!X系列论坛针对后台登陆admin.php 文件安全加固,防止恶意访问...
  2. 《matlab》Matlab程序设计
  3. 互联网摸鱼日报(2022-11-12)
  4. Ecos操作系統查看进程信息
  5. java读写德卡数据_Spark Streaming 读取Kafka数据写入ES
  6. 【RAC】Oracle集群心跳及其参数misscount/disktimeout/reboottime
  7. 奶粉php和opo区别,都说OPO奶粉效果好 到底什么是OPO呢?
  8. 调节e18-d80nk的测量距离_经纬仪施工测量详细使用教程,比课本还具体!比老师教的还详细...
  9. linux系统提示faralerror,Linux系统报错Fatal error, run database recovery如何解决
  10. python稳健回归_Python-statsmodel稳健线性回归(RLM)异常值选择