微信自动回复可以分为三种,一种是首次关注的欢迎语,一种是关键字自动回复,还有就是无法识别的回复。这三种模式在实现上是完全一样的,只是基于的事件不同而已。要想实现自动回复功能,首先要对微信相关API进行解读。
微信的消息类型主要分为请求消息类型以及事件消息类型。
首次关注对应的是事件类型中的订阅类型(subscribe),关键字自动回复以及无法识别回复对应的是请求消息类型中的文本消息(text).为了以后方便,我们创建一个MessageUntil.java,将所有的请求消息类型和事件消息类型整合,
对应的文件代码如下:
/**
* @ClassName MessageUtil
* @Description 消息处理工具类
* @author minlingchao
* @date 2015-2-6 下午12:41:31
*/
public class MessageUtil {
// /////////////////////////请求消息类型/////////////////////////////////////
// /////////////////////////事件消息类型/////////////////////////////////////
/**
* 请求消息类型:事件推送
*/
public static final String REQ_MSG_TYPE_EVENT = "event";
/**
* 事件类型:订阅/关注
*/
public static final String EVENT_TYPE_SUBSCRIBE = "subscribe";
/**
* 事件类型:取消订阅/取消关注
*/
public static final String EVENT_TYPE_UNSUBSCRIBE = "unsubscribe";
/**
* 事件类型:扫描二维码
*/
public static final String EVENT_TYPE_SCAN = "scan";
/**
* 事件类型:上报地理位置
*/
public static final String EVENT_TYPE_LOCATION = "LOCATION";
/**
* 事件类型:自定义菜单(CLICK)
*/
public static final String EVENT_TYPE_CLICK = "CLICK";
// /////////////////////////响应消息类型/////////////////////////////////////
/**
* 文本消息
*/
public static final String RESP_MESSAGE_TYPE_TEXT = "text";
/**
* 图片消息
*/
public static final String RESP_MESSAGE_TYPE_IMAGE = "image";
/**
* 语音消息
*/
public static final String RESP_MESSAGE_TYPE_VOICE = "voice";
/**
* 视频消息
*/
public static final String RESP_MESSAGE_TYPE_VIDEO = "video";
/**
* 图文消息
*/
public static final String RESP_MESSAGE_TYPE_NEWS = "news";
}
可以看到我们回复的消息可以是文本消息,图文消息,视频消息,语音消息,图片消息,当然文本、图片消息的实现较为简单,至于其他几种消息类型的回复会在稍后的章节中逐一讲解。
二、设计思路
由于自动回复是微信中最为重要的功能之一,其他的一些营销活动以及互动游戏等都是基于自动回复消息来实现的,所以自动回复在微信中的地位是十分重要的。我们需要将其作为一个独立的模块,可以为后续的扩展做好铺垫,以便实现更多的互动功能。所以自动回复这一块的设计尤为重要,为了将其独立起来,设计框架如下所示:
从上图可以看出,由于文本消息、图片消息、视频消息以及语音消息的结构组成是十分相似的,所有通过一个ReplyMsgTempelete映射到响应的消息类型中,图文消息的结构组成比较特殊,所以对于图文消息要单独进行处理,首次关注、关键字回复以及不识别回复通过两个消息模板映射的不同的消息中去,这样就保证了底层的消息内容可以独立开,为以后扩展更多的功能做好铺垫。
三、功能实现
四、注意事项
五、总结