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

CenterOS7 Installations- und Konfigurationsumgebung jdk1.8 Tutorial

1. Deinstallieren Sie zuerst das mit CenterOS gel...

Beispiel für eine automatische Importmethode für das Vue3.0-Routing

1. Voraussetzungen Wir verwenden zum Importieren ...

Detaillierte Schritte zur Yum-Konfiguration des Nginx-Reverse-Proxys

Teil.0 Hintergrund Die Intranetserver des Unterne...

Detaillierte Erläuterung des einzeiligen Funktionscodes des Datumstyps in MySQL

Einzeilige Funktionen vom Datumstyp in MySQL: CUR...

Eine kurze Diskussion über MySQL-Ereignisplanungsaufgaben

1. Prüfen Sie, ob das Ereignis aktiviert ist Vari...

Schreiben Sie ein Publish-Subscribe-Modell mit JS

Inhaltsverzeichnis 1. Szeneneinführung 2 Code-Opt...

So erstellen Sie mit Dockerfile ein Spiegelbild der Java-Laufzeitumgebung

Die aktuelle Umgebung ist: Centos 7.5 docker-ce 1...