微信公眾平台開發介紹 四

2022-04-05 18:51:09 字數 3164 閱讀 6275

上一節中,介紹了如何處理訊息和回覆訊息。這一節我們主要介紹下如何基於規則進行回覆。

為了盡可能簡單,把規則直接寫入到配置檔案中,通過讀寫配置檔案來獲取規則。

本節結束的自動回覆是基於文字訊息進行觸發的,其他的訊息型別咱不考慮。

首先定義規則類,規則包含三個屬性:

規則型別,比如是精確匹配,模糊匹配,還是正則匹配等;

回覆訊息內容,規則匹配之後,回覆的訊息內容。

rule具體屬性如下:

/*

* * 精確匹配

*/const type_exact_match = 1;

/*** 模糊匹配

*/const type_fuzzy_match = 2;

public

$keyword

;

public

$type

;

public

$messageinfo

;

public

$messageid

;

public

$allrules;

我們的訊息內容定義在messageinfo中,兩者是通過messageid來關聯的。messageid是根據訊息數量來自增長實現的。

messageinfo主要屬性如下:

/*

* * 訊息型別:文字

*/const message_type_text = "text";

/*** 訊息型別:**

*/const message_type_news = "news";

/*** messageid

* 回覆訊息的id

*/public

$messageid

; /**

* content

* 回覆訊息的內容

*/public

$content

; /**

* msgtype

* 回覆訊息的型別

*/public

$msgtype;

msgtype標識出呼叫哪種訊息型別來傳送回覆訊息。介面為responsemsg。content是具體的訊息內容。

通過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條 訊息到最...