使用EasyWechat开发java微信公众平台应用(三)——接受不同类型

我们需要响应微信发来的普通消息(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微信公众平台应用(三)——接受不同类型

相关文章:

你感兴趣的文章:

标签云: