wx-tools 關(guān)于WxMessageRouter的詳解

2023-03-22 17:19 更新

WxMessageRouter消息路由器,不知道你們理解了多少,接下來(lái)還是詳細(xì)講解一下需要注意的細(xì)節(jié)。

提到這個(gè)路由器,就要說(shuō)說(shuō)另一個(gè)東西:WxMessageRouterRule。簡(jiǎn)稱(chēng)規(guī)則(Rule)。

定義規(guī)則,用于對(duì)來(lái)自微信服務(wù)器的消息進(jìn)行過(guò)濾和篩選,只針對(duì)有效消息進(jìn)行處理,提高服務(wù)器處理效率。

通過(guò)鏈?zhǔn)脚渲寐酚梢?guī)則(Rule),根據(jù)規(guī)則把來(lái)自微信的消息交給handler處理。

注意:

  1. 配置路由規(guī)則時(shí)盡量按照從細(xì)到粗的原則,否則可能消息可能會(huì)被提前處理
  2. 默認(rèn)情況下消息只會(huì)被處理一次,除非使用 {WxMessageRouterRule的next()方法}
  3. 規(guī)則的結(jié)束必須用WxMessageRouterRule的end()方法或者WxMessageRouterRule的next()方法,否則不會(huì)生效。

使用方法:

//初始化一個(gè)路由器,把wxService傳入。
WxMessageRouter router = new WxMessageRouter(wxService);
//新建路由規(guī)則,通過(guò)rule()方法創(chuàng)建新的規(guī)則,然后鏈?zhǔn)教顚?xiě)過(guò)濾條件。MSG_TYPE等參數(shù)填入WxConst中的常量,這里不作展示,可以查看WxConst代碼或官方文檔,有注釋。
router.rule().msgType("MSG_TYPE").event("EVENT").eventKey("EVENT_KEY").content("CONTENT").matcher(matcher).interceptor(interceptor, ...).handler(handler, ...).end()
.rule().msgType("MSG_TYPE")...//另外一個(gè)匹配規(guī)則.end();
// 將WxXmlMessage交給消息路由器,處理后得到結(jié)果。
WxXmlOutMessage xmlOutMsg = router.route(wxXmlMessage);

關(guān)于路由規(guī)則條件

  1. 對(duì)于一條消息(WxXMLMessage)允許多個(gè)規(guī)則(Rule)去進(jìn)行過(guò)濾和處理。用next()方法去連接兩個(gè)規(guī)則。但是最后必須是以end()方法結(jié)束。
  2. 每條規(guī)則可以允許多個(gè)攔截器(Interceptor),多個(gè)處理器(Handler)處理。返回最后一個(gè)Handler處理的結(jié)果。
  3. 路由規(guī)則還提供正則表達(dá)式過(guò)濾,對(duì)于簡(jiǎn)單的過(guò)濾需求,如只接受數(shù)字消息。不想繁瑣的建立Matcher匹配器??梢匀缦聦?xiě)法。
    //正則表達(dá)式:^[0-9]*$只接受數(shù)字消息,其他消息過(guò)濾。
    router.rule().rContent("^[0-9]*$").handler(new DemoHandler()).end();

去除多余消息,高效處理爭(zhēng)對(duì)性消息,真是好用又簡(jiǎn)單。

小小總結(jié)一下

至此,如果你跟著做,并且都成功了話(huà)。你已經(jīng)入門(mén)了wx-tools了。以后無(wú)非就是根據(jù)用戶(hù)需求添加路由規(guī)則,并添加處理器去處理,入門(mén)教程就到此結(jié)束了。

DEMO的源碼下載地址: music_collector

其實(shí)DEMO里還有關(guān)鍵字搜索并推送圖文消息給用戶(hù)的功能. 文檔里沒(méi)演示出來(lái).有興趣的同學(xué)可以查閱源代碼.

  • ChangeNewsHandler.java
  • WxNewsCollector.java

此外, 關(guān)于如何使用IService里的接口,會(huì)在第三節(jié)詳細(xì)提供demo用法,各位大大有需要可以去看看。

其實(shí)最終的效果是這樣的:

渣渣輝搜索

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)