搜尋
首頁微信小程式微信開發微信公眾平台訊息介面開發從Hello2BizUser文字到subscribe事件

一、Hello2BizUser舊事件的處理

在舊的關注事件中,用戶關注微信公眾平台帳號後,系統會幫用戶發送一條Hello2BizUser的文字給公眾帳號,公眾帳號後台開發模式下透過判斷Hello2BizUser這個字來實現發送歡迎詞。

程式碼樣例如下:

if ($keyword == "Hello2BizUser"){
    $contentStr = "PHP中文网";
    $resultStr = $this->transmitText($object, $contentStr, $funcFlag);
    return $resultStr;
}

#做出基礎介面上的修改,影響會是所有人。一般不會輕易做這樣的改動。

為什麼微信要修改這一事件了,這個方法的弊端在於,如果用戶沒有判斷這一事件,那麼就不會有歡迎詞,本來這也沒什麼關係,不出現歡迎詞也不影響什麼。但很多人的程式碼裡面,所有流程直接就是判斷關鍵字。例如我們曾經看過一家醫院的微信帳號,用戶發送掛號的號碼,就顯示前面有多少人排列,但後台程式沒有做區分,把Hello2BizUser也當成掛號單發送過去,返回沒有找到Hello2BizUser這一掛號,不知道前面有多少人,搞得用戶莫名奇妙。還有使用者如果主動發送一個Hello2BizUser過去,那麼得到的也是和歡迎詞一樣的內容,雖然很少用戶會去發這個東西。

另一方面,將使用者關注做成事件,更有利於統計功能的實作。利用這個事件,我們就更能容易的判斷出關注人數和退訂人數,而原來的Hello2BizUser文本推送判斷是有可能不準確的,因為用戶可以手工發送,形成虛假關注統計。

 

二、「subscribe」訂閱事件判斷

subscribe是一種新的事件,我們先需要做事件類型來做判斷,我們在官方範例中增加對此事件的判斷,修改如下:

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$RX_TYPE = trim($postObj->MsgType);

switch ($RX_TYPE)
{
    case "text":
        $resultStr = $this->receiveText($postObj);
        break;
    case "event":
        $resultStr = $this->receiveEvent($postObj);
        break;
    default:
        $resultStr = "unknow msg type: ".$RX_TYPE;
        break;
}

#然後在事件接收處理函數中再判斷訂閱事件:

private function receiveEvent($object)
{
    $contentStr = "";
    switch ($object->Event)
    {
        case "subscribe":
            $contentStr = "您好,欢迎关注方倍工作室。新感觉,新体验!";
            break;
    }
    $resultStr = $this->transmitText($object, $contentStr);
    return $resultStr;
}

這樣就完成了「subscribe」的訂閱事件下的處理。

 

二、完整程式碼

<?php define("TOKEN", "方倍工作室");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->responseMsg();

class wechatCallbackapiTest
{
    public function responseMsg()
    {
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
        if (!empty($postStr)){
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
            $RX_TYPE = trim($postObj->MsgType);

            switch ($RX_TYPE)
            {
                case "text":
                    $resultStr = $this->receiveText($postObj);
                    break;
                case "event":
                    $resultStr = $this->receiveEvent($postObj);
                    break;
                default:
                    $resultStr = "unknow msg type: ".$RX_TYPE;
                    break;
            }
            echo $resultStr;
        }else {
            echo "";
            exit;
        }
    }

    private function receiveText($object)
    {
        $funcFlag = 0;
        $keyword = trim($object->Content);
        $resultStr = "";
        $cityArray = array();
        $contentStr = "";
        $needArray = false;
        $illegal = false;
        $saytome = false;
        
        if ($keyword == "Hello2BizUser"){
            $contentStr = "欢迎关注方倍工作室,这其实是老的欢迎词,你关注时收不到了";
            $resultStr = $this->transmitText($object, $contentStr, $funcFlag);
            return $resultStr;
        }else {
        
        }
    }

    private function receiveEvent($object)
    {
        $contentStr = "";
        switch ($object->Event)
        {
            case "subscribe":
                $contentStr = "您好,欢迎关注方倍工作室。新感觉,新体验!";
                break;
        }
        $resultStr = $this->transmitText($object, $contentStr);
        return $resultStr;
    }
    
    private function transmitText($object, $content, $flag = 0)
    {
        $textTpl = "<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>%s</createtime>
<msgtype></msgtype>
<content></content>
<funcflag>%d</funcflag>
</xml>";
        $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);
        return $resultStr;
    }
}

?>

 更多微信公眾平台訊息介面開發從Hello2BizUser文字到subscribe事件 相關文章請關注PHP中文網!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。