上一節中,介紹了如何處理訊息和回覆訊息。這一節我們主要介紹下如何基於規則進行回覆。
為了盡可能簡單,把規則直接寫入到配置檔案中,通過讀寫配置檔案來獲取規則。
本節結束的自動回覆是基於文字訊息進行觸發的,其他的訊息型別咱不考慮。
首先定義規則類,規則包含三個屬性:
規則型別,比如是精確匹配,模糊匹配,還是正則匹配等;
回覆訊息內容,規則匹配之後,回覆的訊息內容。
rule具體屬性如下:
/*我們的訊息內容定義在messageinfo中,兩者是通過messageid來關聯的。messageid是根據訊息數量來自增長實現的。* * 精確匹配
*/const type_exact_match = 1;
/*** 模糊匹配
*/const type_fuzzy_match = 2;
public
$keyword
;
public
$type
;
public
$messageinfo
;
public
$messageid
;
public
$allrules;
messageinfo主要屬性如下:
/*msgtype標識出呼叫哪種訊息型別來傳送回覆訊息。介面為responsemsg。content是具體的訊息內容。* * 訊息型別:文字
*/const message_type_text = "text";
/*** 訊息型別:**
*/const message_type_news = "news";
/*** messageid
* 回覆訊息的id
*/public
$messageid
; /**
* content
* 回覆訊息的內容
*/public
$content
; /**
* msgtype
* 回覆訊息的型別
*/public
$msgtype;
通過ruleconfig類來實現增加規則,寫入配置檔案,從配置檔案中讀取規則。
配置檔案舉例:
array測試**如下:( [rules] => array
( [0] => array
( [keyword] =>test
[type] => 1[messageid] => 1)
[1] => array
( [keyword] =>test1
[type] => 1[messageid] => 2)
)[messageinfos] => array
( [0] => array
( [messageid] => 1[msgtype] =>text
[content] =>this is a test
)[1] => array
( [messageid] => 2[msgtype] =>text
[content] =>this is a other test))
)
public我們把規則寫入到配置中後,就考慮整合到我們專案中。function
testaddrule()
時序圖中,rulecontroller是自動回覆的入口,在初始化,會註冊所有的回覆策略,在本例中,我們只有乙個基於配置的回覆策略。然後,每個回覆策略去處理使用者的發的訊息。如果匹配了規則,就會傳送相應的訊息,否則交給textmsg繼續處理訊息。
configreplytactic對外只有乙個reply介面,介面返回bool用於表示,是否匹配了規則。回覆策略從ruleconfig獲取規則。但是,我們可以寫的更靈活,從不同的規則源獲取。
具體**如下:
<?php********************require root_path . '/src/ruleconfig.php';/**
* configreplytactic
* 基於配置的回覆策略
* * @package
* @version $id$
* @author tobias schlitt * @license php version 3.0 */
class
configreplytactic
return
$this->sendreplymsg($rule, $postobj
); }
/*** matchrule
* 查詢匹配規則
** @param mixed $postobj
* @access public
* @return void
*/public
function matchrule($postobj
) }
else
if ($rule['type'] == rule::type_fuzzy_match) }}
return
false
; }
public
function
getrules()
/*** sendreplymsg
* 根據匹配到的規則進行回覆訊息
** @param mixed $rule
* @param mixed $postobj
* @access public
* @return void
*/public
function sendreplymsg($rule, $postobj
) }}
logger::error("not find messageid:");
return
false
; }
}
**參考:
微信公眾平台開發(一) 接入微信公眾平台
一 接入流程分析參考官方文件 參考文件接入概述分別由以下幾部分完成 1 填寫伺服器配置 2 驗證伺服器位址的有效性 3 依據介面文件實現業務邏輯 按照流程第一部是先填寫伺服器配置,但是我們通常都是先做第二步 編寫 驗證伺服器位址的有效性 controller的寫法 restcontroller pu...
微信公眾平台開發概述
請開發者注意 4 每個介面都有每日介面呼叫頻次限制,可以在公眾平台官網 開發者中心處檢視具體頻次。5 在開發出現問題時,可以通過介面呼叫的返回碼,以及報警排查指引 在公眾平台官網 開發者中心處可以設定介面報警 來發現和解決問題。6 公眾平台以access token為介面呼叫憑據,來呼叫介面,所有介...
微信公眾平台開發入門
主要介紹的。開發者要去這個平台註冊乙個賬號!1.服務號 適用企業和組織。2.訂閱號 適用 和個人。3.二者區別如下 第一,定位不同。訂閱號為使用者提供資訊和資訊 央視新聞 服務號主要為使用者提供 服務 廣東移動 招商銀行 中國南方航空 第二,資訊量不同。訂閱號每天 24小時內 可以傳送1條 訊息到最...