{"id":3469,"date":"2018-08-09T15:41:21","date_gmt":"2018-08-09T13:41:21","guid":{"rendered":"https:\/\/www.recolize.com\/?p=3469"},"modified":"2018-09-12T10:50:22","modified_gmt":"2018-09-12T08:50:22","slug":"wie-baue-ich-einen-alexa-skill-fuer-meinen-online-shop-mit-recolize-in-15-minuten","status":"publish","type":"post","link":"https:\/\/www.recolize.com\/de\/blog\/wie-baue-ich-einen-alexa-skill-fuer-meinen-online-shop-mit-recolize-in-15-minuten\/","title":{"rendered":"Wie baue ich einen Alexa Skill f\u00fcr meinen Online Shop mit Recolize in 15 Minuten?"},"content":{"rendered":"<section class=\"section  text-normal section-text-no-shadow section-inner-no-shadow section-normal section-opaque\"  >\n    \n    <div class=\"background-overlay grid-overlay-0 \" style=\"background-color: rgba(0,0,0,0);\"><\/div>\n\n    <div class=\"container container-vertical-default\">\n        <div class=\"row vertical-default\">\n            <div class=\"col-md-12     text-default small-screen-default\"  ><div class=\"col-text-1 text-normal  element-top-20 element-bottom-20\" data-os-animation=\"none\" data-os-animation-delay=\"0s\">\n    <p>Einen Alexa Skill\u00a0zu 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\u00fcr die eigene Skill-Entwicklung genutzt werden kann. Der Source-Code daf\u00fcr steht auf unserem\u00a0<a href=\"https:\/\/github.com\/Recolize\/recommendation-engine-sample-alexa-skill\" target=\"_blank\" rel=\"noopener\">Github Account<\/a>\u00a0zur Verf\u00fcgung.<!--more--><\/p>\n<p>Wir werden einen sogenannten <a href=\"https:\/\/developer.amazon.com\/de\/docs\/custom-skills\/understanding-custom-skills.html\" target=\"_blank\" rel=\"noopener\">Custom Alexa Skill<\/a>\u00a0implementieren, der die einfache Frage &#8222;<em>Alexa, \u00f6ffne Recolize and frage was er mir heute empfehlen kann<\/em>&#8220; or &#8222;<em>Alexa, \u00f6ffne Recolize und frage nach der Empfehlung des Tages<\/em>&#8220; clever beantworten kann.<br \/>\nDaf\u00fcr ben\u00f6tigen wir die Skill-Definition und zus\u00e4tzlich eine AWS Lambda Funktion, die die Recolize Recommendation API anfragt. Das Sch\u00f6ne an AWS Lambda ist, dass keine einzelnen Server ben\u00f6tigt werden, sondern das sogenannte Serverless Framework sich darum k\u00fcmmert und nur so viele Ressourcen bereit stellt, wie f\u00fcr die Beantwortung der Alexa-Requests notwendig ist. Weitere Informationen hierzu finden sich in der AWS Lambda Dokumentation.<\/p>\n<p>Wir nutzen die offizielle\u00a0<a href=\"https:\/\/developer.amazon.com\/de\/docs\/smapi\/ask-cli-intro.html\" target=\"_blank\" rel=\"noopener\">Ask CLI Commands<\/a>, um einfach sowohl den Skill selbst als auch die Lambda Funktion, die die Recolize API aufruft, bereitzustellen.<\/p>\n<\/div>\n<h2 class=\"text-left  element-top-0 element-bottom-0 text-normal normal default\" data-os-animation=\"none\" data-os-animation-delay=\"0s\" >\n    Schritte<\/h2><div class=\"col-text-1 text-normal  element-top-20 element-bottom-20\" data-os-animation=\"none\" data-os-animation-delay=\"0s\">\n    <ul>\n<li>Als erstes &#8211; wenn noch nicht geschehen &#8211; muss ein Account im\u00a0<a href=\"http:\/\/developer.amazon.com\/alexa\" target=\"_blank\" rel=\"noopener\">Amazon Alexa Developer Portal<\/a>\u00a0\u00fcber den Button oben rechts erstellt werden<\/li>\n<li>Clone unser Beispiel Github-Repository und wechsel in das Verzeichnis:<\/li>\n<\/ul>\n<\/div>\n<div class=\" element-top-20 element-bottom-20\" data-os-animation=\"none\" data-os-animation-delay=\"0s\">\n    <pre>git clone https:\/\/github.com\/Recolize\/recommendation-engine-sample-alexa-skill.git<\/pre>\n<\/div><div class=\"col-text-1 text-normal  element-top-20 element-bottom-20\" data-os-animation=\"none\" data-os-animation-delay=\"0s\">\n    <ul>\n<li>N\u00e4chster Schritt ist das Verbinden der Ask CLI mit dem Amazon Entwickler Account:<\/li>\n<\/ul>\n<\/div>\n<div class=\" element-top-20 element-bottom-20\" data-os-animation=\"none\" data-os-animation-delay=\"0s\">\n    <pre>ask init<\/pre>\n<\/div><div class=\"col-text-1 text-normal  element-top-20 element-bottom-20\" data-os-animation=\"none\" data-os-animation-delay=\"0s\">\n    <ul>\n<li>Alexa Skills werden \u00fcber sogenannte &#8222;Invocation Names&#8220; gestartet, was bedeutet, dass jedes Mal wenn Du &#8222;Alexa, \u00f6ffne Recolize und frage..&#8220; sagst, das Ger\u00e4t wei\u00df, welcher Skill aktiviert werden soll. Deswegen ist es f\u00fcr sp\u00e4ter auch sehr wichtig, sich Gedanken \u00fcber einen sinnvollen Invocation Name zu machen, der gut klingt, leicht im Ged\u00e4chtnis bleibt und einfach auszusprechen ist.<br \/>\nStandardm\u00e4\u00dfig h\u00f6rt unser Skill auf den Namen &#8222;Recolize&#8220;, dies kann sp\u00e4ter aber durch \u00c4ndern der JSON-Dateien im <em>models\/<\/em>-Verzeichnis ge\u00e4ndert werden.<\/li>\n<li>Anschlie\u00dfend deployen wir den Alexa Skill mit dem entsprechend Ask CLI Command. Das Deployment ber\u00fccksichtigt alle ben\u00f6tigten Schritte, wie das Erstellen der Lambda-Funktion und des Skills inklusive der Skill-Intents.<\/li>\n<\/ul>\n<\/div>\n<div class=\" element-top-20 element-bottom-20\" data-os-animation=\"none\" data-os-animation-delay=\"0s\">\n    <pre>ask deploy<\/pre>\n<\/div><div class=\"col-text-1 text-normal  element-top-20 element-bottom-20\" data-os-animation=\"none\" data-os-animation-delay=\"0s\">\n    <ul>\n<li>Der letzte Schritt ist das Setzen der Parameter f\u00fcr die AWS Lambda-Funktion, das \u00fcber Umgebungsvariablen realisiert wird. Dazu\u00a0<a href=\"https:\/\/www.recolize.com\/de\/kontaktieren-sie-uns\/\">kontaktiere uns<\/a> bitte, damit wir die individuellen Alexa Skill Parameter zur Verf\u00fcgung stellen k\u00f6nnen. Diese m\u00fcssen anschlie\u00dfend in der\u00a0<a href=\"https:\/\/aws.amazon.com\/en\/console\/\" target=\"_blank\" rel=\"noopener\">AWS Developer Console<\/a>\u00a0im Bereich AWS Lambda Funktionen f\u00fcr die Lambda Funktion &#8222;whatCanYouRecommend&#8220; (diese wurde automatisch beim Deployment angelegt) eingetragen werden. Auf der Seite etwas nach unten scrollen in den Bereich &#8222;Umgebungsvariablen&#8220; und dort die von uns mitgeteilten Parameter eintragen:<br \/>\n<img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-3452 size-large\" src=\"https:\/\/www.recolize.com\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-05-um-23.42.40-1024x346.png\" alt=\"AWS Lambda: add environment variables\" width=\"1024\" height=\"346\" srcset=\"https:\/\/www.recolize.com\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-05-um-23.42.40-1024x346.png 1024w, https:\/\/www.recolize.com\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-05-um-23.42.40-300x102.png 300w, https:\/\/www.recolize.com\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-05-um-23.42.40-768x260.png 768w, https:\/\/www.recolize.com\/wp-content\/uploads\/2018\/08\/Bildschirmfoto-2018-08-05-um-23.42.40.png 1661w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/li>\n<\/ul>\n<\/div>\n<h2 class=\"text-left  element-top-0 element-bottom-0 text-normal normal default\" data-os-animation=\"none\" data-os-animation-delay=\"0s\" >\n    See It in Action<\/h2><div class=\"col-text-1 text-normal  element-top-20 element-bottom-20\" data-os-animation=\"none\" data-os-animation-delay=\"0s\">\n    <p>Genug graue Theorie, schauen wir uns an, wie der Skill in der Praxis sich verh\u00e4lt. Das unten stehende Demo-Video zeigt die Beispiel-Applikation in Kombination mit dem Amazon Echo Dot Ger\u00e4t:<\/p>\n<\/div>\n[vc_raw_html]JTNDaWZyYW1lJTIwd2lkdGglM0QlMjI1NjAlMjIlMjBoZWlnaHQlM0QlMjIzMTUlMjIlMjBzcmMlM0QlMjJodHRwcyUzQSUyRiUyRnd3dy55b3V0dWJlLW5vY29va2llLmNvbSUyRmVtYmVkJTJGWEJ0V1ZrODRvTnclMjIlMjBmcmFtZWJvcmRlciUzRCUyMjAlMjIlMjBhbGxvdyUzRCUyMmF1dG9wbGF5JTNCJTIwZW5jcnlwdGVkLW1lZGlhJTIyJTIwYWxsb3dmdWxsc2NyZWVuJTNFJTNDJTJGaWZyYW1lJTNF[\/vc_raw_html]<h2 class=\"text-left  element-top-0 element-bottom-0 text-normal normal default\" data-os-animation=\"none\" data-os-animation-delay=\"0s\" >\n    Abschlie\u00dfende Tipps<\/h2><div class=\"col-text-1 text-normal  element-top-20 element-bottom-20\" data-os-animation=\"none\" data-os-animation-delay=\"0s\">\n    <ul>\n<li>Das Testen des Alexa Skills kann entweder direkt auf dem Alexa-Ger\u00e4t erfolgen oder einfacher am Laptop mit dem sehr guten Testing Tool aus der Alexa Developer Console.<\/li>\n<li>Wir haben den Beispiel-Code unter der\u00a0<a href=\"https:\/\/www.gnu.org\/licenses\/gpl.html\" target=\"_blank\" rel=\"noopener\">GPL<\/a>\u00a0ver\u00f6ffentlicht, so dass er in eigenen Alexa Skill Projekten verwendet werden kann<\/li>\n<li>Sp\u00e4ter, wenn Euer Skill ver\u00f6ffentlicht werden soll, lohnt es sich die\u00a0<a href=\"https:\/\/developer.amazon.com\/de\/docs\/custom-skills\/certification-requirements-for-custom-skills.html\" target=\"_blank\" rel=\"noopener\">Alexa Dokumentation f\u00fcr Skill-Submission<\/a> zu lesen<\/li>\n<li>Vermutlich einer der ersten Dinge, die angepasst werden m\u00fcssen, sind die Alexa Antworten. Dies kann sehr einfach in der Haupt-Javascript-Datei\u00a0<em>lambda\/custom\/index.js<\/em> 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:<\/li>\n<\/ul>\n<\/div>\n<div class=\" element-top-20 element-bottom-20\" data-os-animation=\"none\" data-os-animation-delay=\"0s\">\n    <pre>ask lambda upload -f arn:aws:lambda:###FILL THIS WITH YOUR INDIVIDUAL ARN###:function:whatCanYouRecommend<\/pre>\n<\/div><div class=\"col-text-1 text-normal  element-top-20 element-bottom-20\" data-os-animation=\"none\" data-os-animation-delay=\"0s\">\n    <p>Mehr ist nicht n\u00f6tig, um einen innovativen Voice Commerce Skill zu bauen!<br \/>\nOk, vielleicht \u00fcbertreibe ich etwas, aber an dem Beispiel kann man sch\u00f6n sehen, wie einfach es ist, mit Recolize einen Alexa Skill zu implementieren und gleichzeitig k\u00f6nnen alle Recolize Features wie statische Produktlisten, ausgiebige Filter-Mechanismen, usw. in Alexa genutzt werden.<\/p>\n<p>Welche Use Cases kommen Euch in den Kopf? Ich bin sehr gespannt!<\/p>\n<\/div>\n<\/div>        <\/div>\n    <\/div>\n<\/section>\n\n","protected":false},"excerpt":{"rendered":"<p>Einen Alexa Skill\u00a0zu 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\u00fcr die eigene Skill-Entwicklung genutzt werden kann. Der Source-Code daf\u00fcr steht auf unserem\u00a0Github Account\u00a0zur Verf\u00fcgung.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1,20,21,774],"tags":[],"_links":{"self":[{"href":"https:\/\/www.recolize.com\/de\/wp-json\/wp\/v2\/posts\/3469"}],"collection":[{"href":"https:\/\/www.recolize.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.recolize.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.recolize.com\/de\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.recolize.com\/de\/wp-json\/wp\/v2\/comments?post=3469"}],"version-history":[{"count":8,"href":"https:\/\/www.recolize.com\/de\/wp-json\/wp\/v2\/posts\/3469\/revisions"}],"predecessor-version":[{"id":4259,"href":"https:\/\/www.recolize.com\/de\/wp-json\/wp\/v2\/posts\/3469\/revisions\/4259"}],"wp:attachment":[{"href":"https:\/\/www.recolize.com\/de\/wp-json\/wp\/v2\/media?parent=3469"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.recolize.com\/de\/wp-json\/wp\/v2\/categories?post=3469"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.recolize.com\/de\/wp-json\/wp\/v2\/tags?post=3469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}