Amazon CUSTOM Skill

Ich eröffne hier mal den Thread zum Thema CustomSkill für Alexa und rege folgende Arbeitsaufteilung an:

  • Modul-.Erstellung

  • Skill-Erstellung

  • Parser-Unit der den Input analysiert und mit dem Objektbaum von Symcon abgleicht.
    Ideal wäre auch eine Integration von „Sounds like“-Funktion, sowie kleinen Helferlein für einfachere Suche (Tür & Öffnen ! Fenster). Dieser Teil kommt dem HomeControl von Amazon am nächsten. Bei bestehenden Objekten, deren Funktion aus dem Typ klar wird, also zum Beispiel STATE automatisch auf bekannte Befehle prüfen: „An“, „Aus“, „Anschalten“, „Schalte aus“ usw.,

  • „Session“-Handling für „längere“ Gespräche

  • Eine Schnittstelle für „CustomActions“ also Objekte (Sktipte, Schalter, was auch immer), die unter bestimmten Bedngungen ausgeführt werden.

-Eine Definition einer kleinen API-Schnittstelle, damit andere Module quasi ihre eigenen Befehle publizieren könnten.

  • Eine Briefing-Schnittstelle für das Auslesen von Werten.

Was ich von so einem Skill erwarte:

  • Schalte Alarm in 10 Minuten an
  • Schalte Alarm aus -> Rückfrage nach Passwort durch System)
  • Aktueller Wetterbericht (auf Grund Messstation oder Internet).

Vielleicht wären sogar kleine php-Module mit festen Funktionen denkbar (zum Beispiel fürs Wetter)

Ich stell das mal so in den Raum und muss hier gleich festhalten, dass meine PHP-Fähigkeiten beschränkt sind… Wenns Delhpi wäre…

Input, Zerriss und Teilnahme willkommen
Michael

Hi Michael,

ähnliche gedanken ansätze hatte ich auch schon, allerdings wird es schwierig das ganze so flexibel zu halten das wirklich jeder damit glücklich ist, wir haben hier ein CustomSkill in Betrieb und es war ein heiden aufwand die „Mustersätze“ zu erarbeiten. Ist das skill einmal veröffentlicht kannst du hier auch nicht mehr auf die schnelle änderungen vornehmen, das erfordert jedesmal ein Update inkl. Zertifizierung durch Amazon.

Der PHP code dahinter wird denke ich nicht das Problem werden, sondern ehr die „Intents, Utterances, Slots“ so zu bauen das der grossteil der User damit glücklich ist. des weiteren muss man sich auch vorher gedanken machen wer das Skill veröffentlichen will, also Rechtlich Haftbar ist falls was passiert ^^ da hier nicht nur mit Accountdaten hantiert wird sondern auch mit Gebäudesteuerung sollte man sich schon bewusst sein das wenn was schief geht das unter umständen teuer werden kann :frowning: (siehe dein Beispiel „Alexa, Alarm aus“)

Grüsse
Dave

Hi Dave

Danke mal für Deinen Input. Verantwortung und Inhalt klingt für mich sehr danach als müsste Symcon sich da einbringen.
Letztlich kann man rechtlich einiges wegbedingen, aber geprüft habe ich da auch nichts.

Wie gesagt, ich kenn mich nicht mit den Skills grossartig aus, aber ich würde die Intelligenz möglichst in Richtung „Symcon“ schieben und den Echo nur die Kommunikation machen lassen.

Der Skill wäre dann einfach und für jeden dasselbe, da er eigentlich nur Text transportiert. Für die Interpretation braucht es dann ein festes Regelwerk plus flexible Regeln. Ich habe mich mal nach Parsern in php umgeschaut, aber nicht wirklich was gefunden (mit Ausnahme der conditional search (A &B not C))

Aber es gibt zumindest ein oder zwei Projekte, die Amazon spezifische Funktionen zur Verfügung stellen.

Michael

Man kann doch die erkannten Wörter einfach von dem Skill an IPS übergeben und die Auswertung komplett IPS überlassen. Dann umgeht man schon mal das zertifizierungsproblem durch Amazon. Oder übersehe ich hier was?

Hier mal ein wenig mögliche „Hilfe“ von aussen:

-GitHub - danielstjules/Stringy: A PHP string manipulation library with multibyte support
EIne Library für String Manipulation. Enthält noch ne mögliche Zusatzlibrary für Substrings

-PHP Text Analysis is a library for performing Information Retrieval (IR) and Natural Language Processing (NLP) tasks using the PHP language GitHub - yooper/php-text-analysis: PHP Text Analysis is a library for performing Information Retrieval (IR) and Natural Language Processing (NLP) tasks using the PHP language

-This library provides provides a convient interface for developing Amazon Alexa Skills for your PHP app.
GitHub - MiniCodeMonkey/amazon-alexa-php: Amazon Alexa PHP Library

-jakubsuchy/amazon-alexa-php - Packagist

Hi Michael,

genau das „weiter schieben zu symcon“ funktioniert nicht, und die ansätze hier im forum die den Slot Type AMAZON.LITERAL nutzen werde auch nicht mehr lange funktionieren. Man muss die Mustersätze schon genau definieren… sonst wird das nix… es gibt im Dev Portal eine recht gute doku dazu :wink:

Hi Dave

Das mit dem Literal hab ich gelesen. Mein Skill, den ich fürs Testen hier verwendet habe, nutzt bereits einen custom slot type

{ „intents“: [
{ „intent“: „DoCommand“,
„slots“: [ {
„name“: „command“,
„type“: „symcon“ } ] } ] }

Daran sollte es nicht liegen. Denk ich mal…

Gruss
Michael

Hi Michael,

ok das funktioniert, weil du das Interaction Model von Amazon aushebelst, aber Public wirst du son Skill nicht kriegen, das ist nichtmal ansatzweise nach den Guidelines von Amazon gebaut :wink:

Grüsse
Dave

Evtl. sollte man wirklich mal eins nach dem anderen machen. Das „Standard“ Skill das Dave gebaut hat, ist bestimmt für viele erstmal ausreichend und ein SEHR guter Start. Wenn das fertig ist, kann man an Stufe 2 gehen und da geht es eh ins eingemachte. Evtl. muss man einfach auch mal warten was Amazon so tun wird? Die sind an den Themen ja auch dran und es werden bestimmt mehr Varianten kommen wenn erst die Hersteller aka EQ3, Telekom, etc. sich da einbringen - die werden auf die gleichen Limits stossen und haben dann mehr Wucht um das mit Amazon auszuarbeiten.

Klar hätte ich auch gerne mehr und genauer, aber die Gute Alexa ist aktuell auch noch nicht wirklich gelaunched … manchmal kann man mit dem Räder erfinden auch einen Moment warten.

Nur so ein Idee …

Ich habe mich sehr früh entschieden custom slots zu nutzen. Hier mein setup als Beispiel :

{
  "intents": [
    {
      "intent": "Sonos_Commands",
      "slots": [
        {
          "name": "command",
          "type": "LITERAL"
        },
        {
          "name": "zahl",
          "type": "AMAZON.NUMBER"
        },
        {
          "name": "room_name",
          "type": "ROOMS"
        },
        {
          "name": "radio_station",
          "type": "RADIO_STATIONS"
        },
        {
          "name": "action",
          "type": "ACTIONS"
        },
        {
          "name": "source",
          "type": "SOURCE"
        },
        {
          "name": "detail",
          "type": "DETAIL"
        },
        {
          "name": "status",
          "type": "STATUS"
        }
      ]
    }
  ]
}

Sample utterance :

Sonos_Commands {script parameters|command}
Sonos_Commands {action} {room_name} {zahl}
Sonos_Commands {room_name} {action} {zahl}
Sonos_Commands {action} {zahl}
Sonos_Commands {action} {radio_station}
Sonos_Commands {action} {radio_station} {source}
Sonos_Commands {action}
Sonos_Commands {action} {source}
Sonos_Commands {action} {detail} {source}
Sonos_Commands to {action} the {detail} in the {room_name}
Sonos_Commands {source} {action}
Sonos_Commands {source} {status}
Sonos_Commands for the {detail} in the {room_name}
Sonos_Commands for the {room_name} {detail}
Sonos_Commands for the {detail} information
Sonos_Commands to {action} {status} the {detail} in the {room_name}

Slottypes

Ich steuere damit meine SONOS Anlage und bin bis jetzt eigentlich ganz zufrieden. Da meine Frau aus Großbritannien kommt ist Englisch die Sprache unserer Wahl

Danke an BestEx. Die Custom Skills scheinen mir mittlerweile deutlich flexibler als die HomeSkills.

Ich wünschte ich könnte PHP, dann würde ich das mal aufsetzen :frowning: