L'article précédent explique comment accéder au compte officiel de WeChat. Cet article parle des fonctions les plus élémentaires du compte officiel de WeChat: la réception et la réponse aux messages ordinaires. En parlant de messages ordinaires, quels sont les messages ordinaires définis par les comptes officiels de WeChat? Les messages ordinaires reçus mentionnés dans la documentation du développeur WeChat comprennent les catégories suivantes :
1. SMS
2. Message d'image
3. Message vocal
4. Message vidéo
5. Message vidéo court
6. Message d'emplacement géographique
7. Message de lien (message de réponse passif)
Les messages réguliers qui répondent passivement comprennent:
1. Répondre aux SMS
2. Répondre au message photo
3. Répondre aux messages vocaux
4. Répondre aux messages vidéo
5. Répondre aux messages musicaux
6. Répondre aux SMS
En fait, les deux actions de réception de messages et de messages de réponse passive sont inséparables. Ceci est un scénario interactif. D'une manière générale, le compte officiel donnera des réponses correspondantes en analysant les messages reçus. Bien sûr, certaines entreprises spéciales ne peuvent pas être exclues.
Comment recevoir des messages
Le format XML des messages à recevoir dans les 7 messages ne sera pas répertorié ici. Veuillez accéder au document officiel pour les afficher, avec des définitions de format spécifiques et des descriptions d'attribut. Le format est très simple. Les attributs communs de base incluent Tousername, FromUserName, CreateEtime, MsgType et MSGID, et chaque type a ses propres attributs spéciaux.
Après avoir vu cela, je comprends réellement que le processus de réception des messages est en fait le processus d'obtention du XML demandé par le post, puis d'analyser le XML. L'entrée pour la demande de poste est toujours l'adresse d'accès au compte officiel de WeChat mentionné précédemment. Toutes les demandes pour l'ensemble du compte officiel iront à cette entrée, mais c'est une demande de GET lors de l'accès, et dans d'autres cas, il s'agit d'une demande de poste. Dom4j est utilisé pour traiter XML. Le code de traitement XML est le suivant. Vous pouvez appeler la méthode parsexml dans la méthode post du servlet:
Public Static Map ParsExML (HttpServLetRequest Request) lève une exception {// Stockez le résultat analysé dans HashMap Map = new HashMap (); // Obtenez le flux d'entrée de la demande InputStream InputStream = request.getInputStream (); / ** Lire le contenu corporel de la demande de la demande entraînera des problèmes de lecture de flux de la fin du fichier. Exception imbriquée: * Fin prématuré de la chaîne de fichiers requestbody = * inputStream2String (inputStream); System.out.println (requestbody); * /// Lire le flux d'entrée saxReader Reader = new saxReader (); document document = reader.read (inputStream); // Obtenez l'élément root xml root root = document.getRooteLlement (); // Obtenez tous les nœuds enfants de la liste des élément root <element> elementList = root.Elements (); // TRAVOVELL All Child Nœuds pour (élément Element elementList) map.put (e.getName (), e.getText ()); // Release Resource inputStream.close (); inputStream = null; return map;} private static String inputStream2String (inputStream is) lance ioException {bytearrayoutputStream = new (i = i =.)! -1) {baos.write (i);} return baos.toString ();} Comment répondre passivement aux messages
Ci-dessous, je démontre le message construisant une réponse basée sur une telle logique, recevant le message texte "texte" et répondant au SMS; recevoir "l'image" et répondre au message d'image; recevoir la "voix" et répondre au message vocal; recevoir la "vidéo", en répondant au message vidéo; recevoir la "musique", en répondant au message musical; recevoir "l'image" et répondre au message d'image.
Répondre aux SMS comme explication:
<XML> <Tousername> <! [CDATA [La personne envoyant le message, c'est-à-dire l'abonné]]> </ Tausername> <FromUserName> <! [CDATA [WECHAT COMPTE OFFICIELLE SUI] chirurgie) </reateTetime> <sgType> <! [CDATA [Text]]> </sggType> <fonied> <! [CDATA [Message Content]> </ Content> </XML>
Les deux premiers attributs peuvent être obtenus à partir du message reçu, et le format de message reçu est le suivant:
<XML> <Tousername> <! [CDATA [TOULER]]> </ TOUSERNAME> <ROMUSERNAME> <! [CDATA [FromSer]]> </ FromUserName> <CreateEtime> 1348831860 </ CreateTime> <sgtype> <! [CDATA [Text]> </sgtype> Texte]]> </ponted> <sgid> 1234567890123456 </sglid> </XML>
Le nom de Tousername au format de message récepteur est le nom de FromUnser qui répond au message, et le nom de FromUnser dans le format de message de réception est le nom de Tuername qui répond au message.
CreateTime est l'horodatage envoyé par le message. MSGTYPE est le type de message et le texte est du texte. Le contenu est le contenu du message.
La réponse à chaque type de message consiste à construire le contenu du format XML de ce type. Les formats sont similaires, mais la musique, la vidéo, la voix et les formats graphiques sont légèrement plus compliqués que le contenu XML construit par messages texte. Pour plus de détails, veuillez vous référer à la documentation officielle. Je n'entrerai pas dans les détails ici, je crois que vous le comprendrez en un coup d'œil.