Einen Alexa Skill zu bauen, ist sehr einfach, wenn man diesen mit personalisierten Produktempfehlungen von Recolize realisiert. Im Folgenden beschreibe ich die einzelnen, notwendigen Schritte und im Laufe dieses Artikels werden wir einen einfachen Beispiel-Skill entwickeln, der als Startpunkt für die eigene Skill-Entwicklung genutzt werden kann. Der Source-Code dafür steht auf unserem Github Account zur Verfügung.
Wir werden einen sogenannten Custom Alexa Skill implementieren, der die einfache Frage „Alexa, öffne Recolize and frage was er mir heute empfehlen kann“ or „Alexa, öffne Recolize und frage nach der Empfehlung des Tages“ clever beantworten kann.
Dafür benötigen wir die Skill-Definition und zusätzlich eine AWS Lambda Funktion, die die Recolize Recommendation API anfragt. Das Schöne an AWS Lambda ist, dass keine einzelnen Server benötigt werden, sondern das sogenannte Serverless Framework sich darum kümmert und nur so viele Ressourcen bereit stellt, wie für die Beantwortung der Alexa-Requests notwendig ist. Weitere Informationen hierzu finden sich in der AWS Lambda Dokumentation.
Wir nutzen die offizielle Ask CLI Commands, um einfach sowohl den Skill selbst als auch die Lambda Funktion, die die Recolize API aufruft, bereitzustellen.
Schritte
- Als erstes – wenn noch nicht geschehen – muss ein Account im Amazon Alexa Developer Portal über den Button oben rechts erstellt werden
- Clone unser Beispiel Github-Repository und wechsel in das Verzeichnis:
git clone https://github.com/Recolize/recommendation-engine-sample-alexa-skill.git
- Nächster Schritt ist das Verbinden der Ask CLI mit dem Amazon Entwickler Account:
ask init
- Alexa Skills werden über sogenannte „Invocation Names“ gestartet, was bedeutet, dass jedes Mal wenn Du „Alexa, öffne Recolize und frage..“ sagst, das Gerät weiß, welcher Skill aktiviert werden soll. Deswegen ist es für später auch sehr wichtig, sich Gedanken über einen sinnvollen Invocation Name zu machen, der gut klingt, leicht im Gedächtnis bleibt und einfach auszusprechen ist.
Standardmäßig hört unser Skill auf den Namen „Recolize“, dies kann später aber durch Ändern der JSON-Dateien im models/-Verzeichnis geändert werden. - Anschließend deployen wir den Alexa Skill mit dem entsprechend Ask CLI Command. Das Deployment berücksichtigt alle benötigten Schritte, wie das Erstellen der Lambda-Funktion und des Skills inklusive der Skill-Intents.
ask deploy
- Der letzte Schritt ist das Setzen der Parameter für die AWS Lambda-Funktion, das über Umgebungsvariablen realisiert wird. Dazu kontaktiere uns bitte, damit wir die individuellen Alexa Skill Parameter zur Verfügung stellen können. Diese müssen anschließend in der AWS Developer Console im Bereich AWS Lambda Funktionen für die Lambda Funktion „whatCanYouRecommend“ (diese wurde automatisch beim Deployment angelegt) eingetragen werden. Auf der Seite etwas nach unten scrollen in den Bereich „Umgebungsvariablen“ und dort die von uns mitgeteilten Parameter eintragen:
See It in Action
Genug graue Theorie, schauen wir uns an, wie der Skill in der Praxis sich verhält. Das unten stehende Demo-Video zeigt die Beispiel-Applikation in Kombination mit dem Amazon Echo Dot Gerät:
Abschließende Tipps
- Das Testen des Alexa Skills kann entweder direkt auf dem Alexa-Gerät erfolgen oder einfacher am Laptop mit dem sehr guten Testing Tool aus der Alexa Developer Console.
- Wir haben den Beispiel-Code unter der GPL veröffentlicht, so dass er in eigenen Alexa Skill Projekten verwendet werden kann
- Später, wenn Euer Skill veröffentlicht werden soll, lohnt es sich die Alexa Dokumentation für Skill-Submission zu lesen
- Vermutlich einer der ersten Dinge, die angepasst werden müssen, sind die Alexa Antworten. Dies kann sehr einfach in der Haupt-Javascript-Datei lambda/custom/index.js erfolgen. Um nur die Lambda Funktion zu aktualisieren, ist nachstehendes Command sehr hilfreich, nachdem man die ARN der Lambda Funktion aus der AWS Developer Console herausgefunden hat:
ask lambda upload -f arn:aws:lambda:###FILL THIS WITH YOUR INDIVIDUAL ARN###:function:whatCanYouRecommend
Mehr ist nicht nötig, um einen innovativen Voice Commerce Skill zu bauen!
Ok, vielleicht übertreibe ich etwas, aber an dem Beispiel kann man schön sehen, wie einfach es ist, mit Recolize einen Alexa Skill zu implementieren und gleichzeitig können alle Recolize Features wie statische Produktlisten, ausgiebige Filter-Mechanismen, usw. in Alexa genutzt werden.
Welche Use Cases kommen Euch in den Kopf? Ich bin sehr gespannt!