微信公众号简单开发(8)视频消息 和 小视频消息
不想听我扯皮的,直接看官方:
微信官方的文档 :
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[video] ]></MsgType><MediaId>< ![CDATA[media_id] ]></MediaId><ThumbMediaId>< ![CDATA[thumb_media_id] ]></ThumbMediaId><MsgId>1234567890123456</MsgId></xml>
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | 视频为video |
MediaId | 视频消息媒体id,可以调用多媒体文件下载接口拉取数据。 |
ThumbMediaId | 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。 |
MsgId | 消息id,64位整型 |
小视频消息:
<xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[fromUser] ]></FromUserName><CreateTime>1357290913</CreateTime><MsgType>< ![CDATA[shortvideo] ]></MsgType><MediaId>< ![CDATA[media_id] ]></MediaId><ThumbMediaId>< ![CDATA[thumb_media_id] ]></ThumbMediaId><MsgId>1234567890123456</MsgId></xml>
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | 小视频为shortvideo |
MediaId | 视频消息媒体id,可以调用多媒体文件下载接口拉取数据。 |
ThumbMediaId | 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。 |
MsgId | 消息id,64位整型 |
差异性
通过上面的对比,我们发现他们差异性其实是在一个字段,msgtype,(视频是:video,小视频:shortvideo)
其他都一样,我们通过一个id(MediaId),再使用微信官方提供的一个接口来下载我们的视频信息
现在正式讲开发
上面讲了一些微信给我们的规则
我们现在要用这些规则获取我们想要的东西。
第一步:获取那串 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.shortvideo:var shortvideo = (ShortVideoMessageFromWeiXin)msg;//我们下载这串语音的话就要使用这个字段:MediaId,根据这个字段加上微信提供的多媒体下载接口 ,下载 我们的视频文件。记得及时下载哟System.Console.WriteLine($"小视频下载地址:{shortvideo.MediaId}");Response = "<xml> <ToUserName><![CDATA[" + shortvideo.FromUserName +"]]></ToUserName> <FromUserName><![CDATA[" + shortvideo.ToUserName +"]]></FromUserName> <CreateTime>" +ResponseClient.ConvertDateTimeToInt(DateTime.Now) +"</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[您发了一个小视频,小女子已经帮您保存起了]]></Content> </xml>";break;case MessageFromWeiXinType.video:var video = (VideoMessageFromWeiXin)msg;//我们下载这串语音的话就要使用这个字段:MediaId,根据这个字段加上微信提供的多媒体下载接口 ,下载 我们的视频文件。记得及时下载哟System.Console.WriteLine($"视频下载地址:{video.MediaId}");Response = "<xml> <ToUserName><![CDATA[" + video.FromUserName +"]]></ToUserName> <FromUserName><![CDATA[" + video.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
微信公众号简单开发(8)视频消息 和 小视频消息相关推荐
- 微信公众号简单开发(1)介绍流程
上一篇文章我们介绍了微信公众号开发需要用到一些id和密码之类的 如果还不清楚我们可以看看这篇文章 点我 : https://mp.weixin.qq.com/wiki?t=resource/res_m ...
- 微信公众号简单开发(6)图片消息
不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...
- 微信公众号简单开发(11)综合案例
不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...
- 微信公众号简单开发(5)文本消息
不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...
- 微信公众号简单开发(10)链接消息
不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...
- 微信公众号简单开发(7)语音消息
不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...
- 微信公众号简单开发(9)地理位置消息
不想听我扯皮的,直接看官方: 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 开发前说明 ...
- 微信公众号简单开发(4)普通消息
我们在接收微信普通消息的时候呀,我们会发现我们有很多种普通消息. 微信官方的文档 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id= ...
- 微信公众号简单开发(2)验证服务器地址
两个步骤: 微信原文: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319 第一步:填写服务器配置 登录微信公众 ...
最新文章
- 数据科学家最常用的十种算法
- (*长期更新)软考网络工程师学习笔记——Section 15 无线网络技术
- SQLSERVER和ORACLE批量处理表名和字段名大写
- [C++STL]常用算术生成算法
- REVERSE-PRACTICE-BUUCTF-14
- 知识图谱常用指标:MRR、Hits@1、Hits@10、MR
- Nacod服务注册与发现(AP架构)、心跳检查机制
- Kali Linux 无线渗透测试入门指南 第六章 攻击客户端
- hadoop-0.20.2完全分布式集群
- 一线互联网常见的14个Java面试题,你颤抖了吗程序员...
- 【转】解决Windows Media Player媒体库无法添加文件
- asp.net在发送邮件时出现服务器响应为: You are not authorized to send mail, authentication is required 解决方案...
- java一行输入多个数据类型_Java中的3种输入方式实现解析
- 二阶系统的性能分析(开环相幅和阶跃响应)——自动控制原理基础补充(三)
- Mrbayes使用形态学数据构建系统发育树
- 海康威视算法实习面试——我的第一次面试经历
- EMW3162 AT固件的使用【1】
- java ee jpi是什么,JPI 150、300、600RF、RJ什么意思
- c语言printf格式限定符,c – 1字节有符号数的printf格式
- 计算机直接切换到桌面,屏幕如何快速切换桌面
热门文章
- [C/C++]_[初级]_[标准库之几种算法库函数的运用,如字符串查找(字符个数查找)、分隔、删除、替换、排序、字符交换位置、大小写转换等等]
- kindel读书笔记——2017.03.22-04.21
- 给braft-editor加字体样式
- 塞尔曲线德卡斯特里奥(de Casteljau)算法及程序
- js心跳间隔怎么确定_神经网络分析时间序列:心跳间隔序列预测
- android语音导游开发,美景听听语音导游
- 用LR给人物照片调出正宗的复古范儿
- android 和 iphone x,iPhone X和安卓对比有哪些优势 iPhonex跑分评测分析
- sql 设置主键 联合主键
- 360工业互联网安全研究院入选2021年度AloT“独角兽”创新企业奖