Nachdem die Idee des Bots geboren ist und die allereinfachste Implementation getätigt wurde:
ist es nun an der Zeit die Entwicklung zu strukturieren. Da wir noch nie einen Chatbot implementiert habe gehen wir von der Technik her Top-Down vor und sammeln die Tasks, welche noch zu bearbeiten sind.
Die erste Implementation soll im Facebook Messenger stattfinden. Also erstmal mit dem Kopf in die Facebook Dokumentation und eine Seite für den Bot erstellt:
https://www.facebook.com/PflegeBot/
Die Herausforderung hier war nicht das Impressum und die Datenschutzerklärung zu vergessen. Die Datenschutzerklärung wird auf den Facebook Seiten von Organisationen und Shops, welche ich kurz recherchiert habe, nicht angegeben. Auch online findet man keinen Generator. Also habe ich eine generierte Erklärung, welche eigentlich für eine Webseite mit Facebook Integration gedacht ist benutzt. Das sollte so weit OK sein, ist aber jeden Fall noch ein ToDo auf der Liste.
Dann wurde natürlich eine Facebook App für den Messenger erstellt. Diese könnte schon an die api.ai Implementierung angeschlossen werden und ein funktionierender Bot wäre das Ergebnis.
Aber man beachte den Spruch ’nichts hält so lange wie ein Provisorium‘. Also lieber erst ein kleines Backend zusammenschustern und den Bot daran anschließen. Da kommen eineige ToDos auf uns zu also wird sich um eine List gekümmert, damit man nichts vergisst und gut planen kann.
Für die ToDo Liste dann erstmal einen Jira und Confluence Account bei Atlassian erstellt, die Software wird zwar bei großen Teams teuer, für kleine Teams und einen eigenen Server (den wir sowieso brauchen) ist die mit einmalig $20-$30 erschwinglich. Man kann online kostenlos starten, wenn der Trial abgelaufen ist die Daten exportieren und in den eigenen Server importieren. Diesen kann man auch wieder in einer 30 Tage Testversion laufen lassen. Den Server selber werde ich über Docker Images schnell aufsetzen, das ist erprobt. Jira wird für die Erstellung der Tasks benutzt und für die agile Projektplanung, Confluence für die Dokumentation und evtl. Planung von Tasks außerhalb der Unterprojekte in Jira.
Zur Planung des Backends wäre eine kleine Architektur sinnvoll. Dazu möchte ich mich als Webentwickler erstmal von der Denkweise der Requestbehandlung eines Webservers trennen und Request und Response getrennt betrachten. Also weg von der synchronen, hin zu einer asynchronen Bearbeitung.
Als nächstes möchte ich das Ganze in Microservices aufteilen und den Austausch über einen Message-Broker tätigen, entweder RabbitMQ oder Kafka schwebt mir vor.
Als großen Vorteil sehe ich die Austauschbarkeit der Komponenten. Gerade im Bereich der NLP (=Natural Language Processing) können oder sollen die Komponenten ausgetauscht werden. Dies wird mit Microservices einfacher handhabbar sein. Im Hinblick auf das zufügen neuer Chat Kanäle (Twitter oder Slack) sehe ich das ähnlich.
Wie man hier sieht sollte ich mir auch Gedanken über das Handling der Sessions machen und einer Kontext-Maschine. Von einem Administrationsinterface ist hier auch noch keine Spur zu sehen.
Dazu benötigen wir noch Server, habe schon einen günstigen Anbieter für virtuelle Server raus gesucht. Ein einfacher Server mit 4Gig RAM sollte (hoffentlich) erstmal reichen.
Parallel zu meinen Überlegung sammelt Diana schon fleißig Themen für den Bot, damit er gefüttert werden kann.
Als nächstes steht es erstmal an die Gedanken zu sammeln und zu sortieren. Dies kann man gut mit den Tools wie Jira bzw. Confluence machen, allerdings bevorzuge ich für komplexere Aufgaben Karteikarten. Die Aufgaben werden dann mithilfe der Karten auf dem Tisch strukturiert, dann über Fotos im Confluence Dokumentiert und ins Jira übertragen.
Also es heißt jetzt erstmal Karteikarten kaufen gehen.