Maison  >  Article  >  Applet WeChat  >  Traitement des messages utilisateur de la série de développement Force.com WeChat

Traitement des messages utilisateur de la série de développement Force.com WeChat

高洛峰
高洛峰original
2017-02-25 16:58:061493parcourir

Force.com est une société de plateforme cloud de renommée internationale. Après avoir configuré avec succès Force.com comme serveur pour les comptes publics WeChat, la prochaine tâche requise consiste à traiter les messages envoyés par les utilisateurs. Lorsqu'un utilisateur ordinaire de WeChat envoie un message à un compte public, le serveur WeChat POSTera le paquet de données XML du message à l'URL renseignée par le développeur. Habituellement, les types de messages incluent des informations textuelles, des informations d'image, des informations vocales et des informations vidéo. , informations de localisation géographique et informations sur les liens. Pour la structure détaillée du paquet de données XML de chaque message, veuillez consulter http://mp.weixin.qq.com/wiki/index.php?title=Receive ordinaire messages. L'article présente le traitement des messages texte. Le format et la description du paquet XML du message texte sont les suivants :

Exemple de paquet XML de message texte

1348831860
 
 
 1234567890123456

Description de la structure du paquet de données

Traitement des messages utilisateur de la série de développement Force.com WeChat

Envoyer des données via les journaux de débogage surveillant l'utilisation

Dans Force.com, vous pouvez facilement observer les informations de données XML envoyées par les utilisateurs de WeChat. À cette fin, entrez dans Force.com. Page de configuration en arrière-plan Recherchez les journaux de débogage sous Journaux dans la barre de navigation de gauche. Après avoir cliqué pour entrer, cliquez sur le bouton Nouveau à côté de Utilisateurs surveillés sur la droite, comme indiqué ci-dessous :

Traitement des messages utilisateur de la série de développement Force.com WeChat

. Dans l'écran suivant, vous pourrez choisir quel utilisateur vous souhaitez surveiller l'interaction avec le serveur Force.com. Dans l'écran de recherche, vous pouvez cliquer sur la loupe pour trouver tous les utilisateurs que Site.com utilise de manière anonyme. compte similaire à "Utilisateur invité du site...". Sélectionnez L'interface terminée est la suivante :

Traitement des messages utilisateur de la série de développement Force.com WeChat

À ce stade, si un utilisateur WeChat qui suit ce compte public WeChat envoie n'importe quel texte sur ce compte, actualisez la page de surveillance des journaux de débogage et vous pourrez voir que le journal correspondant a été ajouté ci-dessous :

Traitement des messages utilisateur de la série de développement Force.com WeChat

Cliquez dedans et vous pourrez voir le XML paquet du texte que nous avons envoyé dans le journal :

Traitement des messages utilisateur de la série de développement Force.com WeChat

Ce type de journal peut également aider au débogage ultérieur.

Créer une méthode de traitement des messages utilisateur

Ensuite, nous ouvrons la classe WeChatRestController créée précédemment et ajoutons la méthode suivante pour répondre au paquet de données utilisateur

@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();
        }
    }

Le code ci-dessus a terminé l'analyse du package XML de données envoyé par l'utilisateur. Ensuite, nous suivons http://mp.weixin.qq.com/wiki/index.php?title=sending instructions de message de réponse passive et organisons. la réponse aux données du message texte de l'utilisateur, les données de réponse ici sont également une structure XML, qui est fondamentalement la même que la structure de données XML du message texte envoyé. Pour plus de détails, veuillez vous référer à l'introduction détaillée de Tencent dans le lien. Le code suivant enverra automatiquement la date et l'heure actuelles à l'utilisateur. Ajoutez le code suivant après la boucle While du code précédent :

Datetime dt = System.now();
String returnDT = dt.format('EEEE, MMMM d, yyyy');
String replyMSG = &#39;<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[{2}]]></Content></xml>&#39;;
String[] arguments = new String[]{fromUserName, toUserName, rtnMsg};
String formattedReplyMSG = String.format(replyMSG, arguments);
RestContext.response.addHeader(&#39;Content-Type&#39;, &#39;text/plain&#39;);
RestContext.response.responseBody = Blob.valueOf(rtnMsg);

Ce qu'il faut rappeler légèrement du code précédent est le ToUserName. paramètre et paramètre FromUserName à la ligne 3. C'est l'opposé du message paquet de données XML envoyé par les utilisateurs ordinaires de WeChat.

Enregistrez le code. À ce stade, les utilisateurs ordinaires qui envoient un message à ce compte public peuvent recevoir rapidement les informations sur l'heure actuelle.

Pour plus d'articles liés au traitement des messages utilisateur de la série de développement Force.com WeChat, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn