Softwarebereitstellung per Sprachbefehl

Dieses interne Projekt wurde von uns entwickelt um die Möglichkeiten von stimmlichen Benutzerschnittstellen (VUI, Definition siehe unten) und deren praktischen Tauglichkeit im Entwicklungsprozess zu untersuchen.

Wir haben uns dafür entschieden dieses VUI mit Amazon Alexa zu realisieren und haben für diesen Zweck einen Amazon Echo Dot erworben. Die entsprechende Erweiterung – den sogenannten Alexa Skill – haben wir technisch mit Hilfe des Alexa Skill Kits und einem ASP.NET Core 2.0 Backend erstellt womit wir unseren internen Build- und Delivery-Server (Jenkins) angesteuert bzw. abgefragt haben.

Information: Der „awanto Jenkins“ Alexa Skill ist privat und nicht öffentlich über den Amazon Marktplatz erhältlich!

Interessiert den Skill im eigenen Unternehmen einzuführen? Kontaktieren Sie uns!

Als Ergebnis unseres Projektes, haben wir nun die Möglichkeit unser Backend für den Alexa Skill so zu konfigurieren, dass wir per Sprachbefehl definierte Builds starten und abbrechen können, den Status zu einem aktuellen Projekt und/oder Build live abfragen können und sogar direkt die Bereitstellung einer neuen Release unserer Softwarepakete für unsere Kunden steuern können.

Funktionieren tut dies beispielsweise mit den folgenden Sprachbefehlen:

„Alexa, öffne awanto Jenkins und erstelle einen Dev Build vom Projekt Asset Management.“

Beispielantwort von Alexa:
„Ich starte den Dev Build Nummer 123 für das Projekt Asset Management.“

„Alexa, frage awanto Jenkins nach dem aktuellen Status vom Projekt Asset Management.“

Beispielantwort von Alexa:
„Der Dev Build für das Projekt Asset Management wird gerade mit der Jobnummer 123 ausgeführt. Er wird voraussichtlich in 5 Minuten fertiggestellt sein!“

Dialogbeispiel:

„Alexa, öffne awanto Jenkins und erstelle das Projekt Lohnanwendung.“

Antwort von Alexa:
„Welchen Buildtyp beziehungsweise Auftragstyp möchtest Du verwenden?“

„Interne Release“

Antwort von Alexa (Absichtsbestätigung):
„Hast Du alle notwendigen Vorbereitungen wie den Release-Branch erstellt und möchtest die Interne Release Version 1.1.2.123 jetzt erstellen? Antworte bitte mit Ja oder Nein.“

„Ja!“

Antwort von Alexa:
„Ich starte den Build Interne Release Nummer 123 für das Projekt Lohnanwendung.“

Voice User Interface (VUI)

Unter Voice User Interfaces (VUI) versteht man eine Schnittstelle zwischen einer Software und/oder Hardware und seinem Benutzer welche anhand eines Sprachdialogsystems realisiert wird. Die Eingaben und Ausgaben, also die Interaktion, des Benutzers mit dem technischen Gerät erfolgt somit über gesprochene Sprache.

Die Verwendung von Sprachsteuerung für bestimmte Aufgaben zu Hause oder auch in Betrieben wird unserer Meinung nach in Zukunft eine immer größere Rolle spielen. Durch das Wegfallen von manuellen Interaktionen mit z.B. Bildschirmen, Tastaturen oder auch Touchscreens eröffnen sich in manchen Bereichen neue Potentiale in Punkto Produktivität, Effizienz und zeitlicher Informationskontext. Dieser zeitliche Kontext der Information ist insbesondere in Bereichen interessant, bei denen manuelle Tätigkeiten mit beiden Händen ausgeführt werden und bestimmte Protokolle oder Berichte möglichst Zeitnah geführt werden müssen.

Umsetzung

Um einen Alexa Skill zu aktivieren oder zu verwenden muss man dem Skill einen sogenannten Aufrufsnamen zuordnen, damit der Alexa Voice Service identifizieren kann an welches Backend oder Service die Benutzeranforderung gesendet wird. In unserem Fall haben wir uns für den Aufrufsnamen „awanto Jenkins“ entschieden (siehe Beispiele weiter oben).

Das Alexa Voice Service nimmt die Sprachdaten des Echo Dot entgegen und wandelt diese in Text um (Speech to Text). Dabei wird der Text analysiert und anhand des Aufrufsnamens ein sigenanntes Interaktionsmodel für den Skill geladen.

In diesem Modell wird definiert, welche Absichten (Intents) der Benutzer äußern kann bzw. vom eigenen Skill verstanden werden. Diese Absichten werden in einem Modell anhand von Musteräußerungen definiert welche ihrerseits wieder in Slots mit definierten Wertegruppen unterteilt werden können. Ein so ein Slot ist in unserem Fall z.B. der Build Typ welcher die Werte „Dev Build, Interne Release, Kunden Release“ etc. haben kann.

Weiters werden in diesem Modell neben den Absichten auch eventuelle Dialoge zwischen Alexa und dem Benutzer definiert. Solche Dialoge umfassen z.B. das Nachfragen von Slot-Werten, wenn diese im aktuellen Sprachbefehl fehlen oder nicht vorhanden sind bzw. erkannt wurden, die Bestätigung ob ein Slot-Wert richtig verstanden wurde oder eine Bestätigung des gesamten Sprachbefehls.

Hat das Alexa Voice Service die Spracheingabe umgewandelt, wird ein HTTP POST Request an ein API Backend gesendet, welche diesen weiterverarbeitet. In unserem Fall haben wir eine Backend API mit dem ASP.Net Core 2.0 auf Linuxbasis gehostet. Neben der einer Standard Datenverschlüsselung per SSL, implementiert die API die von Amazon erforderlichen Validierungen und Sicherheitsaspekte um einen Missbrauch des Dienstes zu verhindern.
Wenn diese Checks positiv durchlaufen wurden, werden die Daten jetzt im Backend weiterverarbeitet. Entsprechend den vorhandenen Befehlen und Daten wird nun intern unser Build-Server abgefragt bzw. angesteuert.
Die Ergebnisse werden danach für eine Sprachausgabe aufbereitet und als Ergebnis zurück an den Alexa Voice Service gesendet. Dort wird der Text wieder in Sprache transformiert und am Amazon Echo Dot wiedergegeben.

Somit lassen sich per Sprachbefehl Projekte unseres Build-Server abfragen, aktuelle Jobs abbrechen bzw. neue Jobs starten.

Fazit, Erkenntnisse und Ausblick

Die Umsetzung des Skills mit Amazon Alexa war aufgrund der gut dokumentierten API sehr einfach und schnell erledigt. Wo wir hin und wieder vor kleineren Problemen standen waren aussagekräftige Beispiele für mehrsprachige Interaktionsmodelle der ASK CLI zu finden. Die meisten Beispielskills verwenden hier nur Absichtsmodelle (die ein Teil eines Interaktionsmodells darstellen). Vor allem ist hier die Dokumentation der API nicht ganz up-to-date, da sich z.B. für die Dialogdefinition doch ein paar Felder in Beispielsammlungen finden, die nicht in der API verzeichnet sind.

Mit dem entsprechenden Ehrgeiz und der Zeit die Beispielsammlungen zu durchsuchen, findet man aber schnell funktionierte Beispiele für ein komplettes Schema.

Im Zuge unseres Projektes haben wir folgende Erkenntnisse gewonnen:

  • Die Entwicklung eines komplexen Alexa Skills in einem Team mit mehr als zwei Mitgliedern wird schwierig vor allem wenn ein Continous Integration Konzept vorhanden sind. Der Ursache dafür ist unserer Meinung nach darin zu finden, dass für die Tests und das Ausprobieren der Skill immer in das Amazon-Konto deployed werden muss um von einzelnen Entwicklern getestet zu werden.
    Dies lässt sich zwar mit der Nutzung der ASK CLI per Scripting realisieren, kann jedoch trotzdem zu Integrationsproblemen führen.
  • Entwicklung von mehrsprachigen Skills (awanto Jenkins funktioniert für Deutsch und Englisch) ist mit der ASK CLI problemlos möglich, erfordert aber eine getrennte Verwaltung des Integrationsmodells je Sprache. Dies kann bei komplexen Skills fehleranfällig werden.
  • Der Slot-Typ AMAZON.Literal, welcher einen Platzhalter darstellt ist für deutsche Skills nicht verfügbar. Eigene Slot-Typen arbeiten mit hinterlegten Wertelisten damit Spracheingaben einem Slot zugeordnet werden können. Für dynamische Spracheingaben, funktioniert auch eine Identifikationswert, wenn der gesprochene Wert nicht auf der Werteliste vorhanden ist, allerdings nur dann zuverlässig, wenn es sich um allgemein verständliche Wörter handelt. Probleme machen hier anderssprachige Wörter (z. B. Fremdwörter) oder Eigennamen bzw. Firmennamen.
  • Eine Sprachmischung bei der Sprachausgabe ist derzeit nur über Phonetik möglich. Wenn man also in einem deutschen Satz englische Nebensätze, Zitate oder auch Wörter hat funktioniert dies teilweise. Es besteht momentan nicht die Möglichkeit z. B. einen Nebensatz in der Sprachausgabe als „englisch“ zu markieren und somit die entsprechende Betonung und Aussprache am Echo Gerät zu erzielen.

Was wir in unserem Beispielskill außen vor gelassen haben ist die Benutzeridentifizierung anhand der Sprache. Somit kann derzeit jeder, der die entsprechenden Sprachbefehle kennt eine neue Softwareversion zu unseren Kunden deployen. Dies werden wir entweder über einen konfigurierbaren Code/Password oder über eine Benutzerberechtigung lösen.

Wir sehen in den stimmlichen Benutzerschnittstellen großes Potential auch für den Firmenbereich, obwohl die „normale“ Variante des Alexa Voice Service mit den Amazon Echo Geräten eindeutig im Konsumentenbereich positioniert ist. Amazon bietet aber mit Alexa for Business  erste gute Konzepte für eine Integration von stimmlichen Benutzerschnittstellen in den Geschäftsalltag.