亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁(yè) 微信小程式 微信開(kāi)發(fā) 微信公眾平臺(tái)訊息介面開(kāi)發(fā)從Hello2BizUser文字到subscribe事件

微信公眾平臺(tái)訊息介面開(kāi)發(fā)從Hello2BizUser文字到subscribe事件

Mar 04, 2017 pm 02:49 PM
微信大眾平臺(tái)

一、Hello2BizUser舊事件的處理

在舊的關(guān)注事件中,用戶關(guān)注微信公眾平臺(tái)帳號(hào)後,系統(tǒng)會(huì)幫用戶發(fā)送一條Hello2BizUser的文字給公眾帳號(hào),公眾帳號(hào)後臺(tái)開(kāi)發(fā)模式下透過(guò)判斷Hello2BizUser這個(gè)字來(lái)實(shí)現(xiàn)發(fā)送歡迎詞。

程式碼樣例如下:

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

#做出基礎(chǔ)介面上的修改,影響會(huì)是所有人。一般不會(huì)輕易做這樣的改動(dòng)。

為什麼微信要修改這一事件了,這個(gè)方法的弊端在於,如果用戶沒(méi)有判斷這一事件,那麼就不會(huì)有歡迎詞,本來(lái)這也沒(méi)什麼關(guān)係,不出現(xiàn)歡迎詞也不影響什麼。但很多人的程式碼裡面,所有流程直接就是判斷關(guān)鍵字。例如我們?cè)?jīng)看過(guò)一家醫(yī)院的微信帳號(hào),用戶發(fā)送掛號(hào)的號(hào)碼,就顯示前面有多少人排列,但後臺(tái)程式?jīng)]有做區(qū)分,把Hello2BizUser也當(dāng)成掛號(hào)單發(fā)送過(guò)去,返回沒(méi)有找到Hello2BizUser這一掛號(hào),不知道前面有多少人,搞得用戶莫名奇妙。還有使用者如果主動(dòng)發(fā)送一個(gè)Hello2BizUser過(guò)去,那麼得到的也是和歡迎詞一樣的內(nèi)容,雖然很少用戶會(huì)去發(fā)這個(gè)東西。

另一方面,將使用者關(guān)注做成事件,更有利於統(tǒng)計(jì)功能的實(shí)作。利用這個(gè)事件,我們就更能容易的判斷出關(guān)注人數(shù)和退訂人數(shù),而原來(lái)的Hello2BizUser文本推送判斷是有可能不準(zhǔn)確的,因?yàn)橛脩艨梢允止ぐl(fā)送,形成虛假關(guān)注統(tǒng)計(jì)。

?

二、「subscribe」訂閱事件判斷

subscribe是一種新的事件,我們先需要做事件類型來(lái)做判斷,我們?cè)诠俜焦?fàn)例中增加對(duì)此事件的判斷,修改如下:

$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;
}

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

private function receiveEvent($object)
{
    $contentStr = "";
    switch ($object->Event)
    {
        case "subscribe":
            $contentStr = "您好,歡迎關(guān)注方倍工作室。新感覺(jué),新體驗(yàn)!";
            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, &#39;SimpleXMLElement&#39;, 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 = "歡迎關(guān)注方倍工作室,這其實(shí)是老的歡迎詞,你關(guān)注時(shí)收不到了";
            $resultStr = $this->transmitText($object, $contentStr, $funcFlag);
            return $resultStr;
        }else {
        
        }
    }

    private function receiveEvent($object)
    {
        $contentStr = "";
        switch ($object->Event)
        {
            case "subscribe":
                $contentStr = "您好,歡迎關(guān)注方倍工作室。新感覺(jué),新體驗(yàn)!";
                break;
        }
        $resultStr = $this->transmitText($object, $contentStr);
        return $resultStr;
    }
    
    private function transmitText($object, $content, $flag = 0)
    {
        $textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%d</FuncFlag>
</xml>";
        $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);
        return $resultStr;
    }
}

?>

?更多微信公眾平臺(tái)訊息介面開(kāi)發(fā)從Hello2BizUser文字到subscribe事件?相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話題

Laravel 教程
1597
29
PHP教程
1488
72