Heim >Web-Frontend >js-Tutorial >Erstellen eines Facebook -Chat -Bots mit Node und Heroku

Erstellen eines Facebook -Chat -Bots mit Node und Heroku

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌Original
2025-02-17 10:52:14811Durchsuche

Erstellen Sie einen Facebook-Chatbot mit Node.js und Heroku, von denen Joan Yin und Camilo Reyes überprüft wurden. Vielen Dank an alle SitePoint -Peer -Rezensenten, die SidePoint -Inhalte für den Besten erhalten haben!

Building a Facebook Chat Bot with Node and Heroku

Auf der F8 -Konferenz des letzten Jahres startete Facebook die Messenger -Plattform und ermöglichte Entwickler, Bots zu erstellen, die mit Personen auf Messenger- oder Facebook -Seiten sprechen können. Mit Robotern können Anwendungsbesitzer besser mit Benutzern interagieren, indem sie personalisierte und interaktive Kommunikation bereitstellen, die den Massen erweitert werden können. Seit seiner Start haben Unternehmens- und Anwendungsbesitzer großes Interesse an Chatbots gezeigt. Drei Monate nach der Ankündigung wird geschätzt, dass auf der Plattform 11.000 Roboter aufgebaut wurden.

Chatbots profitieren nicht nur Unternehmen und Anwendungsbesitzer. Benutzer dieser Roboter können zahlreiche Dienste genießen, wie z. B.

  • Erhalten Sie sofortigen Kundensupport
  • Reserve Flüge
  • Kinokarten
  • kaufen
  • Holen Sie sich Netflix -Filmempfehlungen
  • Get Weather Prognose
  • Folgen Sie den Nachrichten
  • Beziehen Sie Kleider Rat
  • Ideen für Abendessen, basierend auf den anstehenden Zutaten
  • Unterhaltung

Das aktuelle Interesse und die Attraktivität von Chatbots sind offensichtlich.

In diesem Artikel werden wir untersuchen, wie Sie einen Facebook -Chatbot erstellen, der im Namen von Facebook -Seiten mit Benutzern über Messenger interagieren kann. Wir werden einen Roboter erstellen, mit dem Benutzer verschiedene Details zu den von ihnen angegebenen Filmen liefern können.

Schlüsselpunkte

  • Bereitstellen eines Facebook -Chatbots mit Node.js und Heroku umfasst die Einrichtung eines Servers für die Interaktion mit der Facebook -Graph -API und das Konfigurieren eines Webhook -Endpunkts, um Nachrichten zu verarbeiten.
  • Erstellen einfacher Regeln basierender Chatbots erfordert kein grundlegendes KI oder maschinelles Lernen, obwohl die Integration von NLP die Fähigkeit des Roboters verbessern kann, auf natürliche Weise mit Benutzern zu interagieren.
  • Heroku -Plattform dient zur Bereitstellung, da sie HTTPS nicht in der Box unterstützt, was für die Überprüfung von Facebook -Webhook erforderlich ist.
  • Umgebungsvariablen in Heroku sind für den Schutz von API -Token und sensiblen Daten unerlässlich, um sicherzustellen, dass diese Details nicht in den Quellcode der Anwendung festgelegt sind.
  • Die Facebook Messenger -Plattform ermöglicht die Erstellung eines reichhaltigen Benutzererlebnisses mit Funktionen, einschließlich eines Begrüßungsbildschirms und einer Startschaltfläche, die für die Initiierung von Interaktionen konfiguriert werden kann.
  • MongoDB, das auf MLAB gehostet wird, wird verwendet, um Benutzerdaten und Sitzungsstatus zu verwalten, um sicherzustellen, dass Chatbots laufende Benutzerinteraktionen effektiv verfolgen und reagieren können.
  • Damit der Chatbot live gehen und mit der Öffentlichkeit interagieren, muss er den Überprüfungsprozess von Facebook durchlaufen und übergeben, um die Einhaltung der Plattformrichtlinien und Sicherheitsstandards zu gewährleisten.

Muss ich KI verstehen, um Roboter zu bauen?

KI -KI kann sicherlich helfen, insbesondere wenn es um den Bau komplexer Roboter geht, aber es ist nicht notwendig. Sie können sicherlich einen Roboter bauen, ohne maschinelles Lernen zu verstehen.

Sie können zwei Arten von Robotern erstellen. Einer basiert auf einer Reihe von Regeln, und der andere verwendet maschinelles Lernen. Ersteres ist in Bezug auf die Wechselwirkungen begrenzt, die es bereitstellen kann. Es kann nur auf bestimmte Befehle reagieren. Dies ist die Art von Roboter, die wir bauen werden.

Mit maschinellem Lernrobotern können Sie eine bessere Benutzerinteraktion erhalten. Benutzer können mit dem Roboter natürlicher interagieren wie in der menschlichen Interaktion, anstatt nur Befehle zu verwenden. Roboter werden auch schlauer, als sie aus Gesprächen mit Menschen lernt. Wir werden die Konstruktion dieser Art von Roboter in zukünftigen Artikeln retten. Es ist jedoch kein Wissen für maschinelles Lernen erforderlich. Glücklicherweise gibt es Dienste wie Wit.ai und API.AI, die es Entwicklern ermöglichen, maschinelles Lernen (insbesondere natürliche Sprachverarbeitung - NLP) in ihre Anwendungen zu integrieren.

starten

Sie können den Code für die abgeschlossene Demo -Anwendung von hier herunterladen.

Damit Ihr Chatbot mit Facebook -Nutzern kommunizieren kann, müssen wir einen Server einrichten, um Nachrichten zu empfangen, zu verarbeiten und zu senden. Der Server verwendet dafür die Facebook -Graph -API. Die Graph -API ist die Hauptmethode, um in die Facebook -Plattformdaten ein- und auszusteigen. Der Server muss über eine Endpoint -URL verfügen, auf die der Facebook -Server zugreifen kann. Die Bereitstellung einer Webanwendung auf dem lokalen Computer funktioniert daher nicht. Sie müssen sie online bringen. Beginnend mit Version 2.5 der Graph -API müssen neue Abonnements zum Dienst eine sichere HTTPS -Callback -URL verwenden. In diesem Tutorial stellen wir die Anwendung für Heroku bereit, da alle Standarddomänen von appname.herokuapp.com SSL aktiviert sind. Wir werden node.js verwenden, um Webanwendungen zu erstellen.

Stellen Sie zunächst sicher, dass der Knoten auf Ihrem Computer installiert ist. Sie können dies überprüfen, indem Sie Knoten -v in das Terminal eingeben. Bei der Installation wird die Versionsnummer ausgegeben. Installieren Sie dann die Heroku Command Line Interface (CLI). Wir werden es später verwenden, um die App nach Heroku zu bringen. Verwenden Sie Heroku -Verssion, um zu überprüfen, ob die CLI installiert ist.

Erstellen Sie das Projektverzeichnis und initialisieren Sie die Paket.json -Datei mit dem folgenden Befehl.

<code>$ mkdir spbot
$ cd spbot
$ npm init</code>

Befolgen Sie die Eingabeaufforderungen, um Ihre Projekteinstellungen festzulegen.

Öffnen Sie nach dem Generieren der Datei package.json sie und fügen Sie die Starteigenschaft zum Skriptobjekt hinzu. Auf diese Weise kann Heroku wissen, welchen Befehl ausführen soll, um die Anwendung zu starten. Während der Projekteinrichtung definiere ich App.js als Einstiegspunkt der Anwendung, daher verwende ich Node App.js als Wert des Starts. Ändern Sie diese Einstellung gemäß Ihren Projekteinstellungen.

<code>{
  "name": "spbot",
  "version": "1.0.0",
  "description": "SPBot Server",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node app.js"
  },
  "author": "Joyce Echessa",
  "license": "ISC"
}</code>

Installieren Sie die folgenden Knotenpakete.

<code>$ npm install express request body-parser mongoose --save</code>

Erstellen Sie eine .Gitignore -Datei im Stammverzeichnis des Projekts und geben Sie den Ordner node_modules ein, um zu verhindern, dass sie übermittelt wird.

<code>node_modules</code>

Erstellen Sie im Stammverzeichnis des Projekts eine Datei mit dem Namen app.js (index.js, wenn der Standardname verwendet wird). Ändern Sie es wie folgt:

<code class="language-javascript">var express = require("express");
var request = require("request");
var bodyParser = require("body-parser");

var app = express();
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.listen((process.env.PORT || 5000));

// 服务器索引页面
app.get("/", function (req, res) {
  res.send("已部署!");
});

// Facebook Webhook
// 用于验证
app.get("/webhook", function (req, res) {
  if (req.query["hub.verify_token"] === "this_is_my_token") {
    console.log("已验证 webhook");
    res.status(200).send(req.query["hub.challenge"]);
  } else {
    console.error("验证失败。令牌不匹配。");
    res.sendStatus(403);
  }
});</code>

Der erste Get -Handler wird für unsere eigenen Tests verwendet - um festzustellen, ob die Anwendung erfolgreich bereitgestellt wurde. Der zweite Get -Handler ist der Endpunkt, den Facebook verwendet, um die Anwendung zu validieren. Der Code sollte nach Verification_Token suchen und mit der in der Verifizierungsanforderung gesendeten Herausforderung antworten.

Sie können Ihr eigenes Token in den Code einfügen. Diese Art von Daten wird am besten in Umgebungsvariablen gespeichert, die wir sofort nach dem Erstellen des Projekts auf Heroku durchführen werden.

Einsatz in Heroku

Damit die Facebook -Plattform eine Verbindung zu unserer Backend -Anwendung herstellen kann, müssen wir sie zunächst online bringen.

Erstellen Sie ein Git -Repository und senden Sie das Projekt mit dem folgenden Befehl:

<code>$ git init
$ git add .
$ git commit -m "Initial commit"</code>

Wenn Sie es noch nicht getan haben, melden Sie sich bitte für ein kostenloses Heroku -Konto an.

Melden Sie sich von Ihrem Terminal bei Heroku an und erstellen Sie eine Anwendung.

<code>$ heroku login
$ heroku create
$ git push heroku master
$ heroku open</code>

Nach dem Ausführen des Befehls heroku open wird der Link zum Ausführen der Anwendung in Ihrem Standardbrowser geöffnet. Wenn alles gut läuft, sehen Sie eine Seite mit dem Text "Bereitet!".

Umgebungsvariablen erstellen

Erstellen wir vor fortgeschrittener, erstellen wir eine Umgebungsvariable auf Heroku, um den Überprüfungs -Token der Anwendung zu speichern.

Öffnen Sie Ihr Heroku -Dashboard und wählen Sie die gerade bereitgestellte Anwendung aus. Gehen Sie zu den Einstellungen der Anwendung und klicken Sie auf die Schaltfläche Zeigen Sie die Konfigurationsvariablen . Geben Sie Verification_Token als Schlüssel ein, geben Sie Ihr Token als Wert ein und klicken Sie dann auf , um hinzuzufügen.

Building a Facebook Chat Bot with Node and Heroku

Ändern Sie in Ihrem Code Ihre Token -String ("this_is_my_token") in process.env.verification_token. Senden Sie Ihre Änderungen und schieben Sie sie nach Heroku.

Facebook -Seiten und -Anwendungen erstellen

Wenn der Server in Betrieb ist, erstellen wir nun eine Facebook -Anwendung und seine zugehörige Seite. Sie können eine neue Seite erstellen oder eine vorhandene Seite verwenden.

Um eine Facebook -Seite zu erstellen, melden Sie sich bei Facebook an und gehen Sie zur Seite erstellen. Wählen Sie den Seitentyp aus den angegebenen Optionen aus. Ich habe Entertainment gewählt.

Building a Facebook Chat Bot with Node and Heroku

Wählen Sie dann die Kategorie und den Namen der Seite aus.

Building a Facebook Chat Bot with Node and Heroku

Nach dem Klicken auf starten wird eine Seite erstellt, und Sie werden aufgefordert, detailliertere Informationen zu Ihrer Anwendung (Beschreibung, Website, Profilbild, Zielgruppe usw.) bereitzustellen. Sie können diese Setup -Schritte jetzt überspringen.

Building a Facebook Chat Bot with Node and Heroku

Um eine Facebook -Anwendung zu erstellen, wechseln Sie zum neuen Anwendungsseite und klicken Sie auf die grundlegende Einstellungen unten, um die unten auszuwählen.

Building a Facebook Chat Bot with Node and Heroku

Füllen Sie die erforderlichen detaillierten Informationen ein. Wählen Sie page-orientierte Anwendung als Kategorie.

Building a Facebook Chat Bot with Node and Heroku

Nach dem Klicken auf App ID wird das Dashboard der Anwendung geöffnet.

Building a Facebook Chat Bot with Node and Heroku

in den Produkteinstellungen auf der rechten Seite klicken Sie im Abschnitt Messenger auf , um zu starten. Sie werden dann wie unten gezeigt auf die Messenger -Einstellungsseite gebracht.

Building a Facebook Chat Bot with Node and Heroku

Um Nachrichten und andere von Messenger -Nutzern gesendete Ereignisse zu empfangen, sollte die Anwendung die Integration von Webhook aktivieren. Wir werden das als nächstes tun. Webhook (früher als

Live -Update bekannt) können Sie Änderungen abonnieren, die Sie in Echtzeit nachverfolgen und empfangen möchten, ohne die API anzurufen.

Klicken Sie im Abschnitt Webhook auf

Webhook festlegen

Geben Sie die aktualisierte Callback -URL ein (die in der Backend -Anwendung definierte Endpunkt -URL, d. H.

/webhook), und geben Sie den Überprüfungs -Token (das in der Backend -Anwendung verwendete Token ein, d. H. Im Prozess gespeichert. Wert in env. Verification_token) und alle Kontrollkästchen auswählen. Diese geben an, welche Ereignisse die Anwendung abonniert. Wir werden später die Rolle dieser Ereignisse kennenlernen.

Building a Facebook Chat Bot with Node and Heroku

Nachdem Sie Webhook erfolgreich aktiviert haben, sollten Sie im Bereich Webhook fertiggestellt werden, sowie eine Liste von abonnierten Ereignissen. Wenn Sie einen Fehler erhalten, stellen Sie sicher, dass Sie die richtige URL für den Webhook -Endpunkt eingegeben haben (enden Sie mit /Webhook) und stellen Sie sicher, dass das hier verwendete Token dieselbe ist wie die, die Sie in Ihrer Knotenanwendung verwenden.

Building a Facebook Chat Bot with Node and Heroku

Wählen Sie im Abschnitt Token-Generierung Ihre Seite im Dropdown-Menü aus. Nach der Authentifizierung wird für Sie ein Seiten -Zugriffs -Token generiert.

Building a Facebook Chat Bot with Node and Heroku

Erstellen Sie eine andere Umgebungsvariable auf Heroku und setzen Sie den Schlüssel auf page_access_token und nehmen Sie das generierte Token als value . Beachten Sie, dass das generierte Token auf der aktuellen Seite, auf der es auf Facebook angezeigt wird, nicht gespeichert wird. Jedes Mal, wenn Sie auf die Seite zugreifen, ist das Feld "Seitenzugriffs-Token" leer und ein neues Token wird generiert, wenn Sie Ihre Facebook-Seite im Dropdown-Menü der Seite auswählen. Jedes zuvor erstellte Token wird jedoch weiterhin funktionieren. Kopieren Sie also das Token, bevor Sie die Seite schließen.

Damit Ihr Webhook Ereignisse auf einer bestimmten Seite empfangen, müssen Sie Ihre Bewerbung auf dieser Seite abonnieren. Wählen Sie im Abschnitt Webhook die Seite, die Sie abonnieren möchten.

Building a Facebook Chat Bot with Node and Heroku

Willkommensbildschirm

Das erste, was Benutzer sehen, wenn sie ein neues Gespräch mit Ihrem Bot starten, ist der Begrüßungsbildschirm. In diesem Bildschirm werden Name, Beschreibung, Profilbild und Titelfoto Ihrer Seite angezeigt. Sie können den Bildschirm anpassen, indem Sie den Grußtext einstellen, der anstelle der Seitenbeschreibung verwendet wird. Sie können es verwenden, um Einführungsnachrichten einzurichten, um Benutzer mitzuteilen, was sie von Ihrem Bot erhalten können.

standardmäßig sendet der Benutzer die erste Nachricht an Ihren Bot, um eine Konversation zu starten. Sie können jedoch die Startschaltfläche aktivieren, damit Ihr Bot anfängliche Nachrichten senden kann. Die Schaltfläche sendet ein Ereignis an Ihren Server, auf den Sie dann antworten können.

, um Grußtext festzulegen, Ihre Seite zu öffnen und zu seiner set .

Building a Facebook Chat Bot with Node and Heroku

Wählen Sie Nachricht aus dem linken Bereich und öffnen Sie im rechten Bereich, um Messenger -Grüße anzuzeigen. Stellen Sie Nachrichten auf Ihre Einstellungen ein.

Building a Facebook Chat Bot with Node and Heroku

So aktivieren Sie die Startschaltfläche, ersetzen Sie die Zeichenfolge page_access_token in der folgenden Anweisung durch Ihr Token und fügen Sie den Befehl in das Terminal ein.

<code>$ mkdir spbot
$ cd spbot
$ npm init</code>

Die obige Operation sendet eine Anfrage an die Facebook -Graph -API. Wenn die Anfrage erfolgreich ist, wird der Start -Schaltfläche auf dem Begrüßungsbildschirm der neuen Konversation angezeigt. Der Benutzer klickt auf diese Schaltfläche und löst den empfangenen Rückruf aus. Ihr Bot kann dann auf diesen Postback antworten.

Postback kann durch verschiedene Arten von Komponenten ausgelöst werden - Schaltfläche zum Abbau, Startschaltfläche, persistentes Menü oder strukturierte Nachrichten. Sie können jede Zeichenfolge als Nutzlast festlegen. Im Backend werden wir diese Zeichenfolge verwenden, um Postbacks zu identifizieren, die aufgrund des Klickens auf die Schaltfläche Start gesendet werden. Um Postback -Nachrichten zu erhalten, muss Ihre Bewerbung einen Postback in Ihrem Webhook abonnieren. Wir haben dies bereits bei der Einrichtung des Webhooks gemacht, indem wir das Kontrollkästchen Messaging_Postbacks ausgewählt haben.

Wenn die Startschaltfläche erfolgreich eingestellt ist, wird die folgende Antwort angezeigt.

<code>{
  "name": "spbot",
  "version": "1.0.0",
  "description": "SPBot Server",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node app.js"
  },
  "author": "Joyce Echessa",
  "license": "ISC"
}</code>

Denken Sie daran, dass der Begrüßungsbildschirm und die Startschaltflächen nur in neuen Gesprächen angezeigt werden. Wenn Sie den Bot codieren und testen, können Sie ein neues Gespräch beginnen, indem Sie das aktuelle Gespräch löschen.

Um nach Postback -Nachrichten zu verarbeiten, fügen Sie Folgendes in Ihre Knotenanwendung ein.

<code>$ npm install express request body-parser mongoose --save</code>

Wenn jemand mit Ihrem Bot interagiert oder eine Nachricht an Ihre Seite sendet, werden Updates über Ihre Webhook -Integration gesendet. Um die Nachricht zu erhalten, müssen Sie einen Post -Anruf im Webhook anhören. Alle Rückrufe werden an diesen Webhook gesendet.

Im obigen Post -Handler iterieren wir die an die Anwendung gesendeten Nachrichteneinträge. Manchmal werden Nachrichten in Chargen zusammengesandt, sodass ein Eintrag mehrere Objekte enthalten kann. Anschließend durch das Nachrichtenereignis für jeden Eintrag durchlaufen und seinen Typ überprüfen. Im Folgenden finden Sie verschiedene Rückrufnachrichten, die an die Anwendung gesendet werden können.

  • Empfangene Nachrichtenrückruf - Wenn eine Person eine Nachricht an Ihren Bot sendet, wird ein empfangener Nachrichten -Rückruf gesendet. Beim Einrichten eines Webhook müssen Sie das Nachrichtenereignis abonniert haben.
  • erhalten nach dem Postback -Rückruf - Wenn eine Person auf eine Schaltfläche klickt, die Ihnen einen Postback gesendet hat, wird ein empfangener Postback -Rückruf gesendet. Um den Rückruf von Postback abzurufen, müssen Sie beim Einstellen des Webhooks das Ereignis von Messaging_Postbacks abonniert haben.
  • Zugegebene Nachrichten -Rückruf - Dieser Rückruf tritt auf, wenn die von der Seite gesendete Nachricht zugestellt wurde. Beim Einrichten eines Webhook müssen Sie das Ereignis von Message_Deliveries abonniert haben.
  • Authentifizierungsrückruf -Dieser Rückruf tritt auf, wenn das Send-an-Messenger-Plugin geklickt wird. Beim Einrichten eines Webhook müssen Sie das Ereignis von Messaging_optins abonniert haben.
  • Leser Nachrichten zurückgezogen - Dieser Rückruf tritt auf, wenn die von der Seite gesendete Nachricht vom Benutzer gelesen wurde. Beim Einrichten eines Webhook müssen Sie das Ereignis von Message_reads abonniert haben.
  • Meldung Echo Callback - Dieser Rückruf tritt auf, wenn Ihre Seite eine Nachricht sendet. Sie können Textnachrichten oder Nachrichten mit Anhängen (Bilder, Videos, Audios, Vorlagen oder Alternativen) empfangen. Beim Einrichten eines Webhook müssen Sie das Ereignis von Message_echoes abonniert haben.
  • Checkout Update Update Callback (Beta) - Dieser Rückruf tritt bei der Verwendung einer Kauftaste mit einer flexiblen Menge Transaktion auf. Auf diese Weise können Sie die Preise basierend auf der Lieferadresse aktualisieren. Beim Einrichten eines Webhook müssen Sie das Ereignis von Messaging_Checkout_Updates abonniert haben. Derzeit ist diese Funktion außerhalb der USA nicht verfügbar.
  • Zahlungsrückruf (Beta) - Dieser Rückruf tritt auf, wenn eine Person im Dialogfeld Checkout auf die Schaltfläche "Zahlung" klickt. Beim Einrichten eines Webhook müssen Sie das Ereignis von Messaging_Payments abonniert haben. Derzeit ist diese Funktion außerhalb der USA nicht verfügbar.

Wenn das Ereignis nach dem Nachback ist, werden wir die Funktion processPostback () aufrufen, in der wir den Nutzlastwert überprüfen. Denken Sie daran, dass wir die Begrüßung auf die Nutzlast der Startschaltfläche festlegen. Hier überprüfen wir also zuerst, ob das Meldungsereignis aufgrund des Klickens auf die Schaltfläche gesendet wurde. In diesem Fall verwenden wir die Benutzerprofil -API, um den Namen des Benutzers zu erhalten und die Nachricht zu personalisieren, die an diese zurückgesendet wird. Aus der API können Sie ihren Namen, ihren Nachnamen, das Profilbild, das Gebietsschema, ihre Zeitzone und das Geschlecht erhalten.

Senden Sie die Nachricht an die Funktion "sendMessage (), die sie an die Messenger -Plattform veröffentlicht. Im Webhook Post -Handler geben wir 200 OK HTTP -Antwort zurück.

so schnell wie möglich 200 zurückkehren, ist sehr wichtig. Facebook wird 200 warten, bevor die nächste Nachricht gesendet wird. In einem Bot mit großer Kapazität kann eine Verzögerung von 200 Renditen zu einer erheblichen Verzögerung für Facebook führen, dass Facebook Nachrichten an Ihren Webhook übermittelt.

Wenn Ihr Webhook einen Fehler zurückgibt (d. H. Kein 2xx -Zustand) oder Timeout (z.

Wenn das Webhook 8 Stunden lang fehlschlägt, sendet Facebook Ihnen eine Warnung, in der Sie darüber informiert werden, dass das Webhook deaktiviert ist und Ihre App abhebt. Nachdem Sie das Problem behoben haben, müssen Sie den Webhook neu anpassen und die Anwendung wieder auf die Seite abschreiben.

reichen Änderungen ein und drücken Sie sie nach Heroku.

Um den Bot zu testen, können Sie Ihren Messenger -Kurzlink von Facebook.com, Facebook Mobile App verwenden oder Ihren Messenger -Kurzlink https://www.php.cn/link/1fd37ce80d495Bebcb35e0054d7384Fe .

Auf Facebook und Messenger finden Sie die Seite, indem Sie nach dem Seitennamen suchen.

Building a Facebook Chat Bot with Node and Heroku

Wie Sie oben sehen können, können Sie nicht immer garantieren, dass der Name der Seite eindeutig ist. Ihre Benutzer können die falsche Seite auswählen. Um dies zu vermeiden, können Sie einen einzigartigen Benutzernamen für die Seite festlegen. Gehen Sie dazu auf die Homepage Ihrer Seite und wählen Sie im Dropdown-Menü mehr , um die Seiteninformationen zu bearbeiten.

Building a Facebook Chat Bot with Node and Heroku

Stellen Sie dann den Benutzernamen fest.

Building a Facebook Chat Bot with Node and Heroku

Wenn Sie nun nach @page_username suchen, erhalten Sie die richtige Seite. Sie können auch

https://www.php.cn/link/13f3d8f0b1d534d2ce312263653c5594 besuchen, um die Interaktion zu starten.

Wie unten gezeigt, können Sie den Grußtext sehen, den wir für den Begrüßungsbildschirm und die Taste

starten.

Building a Facebook Chat Bot with Node and Heroku Nachdem Sie auf diese Schaltfläche geklickt haben, sollten Sie eine vom Server gesendete Nachricht sehen.

Building a Facebook Chat Bot with Node and Heroku Wenn Sie einen Text eingeben, erhalten Sie keine Antwort. Wir werden dieses Problem als nächstes lösen.

Einrichten Sie die Datenbank

Wenn der Benutzer den Filmnamen eingibt, verwendet der Roboter die Open Movie Database -API, um die Details des Films zu erhalten. Die API -Anfrage, die wir verwenden werden, wird nur das erste Spielergebnis erhalten, sodass der zurückgegebene Film möglicherweise nicht immer das ist, was der Benutzer will. Daher bestätigt der Roboter zunächst dem Benutzer, ob er den richtigen Film erhalten hat, und danach kann der Benutzer detaillierte Informationen wie die Handlung, die Besetzung, die IMDB -Bewertungen usw. des Films erhalten. Sie können auch einen anderen Filmnamen eingeben und ihre Details erhalten.

Aufgrund dieser Hin- und Her -Interaktion muss sich der Roboter an den aktuellen Filmeintrag des Benutzers erinnern. Facebook hält die Sitzung nicht mit Ihrem Webhook geöffnet. Daher gehen alle Daten, die Sie im Sitzungsobjekt speichern, in der nächsten Anfrage verloren. Wir werden diese Daten stattdessen in der Datenbank speichern - monodb speziell. Wir werden das MLAB-Add-On für Heroku verwenden.

MLAB ist ein Datenbank-AS-A-Service für MongoDB. Während Sie auf Heroku den kostenlosen Sandbox MLAB -Plan verwenden können, müssen Sie Ihre Kreditkarte auf Heroku zur Überprüfung sparen. Wenn Sie Ihre Kartendaten nicht angeben möchten, können Sie ein Konto auf der MLAB -Website registrieren, auf dem Sie eine kostenlose Schicht der Sandbox -Datenbank erstellen und von Ihrem Code aus dieser Datenbank (dazu später) zu dieser Datenbank verlinken.

Um Add-Ons auf Heroku zu verwenden, gehen Sie zum Dashboard der Anwendung und wählen Sie die Registerkarte Ressourcen . Suchen Sie nach MLAB und wählen Sie das Ergebnis aus. Wählen Sie im Dialogfenster, das auftaucht, Sandbox - kostenloser Plan im Dropdown -Menü und klicken Sie auf Bereitstellung . Sie sollten die Bestätigung für das ausgewählte Add-On sehen.

Building a Facebook Chat Bot with Node and Heroku

Wenn Sie die Umgebungsvariablen auf Heroku überprüfen, sehen Sie eine Variable mit dem MongoDB -URI -Set.

Building a Facebook Chat Bot with Node and Heroku

Richten Sie die Datenbank über die MLAB -Website

ein

Wenn Sie es vorziehen, eine MongoDB -Datenbank auf Ihrer MLAB -Website einzurichten, registrieren Sie dort ein Konto und gehen Sie zum Erstellen einer neuen Bereitstellungsseite. Ändern Sie die Einstellung Plan in einzelner Knoten und wählen Sie Sandbox aus der Abschnitt Standardzeile .

Building a Facebook Chat Bot with Node and Heroku

Stellen Sie einen Namen für Ihre Datenbank fest und klicken Sie auf die Erstellen Sie eine neue MongoDB -Bereitstellung , um den Prozess abzuschließen.

Building a Facebook Chat Bot with Node and Heroku

Wählen Sie auf der folgenden Seite die Datenbank aus, die Sie gerade aus der angezeigten Tabelle erstellt haben. Eine Seite wird mit Anweisungen zum Zugriff auf die Datenbank geöffnet.

Wählen Sie die Registerkarte Benutzer und klicken Sie auf die Schaltfläche Datenbank Benutzer hinzufügen. Geben Sie Ihren Benutzernamen und Ihr Passwort ein und klicken Sie auf erstellen. Dadurch werden ein neuer Anmeldeinformationssatz erstellt, mit dem Sie Ihre Anwendung auf die Datenbank zugreifen können.

In der oberen Hälfte der Seite finden und kopieren Sie die Datenbank URI - es sieht aus wie Mongodb: // : @dsxxxxxx.mlab.com: 55087/spbot. Fügen Sie den von Ihnen erstellten DBUSER -Namen und das Kennwort ein. Erstellen Sie auf Heroku eine Umgebungsvariable mit dem Namen mongoDB_uri und fügen Sie die URI der Datenbank als Wert ein.

Definieren Sie die Modellklasse

Zurück zur Knotenanwendung, erstellen Sie eine Datei namens Movie.js und speichern Sie sie in einem Ordner namens Models. Fügen Sie Folgendes in die Datei ein:

<code>$ mkdir spbot
$ cd spbot
$ npm init</code>

Das Filmdatenbankmodell wird oben erstellt. user_id ist die von der Messenger -Plattform erhaltene Benutzer -ID, während andere Felder von der Film -API erhalten werden. Wir werden nur die letzten vom Benutzer gesuchten Filme speichern, sodass die Datenbank nur einen Datensatz pro Benutzer enthält.

Wir können das Feld user_id weglassen und nur die ID des Benutzers als _id für jeden erstellten Datensatz verwenden. Dies funktioniert, da die Benutzer -ID auf der Facebook -Seite eindeutig ist. Wenn Sie dies tun, sollten Sie wissen, dass die Benutzer-ID Seitenweite ist. Dies bedeutet, dass die ID des Benutzers für die angegebene Seite eindeutig ist, der Benutzer jedoch unterschiedliche IDs für verschiedene Seiten hat.

Sie müssen dies nur wissen, wenn Ihr Bot verschiedenen Seiten serviert (ja, ein Bot kann mehrere Seiten servieren). Wenn Ihr Bot also mehreren Seiten dient, ist es möglich, den Benutzer nur anhand seiner Benutzer -ID zu identifizieren, und das Feld _ID mithilfe der Benutzer -ID, da der Datensatz ebenfalls fehlschlägt, da dies eindeutig sein muss und Sie nicht in der Lage sind, können Sie nicht in der Lage sein garantieren Einzigartigkeit über Seiten hinweg.

Integrieren Sie alles zusammen

Nachdem die Datenbank und das Modell eingerichtet wurden, können wir jetzt den Chatbot vervollständigen. Der Code wird in Abschnitten gerendert. Wenn Sie jedoch den gesamten Code in Ihr Projekt einfügen möchten, finden Sie hier einen Link zur App.js -Datei.

Setzen Sie zuerst die Datenbankverbindung ein. Mongoose hätte zuvor mit anderen Modulen installiert werden sollen.

<code>{
  "name": "spbot",
  "version": "1.0.0",
  "description": "SPBot Server",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node app.js"
  },
  "author": "Joyce Echessa",
  "license": "ISC"
}</code>

Ändern Sie den Post -Handler des Webhooks, wie unten gezeigt.

<code>$ npm install express request body-parser mongoose --save</code>

Wir haben Überprüfungen für Ereignisse vom Typ Meldung hinzugefügt und an die Funktion processMessage () übergeben.

<code>node_modules</code>

Hier prüfen wir zunächst, ob die Nachricht über den Meldung Echo -Rückruf gesendet wird. Dieser Rückruf erfolgt, wenn Ihre Seite eine Nachricht sendet. Beispielsweise wird die erste Nachricht (Gruß), die wir an den Benutzer senden, an unseren Webhook zurückgesandt. Wir möchten keine unserer eigenen Nachrichten verarbeiten, also haben wir es überprüft.

Dann überprüfen wir, ob die Nachricht Text oder Anhang ist (Bild, Video, Audio). Für letztere senden wir eine Fehlermeldung an den Benutzer. Für Textnachrichten überprüfen wir, ob die Eingabe bestimmte Schlüsselwörter übereinstimmt, die angeben, in welchem ​​Detail der Benutzer des Films haben möchte. Zu diesem Zeitpunkt hat der Benutzer einen Film abgefragt und der Film wird in der Datenbank gespeichert. Die Funktion "GetMoviedetail ()) fragt die Datenbank an und gibt einen bestimmten Datensatz zurück.

<code class="language-javascript">var express = require("express");
var request = require("request");
var bodyParser = require("body-parser");

var app = express();
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.listen((process.env.PORT || 5000));

// 服务器索引页面
app.get("/", function (req, res) {
  res.send("已部署!");
});

// Facebook Webhook
// 用于验证
app.get("/webhook", function (req, res) {
  if (req.query["hub.verify_token"] === "this_is_my_token") {
    console.log("已验证 webhook");
    res.status(200).send(req.query["hub.challenge"]);
  } else {
    console.error("验证失败。令牌不匹配。");
    res.sendStatus(403);
  }
});</code>

Wenn die Abfrage des Benutzers keine festgelegten Schlüsselwörter übereinstimmt, wird der Roboter angenommen, dass die Eingabe für die Filmabfrage verwendet wird, sodass er an die Funktion "FindMovie () übergeben wird, die die Open Movie Database -API mit der Eingabe aufruft.

<code>$ git init
$ git add .
$ git commit -m "Initial commit"</code>

Wenn ein Film gefunden wird, speichern Sie seine Details mit der ID des Benutzers. Wenn bereits ein Datensatz mit dieser Benutzer -ID erstellt wurde, wird er aktualisiert. Wir erstellen dann eine strukturierte Nachricht und senden sie an den Benutzer.

Mit der Messenger -Plattform können Sie zusätzlich zu Text Bilder, Videos, Audio, Dateien und strukturierte Nachrichten senden. Strukturierte Nachrichten sind Vorlagen, die verschiedene Anwendungsfälle unterstützen. Mit Schaltflächenvorlagen können Sie Text und Schaltflächen senden. Mit universellen Vorlagen können Sie Bilder, Titel, Untertitel und Schaltflächen definieren. In unserer Anwendung verwenden wir universelle Vorlagen.

Ändern Sie die Funktion processPostback () wie unten gezeigt.

<code>$ mkdir spbot
$ cd spbot
$ npm init</code>

Das obige ist der detaillierte Inhalt vonErstellen eines Facebook -Chat -Bots mit Node und Heroku. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn