使用EasyWechat开发java微信公众平台应用(三)——接受不同类型的消息
来源:互联网 发布:mac移动硬盘重命名 编辑:程序博客网 时间:2024/06/03 06:05
我们需要响应微信发来的普通消息(Message)和事件推送(Event)。
一、接受和响应普通消息:
用于接受的消息对应org.easywechat.msg.req包中继承自BaseReqMsg的类,目前共有六种。
你的应用想要处理哪种类型的消息,就要在继承WeixinServletSupport的类中重写相应的方法。
消息类型 涉及的对象 需要重写的方法
1 文本消息 TextReqMsg handleTextMsg(TextReqMsg msg)
2 图片消息 ImageReqMsg handleImageMsg(ImageReqMsg msg)
3 语音消息 VoiceRegMsg handleVoiceMsg(VoiceReqMsg msg)
4 视频消息 VideoReqMsg handleVideoMsg(VideoReqMsg msg)
5 地理位置消息 LocationReqMsg handleLocationMsg(LocationReqMsg msg)
6 链接消息 LinkReqMsg handleLinkMsg(LinkReqMsg msg)
以下面的程序为例进行讲解:
public class Wechat extends WeixinServletSupport {//Override getToken()@Overrideprotected BaseMsg handleTextMsg(TextReqMsg msg) {return new TextMsg("你说了:" + msg.getContent());}@Overrideprotected BaseMsg handleImageMsg(ImageReqMsg msg) {return new TextMsg("你发送的是图片信息");}}上面的程序重写了handleTextMsg和handleImageMsg方法,表示其会对文本消息和图片消息进行处理并回应。
如果用户发送了其他类型的消息,例如一段声音,而上面的程序没有重写用于处理语音消息handleVoiceMsg方法。这时WeixinServletSuppport类就会调用handleDefaultMsg方法,该方法的默认行为是不向用户发送任何消息。当然,handleDefaultMsg方法也可以被重写:
@Overrideprotected BaseMsg handleDefaultMsg(BaseReqMsg msg) {String resp = "您发送的消息类型是:" + msg.getMsgType();return new TextMsg(resp);}如果在第一个例子中加上上面这段代码,则程序会响应用户发送的所有类型消息。效果是:对于用户发送文本消息和图片消息,按照相应的handleXxx方法进行处理;对于用户发送的其他类型的消息,告诉用户消息类型。
二、接受和响应事件推送:
用于接受的事件对应org.easywechat.msg.req包中继承自BaseEvent的类。
接受事件推送与接受普通消息极为相似,就是重写相应的handleXxxEvent(XxxEvent event)方法
1 关注/取消关注事件
处理关注事件,需要重写handleSubscribe方法;
处理取消关注事件,需要重写handleUnsubscribe方法。
2 扫描带参数二维码事件 QrCodeEvent
需要重写handleQrCodeEvent方法。
3 上报地理位置事件 LocationEvent
需要重写handleLocationEvent方法。
4 自定义菜单事件 MenuEvent
处理点击菜单拉取消息时的事件推送,需重写handleMenuClickEvent方法;
处理点击菜单跳转链接时的事件推送,需重写handleMenuViewEvent方法。
与处理消息类似,如果事件推送在你的程序里没有找到相应的重写方法,那么会交给handleBaseEvent来处理,即不进行响应。
- 使用EasyWechat开发java微信公众平台应用(三)——接受不同类型的消息
- 使用EasyWechat开发java微信公众平台应用(二)——发送不同类型的消息
- 使用EasyWechat框架开发java微信公众平台应用(一)
- 第四篇 :微信公众平台开发实战Java版之完成消息接受与相应以及消息的处理
- 第四篇 :微信公众平台开发实战Java版之完成消息接受与相应以及消息的处理
- Java微信公众平台开发(三)——接收消息的分类及实体的创建
- Java微信公众平台开发(五)——文本及图文消息回复的实现
- 使用Java语言开发微信公众平台(三)——被关注回复与关键词回复
- 使用Java语言开发微信公众平台(三)——被关注回复与关键词回复
- 使用Java语言开发微信公众平台(三)——被关注回复与关键词回复
- 使用Java语言开发微信公众平台(三)——被关注回复与关键词回复
- 使用Java语言开发微信公众平台(三)——被关注回复与关键词回复
- 使用Java语言开发微信公众平台(三)——被关注回复与关键词回复
- 使用Java语言开发微信公众平台(三)——被关注回复与关键词回复
- Java微信公众平台开发(二)——微信服务器post消息体的接收
- java微信公众号开发1.普通消息的接受并回复
- .net 开发微信公众平台(三)-----发送图文消息
- 公众号接收用户消息—《微信公众平台开发实战与应用案例》—陈小龙
- poj 1679 The Unique MST (次小生成树)
- CF 454 B. Little Pony and Sort by Shift
- 理解linux下的硬链接与软链接
- UVA 11475 - Extend to Palindrome(KMP)
- poj 3112 Digital Biochemist Circuit(简单题)
- 使用EasyWechat开发java微信公众平台应用(三)——接受不同类型的消息
- BOJ 445 高兴
- android R文件丢失问题
- C函数中的malloc和free
- 使用commons-codec包加密字符串(MD5,SHA1,BASE64)
- Java抽象类与接口的区别
- shard
- 任意三角形外界圆的圆心和半径
- Distinctive Image Features from Scale-Invariant Keypoints-SIFT算法译文