Alexa Skill ToolBox

About

ToolBox ist eine sprachgesteuerte Kommandozeile, mit der Alexa-Skill-Entwickler auf nützliche Daten und Informationen zugreifen können.

Optionales Feature: Alexa-Skill-Entwickler können ToolBox dazu verwenden, Metriken / Verwendungsinformationen zu ihren produktiven Skills anzufordern. Dazu ist es erforderlich, den Skill per Account-Linking mit dem Developer-Account zu verknüpfen. Dieser Schritt ist optional. Andere Funktionen von diesem Skill können ohne Account Linking verwendet werden

Verfügbarkeit und Ausblick

Weitere Funktionen für den Skill sind in der Planung.

Vorschläge und Feedback sind willkommen! (frank.boerncke@gmail.com)

Grundlegende Sprachbefehle

Auf Geräten mit Bildschirm ähnelt die Benutzeroberfläche einer klassischen Befehlszeilenschnittstelle. Sowohl Ein- wie auch Ausgaben werden in einer Historie gespeichert (auch zwischen mehreren Skill-Sitzungen). Der Benutzer kann innerhalb dieser Historie navigieren. Dies ist nützlich, wenn der Benutzer die Ergebnisse mit älteren Ausgaben früherer Befehle vergleichen möchte.

  • Skill starte:

    "Alexa, öffne ToolBox"
  • Befehlsübersicht anzeigen:

    "Alexa, Hilfe"
  • Aktuelle APL Version abfragen:

    "Alexa, zeige APL Version"

    Zum Zeitpunkt der Erstellung dieser Dokumentation ist die aktuelle Version “1.6”.

    Bitte beachten: Um ein Gerät auf die neueste APL-Version zu aktualisieren, reicht es nicht aus, das im Menü Einstellungen angebotene Systemupdate auszuführen. APL-Updates werden im Hintergrund automatisch ausgeführt, wenn die Geräte eine Weile lang unberührt bleiben. Als Faustregel gilt, dass man ein Gerät über Nacht angeschlossen lassen kann und am nächsten Tag dann ein Update erhalten haben sollte.

  • Bildschirmeigenschaften des verwendeten Geräts anzeigen (Auflösung, Video Codecs, dpi-Werte, Bildschirm-Format etc.) :

    "Alexa, zeige Bildschirmeigenschaften"

    Damit ist es nicht mehr nötig, die Bildschirmauflösung von einem Gerät nachzuschlagen. Man kann es jetzt einfach fragen!

  • Geräte-ID abfragen:

    "Alexa, zeige die Geräte-ID"

    Weitere Informationen zum Thema Geräte-ID gibt es auf folgender Seite von AMAZON: https://developer.amazon.com/en-US/docs/alexa/custom-skills/device-address-api.html#get-the-api-access-token-and-device-id

  • Umgebungsvariablen abfragen:

    "Alexa, zeige Umgebungsvariablen"

    Angezeigt werden Variablen, die im Kontext von “process.env“ definiert sind. Dieser Kontext bezieht sich nicht auf auf das verwendete Gerät, sondern auf den Skill. Die angezeigten Werte können eine Vorstellung davon geben, welche Optionen es gibt, die für eigene Skills interessant sein könnten.

Lass Alexa etwas Bestimmtes sagen

Alexa kann eine gewünschte Phrase wiederholen:

"Alexa, wiederhole 'Papagei'"

Unter der Verwendung von dem Slot Type AMAZON.SearchQuery wird Alexa die Eingabe parsen und wiederholen.

Eine Bemerkung noch zu AMAZON.SearchQuery: dieser Slot Type kann lediglich bis zu 8 Sekunden Audio erfassen. Die maximal erkannte Anzahl von Zeichen ist auf 110 Zeichen beschränkt. WennWird diese Grenze überschritten, dann reagiert der Skill mit einer erneuten Aufforderung - dies geschieht jedoch nicht sofort: Alexa nimmt zunächst weiter Audio auf, bis der Benutzer seine Äußerung beendet.

Mit verschiedenen Slot Types und Äußerungen experimentieren

Eine Reihe von Befehlen in ToolBox ermöglichen dialogbasierte Tests und Experimente mit ausgewählten AMAZON Slot-Types. Die erkannten Zeichenfolgen werden dann auf der Konsole angezeigt und es wird deutlich, dass nicht immer zurück kommt, was man eigentlich erwarten würde…

  • Slot Type AMAZON.SearchQuery

    "Alexa, teste Slot Type AMAZON Search Query"  (sage zum Beispiel '42,3 Kilogramm')

    ‘zwei und vierzig komma drei kilogramm’

  • Slot Type AMAZON.DATE

    "Alexa, teste Slot Type AMAZON Date"  (sage zum Beispiel 'gestern')

    ‘gestern’ ==> ‘2021-04-08’ (oder etwas ähnliches)

  • Slot Type AMAZON.TIME

    "Alexa, teste Slot Type AMAZON Time"  (versuche zum Beispiel 'heute mittag')

    ‘heute mittag’ ==> ‘THIS 12:00’

  • Slot Type AMAZON.DURATION

    "Alexa, teste Slot Type AMAZON Duration"  (versuche zum Beispiel '8 Stunden')

    ‘8 Stunden’ ==> ‘PT8H’

  • Slot Type AMAZON.FirstName (List Slot Type)

    "Alexa, teste slot type AMAZON First Name"  (versuche zum Beispiel 'Karl-Heinz')

    ‘Karl-Heinz’ ==> ‘karl heinz’

  • Slot Type AMAZON.Food (List Slot Type)

    "Alexa, teste slot type AMAZON Food"  (versuche zum Beispiel 'Buttercroissant')

    ‘Buttercroissant’ ==> ‘butterkäse’

Möchtest Du einen Test noch einmal ausführen, dann gibt es eine simple Option:

"Alexa, wiederholen / mach das noch einmal"

APL-Templates von Drittentwicklern als Plugins verwenden

Viele APL-Templates funktionieren gut als eigenständige Lösung, aber selbst dann benötigen sie trotzdem eine Skill-Umgebung, um auf einem realen Gerät verwendet werden zu können. Mit der folgenden Technik können innerhalb von ToolBox eine Liste vorregistrierter nützlicher APL-Templates angezeigt weden, die dann in einem zweiten Schritt per Sprachbefehl geladen und ausgeführt werden können.

  • Liste verfügbarer Plugins anzeigen:

    "Alexa, zeige Plugins"

    Angezeigt wird eine Liste unterstützter Plugins inklusive ihrem “launch name“. Eine kurze Inhaltsbeschreibung hilft bei der Auswahl des geeigneten Plugins. Der Name des Autors informiert über den Ersteller der Datei.

  • Plugin laden und ausführen:

    "Alexa, lade plugin 'Pixel Tester'"

    Dieser Befehl lädt und startet das genannte Plugin. Während der Ausführung erfolgen zwei Rückfragen vom Skill, wie es weiter gehen soll. Möchte man zurück zum ToolBox-Skill, dann sagt man so etwas wie “zurück” oder “Hilfe”. Alternativ kann man im Kontext des Plugins bleiben und es zu dem Zweck benutzen, zu dem es entworfen wurde.

Available plugins

Bisher sind nur wenige APL-Templates in ToolBox registriert, aber weitere sind in Planung. Aktuell werden unterstützt:

  • APL Doctor - Gerätespezifische Viewport-Eigenschaften anzeigen. Diese Funktionalität ist auch als eigener Skill “Apl Doctor” verfügbar.

  • Display Test - Testbild anzeigen, um Farbeinstellungen oder Kontrast besser justieren zu können.

  • Pixel Tester - Wechselnde Hintergrundfarben machen es leichter, nach defekten Pixeln auf dem Bildschirm oder Fernseher (der Skill funktioniert auch auf einem Fire TV!) zu suchen.

  • Voice View - Wer in seinen Einstellungen die Option “VoiceView” aktiviert, der kann mit diesem Plugin lernen und ausprobieren, wie Alexa Unterstützung für Barrierefreheit anbietet.

Wer auch immer einen Vorschlag für weitere nützliche APL Templates hat, die einen Bezug zu dem Thema Alexa Skill Entwicklung haben, der kann mir gerne Vorschläge zusenden.

Audio testen

Abhängig von Deinem persönlichen Setup benutzt Du Deine Echo-Geräte möglicherweise eingebauten Lautsprechern, externen Lautsprechern, Kophörern, mit oder ohne Bluetooth. Benutzt Du ein Gerät aus der Fire TV Serie? Wenn Du die Klangqualität übeprüfen möchtest, dann bietet Dir ToolBox mehrere Möglichkeiten:

  • Teste Dein Stereo-Setup mit einem Sinuston auf dem linken Kanal (10 Sekunden, kann laut werden):

    "Alexa, spiele Audio linker Kanal"
  • Teste Dein Stereo-Setup mit einem Sinuston auf dem rechten Kanal (10 Sekunden, kann laut werden):

    "Alexa, spiele Audio rechter Kanal"
  • Teste Dein Stereo-Setup mit einem Sinuston auf beiden Kanälen (10 Sekunden, kann laut werden):

    "Alexa, spiele Audio beide Kanäle"
  • Bei einem Frequenz-Test hörst Du einen Ton von 20 bis 18000 Hertz. Das dauert 15 Sekunden und ich wette, dass Du in den letzten Sekunden gar nichts mehr hörst 🙂

    "Alexa, spiele Audio Frequenztest"
  • Spiele rosa Rauschen für 10 Sekunden:

    "Alexa, spiele Audio rosa Rauschen"
  • Spiele weißes Rauschen für 10 Sekunden:

    "Alexa, spiele Audio weißes Rauschen"
  • Spiele Brownsches Rauschen für 10 Sekunden (auch bekannt als Brown oder rotes Rauschen) für 10 Sekunden:

    "Alexa, spiele Audio Brownsches Rauschen"

Möchtest Du einen Test noch einmal ausführen, dann gibt es eine simple Option:

"Alexa, wiederholen / mach das noch einmal"

Metrik / Analytics Informationen für eigene produktive Skill abfragen (optional)

Für meinen eigenen täglichen Workflow spart die hier beschriebene Funktion eine Menge Zeit gegenüber der Alternative, mir die entsprechenden Funktionen im Browser zusammenzusuchen. Deshalb habe ich diese Funktion als optionales Feature mit in ToolBox integriert. Voraussetzung ist, dass ToolBox per Account-Linking mit dem Entwicklerkonto verknüpft wird. Dann können grundlegende Metrik/Analytics-Meßwerte per Sprachbefehl abgefragt werden:

  • Eigene produktive Skills auflisten:

    "Alexa, zeige meine Skills"

    Es erscheint eine Liste aller bereits zertifizierten und in Produktion befindlichen Skills. Die Sortierreihenfolge orientiert sich am Zeitpunkt des Deployments. Neue Skills werde nahe der Eingabezeile angezeigt, alte Skills können auf einer anderen Bildschrimseite erscheinen sein.

    Jeder Skill in der Liste erscheint zusammen mit einer Nummer. Über diese Nummer kann in den folgenden Sprachbefehlen bezug auf den Skill genommen werden:

  • Zugriffsinformation für einen Skill abfragen für “heute”:

    "Alexa, Skill Nummer 1 für heute"
  • Zugriffsinformation für einen Skill abfragen für “gestern”:

    "Alexa, Skill Nummer 1 für gestern"
  • Zugriffsinformation für einen Skill abfragen für “gestern”: (‘gestern’ ist “default”):

    "Alexa, Skill Nummer 1"
  • Show access information about a specific skill for last week:

    "Alexa, Skill Nummer 1 für letzte Woche"

Die Verwendung der Metrics-API bringt eine Reihe von Einschränlungen mit sich:

  • Manchmal verweigert die API die Rückgabe von einem Ergebnis ohne offensichtlichen Grund (möglicherweise zu viel Last auf dem Server?). Sekunden oder Minuten später kann derselbe Aufruf dann wieder funktionieren.

  • Die API mag es nicht, wenn zu viele Abfragen in einer zu kurzen Zeitspanne kommen. Wenn so ein Fall auftritt, dann muss man warten und es wird dann etwas später wieder funktionieren.

  • Mir fallen noch viele Möglichkeiten für weitere Abfragen ein. (“Ergebnisse für letzten Monat“, “Ergebnisse für letztes Jahr“ etc.), aber die API unterstützt solchen Anfragen in der aktuellen Version leider nicht.

  • Der Code für Anfragen nach dem Muster “Welcher meiner Skills hatte gestern die meisten Benutzer“ etc. ist bereits implementiert. Allerdings sind dazu so viele Einzelabfragen in kurzer Zeit erforderlich, dass die API leider blockiert, weshalb ich dieses Feature noch nicht freigeschaltet habe.

Der Skill ToolBox verwendet als UI-Pattern das Modell einer klassischen Kommandozeile, dass sich seit Jahrzehnten als produktive bewiesen hat.

Innerhalb einer Kommandozeile von ToolBox kann der Benutzer auf gewohnte Weise navigieren und arbeiten - nur mit Sprachbefehlen:

  • Navigation im History-Buffer:

    "Alexa, nach oben"
    "Alexa, Control P"
    
    "Alexa, nach unten"
    "Alexa, Control N"

Persistente Historie

Als Defaultverhalten merkt sich ToolBox die Benutzerdialoge und speichert diese persistent, so dass der Benutzer auf ältere Dialoge zurück greifen kann. Das kann nützlich sein, um aktuelle Metrics-Werte mit Ergebnissen der letzten Tage zu vergleichen. Um dies zu erleichtern, enthält jeder Befehl einen Zeitstempel.

Der Befehlspuffer / die Historie kann per Sprachbefehl gelöscht werden:

  • Historie löschen:

    "Alexa, Reset"
    "Alexa, Control L"

Die Historie merkt sich grundsätzlich nicht mehr als 1000 Zeilen. Ältere Eingaben/Ausgaben werden automatisch gelöscht.

Zeichengröße anpassen

Abhängig davon, ob man einen Fire TV mit großem Bildschirm benutzt oder einen Echo Spot, sind unterschiedliche Größen für den Zeichensatz sinnvoll. Der Benutzer kann die Schriftgröße per Sprachbefehl anpassen.

  • Buchstaben vergrößern:

    "Alexa, größere Buchstaben"
    "Alexa, Control plus"
  • Buchstaben verkleiner:

    "Alexa, kleinere Buchstaben"
    "Alexa, Control minus"

Responsive Layout: die Funktionalität von APL wird dazu benutzt, Schriftgröße und Darstellung des Inhalts dynamisch an die Bildschirmgröße anzupassen. In bestimmten Kombinationen kann dies dazu führen, dass eine Zeile nicht vollständig auf dem Bildschirm dargestellt werden kann. Der Inhalt bleibt aber gespeichert und geht nicht verloren.

Unterstützung von AMAZON.RepeatIntent

Für viele Befehle kann es sinnvoll sein, sie mehrfach hintereinander auszuführen:

  • Testen von Slot Types
  • Testen von Sound / Audio
  • Schriftgröße vergrößern / verkleinern
  • Nach oben / unten blättern

Sage einfach so etwas wie “mach das nochmal“ oder “wiederholen!“, um den letzten Befehl zu wiederholen. Wenn man sich einmal an diesen Workflow gewöhnt hat, dann fühlt sich das ganz natürlich an,

Layout wechseln

Aktuell werden zwei unterschiedliche Layout-Varianten für die Kommandozeile unterstützt mit den Namen “modern“ und “classic“ (unterschiedliche Farben, Fonts und Cursor Symbole). Zwischen den Varianten kann per Sprachbefehle hin- und hergesprungen werden:

"Alexa, Layout wechseln"

Für die Zukunft sind weitere Layout-Varianten geplant.

“ToolBox” benutzen auf Geräten ohne Bildschirm

Naturgemäß kann ToolBox seine Stärken ausspielen auf Geräten, die einen Bildschirm besitzen (inklusive einem Fire TV). Aber da, wo es sinnvoll ist, kann ToolBox auch auf Geräten ohne Bildschirm wie zum Beispiel auf einem Echo Dot verwendet werden.

Skill Store

Du kannst ToolBox im Skill Store finden und aktivieren:

Der schnellste Weg: ToolBox kann auch über einen QuickLink gestartet werden.

Zum Schluß

ToolBox bringt die Stärken von Voice und Kommandozeile zusammen. In der Art und Weise, wie diese Idee umgesetzt wurde, ist es aber auch ein Experiment. Wenn Du Ideen hast, wie es weiter gehen kann und welche Features noch fehlen, dann lass es mich gerne wissen.