Tutorial - in 5 einfachen Schritten einen Bot erstellen

Fabrizio Ciacchi
Fabrizio Ciacchi Senior Software Engineer
19. February 2018 in

Technology Chatbot Deutsch How To

Was ist ein Bot? Wie funktioniert er? Ist die Implementierung sehr kompliziert? Eine Sache ist sicher: Wenn es um Bots beziehungsweise Chatbots geht, ist der Hype beinahe so groß wie die Verwirrung. Fast jeder redet davon, einen Bot erstellen zu wollen, aber nur wenige Unternehmen haben für deren Einsatz auch maßgeschneiderte Anwendungsfälle identifiziert, an denen sie arbeiten. Wir möchten Ihnen helfen, den ersten Schritt zu wagen, indem wir Ihnen zeigen, wie Sie in wenigen Schritten einen Bot erstellen können.

 

Ein Bot ist nichts anderes als eine weitere Art und Weise, Daten zu präsentieren – entweder schriftlich oder per Sprachnachricht. Hier finden Sie eine Zusammenfassung der wichtigsten technischen Funktionen:

  • Die Kommunikation mit dem Bot kann in Textform über Anwendungen wie Facebook Messenger oder WhatsApp erfolgen. Sie kann auch per Sprachsteuerung erfolgen, z. B. mit Geräten und Anwendungen wie Amazon Alexa, Google Home und demnächst Apple Homepod;
  • Der Benutzer kann mithilfe verschiedener Befehle um Informationen bitten. Beispiele für solche Befehle sind: „Zeig mir das Produkt ...“ und „Habe ich heute irgendwelche Termine ...?“. Der Bot ist also ein Ersatz für den herkömmlichen Ansatz: Klick -> Nächste Seite -> Klick.
  • Der Bot muss bei der Kommunikation mit dem Benutzer nicht nur in der Lage sein, zu „verstehen“, dass ein und dieselbe Sache auf verschiedene Arten und Weisen ausgedrückt werden kann, sondern muss die vom Benutzer zur Verfügung gestellten Informationen auch protokollieren können - genau wie in einem menschlichen Dialog - um ein zielgerichtetes Chat-Erlebnis zu ermöglichen und Wiederholungen zu vermeiden.
  • Die Antworten eines Bots werden in der Regel sehr kompakt dargestellt. Über den Facebook Messenger stellen Bots den Benutzern meist nur Thumbnails oder Links zur Verfügung.

Warum sollte Ihr Unternehmen Bots verwenden?

Der Vorteil eines Bot mag zwar nicht für alle Anwendungsfälle direkt ersichtlich sein, dennoch sollte man das riesige Potenzial, das Bots vielen Unternehmen zu bieten haben, nicht unterschätzen. Zunächst einmal ist die potenzielle Nutzerbasis riesig. Die Zahl der Nutzer von Facebook Messenger ist in den letzten drei Jahren von 250 Millionen auf über 1,2 Milliarden gestiegen.

(Quelle: TechCrunch, 2017)

Diese Entwicklung wurde durch zwei weitere Faktoren unterstützt: Durch die vermehrte Verwendung von Mobilgeräten anstelle von Desktop-PCs und durch die Tatsache, dass es für jüngere Generationen völlig natürlich ist Messaging-Systeme als Hauptkommunikationskanal zu verwenden. Wenn man die Statistiken über die Zahl der Alexa Skills betrachtet – einzelne Bots von Alexa werden Skills genannt – geht der Trend in dieselbe Richtung:

 

 

Wie fange ich damit an, einen Bot zu bauen?

Einen Bot zu bauen ist einfacher, als man denkt. Am Anfang steht die Entwicklung des Back-Ends mit allen Funktionalitäten, die der Bot haben soll. Der Anwendungsfall definiert die Interaktionsmöglichkeiten zwischen Nutzer und Bot und welche Funktionalitäten benötigt werden. Natürlich gilt aber auch: je komplexer der Anwendungsfall, desto komplexer die Entwicklung des Bots. Lösungen wie das Spryker Commerce OS können Ihnen bereits alle Informationen zur Verfügung stellen, die ein Bot benötigt, einschließlich Produktinformationen, Warenkorb und Checkout-Funktionalitäten sowie Bestellmanagement und Versandlogik. Als Nächstes erklären wir Ihnen Schritt für Schritt, wie Sie ganz einfach einen simplen Facebook Messenger Bot erstellen können.

 

Wie man einen Facebook Messenger Bot entwickelt

Ihren ersten Facebook Messenger Bot zu bauen ist nicht allzu kompliziert. Das technische Setup besteht aus wenigen Schritten mit denen Sie bereits loslegen können. Wir würden sogar darauf wetten, dass Sie es schaffen, Ihren eigenen Bot innerhalb von 10 Minuten online zu stellen!

 

Konfiguration

  • SCHRITT 1 – Eine neue Seite einrichten

Erstellen Sie zuerst eine neue Facebook-Seite. Wenn Sie bereits eine Facebook-Seite haben, können Sie diesen Schritt natürlich überspringen. Die Seite wird benötigt, um eine Instanz zu haben, die mit Ihrem Messenger-Bot verknüpft ist. Sie erhalten außerdem einen QR-Code, der mit Ihrem Bot verknüpft ist und den Sie für Werbezwecke verwenden oder sogar Ihrer Visitenkarte hinzufügen können.

 

  • SCHRITT 2 – Eine Facebook-App erstellen



    Der nächste Schritt ist die Erstellung einer Facebook-App. Dazu müssen Sie über das Facebook Developer Portal eine neue App registrieren und erstellen. Folgen Sie einfach der schrittweisen Anleitung und stellen Sie sicher, dass Sie Ihre App für die Messenger-Plattform einrichten.
  • SCHRITT 3 – Einen Zugriffsschlüssel generieren


    Nachdem Sie die App erstellt haben, müssen Sie sie mit Ihrer Seite vernetzen und einen Zugriffsschlüssel generieren. Dieser Zugriffsschlüssel wird in einem späteren Schritt verwendet und hilft bei der Authentifizierung der Anfragen von Ihrem Bot an die Facebook-Plattform. Stellen Sie sicher, dass Sie den Zugriffsschlüssel immer griffbereit haben, damit Sie ihn jederzeit verwenden können.
  • SCHRITT 4 - Webhooks einrichten



    Als vorletzten Schritt müssen Sie einen Webhook erstellen und die Messenger-Events abonnieren. Wenn Sie auf die Schaltfläche "Webhooks einrichten" klicken, werden Sie nach weiteren Details gefragt (siehe Abbildung). Um das Setup zu vervollständigen, benötigen Sie eine Rückruf-URL (Ihre App), einen String mit dem Namen „verify token“ und die „Hooks“, die Sie abonnieren möchten. Wählen Sie die Standardoption „messages“ (Nachrichten) und zusätzlich optional die Events „message_reads“ (Nachricht gelesen) und „message_deliveries“ (Nachricht zugestellt). Eine detailliertere Übersicht finden Sie hier.
  • SCHRITT 5 – App und Facebook-Seite miteinander verknüpfen


    Der letzte Schritt besteht darin, diese „Hooks“ mit Ihrer Facebook-Seite zu verknüpfen. Dadurch erhält ein Benutzer, der Ihre Seite anschreibt, direkt eine Antwort von Ihrem Bot. Das hört sich vielleicht kompliziert an, ist aber auch der letzte Schritt, den Sie auf dem Facebook Developer Portal durchführen müssen. Danach können Sie mit dem Abschnitt „Controller“ fortfahren.

Der Controller

1. Verify Token

Wie bereits in Schritt 4 erklärt, müssen Sie, nachdem Sie die Webhooks eingerichtet haben, den folgenden Code zu Ihrem Controller hinzufügen, damit das Token verifiziert werden kann. Er gibt die Nachricht zurück, die Facebook sendet, und bestätigt die URL Ihres Bots.

 

$hubVerifyToken = null;
$verifyToken    = 'my_voice_is_my_passport';

if (isset($_REQUEST['hub_challenge'])) {

  $challenge      = $_REQUEST['hub_challenge'];
  $hubVerifyToken = $_REQUEST['hub_verify_token'];

}

if ($hubVerifyToken === $verifyToken) {

echo $challenge;

}

 

2. Die Controller Action

Wir empfehlen Ihnen, die zentrale Controller Action (botAction) in verschiedene Funktionen zu unterteilen, die eingehende Anfragen parsen und weiterleiten. Gleichzeitig können über diese Methode Antworten an Facebook geschickt werden.

 

public function botAction()
{

 $accessToken = 'AXDF432...';

 $input   = json_decode(file_get_contents('php://input'), true);
 $sender  = $input['entry'][0]['messaging'][0]['sender']['id'];
 $message = $input['entry'][0]['messaging'][0]['message']['text'];

 $reply = $this->dispatchMessage($message);
 $this->sendResponse($accessToken, $sender, $reply);

}

3. Dispatch Message

Eine weitere praktische Funktion ist „Dispatch Message“. Die Logik, die Sie dieser Funktion hinzufügen und die Sie frei wählen können, definiert, wie Ihr Bot reagieren soll. Beginnen Sie einfach mit ein paar einfachen, regulären Ausdrücken und fügen Sie Dialogmanager hinzu, um die Interaktion flüssiger und „menschlicher“ zu gestalten.

 

protected function dispatchMessage($message)
{

$message = strtolower(trim($message));
$response = ['text' => 'Can you repeat?'];
$facade = $this->getDependencyContainer()->getProductFacade();

if ($message === 'hello') {

$response = ['text' => 'Welcome'];

} elseif (preg_match('/buy ([A-Za-z]+)*/ ', $message, $matches)) {

$product = $facade->getProductByName($matches[1]);
$response = ['text' => 'Found product ' . $product];

} elseif ($message === 'bye') {

...

}

return $response;

}

4. Die Antwort abschicken 

Sie benötigen die Funktion „sendResponse“, um die Antwortnachricht zu formatieren und sie an den Benutzer zurückzuschicken, der mit dem Bot interagiert. Es handelt sich dabei um eine simple CURL-Anfrage.

 

protected function sendResponse($accessToken, $sender, $reply)
{

$url = 'https://graph.facebook.com/v2.6/me/messages?access_token='

. $accessToken;

$ch = curl_init($url);

$jsonData = json_encode([

'recipient' => [

'id' => $sender

],
'message' => $reply

]);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_HTTPHEADER, [

'Content-Type: application/json'

]);

$result = curl_exec($ch);
curl_close($ch);

}

 

5. Der Bot bei der Arbeit

 

Ngrok verwenden

Für die Entwicklung auf Facebook Messenger ist es erforderlich, dass Ihr Server HTTPS verwendet. Außerdem muss Ihr lokales System von Facebook aus erreichbar sein. Um beide Anforderungen zu erfüllen, können Sie Ngrok verwenden. Es ist sehr benutzerfreundlich, bei einer geringen monatlichen Gebühr – für diejenigen unter Ihnen, die die Einschränkungen der kostenlosen Version nicht mögen. Sobald Ihr Webserver läuft und Sie Ngrok installiert haben, tunneln Sie einfach Ihre lokalen Anfragen mit dem Befehl:

$ ngrok http 80

 

Verwenden Sie danach den Debug Monitor, auf den Sie über http://localhost:4040/ zugreifen können.

 

 

Heißer Tipp

Was wir bis jetzt noch nicht erwähnt haben, ist, dass ein Controller, der in Echtzeit auf den Facebook Messenger antwortet, die einfachste Lösung ist, aber vielleicht nicht die beste. Der Facebook Messenger erwartet eigentlich eine HTTP 200-Antwort, um dem Benutzer anzuzeigen, dass der Bot die Nachricht gelesen hat. Vor diesem Hintergrund ist eine Architektur mit einer Queue und einer asynchronen Verarbeitung eigentlich vorzuziehen. Dadurch wird die Interaktion mit dem Benutzer natürlicher und es wird verhindert, dass die Kommunikation zwischen Ihrem Server und Facebook Messenger gestört wird.

 

Einige letzte Ratschläge, bevor Sie damit anfangen, Ihren Bot zu bauen

  • Wir empfehlen Ihnen, sowohl eine Test- als auch eine Produktionsumgebung zu erstellen, die jeweils über eine separate Facebook-Seite und Facebook-App verfügen. Apps können zwar eine Testversion erstellen, aber diese sind in der Regel in ihrer Funktionsweise begrenzt und können nicht richtig konfiguriert werden, um den Test-Bot darauf laufen zu lassen.
  • Ein Bot funktioniert besser mit einem Cache-System. Dadurch werden schnelle Reaktionszeiten gewährleistet und Wiederholungen vermieden.
  • Während ein Controller-basiertes System einfach zu implementieren ist, ist es besser, eine Queue zu verwenden.
  • Ngrok ist ein großartiges Werkzeug und besonders nützlich bei der Entwicklung und beim Debuggen. Wenn Sie lernen, wie man es effektiv einsetzt, können Sie den Entwicklungsprozess stark beschleunigen.
  • Denken Sie daran, dass in Facebook Messenger URLs (für Links oder Bilder) im HTTPS-Format sein müssen und dass sie über einen separaten API-Aufruf registriert werden sollten.
  • Ein Bot sammelt in der Regel alle Unterhaltungen als Klartext. Verwenden Sie Analytics und Business Intelligence, um diese Gespräche aufzuzeichnen und auszuwerten. Das wird Ihnen dabei helfen, Bot-gesteuerte Gespräche zu optimieren und Machine-Learning-Algorithmen zu trainieren.
  • Achten Sie dabei darauf, dass die Privatsphäre des Nutzers niemals mit der Facebook-ID in Verbindung gebracht werden darf und sensible oder personenbezogene Daten anonymisiert oder gelöscht werden müssen.

Worauf warten Sie noch?

  • Es ist wirklich sehr einfach, damit anzufangen, einen Bot zu entwickeln. Das Interface auf Facebook Messenger ist sehr benutzerfreundlich. Ein solides Back-End liefert alle Informationen, die ein Benutzer benötigen könnte und die sie ihm anzeigen können;
  • Die Konfiguration des Back-Ends kann auf Ihren Anwendungsfall zugeschnitten werden. Es gibt buchstäblich keine Grenzen in Bezug auf die Effizienz und Komplexität, mit der Sie Ihren Bot entwerfen und weiterentwickeln können.
  • Von der Verwendung einer Conversational State Machine bis hin zum maschinellen Lernen ist die Entwicklung eines Bots ein kontinuierlicher Prozess, der perfekt auf die verschiedenen Anwendungsfälle und Bedürfnisse der verschiedenen Benutzer abgestimmt werden kann.


Sie möchten mehr darüber erfahren, wie Sie einen Bot in Ihre Commerce-Lösung integrieren können? Wir helfen gerne! 

Kontakt aufnehmen

 



Oder besuchen Sie uns auf der code.talks 2018 in Berlin, in deren Rahmen Fabrizio Ciacchi ausführlich über Bots sprechen wird. 


 

Melden Sie sich jetzt für unseren Newsletter an

Gehören Sie zu den Ersten, die kostenlos Zugang zu unserem demnächst erscheinenden White Paper über Chatbots erhalten.

Still got questions?
Ask the author for further information.