一、Hello2BizUser舊事件的處理
在老的關(guān)注事件中,用戶關(guān)注微信公眾平臺(tái)賬號(hào)后,系統(tǒng)會(huì)幫用戶發(fā)送一條Hello2BizUser的文本給公眾賬號(hào),公眾賬號(hào)后臺(tá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è)吹竭^(guò)一家醫(yī)院的微信賬號(hào),用戶發(fā)送掛號(hào)的號(hào)碼,就顯示前面有多少人排列,但后臺(tái)程序沒(méi)有做區(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í)現(xiàn)。利用這個(gè)事件,我們就更能容易的判斷出關(guān)注人數(shù)和退訂人數(shù),而原來(lái)的Hello2BizUser文本推送判斷是有可能不準(zhǔn)確的,因?yàn)橛脩艨梢允止ぐl(fā)送,形成虛假關(guān)注統(tǒng)計(jì)。
二、“subscribe”訂閱事件判斷
subscribe是一種新的事件,我們先需要做事件類型做判斷,我們?cè)诠俜綐永性黾訉?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)消息接口開發(fā)從Hello2BizUser文本到subscribe事件?相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)