Zum Hauptinhalt springen

Alexa lernt MR.KNOW kennen - Teil 2

Programmierung des Alexa-Skills

Im ersten Teil der Alexa MR.KNOW-Integration haben wir uns den Beispiel-Assistenten „Urlaubsanfrage“ angesehen und kurz erklärt, wie Alexa arbeitet. In diesem zweiten Teil schauen wir uns nun einen Intent genauer an.

Der StartAssistant Intent hört auf folgende Äußerungen „starte {assistent}“ bzw. „starte Assistent {assistent}“. Dabei ist {assistent} ein sogenannter Slot. Ein Slot ist eine Art Variable, mit der Alexa dann Gesprochenes abhängig vom Slot-Typen erkennen kann und diese an den IntentHandler weiterreicht.

 

 

Der {assistant} Slot ist vom Typ AMAZON.SearchQuery, welche für einen „Klartext“ verwendet werden kann. Im Alexa Skill Kit sind unterschiedlichste Slot-Typen vordefiniert.

 

Slot Type

AMAZON.DATE


AMAZON.DURATION


AMAZON.NUMBER


AMAZON.Ordinal


AMAZON.PhoneNumber


AMAZON.Time

Bedeutung

Konvertiert Wörter, die ein Datum darstellen, in ein Datumsformat. So zum Beispiel „heute“, „morgen“


Konvertiert ein Zeitintervall (5 Minuten) in ein numerisches Format (PT5M)


Konvertiert eine gesprochene Zahl, z.B. Fünfhundertundfünf in 505


Konvertiert Ordinale (Erster, Zweiter ..) in eine Zahl


Konvertiert eine Telefonnummer in ein numerisches Format


Konvertiert eine Zeitangabe in ein Zeitformat

 

Eine vollstände Liste findet man in der Alexa Developer Dokumentation.

In unserem Urlaubsworkflow wird der MR.KNOW Skill durch „Alexa MR.KNOW“ gestartet. Der MR.KNOW Skill Handler verbindet sich dann mit dem BPMN-2.0-Prozess-System, fragt dieses nach seinen alexafähigen Assistenten und übergibt Alexa dann einen Ansage-Text in dieser Form:

 

 

Wird jetzt mit „starte Urlaubsanfrage“ geantwortet, so ruft Alexa den IntentHandler StartAssistant mit der Variablenbelegung assistant = „Urlaubsanfrage“ auf. Der Handler startet dann den Assistenten-Prozess auf dem Prozess-System und wartet auf seine erste Frage. MR.KNOW-Fragen werden intern durch eine BPMN-2.0-Aufgabe (Task) realisiert. Diese zeichnet sich dadurch aus, dass der Prozess so lange wartet, bis die Ende-Bedingung der Aufgabe erfüllt ist. Die Frage des Assistenten selbst wird in Daten zur Aufgabe gehalten. Der IntentHandler muss nun vom Prozess-System die Aufgabe und Ende-Bedingung abfragen. Je nach Datentyp der Ende Bedingung wird Alexa dazu veranlasst, die Frage zu stellen und auf eine Eingabe eines bestimmten Datentyps (String, Boolean, Date, Time ..) zu warten.

 

 

Bei unserem Urlaubs-Assistenten wird zunächst nach dem Vornamen des Antragstellers gefragt. Aber wie veranlasse ich Alexa, nach einem bestimmten Datentyp (Slot) eines Intents zu fragen? Die Antwort auf einen Intent kann sogenannte Delegates enthalten. D.h. ich kann in der Antwort Alexa zu einem bestimmten Intent delegieren. Diese Delegates haben eine eigene Slot Map (Variablen-Belegungen). Somit ist der Handler in der Lage erstens zu einem bestimmtem Intent zu delegieren und zweitens dazu noch die Variablenbelegung zu manipulieren. So sieht z.B. die JSON-Antwort des Intent Handlers wie folgt aus:

 

 

Der Handler leitet an den Intent „AnswerQuestion“ mit dem Slot „STRING“ weiter. Alexa stellt dann die Antwort des Handler als Frage. Dann wartet sie in diesem Fall auf die Eingabe eines STRINGS und ruft dann den Intent AnswerQuestion mir der Variablenbelegung auf.

 

 

Im dritten Teil schauen wir uns den AnswerQuestion Intent und dessen Handler noch genauer an.

 


Rückruf-Service
Schreiben Sie uns
Newsletter-Anmeldung

MR.KNOW