一、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, '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 = "歡迎關(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)!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

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

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

Clothoff.io
AI脫衣器

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

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

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

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

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