Chatbot-Antwort aus externer Quelle

Chatbot-Antwort aus externer Quelle

Einleitung

Neben einer festen Antwort je Absicht kann Kiko auch eine berechnete Antwort ausgegeben. Bei der Berechnung können Information aus einer externen Datenquelle verwendet werden.

Zur Berechnung der Antwort wird in diesem Beispiel ein individuell programmierter und gehosteter Webservice mit folgenden Aufgaben verwendet:

  1. ein “Joke”-Datensatz wird aus einer externen Datenquelle abgefragt

  2. der Inhalt des Jokes wird als Antwort an den Kiko-Server gesendet

Umsetzung

Für die Frage wird eine einzelne Absicht genutzt mit folgenden Merkmalen

  • Erkennung per Schlagwort “Joke”,

  • Weiterleitung zum externen Subbot.

Der externe Subbot ist als Webservice individuell zu hosten. Dafür verwenden wir in diesem Beispiel den Service “Cloud Run” von Google, welcher aktuell bei einer niedrigen Anzahl von Abfragen kostenfrei genutzt werden kann und schnell eingerichtet ist.

Als Entwicklungsumgebung nutzen wir hier den “Cloud Shell Editor” von Google. Sie ist mit Tools und Erweiterungen für die Entwicklung mit z.B. nodejs vorkonfiguriert, sodass Sie die Entwicklung und Tests im Browser ausführen können.

Webservice laden

Clonen Sie mit dem folgenden Link unsere Webservice-Vorlage “my-first-subbot“ von unserem Github-Konto “kiko-software” in Ihre Entwicklungsumgebung. Dafür benötigen Sie einen Google-Account.

Öffne das Projekt in Google Cloud Shell

Blick auf den Code

Die Verarbeitung der Anfrage vom Kiko-Server findet in der Datei index.js statt.

Zu Beginn wird der Webserver initialisiert.

  1. const app = express();
  2. app.use(cors());
  3. app.use(bodyParser.urlencoded({extended: true}));
  4. app.use(bodyParser.json());

Bei der Verarbeitung wird ein Joke-Datensatz aus einer externen Datenbank geholt.


  1. const randomJoke = await axios.get(
  2.   'https://official-joke-api.appspot.com/random_joke'
  3. );
  4. console.log('randomJoke.data:', randomJoke.data);
Zur Beantwortung der Intention wird eine Serveranfrage an Kiko gesendet.

Die Zieladresse wird aus der Referer-Adresse der Subbot-Anfrage ermittelt.

  1. const endpointBaseUrl = (req.get('referer') || '//').replace(
  2.   /\/\//g,
  3.   'https://'
  4. );

Um sicherzustellen, dass die Antwort im richtigen Chat mit dem anfragenden Benutzer erscheint, muss die ConversationId aus der Anfrage in der Antwort verwendet werden.

  1. conversationId: req.body.conversationId

In diesem Beispiel werden zwei Chat-Nachrichten gesendet.


  1. {
  2.   type: 'message',
  3.   data: {
  4.     type: 'text/plain',
  5.     content: randomJoke.data.setup,
  6.   },
  7. },
  8. {
  9.   type: 'message',
  10.   data: {
  11.     type: 'text/plain',
  12.     content: randomJoke.data.punchline,
  13.   },
  14. }

Das letzte Element in der Anfrage ist ein Ereignis, das die Konversation mit dem Subbot beendet.

  1. {
  2.   type: 'event',
  3.   name: 'endOfConversation',
  4. }
Die folgenden Benutzeranfragen werden nicht mehr an diesen Subbot gesendet.

Am Ende des Skripts befindet sich der Code zum Starten des Webdienstes.

  1. const port = process.env.PORT || '8080';
  2. app.listen(port, () => {
  3.   console.log('The container started successfully on port ', port);
  4. });

Webservice veröffentlichen

Veröffentlichen Sie den Webservice mittels “Cloud Run”. Im Ergebnis erhalten Sie eine URL, die Sie als Endpunkt-URL für den Webhook Ihres externen Subbots verwenden können.

  1. Klicken Sie in der Fußzeile des Editors auf "Cloud Code".

  2. Klicken Sie auf "Deploy to Cloud Run".

  3. Wählen Sie Ihre bevorzugte Region und klicken Sie auf "Deploy".

  4. Verwenden Sie die Ergebnis-URL, d. h.: URL: https://my-first-subbot-....a.run.app/ als Ihre externe Subbot-Webdienst-Endpunkt-URL.

Webservice im Kiko CMS integrieren

Legen Sie im CMS über das Menü “Botliste” einen externen Subbot mit dem Namen “subbot-jokes” an. Tragen Sie beim Subbot über den Untermenüpunkt “Webhooks bearbeiten” im Feld “Nachricht erhalten” die URL des veröffentlichten Webservice ein.

Absicht erstellen und mit externem Subbot verbinden

Legen Sie über das Menü “Inhalt” im Metabot eine Absicht mit dem Namen “Joke erzählen” an und tragen Sie als Weiterleitung des Subbot “subbot-jokes” ein.

Zur Erkennung legen Sie den Entitätstyp “thema” mit dem Entitätswert “Joke” an.

Bei der Eingabe von “Joke” im Testchat unten rechts sollte nun als Antwort ein Witz in englischer erscheinen.

Referenzen


    • Related Articles

    • Chatbot Design - Tutorial für Grafiker

      Dieses Tutorial soll Grafiker bei der Erstellung eines individuellen Chatbot-Designs unterstützen. Sie lernen den Webchat Konfigurator näher kennen und erfahren hilfreiche Tipps zur Anpassung an das gewünschte Corporate Design.  Abschnitt 1 - Planung ...
    • Eigene Parameter in der Chatbot-Antwort verwenden

      Neben einfachen FAQ-Antworten kann man mit Kiko Chatbots auch berechnete Antworten ausgeben. Dafür wird die Nutzeranfrage zusammen mit weiteren Parametern an den eigenen Webservice (=externer Subbot) gesendet. Unter diesen Parametern befindet sich ...
    • Chatbot Vorlagen

      Hier werden Ihnen Vorlagen aus dem CMS vorgestellt. Diese können unter “Start” und “Vorlagen” in Ihr Konto importiert werden. 1. Hilfestellung zur Nutzung Um Ihnen das Erstellen von Chatbots zu erleichtern, bieten wir Vorlagen für den leichten ...
    • Einführung Chatbot-Plattform

      Mit der Chatbot-Plattform Kiko können Sie sich einen eigenen Chatbot mit einem CMS entwickeln. Diesen Chatbot können Sie in die eigene Website oder in andere Kommunikationskanäle integrieren und Ihren Nutzern zur Verfügung stellen. Die Inhalte und ...
    • PDF - Individuell aus Vorlage (Teil 2)

      Mit dem Kiko-Webservice "pdf-fill-in" können Sie sie sich eine PDF mit individuelle Werten generieren lassen. Vorbereitung für dieses Beispiel: Kiko-CMS-Account erstellen (Kostenlose Registrierung), API-Key für Kiko Webservices über den Kiko-Support ...