c# 微信开发(五)接收和回复用户发来的消息
写在前面:关注最下方公众号“Dotnet专栏”回复“微信开发”免费获取源码。
开发过程中有啥需要我帮助的,就加我微信交流哦。
链接: 微信官方文档.
步骤
- 第一步:接收解析用户发来的消息
- 第二步:对不同类型的用户消息回复不同消息
第一步:接收解析用户发来的消息
(一):后台写一个验证方法Valid用来接收用户消息,用户一旦发消息就跳到这个方法,这个函数不能随便写,是得和我们公众号 **接口配置信息 **填的方法名一样的,然后我们定义成post请求,这样用户在公众号后台发消息就自动带着用户的消息内容post到了这个方法
/// <summary>
/// 相应请求消息
/// </summary>
/// <returns></returns>
[HttpPost]
public ActionResult Valid()
{
System.IO.Stream s = System.Web.HttpContext.Current.Request.InputStream;
byte[] b = new byte[s.Length];
s.Read(b, 0, (int)s.Length);
string postStr = Encoding.UTF8.GetString(b);
var result = WeixinMsgHelper.ResponseMsg(postStr);
return Content(result, "text/xml", Encoding.UTF8);
}
(二)好了,成功接收到消息后我们就来对消息解析。用户发的消息微信都是封装成xml文件来post到Valid,所以我们得对xml文件解析,文本post过来的是这样的。那我们就解析用一个模型来接住这些信息就好,具体看代码就知道了哈。然后根据xml中的MsgType来判断这个消息是什么类型,现在举例的是文本text,然后图片是image,语音是voice,视频是vedio等等,这些都是微信封装固定的啦,我等只能照着写模型来接。
对不同类型的用户消息回复不同消息
上面我们就成功得到了用户发来的消息和解析成功了,这一步我们就对不同类型消息回复不同消息,我们写一个switch case
回复文本:
回复图片:
回复图片、视频、语音等比文本复杂的多,我们需要上传图片、语音或者视频的临时素材或者永久素材到微信服务器,其中临时的素材可以在服务器保留3天而永久的素材则是直接保存在公众号的素材管理中。这里提一下,上传临时素材最好是写个工具来上传,我这里就是为了比较全的展示所以就直接在程序中上传临时素材。好了,我们来实现后台回复图片消息。
上面我们回复的字段,其中MediaId是我们上传素材到服务器后返回的这个素材ID,然后我们把这个ID带进去就可以了,现在来讲如何获取MediaId。上传图片素材需要的变量有
1、access_token
2、URL(图片路径,图片格式要严格参照微信官方,大小不超过2M,可以为png、jpg、jpeg格式)
3、type
官方接口为
url=https://api.weixin.qq.com/cgi-bin/media/upload?access_token={AccessTokendModel.access_token}&type=image
然后我们结合这个接口和图片路径URL进行一个Http请求,然后返回来的json我们用模型来接,好,返回的数据其中media_id这个就是我们需要的,然后把这个media_id带到回复xml中就可以了哦,具体如何请求看代码哈。
回复图文:
图文回复就也比较简单,就按着这种格式然后写入两个URL就可以,一个PicUrl是图文的图片,Url则是这个图文点击后调至的路径
好了,今天就写到这了,喜欢文章记得点在看哈。附上效果图
关注我们,获取更多Dotnet开发资源
上一篇: 如何让多线程同一时刻并发执行
下一篇: C#键盘消息