Channel Connector

-> zum BOTwiki

Ein Channel Connector ist eine Softwarekomponente, die Nachrichten aus verschiedenen Messaging-Kanälen in ein einheitliches Datenformat überführt. Er wird in der Entwicklung von Chatbot-Applikationen eingesetzt, wenn mehrere Kanäle gleichzeitig unterstützt werden sollen. Durch den Einsatz eines Channel Connectors wird die Formatlogik aus der eigentlichen Chatbot-Applikation ausgelagert.

Beschreibung der Architektur von Backend und Channel Connector

Warum Channel Connectors benötigt werden

Sobald eine Chatbot-Applikation über mehr als einen Kanal erreichbar sein soll, entsteht ein strukturelles Problem: Jeder Messaging-Dienst liefert Nachrichten in einem eigenen Datenformat. Ein Kanal wie Facebook Messenger strukturiert eingehende Nachrichten anders als etwa Slack oder WhatsApp. Die Nutzernachricht, also der eigentliche Text einer Konversation, ist in jedem dieser Formate an einer anderen Stelle im Datensatz zu finden und muss entsprechend unterschiedlich angesprochen werden.

Wird diese Formatvielfalt direkt in der Chatbot-Applikation behandelt, entstehen schnell mehrfach vorhandene, kanalspezifische Codestücke. Solche Duplikate erhöhen den Wartungsaufwand und erschweren die Weiterentwicklung der Applikation.

Funktionsweise eines Channel Connectors

Ein Channel Connector kennt die Datenformate der angebundenen Kanäle und überführt alle eingehenden Nachrichten in ein gemeinsames, einheitliches Schema. Die Chatbot-Applikation erhält damit unabhängig vom Ursprungskanal immer gleich strukturierte Daten. Ebenso werden ausgehende Antworten durch den Connector kanalspezifisch aufbereitet, bevor sie an den jeweiligen Dienst weitergeleitet werden.

Ein konkretes Beispiel für dieses Prinzip ist Smooch, ein Dienst, der Nachrichten aus Kanälen wie Slack, Facebook Messenger, WhatsApp, Telegram und weiteren Plattformen empfängt, vereinheitlicht und auf ein selbst definiertes Schema abbildet. Die Chatbot-Applikation kommuniziert in diesem Fall ausschließlich mit Smooch, nicht direkt mit den einzelnen Kanälen.

Vergleich von Datenformaten am Beispiel Facebook und Slack

Der Unterschied zwischen kanalspezifischen Datenformaten lässt sich gut am Vergleich von Facebook Messenger und Slack verdeutlichen. In beiden Fällen enthält der Datensatz dieselbe Nutznachricht, beispielsweise den Text „Das ist eine Text Message“. Der Pfad, über den diese Nachricht im jeweiligen Datensatz erreichbar ist, unterscheidet sich jedoch. Bei Facebook Messenger ist die Nachricht in einer verschachtelten Struktur aus Objekt- und Array-Ebenen zu finden, bei Slack folgt der Aufbau einem anderen Schema mit abweichenden Feldbezeichnungen.

Ohne eine vereinheitlichende Schicht müsste für jeden Kanal ein eigener Algorithmus geschrieben werden, der die Nachricht aus dem jeweiligen Format extrahiert. Ein Channel Connector übernimmt diese Aufgabe zentral und stellt der Chatbot-Applikation einen einheitlichen Zugriffspunkt zur Verfügung.

Facebook: [2]                               Slack: [3]

Facebook Datenformat

Slack Datenformat

 

 

 

 

 

Vorteile für die Chatbot-Entwicklung

Durch den Einsatz eines Channel Connectors wird der Implementierungsaufwand bei der Anbindung neuer Kanäle deutlich reduziert. Ein neuer Kanal muss lediglich im Connector konfiguriert werden, ohne dass die Kernlogik der Chatbot-Applikation angepasst werden muss. Bestehende Konversationslogik, Intents und Antwortstrukturen bleiben unverändert und können kanalübergreifend genutzt werden.

Darüber hinaus wird die Wartbarkeit verbessert, da kanalspezifische Formatlogik an einem zentralen Ort gepflegt wird. Änderungen an einem Kanalformat erfordern nur eine Anpassung im Connector, nicht mehrere Eingriffe in der Applikationslogik.

Eine API-Integration bezeichnet die direkte technische Anbindung eines einzelnen Dienstes über seine Programmierschnittstelle. Ein Channel Connector hingegen ist eine übergeordnete Schicht, die mehrere solcher Anbindungen verwaltet und die daraus resultierenden Datenformate vereinheitlicht. Während eine API-Integration kanalspezifisch ist, ermöglicht ein Channel Connector die kanalunabhängige Kommunikation einer Chatbot-Applikation mit mehreren Diensten gleichzeitig.

Nein, es gibt sowohl externe Dienste wie Smooch als auch plattformseitig integrierte Lösungen, wie sie etwa in BOTfriends X verfügbar sind. Diese übernehmen die Normalisierung der Nachrichtenformate, ohne dass eine eigene Implementierung erforderlich ist. Der Aufwand für die Kanalanbindung beschränkt sich in solchen Fällen auf die Konfiguration.

Wird kein Channel Connector verwendet, muss die Chatbot-Applikation für jeden Kanal separate Formatierungslogik enthalten. Das führt zu kanalspezifischen Codeduplikaten, erhöhtem Wartungsaufwand und erschwerter Skalierbarkeit. Bei der Anbindung eines neuen Kanals müssten Teile der Applikationslogik jeweils neu geschrieben oder angepasst werden.

Zurück zum BOTwiki