使用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来处理,即不进行响应。

0 0
原创粉丝点击