Stories

Die Geschichte von Alan: Wiederbelebung eines Slack Bots

Kenan Kokić
Editor
Veröffentlicht
18. September 2019

Bots. Sie sind es, die unsere Albträume einer dystopischen post-apokalyptischen Zukunft füllen. In Spielen kann man sich mit manchen Skill Trees auf sie spezialisieren und in Computern stellen wir sie uns als jene Maschinchen vor, die Bits verschieben und Bytes speichern. Tatsächlich aber sind Bots hauptsächlich nützliche Helfer, welche untergeordnete Aufgaben automatisieren und unsere Alltagsroutinen effizienter gestalten. Ein solcher Bot mit dem Namen Alan wurde erst kürzlich wieder ins Leben zurückgerufen, um uns dabei zu helfen.

Manchmal müssen manche interne Projekte in den Hintergrund treten, da es Entwickler schwierig finden, die Zeit zu investieren, um sie wirklich in etwas Wertvolles zu verwandeln. Das war der Fall für unseren alten Slack Bot, welcher sich bis dahin mit einer Schattenexistenz begnügen musste und hoffnungsvoll dem Tag entgegenblickte, an dem sich ein Entwickler die Zeit nehmen würde, ihn zu polieren und wieder aufleben zu lassen. Also wurde ein Team von drei Entwicklern, Bernat, Lovre und Marc, damit beauftragt, den Bot mit einem modernen Tech Stack neuzubauen:

  • MongoDB
  • NodeJS
  • TypeScript
  • Kubernetes
  • Rancher

“Wir hatten bereits seit einiger Zeit einen Bot, aber dem schenkte keiner viel Aufmerksamkeit, weil ihm essentielle Features fehlten.”

Marc Slavec
— iOS Developer

Welche neuen Funktionen der Bot haben sollte, wurde durch eine jährliche Umfrage namens ‘Pulse Check’ festgestellt, bei dem Mitarbeiter Feedback über ihr allgemeines Wohlbefinden geben aber auch auf Prozesse hinweisen können, die ihrer Meinung nach Verbesserungen (oder Automatisierung) bedürfen. Sowie diese Voraussetzungen für den neuen Bot einmal ausgearbeitet waren, machte man sich an die Arbeit. Bernat gibt uns einige Einblicke in den Entwicklungsprozess:

“Viele waren sich der Existenz des alten Bots nicht mal bewusst, da sich dieser hauptsächlich um Deployments kümmerte. Damit Alan für jeden nützlich sein kann, mussten Funktion für allgemein auftretende Use Cases zuerst umgesetzt werden, wie zum Beispiel das Validieren von Mite-Buchungen oder das Senden von Erinnerungen für bestimmte Events. Eine der Herausforderungen, die sich uns stellte, war die Tatsache, dass für jede neue Funktionalität Zugriff auf eine neue API und deren Daten vonnöten war. Jedoch konnten wir für viele davon bereits existierende Strukturen und Code wiederverwenden. Zudem wollten wir uns die enorme Menge an bestehender Information in unserem Confluence-System zunutze machen, weswegen wir uns dazu entschieden, Alan mit der Fähigkeit auszustatten, frei formulierte Fragen beantworten zu können.

async function sendMessages(usersOnDuty: TSlackUser[]): Promise<void> {
 const botText = new BotTextLoader(‘sendKitchenDutyReminder’, defaultStrings);
 await botText.ready();
 usersOnDuty.forEach(user => {
   botApi.sendPrivateRichMessage(
     {
       text: botText.line(‘youAreOnDuty’, {
         peopleAlsoInDuty: `<@${usersOnDuty
           .filter(u => u.id !== user.id)
           .map(u => u.id)
           .join(‘>, <@’)}>`,
       }),
     },
     user.id
   );
 });
}

Wann immer ein Benutzer mit Alan redet, wird der Satz mit einigen vordefinierten Mustern mithilfe der großartigen JavaScript-Library “Compromise” verglichen. Wenn der Satz einem bekannten Muster entspricht, antwortet Alan dementsprechend oder sucht ansonsten in Confluence mit den Schlüsselwörtern des Satzes nach Artikeln und verlinkt diese. Das ist zwar nicht perfekt, funktioniert aber oft erstaunlich gut!”

Ein Beispiel dafür ist, wenn man seiner Entrüstung über etwas keinen Einhalt mehr gebieten kann:

“Alan besitzt auch Funktionen, die seiner zukünftigen Verbesserung dienen. Statistiken für die verfügbaren Befehle werden intern festgehalten, um zu ermitteln, welche am meisten benutzt werden und Benutzer können direkt via Alan neue Features vorschlagen und Feedback geben.
Sie werden auch gelegentlich darüber informiert, wie Alan ihnen helfen kann, insbesondere über die Funktionen, die sie bisher noch nicht genutzt haben. Zudem erinnert Alan auch an bevorstehende Feiertage, schlägt kleine Übungen vor, um Ermüdung am Arbeitsplatz zu vermeiden und gibt sogar darüber Bescheid, wenn fehlerhafte Mite-Buchungen schon länger ignoriert wurden.”

Zusammenfassend lässt sich sagen, dass sich Alan jetzt schon um viele Dinge kümmert. Und wer soll schon wissen, wo die Grenzen liegen, wenn er bereits geistliche Ratschläge mit dem Wort Gottes geben kann?

Ähnliche Artikel
Stories
Angular Bootcamp
Stories
Praktika 2019: Ein Sommer bei Parkside
Group on the way to the course
Stories
Summer Event 2019: Die Jagd nach dem unechten Reh