WxMessageMatcher(消息匹配器)接口用于一些簡(jiǎn)單的匹配,可以自定義匹配邏輯,如格式驗(yàn)證。匹配成功則繼續(xù)往下執(zhí)行,否則不允許通過(guò)。
需求:我想當(dāng)用戶發(fā)送文本消息:“我是誰(shuí)”時(shí),后臺(tái)獲取該用戶的微信用戶信息(昵稱)并返回。
用于匹配符合”我是誰(shuí)“的消息。
public class WhoAmIMatcher implements WxMessageMatcher{
@Override
public boolean match(WxXmlMessage message) {
if(StringUtils.isNotEmpty(message.getContent())){
if(message.getContent().equals("我是誰(shuí)")){
return true;
}
}
return false;
}
}
用于處理當(dāng)匹配到“我是誰(shuí)”的消息。
router.rule().msgType(WxConsts.XML_MSG_TEXT).matcher(new WhoAmIMatcher()).handler(new WhoAmIHandler()).end()
.rule().event(WxConsts.EVT_CLICK).eventKey(MenuKey.HELP).handler(HelpDocHandler.getInstance()).next()
.rule().eventKey(MenuKey.HOT_SONG).handler(RankHandler.getInstance()).next()
.rule().eventKey(MenuKey.TOP_500).handler(RankHandler.getInstance()).next()
.rule().eventKey(MenuKey.NET_HOT_SONG).handler(RankHandler.getInstance()).next()
.rule().eventKey(MenuKey.HUAYU_SONG).handler(RankHandler.getInstance()).next()
.rule().eventKey(MenuKey.XINAO_SONG).handler(RankHandler.getInstance()).end();
如圖所示,輸入”我是誰(shuí)“的時(shí)候,返回了我微信的昵稱。
至此,我們已經(jīng)嘗試使用了路由器Router,規(guī)則Rule,匹配器Matcher,處理器Handler。
還有使用了IServer統(tǒng)一接口調(diào)用去獲取用戶信息。
IServer 接口是集成所有wx-tools已經(jīng)實(shí)現(xiàn)的微信接口,統(tǒng)一調(diào)用入口。它的實(shí)現(xiàn)是WxService.java。想看實(shí)現(xiàn)源碼的可以戳:這里
更多建議: