Erhalten Sie automatisch Produktinformationen über Facebook Messenger

Dieses Tutorial zeigt Ihnen, wie Sie einem Nutzer automatisch relevante Produktinformationen über den Facebook Messenger zur Verfügung stellen können.

In diesem Anwendungsfall grüßt der Nutzer das Unternehmen über die Facebook-Seite des Unternehmens. Eine Nachricht wird automatisch an den Nutzer zurückgeschickt. Mithilfe eines Schlüsselwortabgleichs kann der Nutzer maßgeschneiderte Produkt- und Serviceinformationen erhalten.

HINWEIS: In dieser Anleitung wird davon ausgegangen, dass Sie bereits ein Facebook-Profil und eine Facebook-Seite erstellt haben.

Quellcode

Der Quellcode für dieses Projekt ist in der Community verfügbar GitHub-Repository.

Voraussetzungen

  1. Vonage-Account erstellen
  2. Node JS installieren - die für die Verwendung der Vonage-Befehlszeilenschnittstelle (CLI) erforderlich sind.
  3. Installieren Sie die Vonage CLI
  4. Wissen, wie Sie Ihren Webhook-Server lokal testen können
  5. Python 3 installiert
  6. Kolben installiert

Die Schritte

Nachdem die Voraussetzungen erfüllt sind, gehen Sie wie folgt vor:

  1. Erstellen einer Vonage-Applikation
  2. Verknüpfen Sie Ihre Vonage-Anwendung mit Ihrer Facebook-Seite
  3. Ngrok zum Laufen bringen
  4. Schreiben Sie Ihre Basisanwendung
  5. Interaktion mit Ihrer Facebook-Seite
  6. Minimaler Client zum Senden von Facebook Messenger-Nachrichten mit Python
  7. Der Anwendungsfall im Rückblick
  8. Eine Umsetzung

Es gibt verschiedene Möglichkeiten, das gleiche Ergebnis mit Vonage zu erzielen. In diesem Tutorial wird nur ein bestimmter Weg gezeigt, z. B. wie Sie die Anwendung über die Befehlszeile und nicht über das Dashboard erstellen. In anderen Tutorials werden andere Vorgehensweisen gezeigt.

Erstellen Sie Ihre Vonage Applikation

Falls Sie dies noch nicht getan haben, erstellen Sie ein neues Verzeichnis für Ihr Projekt, z. B. fbm-app. Wechseln Sie in dieses Verzeichnis.

Verwenden Sie die CLI, um Ihre Vonage-Anwendung zu erstellen:

vonage apps:create "FBM App" --messages_inbound_url=https://abcd1234.ngrok.io/inbound --messages_status_url=https://abcd1234.ngrok.io/status

Notieren Sie sich die generierte Application ID. Sie können dies auch in der Dashboard.

Mit diesem Befehl wird auch ein privater Schlüssel erstellt, fbm_app.key in Ihrem aktuellen Verzeichnis, sowie die Aktualisierung/Erstellung von vonage_app.json.

Mit diesem Befehl werden auch die beiden Webhooks festgelegt, über die die gesamte Interaktion zwischen Ihrer Anwendung und Vonage erfolgt. Sie müssen einen Server haben, der für Vonage unter diesen URLs erreichbar ist.

Verknüpfen Sie Ihre Bewerbung mit Ihrer Facebook-Seite

Teil 1: Verbinden Sie Ihre Facebook-Seite mit Ihrem Vonage API Account

Wenn Sie Ihre Facebook-Seite mit Ihrem Vonage API-Konto verbinden, kann Vonage eingehende Nachrichten verarbeiten und Sie können Nachrichten über die Messages API versenden.

  1. Um Ihre Facebook-Seite mit Ihrem Vonage API-Konto zu verknüpfen, besuchen Sie die Verknüpfen Sie die Facebook-Seite in Ihrem Dashboard.

  2. Melden Sie sich über das Dashboard bei Ihrem Facebook Account an.

  3. Wählen Sie in der Dropdown-Liste die Facebook-Seite aus, die Sie mit Ihrem Vonage API Account verbinden möchten.

  4. Wählen Sie den API-Schlüssel, den Sie verwenden möchten.

  5. Klicken Sie auf Vollständige Einrichtung.

Zu diesem Zeitpunkt sind Ihr Vonage API Account und diese Facebook-Seite miteinander verknüpft. Die Verknüpfung zwischen Ihrem Vonage API Account und der Facebook-Seite hat kein Ablaufdatum, kann aber gelegentlich ablaufen. Nach Ablauf müssen Sie die Verknüpfung mit demselben Verfahren erneut herstellen.

Teil 2: Verbinden Sie Ihre Facebook-Seite mit Ihrer Vonage API-Anwendung

Sobald Ihre Facebook-Seite mit Ihrem Vonage API-Account verbunden ist, kann sie von jeder Ihrer Applikationen genutzt werden. So verbinden Sie die Facebook-Seite mit einer Vonage-API-Anwendung:

  1. Navigieren Sie zu Ihrem Applikationsseite.

  2. Klicken Sie in der Liste auf die Anwendung, die Sie verknüpfen möchten. Sie können filtern, indem Sie die Fähigkeiten Dropdown-Liste und wählen Sie messages um dies zu erleichtern.

  3. Wählen Sie dann die Verknüpfte soziale Kanäle tab.

  4. Klicken Sie auf die Link neben der Facebook-Seite, mit der Sie Ihre Anwendung verbinden möchten, und stellen Sie sicher, dass die Schaltfläche Anbieter ist Facebook Messenger.

Du bist jetzt bereit, Nachrichten zu empfangen, die Nutzer an dich auf deiner Facebook-Seite senden.

HINWEIS: Wenn du in Zukunft eine andere Anwendung mit dieser Facebook-Seite verknüpfen möchtest, musst du nur den in Teil 2 beschriebenen Vorgang für die neue Anwendung wiederholen.

Ngrok zum Laufen bringen

Stellen Sie sicher, dass Sie Ngrok zum Testen lokal laufen lassen. Um Ngrok zu starten, geben Sie ein:

ngrok http 9000

Um eine temporäre Ngrok-URL zu erzeugen. Wenn Sie ein bezahlter Abonnent sind, können Sie eingeben:

ngrok http 9000 -subdomain=your_domain

Beachten Sie, dass Ngrok in diesem Fall die Vonage-Webhooks, die Sie bei der Erstellung Ihrer Vonage-Anwendung angegeben haben, an localhost:9000.

Schreiben Sie Ihre Basisanwendung

Im einfachsten Fall würde Ihre Anwendung also wie folgt aussehen:

from flask import Flask, request, jsonify
from pprint import pprint

app = Flask(__name__)

@app.route('/inbound', methods=['POST'])
def inbound_message():
    data = request.get_json()
    pprint(data)
    return ("200")

@app.route('/status', methods=['POST'])
def message_status():
    data = request.get_json()
    pprint(data)
    return ("200")

if __name__ == '__main__':
    app.run(host="localhost", port=9000)

Fügen Sie diesen Code in eine Datei namens app1.py und speichern Sie es.

Führen Sie es lokal mit aus:

python3 app1.py

Ihre Basisanwendung ist nun einsatzbereit und kann Ereignisse protokollieren.

Interaktion mit Ihrer Facebook-Seite

Jetzt, wo Ihre Basis-App eingerichtet ist und läuft, können Sie eine Nachricht an Ihre Facebook-Seite senden und dann überprüfen, ob die Nachricht protokolliert wurde. Wenn Sie also eine einfache Nachricht mit Messenger an Ihre Facebook-Seite senden, werden Sie eine Protokollierung wie die folgende sehen:

{'direction': 'inbound', 'from': {'id': '1234567890123456', 'type': 'messenger'}, 'message': {'content': {'text': 'Hello Mr. Cat', 'type': 'text'}}, 'message_uuid': 'da13a7b0-307c-4029-bbcd-ec2a391873de', 'timestamp': '2019-04-09T12:26:47.242Z', 'to': {'id': '543210987654321', 'type': 'messenger'}} 127.0.0.1 - - [09/Apr/2019 13:26:58] "POST /inbound HTTP/1.1" 200 -

Hier finden Sie einige wichtige Informationen, die Sie nutzen können, um Ihre Anwendung nützlicher zu gestalten.

Feld Beschreibung
from Die Facebook-ID der Person, die eine Nachricht an Ihre Seite sendet.
to Die Facebook-ID deiner Seite (die Seite, an die die Person eine Nachricht sendet).
message Die gesendete Nachricht.

Sie können sehen, dass die Nachricht ein JSON-Objekt ist. Sie können den Nachrichtentext aus diesem Objekt extrahieren.

Beachten Sie, dass es nützlich ist, sowohl die Facebook-ID Ihrer Seite (die Sie möglicherweise nicht kennen) als auch die Facebook-ID des Nutzers, der Ihnen eine Nachricht sendet, zu erfassen. Die Facebook-ID ist besonders nützlich, wenn Ihre Anwendung mit mehreren Facebook-Seiten arbeitet.

Minimaler Client zum Senden von Facebook Messenger-Nachrichten mit Python

Derzeit unterstützt Vonage offiziell keine Messages und Dispatch API im Python Server SDK, aber unsere REST API wird vollständig unterstützt und die Python-Code wird bereitgestellt im Projekt für Sie in einer wiederverwendbaren Klasse. Da der Code zur Verfügung gestellt wird, werden wir ihn in diesem Tutorial nicht weiter behandeln.

Der Anwendungsfall im Rückblick

Es ist an der Zeit, diesen Anwendungsfall genauer zu untersuchen, damit Sie Ihre Anwendung effektiver gestalten können.

Stellen Sie sich vor, ein Nutzer sendet Ihrer Facebook-Seite über Messenger eine Nachricht wie "Hallo". Aufgrund von Zeitzonen sind Sie jedoch nicht verfügbar, um auf die Nachricht zu antworten - dies kann den Nutzer niedergeschlagen zurücklassen. Andererseits wäre es toll, wenn Sie automatisch mit nützlichen Informationen antworten könnten. Zum Beispiel könnten Sie auf eine Nachricht wie "Hallo" mit "Willkommen bei T's Cat Supplies" antworten. Hier sind unsere wichtigsten Produktkategorien: Spielzeug, Futter, Medizin, Schmuck".

Mit einem Python-Konstrukt wie if keyword in msg können Sie Schlüsselwörter erkennen und auf dieser Grundlage Material versenden. Wenn ein Nutzer zum Beispiel eine Nachricht wie "Hallo, meine Panzer müssen sortiert werden" schickt, könnten Sie das Wort tank und senden Sie Informationen über Ihre Tankreinigungsdienste. Oder wenn Sie eine Nachricht erhalten wie "Hallo, ich glaube, ich brauche einen Kran, um unsere Rohrleitungsabschnitte zu heben." Sie könnten Informationen über Ihre Kranvermietungsdienste senden. Werden keine Schlüsselwörter erkannt, ist es ein Leichtes, eine allgemeine Nachricht an den Nutzer zu senden, um ihm die Orientierung zu erleichtern.

Diese Auto-Response-Funktion ist nützlich, da einige Unternehmen Hunderte von Produkten und Dienstleistungen anbieten.

Eine weitere nützliche Funktion ist die Möglichkeit, die automatische Antwort abzuschalten, um beispielsweise direkt mit einem Menschen zu sprechen. Sie könnten Befehle einbauen wie auto: off und auto: on um zu kontrollieren, wie Ihre Kunden mit Ihrer Facebook-Seite interagieren.

In den folgenden Abschnitten erfahren Sie, wie Sie diesen Anwendungsfall umsetzen können.

Eine Umsetzung

Eine der nützlichen Datenstrukturen bei der Implementierung dieses Anwendungsfalls ist das Python-Wörterbuch. Ein Beispiel können Sie hier sehen:

cats_dict = {
    'other': 'Our products: toys, food, meds, and bling',
    'toys': 'More info on cat toys here https://bit.ly/abc',
    'food': 'More info on cat food here https://bit.ly/def',
    'meds': 'More info on cat meds here https://bit.ly/ghi',
    'bling': 'More info on cat bling here https://bit.ly/jkl'
}

Um dies zu verdeutlichen, betrachten Sie den folgenden Code:

class ProductMatcher:

    auto_mode = True

    cats_dict = {
        'other': 'Our products: toys, food, meds, and bling',
        'toys': 'More info on cat toys here https://bit.ly/abc',
        'food': 'More info on cat food here https://bit.ly/def',
        'meds': 'More info on cat meds here https://bit.ly/ghi',
        'bling': 'More info on cat bling here https://bit.ly/jkl'
    }

...

    def product_matcher(self, fb_sender, user, msg):
        product = 'other'
        msg = msg.lower().strip()
        if self.auto_mode:
            if "auto: off" in msg:
                self.auto_mode = False
                self.fbm.send_message(fb_sender, user, "Auto mode is off")
                return
            for k in self.cats_dict.keys():
                if k in msg:
                    product = k
                    break
            self.fbm.send_message(fb_sender, user, self.cats_dict[product])
        if "auto: on" in msg:
                self.auto_mode = True
                self.fbm.send_message(fb_sender, user, "Auto mode is on")
        return product

Wenn der Nutzer eine Nachricht über Messenger sendet und kein Mensch antwortet, wird ein Menü an den Nutzer zurückgeschickt. In der Nachricht des Nutzers wird das Produkt extrahiert und die entsprechende Nachricht gesendet. Dieser Code verfolgt einen speziellen Ansatz, aber er zeigt hoffentlich das Potenzial auf.

Sie werden sich vielleicht fragen, ob dies für den Benutzer lästig ist, wenn er mit einer echten Person sprechen möchte. Die automatische Beantwortung kann jedoch deaktiviert werden, sobald Sie online sind und Nachrichten entgegennehmen können. Der Code erlaubt es dem Benutzer, die folgenden Befehle zu verwenden auto: off und auto: on um die Interaktion zu steuern. Dies könnte auch durch den Kanalmanager gesteuert werden.

Im obigen Code wird auch das Produkt zurückgegeben, an dem der Benutzer interessiert ist. Dies könnte z. B. verwendet werden, wenn Sie den Benutzer und seine Produktauswahl in einer Datenbank speichern möchten. Sie könnten auch einen Benutzer in der Datenbank nachschlagen, um herauszufinden, ob er ein neuer Kunde ist oder schon einmal mit dem Unternehmen zu tun hatte.

Zusammenfassung

In diesem Tutorial haben Sie einen Anwendungsfall gesehen, bei dem der Benutzer automatisch Produktinformationen über Facebook Messenger erhalten kann. Die Grundlage dafür war der Abgleich mit Schlüsselwörtern. Der Nutzer hatte auch die Möglichkeit, den automatischen Antwortmodus nach Bedarf umzuschalten.

Weitere Ressourcen