Implementierung des WeChat-Applet-Nachrichten-Pushs in Nodejs

Implementierung des WeChat-Applet-Nachrichten-Pushs in Nodejs

Auswählen oder Erstellen einer Abonnementnachrichtenvorlage

Melden Sie sich beim WeChat-Applet an und suchen Sie nach Funktion -> Nachrichten abonnieren. Sie können die gewünschte Vorlage in der öffentlichen Vorlagenbibliothek auswählen. Wenn Sie nicht finden, was Sie brauchen, können Sie es selbst erstellen und auf die Überprüfung warten.

Nachdem Sie eine Vorlage ausgewählt und ihre Details angezeigt haben, erhalten Sie die Vorlagen-ID und die zum Senden von Push-Benachrichtigungen erforderlichen Felder.

Das Applet sendet eine Abonnementanfrage

Die im vorherigen Schritt erhaltene Vorlagen-ID wird benötigt

// Mini-Programm<Text className='rights-buy' onClick={this.messageSubmit}>
 Antrag auf Zulassung</Text>

// Abonnieren Sie die Abrechnungsanwendungsnachricht messageSubmit = () => {
 Taro.requestSubscribeMessage({
  tmplIds: ['SuGMwqyYY9cocuP-LxfElcM3a7ITaF34lKNux6EaE9'],
  Erfolg: (res) => {
   //Rufen Sie die Serverschnittstelle auf und schreiben Sie einen Abonnementdatensatz in die Datenbank // this.subscribeDeal()
  }
 })
}

Der Server initiiert den Push

Es gibt grundsätzlich zwei Arten von Push

  • Manueller Auslöser,
  • Eine weitere Sache ist, dass nach dem Abonnieren einer Nachricht eine bestimmte Bedingung erfüllt ist und der Push automatisch ausgelöst wird.

Im ersten Fall rufen Sie einfach direkt die Push-Schnittstelle von WeChat auf. Die zweite Situation ist etwas problematischer. Sie können eine zeitgesteuerte Aufgabe hinzufügen oder eine zugehörige Warteschlangenbibliothek verwenden, um die Aufgabe auszulösen, wenn die Bedingungen erfüllt sind.

Dinge zu beachten

  • Beim Push-Senden werden die OpenID und die Vorlagen-ID des Benutzers benötigt. Die spezifischen Push-Inhaltsfelder können in den Vorlagendetails des ersten Schritts angezeigt werden.
  • Beim Aufrufen der WeChat-Push-Schnittstelle benötigen Sie ein Zugriffstoken. Am besten zwischenspeichern Sie es. Häufige Aufrufe können zu einer Ungültigkeit führen.

Holen Sie sich den Zugriffstoken und speichern Sie ihn im Cache.

asynchron getAccessToken () {
 const { appId, appSecert, host } = this.app.config.idolWxAConfig;

 returniere neues Promise(async (resolve) => {
  const aktuelleZeit = neues Date().getTime()

  const redisToken = warte auf this.app.redis.get('wxtoken').get('token') || '{access_token: "", expries_time: 0}'
  const accessTokenJson = JSON.parse(redisToken)

  wenn (accessTokenJson.access_token === '' || accessTokenJson.expries_time < aktuelleZeit) {
   const res = warte auf dies.ctx.curl(`${host}/cgi-bin/token?appid=${appId}&secret=${appSecert}&grant_type=client_credential`, { dataType: 'json' })

   wenn (res.data) {

    accessTokenJson.access_token = res.data.access_token
    accessTokenJson.expries_time = neues Date().getTime() + (parseInt(res.data.expires_in) - 200) * 1000

    warte auf diese App.redis.get('wxtoken').set('token', JSON.stringify(accessTokenJson))
    auflösen(accessTokenJson)
   }
  } anders {
   auflösen(accessTokenJson)
  }
 })
}

Senden Sie eine Push-Anfrage an WeChat

asynchron sendSubscribeMsg(openid) {

 let requestData = {
  "touser": `${openid}`,
  "template_id": "SuGMwqyYY9cocuP-LxfElcM3a7ITaF34lKNux6EaE9",
  "Seite": `/Seiten/Zertifizierung/Index`,
  "Daten": {
    "Satz2": {
     "Wert": `Genehmigt`
    },
    "Ding3": {
     "value": `Ihre Bewerbung wurde geprüft und genehmigt`
    }
  }
 }

 const { host } = this.app.config.idolWxAConfig;
 // Access_toekn abrufen
 const tokenJson = warte auf dies.ctx.service.wx.getAccessToken()
 const res = warte auf dies.ctx.curl(`${host}/cgi-bin/message/subscribe/send?access_token=${tokenJson.access_token}
 `, {
  Methode: 'POST',
  Inhaltstyp: "json",
  Daten: Anfragedaten,
  Datentyp: „json“
 });

 wenn (res.data.errmsg === 'ok') {
  console.log('=======Push erfolgreich========')
  //ZU TUN
 } anders {
  console.log('========Push fehlgeschlagen=========')
  //ZU TUN
 }
}

Dies ist das Ende dieses Artikels über die Implementierung des Nodejs WeChat-Applet-Nachrichten-Pushs. Weitere relevante Inhalte zum Nodejs-Applet-Nachrichten-Push finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Beispielanalyse für Knotenereignisschleifen und Prozessmodule
  • Verständnis und Anwendungsbeispiele für Event Loop in node.js
  • Zusammenfassung der Wissenspunkte zu nicht blockierendem I/O und Ereignisschleifen in Node
  • Detaillierte Erläuterung des Beispiels einer Ausnahme in einer NodeJS-Überwachungsereignisschleife
  • Eine kurze Diskussion über asynchrone Node-E/A und Ereignisschleifen
  • Nodejs-Implementierungscode zum Senden von Nachrichten über DingTalk-Gruppenroboter
  • Implementierung des WeChat-Applet-Konfigurationsnachrichten-Pushs in node.js
  • Broadcast-Nachricht von socket.io in node.js
  • Analysieren der Knotenereignisschleife und der Nachrichtenwarteschlange

<<:  So installieren Sie Nginx in CentOS7

>>:  Grafisches Tutorial zur Konfigurationsmethode für die kostenlose Installationsversion von MySQL 5.7.17 (Windows 10)

Artikel empfehlen

Einführung in die neuen Funktionen von MySQL 8.0.11

MySQL 8.0 für Windows v8.0.11 offizielle kostenlo...

11 Linux-KDE-Anwendungen, die Sie nicht kannten

KDE Abkürzung für Kool Desktop Environment. Eine ...

Detaillierte Erklärung zur Verwendung von awk unter Linux

Bevor wir awk lernen, sollten wir sed, grep, tr, ...

Tutorial zu HTML-Tabellen-Tags (11): Horizontales Ausrichtungsattribut ALIGN

In horizontaler Richtung können Sie die Ausrichtu...

Vier Möglichkeiten zum Erstellen von Objekten in JS

Inhaltsverzeichnis 1. Objekte durch Literalwert e...

Detailliertes Tutorial zum Herunterladen und Installieren von mysql8.0.21

Offizielle Website-Adresse: https://www.mysql.com...

Detaillierte Erklärung der GaussDB zur MySQL-Leistungsoptimierung

Inhaltsverzeichnis Hintergrund Inspiration kommt ...

Detaillierte Erklärung zu MySQL und Springs Autocommit

1 MySQL Autocommit-Einstellungen MySQL führt stan...

JavaScript Dom implementiert das Prinzip und Beispiel eines Karussells

Wenn wir ein Karussell bauen wollen, müssen wir z...

Lösungen für häufige Probleme bei der Verwendung von Elasticsearch

1. Die Verwendung mit Redis führt zu Startkonflik...

4 Möglichkeiten, sich schnell Linux-Befehle selbst beizubringen

Wenn Sie ein Linux-Meister werden möchten, ist di...

Vue Uniapp realisiert den Segmentierungseffekt

In diesem Artikel wird der spezifische Code von V...

Detaillierte Erläuterung des MySQL MVCC-Mechanismusprinzips

Inhaltsverzeichnis Was ist MVCC Mysql-Sperre und ...