Über Web, Tech, Games, Art,
Code & Design

6. Januar 2024

fBot – ein einfacher Chatbot mit PHP und jQuery

Hier hatte ich vor einigen Tagen berichtet, dass ich einen Chatbot programmiert habe: www.fbnfrtg.de/fbot-ein-einfacher-chatbot/

Tatsächlich besteht der fBot im Prinzip nur aus 3 Dateien. Ein JavaScript, ein PHP-Script und ein Stylesheet. Der fBot kann unten auf dieser Seite heruntergeladen werden. Um den fBot einzusetzen, reicht es, das Verzeichnis aus dem Download auf einen Webserver zu laden und „fbot.js“ in die Seite einzubinden.

<script type="text/javascript" src="fbot/fbot.js"></script>

Vorraussetzung ist, dass jQuery in die Seite eingebunden ist. Sollte das noch nicht der Fall sein, muss jQuery lokal oder von einem CDN geladen werden.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>

Der fBot ist KEINE KI. Die Antworten werden auf Basis von Keywords generiert. Wird z.B. nach den „Öffnungszeiten“ gefragt, werden auf Grund des Keywords, die Öffnungszeiten genannt. Die Keywords und die dazugehörigen Antworten können im keywords-Array in der „fbot.php“ angepasst werden.

$keywords = array(
   "öffnungszeiten" => "Wir haben täglich von 8-18 Uhr geöffnet.",
);

Hier ist ein bisschen Kreativität gefordert:

  • Wie könnten die Fragen der Website-Besucher lauten?
  • Welche Keywords ergeben sich daraus?
  • Wie viele Keywords sind nötig um den Sinn der Frage zu „verstehen“?
  • Wie könnte die Frage anders formuliert werden? (z.B. öffnungszeiten, geöffnet, macht zu…)

Ich arbeite bereits an einer neuen Version des fBots, in der die Fragen der User geloggt werden. So kann man mehr über die Wünsche der User erfahren und den fBot quasi manuell trainieren und neue Antworten beibringen. Außerdem arbeite ich an einer Admin-Oberfläche, in der man Fragen & Antworten auch ohne Code-Kenntnis eintragen und verwalten kann.

Neben den direkt im Array eingetragenen Antworten, lassen sich auch dynamische Antworten erzeugen. Das funktioniert z.B. so:

$keywords = array(
"einen witz" => "goto_joke", 
...

if ($bot_response == 'goto_joke'){

$bot_responses = array(
  "Was sagt ein Pirat, wenn er zum Bauernhof kommt? Ah, Heu!", 
  "Was macht eine Spinne im Fundbüro? Sie hat den Faden verloren!", 
  "Ich hab gestern bei Spiderman angerufen, aber der hatte kein Netz");
  $randomindex = rand(0, count($bot_responses) - 1);
  $bot_response = $bot_responses[$randomindex]; 
}

In diesem Fall wird bei der Aufforderung „erzähl einen witz“ einer von 3 Witzen erzählt. Statt des Witz-Array könnte hier aber auch genau so gut eine Datenbank-Abfrage stehen, die z.B. Produkteigenschaften, Preis, o.ä. ausgibt.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert