1. Verarbeitung des alten Hello2BizUser-Ereignisses
Nachdem der Benutzer dem öffentlichen WeChat-Plattformkonto folgt, hilft das System dem Benutzer, einen Text von Hello2BizUser zu senden zum öffentlichen Konto Im Hintergrundentwicklungsmodus des öffentlichen Kontos wird die Willkommensnachricht durch Beurteilen des Wortes Hello2BizUser gesendet.
Das Codebeispiel lautet wie folgt:
if ($keyword == "Hello2BizUser"){ $contentStr = "PHP中文网"; $resultStr = $this->transmitText($object, $contentStr, $funcFlag); return $resultStr; }
Änderungen an der Basisschnittstelle wirken sich auf alle aus. Im Allgemeinen sind solche Änderungen nicht einfach durchzuführen.
Warum möchte WeChat dieses Ereignis ändern? Der Nachteil dieser Methode besteht darin, dass es keine Willkommensnachricht gibt Die Willkommensnachricht hat keinen Einfluss darauf. Aber in den Programmcodes vieler Leute basieren alle Prozesse direkt auf der Beurteilung von Schlüsselwörtern. Wir haben zum Beispiel das WeChat-Konto eines Krankenhauses gesehen. Wenn der Benutzer die Registrierungsnummer sendet, wird angezeigt, wie viele Personen davor stehen. Das Hintergrundprogramm macht jedoch keine Unterscheidung und sendet Hello2BizUser als Registrierungsauftrag . Die Registrierungsnummer Hello2BizUser wurde nicht gefunden. Ich weiß nicht, wie viele Personen sich vor mir befinden, was die Benutzer verwirrt. Wenn der Benutzer außerdem die Initiative ergreift, einen Hello2BizUser zu senden, erhält er denselben Inhalt wie die Willkommensnachricht, obwohl nur wenige Benutzer diese Nachricht senden.
Andererseits ist die Umwandlung der Benutzeraufmerksamkeit in Ereignisse förderlicher für die Realisierung statistischer Funktionen. Mithilfe dieses Ereignisses können wir die Anzahl der Follower und Abmelder einfacher ermitteln. Die ursprüngliche Text-Push-Ermittlung von Hello2BizUser ist jedoch möglicherweise ungenau, da Benutzer sie manuell senden können, wodurch falsche Follow-Statistiken entstehen.
2. „Abonnieren“-Ereignisbeurteilung
Abonnieren ist ein neues Ereignis, das wir hinzufügen Beurteilen Sie dieses Ereignis im offiziellen Beispiel und ändern Sie es wie folgt:
$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; }
Beurteilen Sie dann das Abonnementereignis in der Ereignisempfangsverarbeitungsfunktion:
private function receiveEvent($object) { $contentStr = ""; switch ($object->Event) { case "subscribe": $contentStr = "您好,欢迎关注方倍工作室。新感觉,新体验!"; break; } $resultStr = $this->transmitText($object, $contentStr); return $resultStr; }
Damit ist die Verarbeitung des Abonnementereignisses „Abonnieren“ abgeschlossen.
2. Vollständiger Code
<?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><![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; } } ?>
Weitere Nachrichtenschnittstellen für die öffentliche WeChat-Plattform werden entwickelt Von Hello2BizUser Text zum Abonnieren der Veranstaltung beachten Sie bitte die chinesische PHP-Website!