Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

IPC 2017 - Alexa Skills für Amazon Echo mit PHP entwickeln

341 Aufrufe

Veröffentlicht am

Digitale Sprachassistenten sind in aller Munde. Alexa mischt mit dem Amazon Echo ganz vorne mit. Doch die meisten Entwickler verbinden die Programmierung von Alexa Skills nicht direkt mit PHP. Im Frühsommer 2017 basierte der am häufigsten eingesetzte deutschsprachige Skill jedoch auf einer PHP-Anwendung. In dieser Session erfahren Sie vom Entwickler dieses Skills, wie Sie Ihren Alexa Skill konfigurieren können und wie Sie für das Backend auf Ihre PHP-Kenntnisse zurückgreifen können. Zudem lernen Sie, welche Fallstricke es bei der Entwicklung zu beachten gibt, und wie Sie diese meistern.

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

IPC 2017 - Alexa Skills für Amazon Echo mit PHP entwickeln

  1. 1. Alexa Skills für Amazon EchoAlexa Skills für Amazon Echo mit PHP entwickelnmit PHP entwickeln
  2. 2. Ralf EggertRalf Eggert CEO Travello GmbH, ZF Trainer, Autor, Coach,CEO Travello GmbH, ZF Trainer, Autor, Coach, PHP Entwickler & Alexa Skill EntwicklerPHP Entwickler & Alexa Skill Entwickler
  3. 3. Drei Fragen!Drei Fragen!
  4. 4. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 44 vonvon 6060 AgendaAgenda Amazon Alexa Grundlagen  Skill vorbereiten  Warum PHP? Skill Code implementieren Meine Erkenntnisse 
  5. 5. Amazon Alexa GrundlagenAmazon Alexa Grundlagen
  6. 6. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 66 vonvon 6060 Wie funktioniert ein Alexa Request?Wie funktioniert ein Alexa Request? AWS Lambda Function Alexa Voice Service  
  7. 7. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 77 vonvon 6060 Wie funktioniert ein Alexa Request?Wie funktioniert ein Alexa Request? AWS Lambda Function Alexa Voice Service  Voice Command 
  8. 8. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 88 vonvon 6060 Wie funktioniert ein Alexa Request?Wie funktioniert ein Alexa Request? AWS Lambda Function Alexa Voice Service  Voice Command Voice Request 
  9. 9. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 99 vonvon 6060 Wie funktioniert ein Alexa Request?Wie funktioniert ein Alexa Request? AWS Lambda Function Alexa Voice Service  Voice Command Voice Request JSON Request 
  10. 10. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1010 vonvon 6060 Wie funktioniert ein Alexa Request?Wie funktioniert ein Alexa Request? AWS Lambda Function Alexa Voice Service  Voice Command Voice Request JSON Request JSON Response
  11. 11. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1111 vonvon 6060 Wie funktioniert ein Alexa Request?Wie funktioniert ein Alexa Request? AWS Lambda Function Alexa Voice Service Text Response  Voice Command Voice Request JSON Request JSON Response
  12. 12. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1212 vonvon 6060 Wie funktioniert ein Alexa Request?Wie funktioniert ein Alexa Request? AWS Lambda Function Alexa Voice Service Text Response  Voice Response Card Response Voice Command Voice Request JSON Request JSON Response
  13. 13. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1313 vonvon 6060 Alternativer RequestAlternativer Request HTTPS Endpoint Server Alexa Voice Service Text Response  Voice Response Card Response Voice Command Voice Request JSON Request JSON Response
  14. 14. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1414 vonvon 6060 Alexa Voice Service (AVS)Alexa Voice Service (AVS) Alexa Voice Service Automatic Speech Recognition (ASR) Natural Language Understanding (NLU) Text To Speech (TTS) Voice Command Mapping
  15. 15. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1515 vonvon 6060 Alexa Skills Kit (ASK)Alexa Skills Kit (ASK) Alexa Skills Kit Interaction-Model / Skill Builder Configuration Publishing / Privacy Test Service Simulator Beta Test
  16. 16. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1616 vonvon 6060 ASK ÜberblickASK Überblick
  17. 17. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1717 vonvon 6060 Alexa Skill BuilderAlexa Skill Builder
  18. 18. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1818 vonvon 6060 AWS Lambda FunctionsAWS Lambda Functions
  19. 19. Warum PHP?Warum PHP?
  20. 20. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2020 vonvon 6060 Mögliche LösungsansätzeMögliche Lösungsansätze PHP für AWS kompilieren Unterstützte Runtime Engine für AWS einsetzen Eigenen HTTPS Endpoint Server einsetzen
  21. 21. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2121 vonvon 6060 Unterstützte Runtime Engine?Unterstützte Runtime Engine?
  22. 22. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2222 vonvon 6060 PHP für AWS Lambda kompilieren?PHP für AWS Lambda kompilieren? https://goo.gl/N9VVvb
  23. 23. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2323 vonvon 6060 Eigener HTTPS Endpoint Server?Eigener HTTPS Endpoint Server?
  24. 24. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2424 vonvon 6060 Lösung gefundenLösung gefunden PHP für AWS kompilieren Unterstützte Runtime Engine für AWS einsetzen Eigenen HTTPS Endpoint Server einsetzen
  25. 25. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2525 vonvon 6060 Nachteile eigener HTTPS EndpointNachteile eigener HTTPS Endpoint Einige Tools arbeiten nur mit Lambda (API, CLI) Eigene Library für Alexa aufbauen Server Administration
  26. 26. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2626 vonvon 6060 Vorteile eigener HTTPS EndpointVorteile eigener HTTPS Endpoint Jede gewünschte Software einsetzbar Vollständige Kontrolle über die Serverumgebung Keine Datenschutzbedenken (weiche Bedenken)
  27. 27. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2727 vonvon 6060 Open-source PHP LibraryOpen-source PHP Library https://github.com/travello-gmbh/
  28. 28. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2828 vonvon 6060 Mein aktueller Tech StackMein aktueller Tech Stack
  29. 29. Skill vorbereitenSkill vorbereiten
  30. 30. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3030 vonvon 6060 DemoDemo
  31. 31. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3131 vonvon 6060 Beispieldialoge erstellenBeispieldialoge erstellen
  32. 32. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3232 vonvon 6060 Beispieldialog IBeispieldialog I Alexa, starte Mein Zoo!  Willkommen in deinem Zoo. Nenne mir ein Tier aus meinem Zoo!  Ein Elefant lebt in deinem Zoo. Danke Alexa.  Bitte!
  33. 33. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3333 vonvon 6060 Beispieldialog IIBeispieldialog II Alexa, starte Mein Zoo!  Willkommen in deinem Zoo. Wie viele Tiere leben in meinem Zoo?  In deinem Zoo leben 42 Tiere! Danke Alexa.  Bitte!
  34. 34. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3434 vonvon 6060 Flussdiagramme erstellenFlussdiagramme erstellen
  35. 35. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3535 vonvon 6060 FlussdiagrammFlussdiagramm Willkommen in deinem Zoo. Starte Mein Zoo Nenne mir ein Tier aus meinem Zoo! In deinem Zoo leben 42 Tiere! »nenne« »anzahl« »nenne« »anzahl« Bitte! »danke« »danke« »danke«
  36. 36. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3636 vonvon 6060 Alexa Skills Kit konfigurierenAlexa Skills Kit konfigurieren
  37. 37. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3737 vonvon 6060 Eigene Slot Types erstellenEigene Slot Types erstellen
  38. 38. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3838 vonvon 6060 Eigene Intents erstellenEigene Intents erstellen
  39. 39. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3939 vonvon 6060 HTTPS Endpoint konfigurierenHTTPS Endpoint konfigurieren
  40. 40. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4040 vonvon 6060 SSL Zertifikat konfigurierenSSL Zertifikat konfigurieren
  41. 41. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4141 vonvon 6060 HTTPS Endpoint testenHTTPS Endpoint testen
  42. 42. Skill Code implementierenSkill Code implementieren
  43. 43. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4343 vonvon 6060 Beispielanwendung installierenBeispielanwendung installieren $ git clone https://github.com/travello-gmbh/example-zoo-skill $ cd example-zoo-skill $ composer install $ sudo chmod -R 777 data/cache/ // Virtual Host für http://example-zoo-skill einrichte // mit dem Pfad example-zoo-skill/html/ als Doc Root
  44. 44. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4444 vonvon 6060 Beispielanwendung testenBeispielanwendung testen /data/postman/collection.json
  45. 45. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4545 vonvon 6060 Textdatei aktualisierenTextdatei aktualisieren return [ 'launchTitle' => 'Willkommen', 'launchMessage' => 'Willkommen in deinem Zoo', 'repromptMessage' => 'Noch ein Tier oder abbrechen?', 'helpTitle' => 'Hilfe', 'helpMessage' => 'Frage, welches Tier in deinem Zoo ' . 'ist und wie viele Tiere es sind.', 'cancelTitle' => 'Danke', 'cancelMessage' => 'Danke und bis bald!', 'stopTitle' => 'Danke', 'stopMessage' => 'Danke und bis bald!', 'animalTitle' => 'Ein Tier', 'animalMessage' => '%1$s lebt in deinem Zoo!', 'countTitle' => 'Tierzählung', 'countMessage' => 'In deinem Zoo leben %1$s Tiere!', ]; /data/texts/zoo.common.texts.de-DE.php
  46. 46. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4646 vonvon 6060 Intent Klasse erstellenIntent Klasse erstellen <?php namespace ZooIntent; use TravelloAlexaLibraryIntentAbstractIntent; use TravelloAlexaLibraryResponseAlexaResponse; use TravelloAlexaLibraryResponseCardStandard; use TravelloAlexaLibraryResponseOutputSpeechSSML; class AnimalIntent extends AbstractIntent { const NAME = 'AnimalIntent'; public function handle(string $smallImageUrl, string $largeImageUrl): AlexaResponse { $zooTitle = $this->getTextHelper()->getAnimalTitle(); $zooMessage = $this->getTextHelper()->getAnimalMessage('Ein Elefant'); $this->getAlexaResponse()->setOutputSpeech(new SSML($zooMessage)); $this->getAlexaResponse()->setCard( new Standard($zooTitle, $zooMessage, $smallImageUrl, $largeImageUrl) ); return $this->getAlexaResponse(); } } /module/Zoo/src/Intent/AnimalIntent.php
  47. 47. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4747 vonvon 6060 Skill Configuration ISkill Configuration I <?php namespace Zoo; use TravelloAlexaLibraryApplicationAlexaApplication; use TravelloAlexaLibraryTextHelperTextHelper; class ConfigProvider { const NAME = 'zoo-skill'; public function getSkills(): array { return [ self::NAME => [ 'applicationId' => 'amzn1.ask.skill.place-your-skill-id-here', 'applicationClass' => AlexaApplication::class, 'textHelperClass' => TextHelper::class, 'sessionDefaults' => [], 'smallImageUrl' => 'https://www.travello.audio/cards/zoo-480x480.png', 'largeImageUrl' => 'https://www.travello.audio/cards/zoo-800x800.png', /** ... */ ] ]; } } /module/Zoo/src/ConfigProvider.php
  48. 48. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4848 vonvon 6060 Skill Configuration IISkill Configuration II namespace Zoo; use TravelloAlexaZfIntentAbstractIntentFactory; use ZooIntentAnimalIntent; class ConfigProvider { public function getSkills(): array { return [ self::NAME => [ /** ... */ 'intents' => [ 'aliases' => [ AnimalIntent::NAME => AnimalIntent::class ], 'factories' => [ AnimalIntent::class => AbstractIntentFactory::class ], ], 'texts' => [ 'de-DE' => include PROJECT_ROOT . '/data/texts/zoo.common.texts.de-DE.php', 'en-US' => include PROJECT_ROOT . '/data/texts/zoo.common.texts.en-US.php', ], ] ]; } } /module/Zoo/src/ConfigProvider.php
  49. 49. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4949 vonvon 6060 Zoo Anwendung testenZoo Anwendung testen /data/postman/collection.json
  50. 50. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5050 vonvon 6060 Weitere FeaturesWeitere Features Session Attribute step2→ Slot-Type Tierarten step4→ https://github.com/travello-gmbh/example-zoo-skill Zweiter Intent step3→
  51. 51. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5151 vonvon 6060 In Kürze in der Library 3.0In Kürze in der Library 3.0 https://github.com/travello-gmbh/amazon-alexa-skill-library Codegenerierung für Skills Codegenerierung für Intents
  52. 52. Meine ErkenntnisseMeine Erkenntnisse
  53. 53. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5353 vonvon 6060 Früher ErfolgFrüher Erfolg 6 Monate Top 10 Aktivierte Skills 75.000 Kunden bisher 64 Kundenbewertungen bisher 2.500.000 »Utterances« bisher Meist genutzter Skill (DE) in 05/2017
  54. 54. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5454 vonvon 6060 Größte HerausforderungenGrößte Herausforderungen Slot Type für deutsche Vorname Signaturvalidierung Kategorie Slot Type Intents→ Chance ersten Skill abzuschießen Zweiter Server für Tests Komplexeres VUI / CUI
  55. 55. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5555 vonvon 6060 ZertifizierungsprozessZertifizierungsprozess 7 Tage für Feedback (02/2017) Signaturvalidierung Problem 16 Stunden bis Live (07/2017) Invocation Name Problem 0 Probleme »Abbrechen« Intent Problem
  56. 56. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5656 vonvon 6060 Zahlen zur EntwicklungZahlen zur Entwicklung 10 Arbeitstage zusammen 80% für Infrastruktur Code 15 Arbeitstage zusammen 90% für Skill Code 20% für Skill Code 10% für Infrastruktur Code
  57. 57. IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5757 vonvon 6060 Wichtigste ErkenntnisseWichtigste Erkenntnisse Mit einfachem Skill beginnen Gründlich testen Solide Code Basis schreiben Mehr als einen Skill erstellen Durchdachte VUI erstellen Slot-Types nicht blind vertrauen Spaß haben!
  58. 58. Letzte NachrichtenLetzte Nachrichten
  59. 59. Fragen?Fragen?
  60. 60. Danke!Danke! Mail: ralf@travello.audioMail: ralf@travello.audio Web: www.travello.audioWeb: www.travello.audio

×