60
Alexa Skills für Amazon Echo Alexa Skills für Amazon Echo mit PHP entwickeln mit PHP entwickeln

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

Embed Size (px)

Citation preview

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

Alexa Skills für Amazon EchoAlexa Skills für Amazon Echomit PHP entwickelnmit PHP entwickeln

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

Ralf EggertRalf EggertCEO Travello GmbH, ZF Trainer, Autor, Coach,CEO Travello GmbH, ZF Trainer, Autor, Coach,

PHP Entwickler & Alexa Skill EntwicklerPHP Entwickler & Alexa Skill Entwickler

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

Drei Fragen!Drei Fragen!

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 44 von von 6060

AgendaAgenda

Amazon Alexa Grundlagen

Skill vorbereiten

Warum PHP?

Skill Code implementieren

Meine Erkenntnisse

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

Amazon Alexa GrundlagenAmazon Alexa Grundlagen

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 66 von von 6060

Wie funktioniert ein Alexa Request?Wie funktioniert ein Alexa Request?

AWSLambdaFunction

Alexa Voice Service

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 77 von von 6060

Wie funktioniert ein Alexa Request?Wie funktioniert ein Alexa Request?

AWSLambdaFunction

Alexa Voice Service

Voice Command

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 88 von von 6060

Wie funktioniert ein Alexa Request?Wie funktioniert ein Alexa Request?

AWSLambdaFunction

Alexa Voice Service

Voice Command

Voice Request

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 99 von von 6060

Wie funktioniert ein Alexa Request?Wie funktioniert ein Alexa Request?

AWSLambdaFunction

Alexa Voice Service

Voice Command

Voice Request

JSON Request

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1010 von von 6060

Wie funktioniert ein Alexa Request?Wie funktioniert ein Alexa Request?

AWSLambdaFunction

Alexa Voice Service

Voice Command

Voice Request

JSON Request

JSON Response

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1111 von von 6060

Wie funktioniert ein Alexa Request?Wie funktioniert ein Alexa Request?

AWSLambdaFunction

Alexa Voice Service

Text Response

Voice Command

Voice Request

JSON Request

JSON Response

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1212 von von 6060

Wie funktioniert ein Alexa Request?Wie funktioniert ein Alexa Request?

AWSLambdaFunction

Alexa Voice Service

Text Response

Voice Response

Card Response

Voice Command

Voice Request

JSON Request

JSON Response

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1313 von von 6060

Alternativer RequestAlternativer Request

HTTPSEndpoint

Server

Alexa Voice Service

Text Response

Voice Response

Card Response

Voice Command

Voice Request

JSON Request

JSON Response

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1414 von von 6060

Alexa Voice Service (AVS)Alexa Voice Service (AVS)

Alexa Voice Service

AutomaticSpeech

Recognition(ASR)

NaturalLanguage

Understanding(NLU)

TextTo

Speech(TTS)

VoiceCommandMapping

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1515 von von 6060

Alexa Skills Kit (ASK)Alexa Skills Kit (ASK)

Alexa Skills Kit

Interaction-Model /Skill Builder

Configuration

Publishing /Privacy

TestService Simulator

Beta Test

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1616 von von 6060

ASK ÜberblickASK Überblick

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1717 von von 6060

Alexa Skill BuilderAlexa Skill Builder

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 1818 von von 6060

AWS Lambda FunctionsAWS Lambda Functions

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

Warum PHP?Warum PHP?

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2020 von von 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

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2121 von von 6060

Unterstützte Runtime Engine?Unterstützte Runtime Engine?

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2222 von von 6060

PHP für AWS Lambda kompilieren?PHP für AWS Lambda kompilieren?

https://goo.gl/N9VVvb

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2323 von von 6060

Eigener HTTPS Endpoint Server?Eigener HTTPS Endpoint Server?

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2424 von von 6060

Lösung gefundenLösung gefunden

PHP für AWS kompilieren

Unterstützte Runtime Engine für AWS einsetzen

Eigenen HTTPS Endpoint Server einsetzen

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2525 von von 6060

Nachteile eigener HTTPS EndpointNachteile eigener HTTPS Endpoint

Einige Tools arbeiten nur mit Lambda (API, CLI)

Eigene Library für Alexa aufbauen

Server Administration

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2626 von von 6060

Vorteile eigener HTTPS EndpointVorteile eigener HTTPS Endpoint

Jede gewünschte Software einsetzbar

Vollständige Kontrolle über die Serverumgebung

Keine Datenschutzbedenken (weiche Bedenken)

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2727 von von 6060

Open-source PHP LibraryOpen-source PHP Library

https://github.com/travello-gmbh/

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 2828 von von 6060

Mein aktueller Tech StackMein aktueller Tech Stack

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

Skill vorbereitenSkill vorbereiten

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3030 von von 6060

DemoDemo

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3131 von von 6060

Beispieldialoge erstellenBeispieldialoge erstellen

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3232 von von 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!

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3333 von von 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!

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3434 von von 6060

Flussdiagramme erstellenFlussdiagramme erstellen

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3535 von von 6060

FlussdiagrammFlussdiagramm

Willkommen indeinem Zoo.

Starte Mein Zoo

Nenne mir ein Tieraus meinem Zoo!

In deinem Zooleben 42 Tiere!

»nenne« »anzahl«

»nenne« »anzahl«

Bitte!

»danke« »danke«

»danke«

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3636 von von 6060

Alexa Skills Kit konfigurierenAlexa Skills Kit konfigurieren

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3737 von von 6060

Eigene Slot Types erstellenEigene Slot Types erstellen

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3838 von von 6060

Eigene Intents erstellenEigene Intents erstellen

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 3939 von von 6060

HTTPS Endpoint konfigurierenHTTPS Endpoint konfigurieren

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4040 von von 6060

SSL Zertifikat konfigurierenSSL Zertifikat konfigurieren

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4141 von von 6060

HTTPS Endpoint testenHTTPS Endpoint testen

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

Skill Code implementierenSkill Code implementieren

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4343 von von 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

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4444 von von 6060

Beispielanwendung testenBeispielanwendung testen

/data/postman/collection.json

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4545 von von 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

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4646 von von 6060

Intent Klasse erstellenIntent Klasse erstellen

<?phpnamespace Zoo\Intent;

use TravelloAlexaLibrary\Intent\AbstractIntent;use TravelloAlexaLibrary\Response\AlexaResponse;use TravelloAlexaLibrary\Response\Card\Standard;use TravelloAlexaLibrary\Response\OutputSpeech\SSML;

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

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4747 von von 6060

Skill Configuration ISkill Configuration I

<?phpnamespace Zoo;

use TravelloAlexaLibrary\Application\AlexaApplication;use TravelloAlexaLibrary\TextHelper\TextHelper;

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

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4848 von von 6060

Skill Configuration IISkill Configuration II

namespace Zoo;

use TravelloAlexaZf\Intent\AbstractIntentFactory;use Zoo\Intent\AnimalIntent;

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

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 4949 von von 6060

Zoo Anwendung testenZoo Anwendung testen

/data/postman/collection.json

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5050 von von 6060

Weitere FeaturesWeitere Features

Session Attribute step2→

Slot-Type Tierarten step4→

https://github.com/travello-gmbh/example-zoo-skill

Zweiter Intent step3→

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5151 von von 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

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

Meine ErkenntnisseMeine Erkenntnisse

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5353 von von 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

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5454 von von 6060

Größte HerausforderungenGrößte Herausforderungen

Slot Type für deutsche Vorname

Signaturvalidierung

Kategorie Slot Type Intents→

Chance ersten Skill abzuschießenZweiter Server für Tests

Komplexeres VUI / CUI

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5555 von von 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

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5656 von von 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

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

IPC 2017 MünchenIPC 2017 MünchenRalf EggertRalf Eggert 5757 von von 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!

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

Letzte NachrichtenLetzte Nachrichten

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

Fragen?Fragen?

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

Danke!Danke!Mail: [email protected]: [email protected]: www.travello.audioWeb: www.travello.audio