微信开发四 接受用户普通消息与回复消息
来源:互联网 发布:淘宝美工怎么做 编辑:程序博客网 时间:2024/06/02 20:53
微信接收用户普通消息可以在官方文档中直接看
微信普通消息分为:
接受用户文本消息 与 回复文本信息
注意在接收用户普通消息的时候,推送的xml格式没有eventKey,event
这个是菜单点击的时候推送的菜单的标识
接收文本消息格式
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>
处理文本消息的类
接收消息
/// <summary> /// 处理用户发送的文本消息方法 /// </summary> public class TextProcess : BaseProcess { public override void Process(XElement xl, HttpRequestBase _request, HttpResponseBase _response) { //取出发送者与接收者账号 string ToUserName = xl.Elements().Where(a => a.Name == "ToUserName").FirstOrDefault().Value; string FromUserName = xl.Elements().Where(a => a.Name == "FromUserName").FirstOrDefault().Value; //取出消息内容 string Content = xl.Elements().Where(a => a.Name == "Content").FirstOrDefault().Value; } }
回复文本消息工具类封装,增加回复文本消息方法
/// <summary> /// 回复文本消息的方法 /// </summary> public void SendTextMesXml(HttpResponseBase Response, ReTextMsgModel _rmg) { string rxmls = string.Format(@"<xml> <ToUserName>{0}</ToUserName> <FromUserName>{1}</FromUserName> <CreateTime>{2}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[{3}]]></Content> </xml> ", _rmg.ToUserName, _rmg.FromUserName , ConvertDateTimeInt(DateTime.Now), _rmg.Content); Response.Write(rxmls); Response.End(); }
在处理类中调用该方法
/// <summary> /// 处理用户发送的文本消息方法 /// </summary> public class TextProcess : BaseProcess { public override void Process(XElement xl, HttpRequestBase _request, HttpResponseBase _response) { //取出发送者与接收者账号 string ToUserName = xl.Elements().Where(a => a.Name == "ToUserName").FirstOrDefault().Value; string FromUserName = xl.Elements().Where(a => a.Name == "FromUserName").FirstOrDefault().Value; //取出消息内容 string Content = xl.Elements().Where(a => a.Name == "Content").FirstOrDefault().Value; //回复的内容 string retmes = ""; if (Content == "1") retmes = "用户输入1"; else if (Content == "2") retmes = "用户输入了2"; else retmes = "随便回复一个^_^"; //组建回复文本信息的类 ReTextMsgModel rsm = new ReTextMsgModel(); rsm.MsgType = "text"; rsm.Content = retmes; rsm.ToUserName = FromUserName; rsm.FromUserName = ToUserName; //调用回复文本信息方法 new SendMesTool().SendTextMesXml(_response, rsm); //记录一个日志 LogTool.AddLog(new MsgLog() { MsgType = "Text", Content = Content }); _response.End(); } }
效果如下
发表情也会认为是一个文本信息!!
接受用户图片消息 与 回复图片信息
接收图片消息看官方文档,格式为
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[image]]></MsgType> <PicUrl><![CDATA[this is a url]]></PicUrl> <MediaId><![CDATA[media_id]]></MediaId> <MsgId>1234567890123456</MsgId> </xml>
其他都一样,主要是两个属性PicUrl和MediaId,一个是图片的url,
一个是对应图片的Id
可以先取出来,记录在日志中查看
/// <summary> /// 处理图片信息的方法 /// </summary> public class ImageProcess : BaseProcess { public override void Process(XElement xl, HttpRequestBase _request, HttpResponseBase _response) { //取出发送者与接收者账号 string ToUserName = xl.Elements().Where(a => a.Name == "ToUserName").FirstOrDefault().Value; string FromUserName = xl.Elements().Where(a => a.Name == "FromUserName").FirstOrDefault().Value; //取出图片连接 string PicUrl = xl.Elements().Where(a => a.Name == "PicUrl").FirstOrDefault().Value; //取出MediaId,图片资源对应的id string MediaId = xl.Elements().Where(a => a.Name == "MediaId").FirstOrDefault().Value; //记录一个日志 LogTool.AddLog(new MsgLog() { MsgType = "Image", Remark = "PicUrl:" + PicUrl, Remark2 = MediaId }); _response.End(); } }
PicUrl就是一个图片链接,可以在浏览器中访问
MediaId是串很长的字符
回复图片信息
先看看文档
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[image]]></MsgType><Image><MediaId><![CDATA[media_id]]></MediaId></Image></xml>
其实其他都一样主要是一个MediaId,如果回复一个和用户一样的图片
就把用户传递的MediaId回传给他就行了,如果要回复其他图片,看文档上解释
需要通过素材接口上传,然后获取一个与之关联的MediaId就可了
编写回复图片信息的model
/// <summary> /// 回复图片信息的model /// </summary> public class ReImageMsgModel { public string ToUserName { get; set; } public string FromUserName { get; set; } public int CreateTime { get; set; } public string MsgType { get; set; } public string MediaId { get; set; } }
在回复信息的工具类中编写回复图片信息的方法
/// <summary> /// 回复图片消息的方法 /// </summary> public void SendImageMesXml(HttpResponseBase Response, ReImageMsgModel _rmg) { string rxmls = string.Format(@"<xml> <ToUserName>{0}</ToUserName> <FromUserName>{1}</FromUserName> <CreateTime>{2}</CreateTime> <MsgType><![CDATA[{3}]]></MsgType> <Image> <MediaId><![CDATA[{4}]]></MediaId> </Image> </xml> ", _rmg.ToUserName, _rmg.FromUserName , ConvertDateTimeInt(DateTime.Now),_rmg.MsgType,_rmg.MediaId); Response.Write(rxmls); Response.End(); }
在图片信息处理类中调用该方法进行回复一个图片信息
/// <summary> /// 处理图片信息的方法 /// </summary> public class ImageProcess : BaseProcess { public override void Process(XElement xl, HttpRequestBase _request, HttpResponseBase _response) { //取出发送者与接收者账号 string ToUserName = xl.Elements().Where(a => a.Name == "ToUserName").FirstOrDefault().Value; string FromUserName = xl.Elements().Where(a => a.Name == "FromUserName").FirstOrDefault().Value; //取出图片连接 string PicUrl = xl.Elements().Where(a => a.Name == "PicUrl").FirstOrDefault().Value; //取出MediaId,图片资源对应的id string MediaId = xl.Elements().Where(a => a.Name == "MediaId").FirstOrDefault().Value; //组建回复图片信息的类 ReImageMsgModel rsm = new ReImageMsgModel(); rsm.MsgType = "image"; rsm.MediaId = MediaId; rsm.ToUserName = FromUserName; rsm.FromUserName = ToUserName; new SendMesTool().SendImageMesXml(_response, rsm); //记录一个日志 LogTool.AddLog(new MsgLog() { MsgType = "Image", Remark = "PicUrl:" + PicUrl, Remark2 = MediaId }); _response.End(); } }
效果如下
- 微信开发四 接受用户普通消息与回复消息
- 微信开发四 接受用户普通消息与回复消息
- 微信开发(接受普通消息)
- java微信公众号开发1.普通消息的接受并回复
- 【微信】微信开发(2)微信消息接受与回复
- 微信接受普通消息
- 微信接受普通消息
- 微信公众号消息接受与回复
- 微信开发<二>接收普通消息、自动回复
- 微信开发,消息接受与返回
- 微信开发中的消息验证与消息回复
- 微信公众号的开发之 回复用户消息和事件响应(四)
- 微信公众号接受文本消息与自动回复消息
- 微信开发五 被动回复用户消息
- .net mvc 微信开发笔记(四)------STREAM,POST/GET,XML解析,获取用户普通消息
- 接受微信用户发来的消息
- 微信公众号开发-接收与回复消息
- 微信消息管理之被动回复用户消息
- gulp-插件解析
- html5播放器的标签与用法(mp4视频编码问题)
- JLabel动态变化问题
- ZooKeeper安装配置
- mysql 5.5.55 64位数据库在windows server 2008r2上不能安装的解决方案
- 微信开发四 接受用户普通消息与回复消息
- LT自动挡,ET手动挡(epoll)
- 使用MVC的进行网站开发好处
- Android7.1勿扰功能简析
- spagobi的安装方法
- 使用 html5 svg 绘制图形
- Kotlin中的各种类
- 最长上升子序列&几何题解
- Java 集合ArrayList ,HashMap常用的循环方式