Table des matières
1. Nous implémentons la réponse post-événement sous routage d'index.
2. Implémentez la méthode post dans index_middleware :
3. Implémentez la méthode parseXMLAsync dans la fonction de l'outil util. Sa fonction est de formater de manière asynchrone des données XML en données JSON.
Quatrièmement, implémentez la fonction autoReply. Sa fonction est de traiter logiquement les paquets de données envoyés par le serveur WeChat pour former les données au format XML que nous devons envoyer à WeChat.
Maison interface Web js tutoriel Exemple d'événement de réponse de développement Node.js+Koa

Exemple d'événement de réponse de développement Node.js+Koa

Jun 25, 2017 am 09:15 AM
javascript personnel 开发 笔记

Les événements du compte officiel WeChat incluent les événements d'abonnement/les événements d'analyse de code/les événements de clic/les événements de lien de saut, etc. Pour plus de détails, veuillez vous référer à la documentation.

Implémentons l'événement d'abonnement ici. Le processus de mise en œuvre des autres événements est similaire.

Lorsque quelqu'un s'abonne au compte public, le serveur WeChat envoie un événement à notre serveur. Cet événement est un paquet de données au format XML.

1. Nous implémentons la réponse post-événement sous routage d'index.

On peut comprendre que lorsque WeChat envoie un message à notre serveur, le message ira ici en premier.

/routes/index.js ajouté :

router.post('/', index_middleware.post(config.wechat));
Copier après la connexion

2. Implémentez la méthode post dans index_middleware :

est la façon dont nous devrions gérer WeChat Postez la demande du serveur sur notre serveur.

Le processus général consiste à recevoir d'abord le paquet de données envoyé par le serveur WeChat, puis à analyser le paquet de données XML, puis à effectuer un traitement logique sur notre serveur en fonction des données reçues pour former un message de réponse au format XML. .

/wechat/index_middleware.js ajouté :

exports.post = function(opts) {return function *(next) {var token = opts.token;var signature = this.query.signature;var nonce = this.query.nonce;var timestamp = this.query.timestamp;var echostr = this.query.echostr;var str = [token, timestamp, nonce].sort().join('');var sha = sha1(str);if (sha !== signature) {this.body = 'wrong';return false;
        }var data = yield getRawBody(this.req, {
            length: this.length,
            limit: '1mb',
            encoding: this.charset
        });var message = yield util.parseXMLAsync(data);var xml = yield autoReply(message.xml, wechat);
        console.log(message);
        console.log(xml);this.status = 200;this.type = 'application/xml';this.body = xml;
    };
};
Copier après la connexion

Les données ici sont le paquet de données que nous avons reçu, en utilisant le composant corps brut. En même temps, la fonction outil util et la fonction personnalisée autoReply sont utilisées.

Par conséquent, le code suivant doit être ajouté à /wechat/index_middleware.js :

var getRawBody = require('raw-body');var util = require('./util');var autoReply = require('./autoReply');
Copier après la connexion

3. Implémentez la méthode parseXMLAsync dans la fonction de l'outil util. Sa fonction est de formater de manière asynchrone des données XML en données JSON.

/wechat/util.js :

var fs = require('fs');var xml2js = require('xml2js');

exports.parseXMLAsync = function(xml) {return new Promise(function(resolve, reject) {
        xml2js.parseString(xml, {
            trim: true,
            explicitArray: false}, function(err, content) {if (err) {
                reject(err);
            }
            resolve(content);
        });
    });
};
Copier après la connexion

Le composant xml2js est utilisé ici.

Quatrièmement, implémentez la fonction autoReply. Sa fonction est de traiter logiquement les paquets de données envoyés par le serveur WeChat pour former les données au format XML que nous devons envoyer à WeChat.

/wechat/autoReply.js :

var createXML = require('./createXML');function autoReply(message, wechat) {if (message.MsgType === 'event') {if (message.Event === 'subscribe') {if (message.EventKey) {
                console.log('扫码进入');
            }var now = new Date().getTime();return Promise.resolve(createXML({
                ToUserName: message.FromUserName,
                FromUserName: message.ToUserName,
                MsgType: 'text',
                Content: 'Hello!!'}));
        }else if (message.Event === 'unsubscribe') {
            console.log('取关');return Promise.resolve('');
        }
    }
}
Copier après la connexion

Seuls les événements de suivi et de désabonnement sont implémentés ici, et la fonction createXML est également utilisée. Les données sont encapsulées au format XML :

/wechat/createXML.js:

function createXML(messageObj) {var { ToUserName, FromUserName, MsgType = 'text'} = messageObj;var CreateTime = new Date().getTime();var header = `<xml>
                    <ToUserName><![CDATA[${ToUserName}]]></ToUserName>
                    <FromUserName><![CDATA[${FromUserName}]]></FromUserName>
                    <CreateTime>${CreateTime}</CreateTime>
                    <MsgType><![CDATA[${MsgType}]]></MsgType>`;var content = '';switch(MsgType) {case 'text':var { Content } = messageObj;
            content = `<Content><![CDATA[${Content}]]></Content>
                     </xml>`;break;case 'image':var { MediaId }  = messageObj;
            content = `<Image>
                         <MediaId><![CDATA[${MediaId}]]></MediaId>
                       </Image>
                     </xml>`;break;case 'voice':var { MediaId } = messageObj;
            content = `<Voice>
                         <MediaId><![CDATA[${MediaId}]]></MediaId>
                       </Voice>
                     </xml>`;break;case 'video':var { MediaId, Title, Description } = messageObj;
            content = `<Video>
                         <MediaId><![CDATA[${MediaId}]]></MediaId>
                         <Title><![CDATA[${Title}]]></Title>
                         <Description><![CDATA[${Description}]]></Description>
                       </Video> 
                     </xml>`;break;case 'music':var { Title, Description, MusicUrl, HQMusicUrl, ThumbMediaId } = messageObj;
            content = `<Music>
                         <Title><![CDATA[${Title}]]></Title>
                         <Description><![CDATA[${Description}]]></Description>
                         <MusicUrl><![CDATA[${MusicUrl}]]></MusicUrl>
                         <HQMusicUrl><![CDATA[${HQMusicUrl}]]></HQMusicUrl>
                         <ThumbMediaId><![CDATA[${ThumbMediaId}]]></ThumbMediaId>
                       </Music>
                     </xml>`;break;case 'news':var { Articles } = messageObj;var ArticleCount = Articles.length;
            content = `<ArticleCount>${ArticleCount}</ArticleCount><Articles>`;for (var i = 0; i < ArticleCount; i++) {
                content += `<item>
                                <Title><![CDATA[${Articles[i].Title}]]></Title>
                                <Description><![CDATA[${Articles[i].Description}]]></Description>
                                <PicUrl><![CDATA[${Articles[i].PicUrl}]]></PicUrl>
                                <Url><![CDATA[${Articles[i].Url}]]></Url>
                              </item>`;            }
            content += '</Articles></xml>';break;default:
            content = `<Content><![CDATA[Error]]></Content>
                     </xml>`;    }    var xml = header + content;return xml;
}

module.exports = createXML;
Copier après la connexion

Après avoir terminé le travail ci-dessus, démarrez notre serveur et suivez le compte officiel encore une fois, il devrait pouvoir recevoir un message Hello! ! information.

De cette manière, le traitement des événements d'intérêt est réalisé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment supprimer les notes Xiaohongshu Comment supprimer les notes Xiaohongshu Mar 21, 2024 pm 08:12 PM

Comment supprimer les notes de Xiaohongshu ? Les notes peuvent être modifiées dans l'application Xiaohongshu. La plupart des utilisateurs ne savent pas comment supprimer les notes de Xiaohongshu. Ensuite, l'éditeur propose aux utilisateurs des images et des textes expliquant comment supprimer les notes de Xiaohongshu. un regard ensemble ! Tutoriel d'utilisation de Xiaohongshu Comment supprimer les notes de Xiaohongshu 1. Ouvrez d'abord l'application Xiaohongshu et entrez dans la page principale, sélectionnez [Moi] dans le coin inférieur droit pour accéder à la zone spéciale 2. Ensuite, dans la zone Ma, cliquez sur la page de note comme suit : indiqué ci-dessous, sélectionnez la note que vous souhaitez supprimer ; 3. Accédez à la page de notes, cliquez sur [trois points] dans le coin supérieur droit ; 4. Enfin, la barre de fonctions s'agrandira en bas, cliquez sur [Supprimer] pour terminer.

Quatre outils de programmation assistés par IA recommandés Quatre outils de programmation assistés par IA recommandés Apr 22, 2024 pm 05:34 PM

Cet outil de programmation assistée par l'IA a mis au jour un grand nombre d'outils de programmation assistée par l'IA utiles à cette étape de développement rapide de l'IA. Les outils de programmation assistés par l'IA peuvent améliorer l'efficacité du développement, améliorer la qualité du code et réduire les taux de bogues. Ils constituent des assistants importants dans le processus de développement logiciel moderne. Aujourd'hui, Dayao partagera avec vous 4 outils de programmation assistés par l'IA (et tous prennent en charge le langage C#). J'espère que cela sera utile à tout le monde. https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot est un assistant de codage IA qui vous aide à écrire du code plus rapidement et avec moins d'effort, afin que vous puissiez vous concentrer davantage sur la résolution de problèmes et la collaboration. Git

Que dois-je faire si les notes que j'ai publiées sur Xiaohongshu sont manquantes ? Quelle est la raison pour laquelle les notes qu'il vient d'envoyer sont introuvables ? Que dois-je faire si les notes que j'ai publiées sur Xiaohongshu sont manquantes ? Quelle est la raison pour laquelle les notes qu'il vient d'envoyer sont introuvables ? Mar 21, 2024 pm 09:30 PM

En tant qu'utilisateur de Xiaohongshu, nous avons tous été confrontés à la situation où les notes publiées ont soudainement disparu, ce qui est sans aucun doute déroutant et inquiétant. Dans ce cas, que devons-nous faire ? Cet article se concentrera sur le thème « Que faire si les notes publiées par Xiaohongshu sont manquantes » et vous donnera une réponse détaillée. 1. Que dois-je faire si les notes publiées par Xiaohongshu manquent ? Premièrement, ne paniquez pas. Si vous constatez que vos notes manquent, il est essentiel de rester calme et de ne pas paniquer. Cela peut être dû à une défaillance du système de la plateforme ou à des erreurs opérationnelles. Vérifier les enregistrements de version est facile. Ouvrez simplement l'application Xiaohongshu et cliquez sur « Moi » → « Publier » → « Toutes les publications » pour afficher vos propres enregistrements de publication. Ici, vous pouvez facilement trouver des notes publiées précédemment. 3.Repost. Si trouvé

Comment ajouter des liens de produits dans les notes dans Xiaohongshu Tutoriel sur l'ajout de liens de produits dans les notes dans Xiaohongshu Comment ajouter des liens de produits dans les notes dans Xiaohongshu Tutoriel sur l'ajout de liens de produits dans les notes dans Xiaohongshu Mar 12, 2024 am 10:40 AM

Comment ajouter des liens de produits dans les notes dans Xiaohongshu ? Dans l'application Xiaohongshu, les utilisateurs peuvent non seulement parcourir divers contenus mais également faire des achats, il y a donc beaucoup de contenu sur les recommandations d'achat et le bon partage de produits dans cette application si vous êtes un expert. sur cette application, vous pouvez également partager des expériences d'achat, trouver des commerçants pour coopérer, ajouter des liens dans des notes, etc. De nombreuses personnes sont prêtes à utiliser cette application pour faire du shopping, car elle est non seulement pratique, mais elle a également de nombreux experts qui en feront recommandations. Vous pouvez parcourir du contenu intéressant et voir s'il existe des produits vestimentaires qui vous conviennent. Voyons comment ajouter des liens de produits aux notes ! Comment ajouter des liens de produits aux notes de Xiaohongshu Ouvrez l'application sur le bureau de votre téléphone mobile. Cliquez sur la page d'accueil de l'application

Introduction aux méthodes permettant aux particuliers de rejoindre WeChat d'entreprise Introduction aux méthodes permettant aux particuliers de rejoindre WeChat d'entreprise Mar 26, 2024 am 10:16 AM

1. Tout d’abord, ouvrez le logiciel d’entreprise WeChat que vous avez téléchargé sur votre téléphone mobile. Lors de la connexion, vous avez le choix entre deux manières : l'une consiste à utiliser l'identifiant WeChat, l'autre consiste à utiliser le numéro de téléphone mobile. 3. À ce stade, l'administrateur de l'entreprise doit ajouter votre numéro de téléphone mobile en arrière-plan, puis Enterprise WeChat identifiera l'entreprise en fonction de votre numéro de téléphone mobile. Affichez ensuite votre entreprise et cliquez sur l'option Entrer une entreprise ci-dessous. 4. Ensuite, vous pouvez saisir l'utilisation des fonctions du logiciel. On peut dire que le plus important est que votre numéro de téléphone mobile soit ajouté à l'entreprise par l'administrateur, sinon il ne sera pas disponible.

Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE Apr 07, 2024 am 09:10 AM

Le 3 mars 2022, moins d'un mois après la naissance de Devin, le premier programmeur d'IA au monde, l'équipe NLP de l'Université de Princeton a développé un agent SWE pour programmeur d'IA open source. Il exploite le modèle GPT-4 pour résoudre automatiquement les problèmes dans les référentiels GitHub. Les performances de l'agent SWE sur l'ensemble de tests du banc SWE sont similaires à celles de Devin, prenant en moyenne 93 secondes et résolvant 12,29 % des problèmes. En interagissant avec un terminal dédié, SWE-agent peut ouvrir et rechercher le contenu des fichiers, utiliser la vérification automatique de la syntaxe, modifier des lignes spécifiques et écrire et exécuter des tests. (Remarque : le contenu ci-dessus est un léger ajustement du contenu original, mais les informations clés du texte original sont conservées et ne dépassent pas la limite de mots spécifiée.) SWE-A

Apprenez à développer des applications mobiles en utilisant le langage Go Apprenez à développer des applications mobiles en utilisant le langage Go Mar 28, 2024 pm 10:00 PM

Didacticiel d'application mobile de développement du langage Go Alors que le marché des applications mobiles continue de croître, de plus en plus de développeurs commencent à explorer comment utiliser le langage Go pour développer des applications mobiles. En tant que langage de programmation simple et efficace, le langage Go a également montré un fort potentiel dans le développement d'applications mobiles. Cet article présentera en détail comment utiliser le langage Go pour développer des applications mobiles et joindra des exemples de code spécifiques pour aider les lecteurs à démarrer rapidement et à commencer à développer leurs propres applications mobiles. 1. Préparation Avant de commencer, nous devons préparer l'environnement et les outils de développement. tête

Résumé des cinq bibliothèques du langage Go les plus populaires : outils essentiels au développement Résumé des cinq bibliothèques du langage Go les plus populaires : outils essentiels au développement Feb 22, 2024 pm 02:33 PM

Résumé des cinq bibliothèques du langage Go les plus populaires : des outils essentiels au développement, nécessitant des exemples de code spécifiques. Depuis sa naissance, le langage Go a fait l'objet d'une attention et d'une application généralisées. En tant que langage de programmation émergent, efficace et concis, le développement rapide de Go est indissociable du support de riches bibliothèques open source. Cet article présentera les cinq bibliothèques de langage Go les plus populaires. Ces bibliothèques jouent un rôle essentiel dans le développement Go et offrent aux développeurs des fonctions puissantes et une expérience de développement pratique. Parallèlement, afin de mieux comprendre les usages et les fonctions de ces bibliothèques, nous les expliquerons avec des exemples de codes précis.

See all articles