Das Programmieren eigener Alexa Skills in PHP ist kinderleicht und ich zeige euch wie.
Am Beispiel eines nicht öffentlichen Skills, der den aktuellen STEEM Kurs in Euro ausgibt.
----
Wir benötigen
- ein paar Kenntnisse in PHP
- einen Webserver mit PHP und cURL, um den STEEM Preis abzufragen
- der Webserver muss über HTTPS erreichbar sein (wer kein Zertifikat hat, einfach mal nach `letsencrypt` googlen)
- im Idealfall ein Alexa-fähiges Gerät. Geht aber auch ohne
- und ein paar PHP Dateien, damit wir nicht alles selber schreiben müssen: https://github.com/MayBeTall/Alexa-PHP-Endpoint/archive/master.zip
Terminologien
- Skill: Ein Skill ist quasi die Minianwendung, die all eure gewünschten Befehle beinhaltet. Beispielsweise: steemit.
- Intent: Der Befehl einer Anwendung. Beispielsweise: "wie viel ist aktuell ein STEEM Wert?".
Los geht's mit PHP
Ladet das ZIP Archiv herunter und entpackt es auf eurem Server, so dass ihr es über eine HTTPSfähige URL aufrufen könnt.
Ihr werdet ein paar Beispiel-Dateien finden, mit denen wir uns aber nicht beschäftigen werden, denn ich will euch ja im Detail zeigen, wie ihr den Skill selber erstellt. Bei generellen Fragen zum Endpoint könnt ihr in der Doku des Git Repositories nachsehen: https://github.com/MayBeTall/Alexa-PHP-Endpoint
Erstellt in eurem entpackten Ordner nun eine neue Datei namens "SteemMarketPrice.php". Das wird unser erster Intent.
Diese befüllt ihr nun mit folgendem Code: https://gist.github.com/theskyliner/03c496e87809e29ccffc90ef45c7d4f3
Ich habe die Codezeilen entsprechend kommentiert, damit ihr versteht, was dort passiert. Das war es schon mit dem PHP Programmieren.
Prüft ob euerer Skript über die HTTPS Verbindung aufrufbar ist. Ihr solltet die Fehlermeldung "Application not authorized." erhalten. Das ist aber in Ordnung.
Jetzt kommt der interessante Teil im Develop Bereich von Amazon.
Alexa Skill anlegen
Zunächst müsst ihr euch mit eurem Amazon Konto unter https://developer.amazon.com/de/alexa/ anmelden.
Anschließend fahrt ihr über "Deine Alexa Konsole" und klickt auf "Skills". Klickt nun auf den Button "Create Skill"
Vergebt einen Skillnamen, wählt "German" als Sprache aus und das Model "Custom".
Der Skillname ist hier erst einmal nur wichtig, um eure Anwendung später in der Auflistung wieder zu finden. Es handelt sich dabei noch nicht um den Namen, den ihr später für die Befehle verwendet.
Klickt anschließend auf "Create skill"
Ihr werde nun mit allerhand Tabs und Einstellungen begrüßt. Aber keine Panik: Wir schlagen uns da durch und hangeln uns durch die "Skill builder checklist" auf der rechten Seite. Klickt also zunächst auf "1. Invocation Name". Das ist nun der Name, der auch für die Befehle verwendet wird.
Ich habe mich für "steem it" entschieden. Klickt anschließend auf "Save Model" und dann oben neben eurem Skillnamen auf "Build", um zurück zur Checkliste zu gelangen.
Als nächstes gehen wir zu "2. Intents, Samples, and Slots". Hier müssen wir nun den Namen unseres Intents angeben, den wir auch im PHP Skript mit der `triggered()` Methode definiert haben. Wir geben unter "Create custom intent" also den Wert "SteemMarketPrice" ein und klicken auf "Create custom intent".
Jetzt müssen wir angeben auf welche Befehle unser Intent hören soll. Ich habe dazu immer den Aktivierungs-Satz für unseren Alexa Skill im Kopf und vervollständige diesen. In meinem Fall also "Alexa, frage steem it...". Das kann etwas sprechendes oder eher eine Kurzform sein. Im folgenden Screenshot seht ihr, für welche Befehle ich mich entschieden habe.
Klickt auch hier anschließend auf "Save Model" und kehrt zur Checkliste zurück.
Nun könnt ihr den Punkt "3. Build Model" klicken, woraufhin die Anpassungen an eurem Skill verarbeitet werden. Den Build müsst ihr also jedes Mal anstoßen, wenn ihr etwas an eurem Skill verändert.
Weiter geht es mit Punkt "4. Endpoint"
Wählt "HTTPS" und hinterlegt unter "Default Region" die HTTPS URL zu unserem hochgeladenen Skript. Je nachdem was ihr für ein Zertifikat nutzt, müsst ihr das darunter liegende Feld ausfüllen. Mein letsencrypt Zertifikat verwendet eine Wildcard. Klickt auf "Save Endpoints" und damit haben wir die Checkliste abgeschlossen.
Testen wir unseren Skill
Klickt oben neben eurem Skillnamen auf den Tab "Test" und aktiviert mit dem Schieberegel die Tests. Neben dem Sprachenfeld könnt ihr nun eure Befehle testen.
Das Aktivierungswort "Alexa" könnt ihr euch dabei sparen.
Ein Test in meinem Fall lautet: "frage steem it wie viel ein STEEM wert ist". Mit einem Klick auf das Mikrofon Symbol schickt ihr den Test ab und könnt euch an Alexas' Aussprache von "STEEM" ergötzen. Also Boxen an ;)
Ich habe allerdings gelesen, dass man mit dem Alexa SSM Markup auch Lautsprache definieren kann. Mega cool!
Wir sind fertig
Natürlich könnten wir uns nun noch damit beschäftigen den Skill in das öffentliche Alexa Verzeichnis zu publizieren, aber damit habe ich mich bisher nicht beschäftigt.
Der Skill ist nun automatisch auf den alexafähigen Geräten in eurem Haushalt verfügbar, mit denen ihr euer Konto verknüpft habt. Quasi also ein privater Skill.
----
Ich hoffe der Beitrag hat euch gefallen und weitergeholfen.
Wofür benutzt ihr eure Alexa so?
Beste Grüße
Nick
Hallo @the5kyliner, herzlich willkommen auf Steemit.
Wenn Du Fragen zu Steemit hast, oder Dich mit anderen „Steemians“ austauschen magst, schau einfach mal auf unserem Discord-Chat unter https://discord.gg/g6ktN45 vorbei. Mehr Informationen über den deutschsprachigen Discord-Chat findest Du in diesem Beitrag.
Wenn Du auf Deutsch schreibst, verwende immer #deutsch als einen der 5 Hashtags, um Deine Reichweite zu erhöhen.
Unter dem folgenden Link findest Du einige Anleitungen, die Dir den Einstieg in das Steem-Universum deutlich erleichtern werden: Deutschsprachige Tutorials für Steemit-Neulinge: Ein Überblick