Force.com ist ein international bekanntes Cloud-Plattform-Unternehmen. Nach der erfolgreichen Konfiguration von Force.com als Server für öffentliche WeChat-Konten besteht die nächste erforderliche Aufgabe darin, die von Benutzern gesendeten Nachrichten zu verarbeiten. Wenn ein normaler WeChat-Benutzer eine Nachricht an ein öffentliches Konto sendet, sendet der WeChat-Server das XML-Datenpaket der Nachricht an die vom Entwickler eingegebene URL. Normalerweise umfassen die Nachrichtentypen Textinformationen, Bildinformationen, Sprachinformationen und Videoinformationen , geografische Standortinformationen und Links. Die detaillierte Struktur des XML-Pakets für jede Nachricht finden Sie unter http://mp.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E6%94%B6%E6%99 % AE%E9%80%9A%E6%B6%88%E6%81%AF. Der Artikel stellt die Verarbeitung von Textnachrichten vor. Das XML-Paketformat und die Beschreibung für Textnachrichten lauten wie folgt:
Beispiel für ein XML-Paket für Textnachrichten
1348831860 1234567890123456
Beschreibung der Datenpaketstruktur
Daten über Debug-Protokolle zur Überwachung der Nutzung senden
In Force.com können Sie die von WeChat-Benutzern gesendeten XML-Dateninformationen einfach beobachten. Geben Sie zu diesem Zweck Force.com ein Hintergrund-Setup-Seite Suchen Sie nach Debug-Protokollen unter „Protokolle“ in der linken Navigationsleiste. Klicken Sie nach dem Klicken auf die Schaltfläche „Neu“ neben „Überwachte Benutzer“ auf der rechten Seite:
Im nächsten Bildschirm können Sie auswählen, welcher Benutzer die Interaktion mit dem Force.com-Server überwachen soll. Im Suchbildschirm können Sie auf die Lupe klicken, um alle Benutzer zu finden, die Site.com verwenden Konto ähnlich „Site Guest User…“. Die fertige Schnittstelle sieht wie folgt aus:
Zu diesem Zeitpunkt sendet ein WeChat-Benutzer, der diesem öffentlichen WeChat-Konto folgt, etwas Wenn Sie Text zu diesem Konto hinzufügen möchten, aktualisieren Sie die Überwachungsseite „Debug-Protokolle“ und Sie können unten sehen, dass das entsprechende Protokoll hinzugefügt wurde:
Klicken Sie hinein und Sie können das XML sehen Paket des Textes, den wir im Protokoll gesendet haben:
Diese Art von Protokoll kann auch beim späteren Debuggen hilfreich sein.
Methode zur Verarbeitung von Benutzernachrichten erstellen
Als nächstes öffnen wir die zuvor erstellte WeChatRestController-Klasse und fügen die folgende Methode hinzu, um auf das Benutzerdatenpaket zu reagieren
@HttpPost global static void doPost(){ //存储XML各节点数据变量 String toUserName = ''; String fromUserName = ''; String msgType = ''; String content = ''; //获取XML数据包 RestRequest req = RestContext.request; RestResponse res = RestContext.response; string strMsg = req.requestBody.toString(); XmlStreamReader reader = new XmlStreamReader(strMsg); //解析XML数据包,Force.com这块的处理能力并不强,简单的结构也需要较多代码来解析 while(reader.hasNext()){ if(reader.getLocalName() == 'ToUserName'){ reader.next(); if(String.isNotBlank(reader.getText())){ toUserName = reader.getText(); } } else if(reader.getLocalName() == 'FromUserName'){ reader.next(); if(String.isNotBlank(reader.getText())){ fromUserName = reader.getText(); } } else if(reader.getLocalName() == 'MsgType'){ reader.next(); if(String.isNotBlank(reader.getText())){ msgType = reader.getText(); } } else if(reader.getLocalName() == 'Content'){ reader.next(); if(String.isNotBlank(reader.getText())){ content = reader.getText(); } } reader.next(); } }
Der obige Code schließt die Analyse des vom Benutzer gesendeten Daten-XML-Pakets ab. Als nächstes folgen wir http://mp.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9 %80 %81%E8%A2%AB%E5%8A%A8%E5%93%8D%E5%BA%94%E6%B6%88%E6%81%AF Beschreibung, organisieren Sie die Textnachrichtendaten, auf die geantwortet wurde Benutzer, Die Antwortdaten sind hier ebenfalls eine XML-Struktur, die im Wesentlichen mit der XML-Datenstruktur der gesendeten Textnachricht übereinstimmt. Weitere Informationen finden Sie in der detaillierten Einführung von Tencent im Link. Der folgende Code sendet automatisch das aktuelle Datum und die aktuelle Uhrzeit an den Benutzer. Fügen Sie den folgenden Code nach der While-Schleife des vorherigen Codes hinzu:
Datetime dt = System.now(); String returnDT = dt.format('EEEE, MMMM d, yyyy'); String replyMSG = '<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[{2}]]></Content></xml>'; String[] arguments = new String[]{fromUserName, toUserName, rtnMsg}; String formattedReplyMSG = String.format(replyMSG, arguments); RestContext.response.addHeader('Content-Type', 'text/plain'); RestContext.response.responseBody = Blob.valueOf(rtnMsg);
Was leicht an den vorherigen Code erinnert werden muss, ist der ToUserName Parameter und FromUserName-Parameter in Zeile 3 Es ist das Gegenteil des Nachrichten-XML-Datenpakets, das von normalen WeChat-Benutzern gesendet wird.
Speichern Sie den Code. Zu diesem Zeitpunkt können normale Benutzer, die eine Nachricht an dieses öffentliche Konto senden, schnell die aktuelle Zeitinformation erhalten.
Weitere Artikel zur Verarbeitung von Benutzernachrichten der Force.com WeChat-Entwicklungsserie finden Sie auf der chinesischen PHP-Website!