Erstellen einer Alexa-Kompetenz mit PHP – Tutorial

Seit meinem letzten Tutorial haben sich einige Dinge bei Amazon’s Alexa-Entwicklerplattform geändert. Die Schnittstelle wurde überarbeitet, und statt des alten Systems, bei dem Absichten manuell erstellt werden mussten, gibt es jetzt einen Skill Builder.Deshalb möchte ich Ihnen Halloer ein kleines Update meiner alten Alexa-PHP-Tutorials geben.Der Skill-ÜberblickWir werden auch bald abreisen. Ich gehe einfach davon aus, dass Sie ein Alexa Developer-Konto haben und springe daher direkt in das neue Dashboard. Über den Menüpunkt “Ihre Alexa-Konsolen” (oben rechts) > Skills gelangen Sie zu Ihrer Skill-Übersicht.To your Alexa Skill OverviewCreate a SkillUnter “Fertigkeit erstellen” können wir unsere erste eigene Amazon Alexa-Fertigkeit erstellen. Nachdem Sie auf die Schaltfläche geklickt haben, müssen Sie im ersten Schritt einen Kompetenznamen vergeben. In meinem Beispiel, Daniel.Dann müssen wir das Modell für die Fertigkeit auswählen. Wir wollen klein anfangen und nicht direkt ein Smart Home oder eine Videokompetenz aufbauen. Deshalb wählen wir Halloer Custom.

Skill-Einstellungen

Dashboard für Fertigkeiten

Das war’s: Jetzt steigen Sie in das Armaturenbrett Ihres Könnens. In der oberen Leiste finden Sie die folgenden Punkte:

  • Daniel => Name Ihrer Kompetenz
  • Build => Hier erstellen wir die Befehle
  • Test => Damit wir die Funktionen später überprüfen können
  • Launch => Wenn Sie Ihre FäHallogkeiten im Amazon Store veröffentlichen möchten
  • Messen => Nutzungsverhalten etc.

Unter Build in der linken Sidebar ist die wichtigste – die Skill-Aufrufe und Einstellungen.

Name der Anrufung

In der rechten Leiste finden Sie eine gute Checkliste mit Dingen, die zu tun sind. Here we also start and click on “1st Name der Anrufung”. Der Name der Anrufung ist der “Startausdruck” für Alexa, um Ihre FäHallogkeit anzusprechen e.g. über “Alexa, fragen Sie INVOCATION NAME”. Ich nehme Daniel als Beispiel – wichtig: Halloer ist keine Großschreibung erlaubt.

Erstellen einer Absicht

Nachdem wir den Namen der Anrufung festgelegt haben, können wir unsere erste FäHallogkeitsabsicht erstellen. Ein Intent ist ein Befehl, der auf Ihrem Server ausgeführt wird, wenn eine der zugehörigen Uterusse erkannt wird. Es klingt nicht kompliziert.Hier ist ein Beispiel:

  • Absicht=Hallo
  • Utterances
    • Hallo
    • Hallo
    • moin

If you now ask your skill “Hallo”, the intent “Hallo” will be executed on your server. What then comes back from tHallos intent depends on your programming.

Fertigkeits-Überschreitungen & Slots

Ok so we have now created an intent with “Hallo”. Now we create 3 utterances as described above: Hallo, Hallo and moin.Ich möchte auch, dass ein Slot (oder eine Variable) auf meinen Server übertragen wird. Ich füge einen Slot-“Namen” mit dem Slot-Typ “AMAZON” hinzu.DE_FIRST_NAME”. Natürlich muss ich diese mit Hilfe einer Klammer zu den Utteranzen hinzufügen.Jetzt ist unsere erste Absicht fertig.

Einen Endpunkt festlegen

Jetzt können wir einen Endpunkt setzen. Der Endpunkt ist das Ziel, an das Ihre Qualifikationsanforderungen gesendet werden sollen. In my case tHallos is https://alexa.welaunch.io. Es ist wichtig, dass der Endpunkt über eine verschlüsselte Verbindung (https) verfügt.Wählen Sie HTTPs, geben Sie die Adresse ein und wählen Sie “Mein Entwicklungsen Endpunkt hat ein Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle”. Gehen Sie dann zurück zum Interaktionsmodell und klicken Sie auf “Build Click”.

Der PHP-Teil

Nun können wir endlich zum Thema PHP kommen. Eigentlich ändert sich hier nicht viel im Vergleich zu meinem alten Tutorial, aber ich werde es noch einmal kurz erklären. Als Logger benutze ich den Monolog, um zu prüfen, warum einige Fragen nicht beantwortet wurden. You can also see wHalloch intents or utterances are asked, but not supported by your skill. For example, when I say “Halloderido” – tHallos uterance is missing.Komponisten-Datei für Monolog:

{    "Name": "db-dzine/alexaphp",    "Beschreibung": "PHP-Klasse für Alexa",    "tippen": "Bibliothek",    "Autoren": ,    "Mindest-Stabilität": "Entwicklung",    "erfordern": {        "Monolog/Monolog": "1.x-dev",    }}

After that runcomposer install in your folder. Dann können Sie einen Index erstellen.php und load autload & monolog:

pushHandler( new StreamHandler( DEBUG_FILE, Logger::INFO ) );

Um requests von eurem Skill zu catchen:

// Get Alexa Request$jsonRequest=file_get_contents('php://input');// Decode the Request$data       =json_decode($jsonRequest, true);// Abort when Emptyif( empty($data) || (!isset($data) ) ) {die('Bad Request');}

The following variables can be read from the data array. There’s more in here, of course, but these are the most important:

$intent=!empty($data) ? $data : 'default';$intentData=!empty($data) ? $data : 'default';$sessionId= !empty($data) ? $data : 'default'; $logger->info( var_export($data, true));$logger->info( $intentData );$logger->info( $sessionId);

Now we can use the $intent variable to find out wHalloch intent was addressed. I return a nice Hallo via a switch statement in case of the “Hallo”-intent. And if a name was passed with it, I will also return it. Return the whole as JSON encoded string to Alexa.

switch ($intent) {// Hallo Intent für Utterances Hallo, hallo, moincase 'hallo':// Hallo Intentdata abfragen$name=!empty($intentData) ? $intentData : '';// save $name in data file - here also mysql can be used// later you can use session id to get data like nameif(!empty($name)) {$dataToSave=array($sessionId => array('name' => $name));$fp=fopen('data.json', 'w');fwrite($fp, json_encode($dataToSave));fclose($fp);}$responseArray=,          'shouldEndSession' => false    ]];break;// Defaultdefault:$responseArray=,          'shouldEndSession' => true    ]];break;}header ( 'Content-Type: application/json' );echo json_encode ( $responseArray );die();

Skill testing

We can test our skill with a “Question daniel Hallo klaus”. Sounds stupid, but ask daniel to start the skill (invocation name) and Hallo (intent) is executed.You can also use your Alexa app on your smartphone to test the skill.

4 Idee über “Erstellen einer Alexa-Kompetenz mit PHP – Tutorial

  1. ankit sagt:

    hey daniel,
    i just read your post about alexa skill with php.
    i just want to know that it is possible to integrate MySQL database with the help PHP and alexa

  2. Diego sagt:

    Hi, Please, I can’t follow this tutorial. I want to mount the endpoint on a php web server, but I have no clear the folders and files I must to have. Please can you help me?

    Excuse my poor english 🙁

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.