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 diesem Talk 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.
31. code.talks 2017code.talks 2017Ralf EggertRalf Eggert 3131 vonvon 5858
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!
32. code.talks 2017code.talks 2017Ralf EggertRalf Eggert 3232 vonvon 5858
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!
44. code.talks 2017code.talks 2017Ralf EggertRalf Eggert 4444 vonvon 5858
Textdatei aktualisierenTextdatei aktualisieren
return [
'alexaLaunchTitle' => 'Welcome',
'alexaLaunchMessage' => 'Welcome to my zoo',
'alexaRepromptMessage' => 'Another animal or cancel?',
'alexaHelpTitle' => 'Help',
'alexaHelpMessage' => 'You can ask me which animal ' .
'lives in your zoo or how many animals live there.',
'alexaCancelTitle' => 'Thanks',
'alexaCancelMessage' => 'Thanks and see you soon!',
'alexaStopTitle' => 'Thanks',
'alexaStopMessage' => 'Thanks and see you soon!',
'alexaAnimalTitle' => 'An animal',
'alexaAnimalMessage' => '%1$s lives in your zoo!',
'alexaCountTitle' => 'Animal census',
'alexaCountMessage' => '%1$s animals live in your zoo!',
];
/data/texts/zoo.common.texts.de-DE.php
45. code.talks 2017code.talks 2017Ralf EggertRalf Eggert 4545 vonvon 5858
Texthelfer Klasse erstellenTexthelfer Klasse erstellen
<?php
namespace ZooApplicationHelper;
use TravelloAlexaLibraryApplicationHelperAbstractTextHelper;
class ZooTextHelper extends AbstractTextHelper implements ZooTextHelperInterface
{
public function getAnimalTitle(): string
{
return $this->commonTexts[$this->locale]['alexaAnimalTitle'];
}
public function getAnimalMessage(string $animal): string
{
return sprintf($this->commonTexts[$this->locale]['alexaAnimalMessage'], $animal);
}
public function getCountTitle(): string
{
return $this->commonTexts[$this->locale]['alexaCountTitle'];
}
public function getCountMessage(int $count): string
{
return sprintf($this->commonTexts[$this->locale]['alexaCountMessage'], $count);
}
} /module/Zoo/src/Application/Helper/ZooTextHelper.php
46. code.talks 2017code.talks 2017Ralf EggertRalf Eggert 4646 vonvon 5858
Zoo Anwendung erstellen IZoo Anwendung erstellen I
<?php
namespace ZooApplication;
use TravelloAlexaLibraryApplicationAbstractAlexaApplication;
use TravelloAlexaLibraryRequestRequestTypeIntentRequestType;
use ZooApplicationHelperZooTextHelperInterface;
class ZooApplication extends AbstractAlexaApplication
{
protected function handleIntentRequest(): bool
{
$intentRequest = $this->alexaRequest->getRequest();
switch ($intentRequest->getIntent()->getName()) {
case 'AnimalIntent':
return $this->animalIntent();
case 'AMAZON.StopIntent':
return $this->stopIntent();
/* ... */
}
}
}
/module/Zoo/src/Application/ZooApplication.php
49. code.talks 2017code.talks 2017Ralf EggertRalf Eggert 4949 vonvon 5858
Weitere FeaturesWeitere Features
Session Attribute step2→
Zweiter Intent step4→
https://github.com/travello-gmbh/example-zoo-skill
Slot type Tierarten step3→
50. code.talks 2017code.talks 2017Ralf EggertRalf Eggert 5050 vonvon 5858
In Kürze in der Library 2.0In Kürze in der Library 2.0
https://github.com/travello-gmbh/amazon-alexa-skill-library
Einführung von Intent-Klassen
Automatische Intent-Verarbeitung
52. code.talks 2017code.talks 2017Ralf EggertRalf Eggert 5252 vonvon 5858
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
53. code.talks 2017code.talks 2017Ralf EggertRalf Eggert 5353 vonvon 5858
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
54. code.talks 2017code.talks 2017Ralf EggertRalf Eggert 5454 vonvon 5858
ZertifizierungsprozessZertifizierungsprozess
7 Tage für Feedback (02/2017)
Signaturvalidierung Problem
16 Stunden bis Live (07/2017)
Invocation Name Problem
0 Probleme
»Abbrechen« Intent Problem
55. code.talks 2017code.talks 2017Ralf EggertRalf Eggert 5555 vonvon 5858
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
56. code.talks 2017code.talks 2017Ralf EggertRalf Eggert 5656 vonvon 5858
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!