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

Fallstudie zum Zusammenführen von JavaScript-Arrays

Methode 1: var a = [1,2,3]; var b=[4,5] a = a.con...

JavaScript erklärt die Kapselung und Verwendung von Zeitlupenanimationen

Durchführung von Prozessanalysen (1) Wie rufe ich...

Zusammenfassung gängiger Fehler beim Entwurf von MySQL-Tabellen

Inhaltsverzeichnis Fehler 1: Zu viele Datenspalte...

So ändern Sie das Datenbankdatenspeicherverzeichnis in MySQL

Vorwort Die Standarddatenbankdatei der MySQL-Date...

Vue3.0+vite2 implementiert dynamisches asynchrones Lazy Loading von Komponenten

Inhaltsverzeichnis Erstellen Sie ein Vite-Projekt...

Führen Sie die Initialisierungs-SQL aus, wenn Docker MySQL startet

1. Ziehen Sie das Mysql-Image docker pull mysql:5...

CSS-Standard: Eigenschaft „vertical-align“

<br />Originaltext: http://www.mikkolee.com/...

So zeigen Sie die Ausführungszeit von MySQL-Anweisungen über Query Profiler an

Im vorherigen Artikel wurden zwei Methoden zum Üb...

Führen Sie die Schritte zur Installation von MySQL 8.0.x unter Linux aus.

MySQL Einführung in MySQL MySQL war ursprünglich ...

Spezifische Verwendung von MySQL-Fensterfunktionen

Inhaltsverzeichnis 1. Was ist eine Fensterfunktio...

Detaillierte Erklärung der MySQL DEFINER-Verwendung

Inhaltsverzeichnis Vorwort: 1. Kurze Einführung i...

Der Unterschied zwischen Löschen, Abschneiden und Löschen und wie man wählt

Vorwort Letzte Woche fragte mich ein Kollege: „Br...