Patami Alexa Skill Framework

Das kann ich Dir leider nicht beantworten vielleicht meldet sich dazu Patami, der müsste das am besten wissen. Ansonsten müsste ich da selber mal nachschauen.

Auffällig ist nur das es

AskResponse::CreateSSML($text)

heisst, hier ist Groß und Kleinschreibung zu beachten, wie die SSML Parameter eingestellt werden, bin ich aber wie gesagt gerade überfragt.

Allen ein Frohes Neues Jahr und viel Erfolg bei Euren Projekten!

Ich habe gerade das Custom Skill Projekt für mich gestartet und denke mich gerade darin ein. Dank der wirklich tollen Doku und Umsetzung konnte ich den Demo Skill erfolgreich umsetzen.

Nun habe ich einen zweiten Skill („Haus“) eingerichtet mit zunächst einem Intent ('Licht"). Soweit hat bislang alles geklappt.

Nun zu meiner Frage: wenn ich zu dem zweiten Skill einen AMAZON.HelpIntent anlegen möchte, dann bekomme ich die Fehlermeldung „Der Name des Intents wird bereits von einer anderen Instanz verwendet.“ und die Instanz ist fehlerhaft.

Hier fehlt mir momentan das Verständnis, wie ich es schaffen kann für verschiedene Skills unterschiedliche HelpIntents anzulegen.

Hat jemand eine Idee?

Gruß

Burkhard

… und gleich noch eine Frage:

ich habe in PHPStorm ein Projekt, das auf den Script Ordner verweist. Wie muss ich die Einstellungen ergänzen, damit er auch die Skill Klassen findet?

Momentan sieht es so aus bei mir:

Hat keiner eine Idee?

Gruß

Burkhard

Nun taucht noch eine Frage auf :smiley:

Ich würde gerne - um meine Skripte einfach und leichter wartbar zu machen - gerne Synonyme und IDs für die SlotTypeValues definieren. Im Skill Builder geht das ja bereits.

Beispiel:


    "types": [
      {
        "name": "action",
        "values": [
          {
            "id": "OFF",
            "name": {
              "value": "aus",
              "synonyms": [
                "ausschalten",
                "abschalten"
              ]
            }
          },
          {
            "id": "ON",
            "name": {
              "value": "an",
              "synonyms": [
                "anschalten",
                "einschalten"
              ]
            }
          }
        ]
      },

Im Skript möchte ich dann gerne auf die ID zugreifen wie hier beschrieben. Auf die Weise lassen sich im Skill die Synonyme beliebig erweitern, ohne dass die Skripte angepasst werden müssen …

Gibt es da eine Möglichkeit?

Gruß

Burkhard

Hallo,

Habe mich auch mit SSML beschäftigt um Alexa die Aussprache mitzuteilen und den Text zu betonen.
Leider tritt bei mir das gleiche Problem auf, dass sich nach dem Befehl:

 AskResponse::CreateSSML($text) 

der Code keinen Fehler bringt, aber auch kein Ton aus der Alexa kommt!

Ich hoffe, dass sich zu diesem Thema ein erfahrener User meldet und erklären kann, ob man hierfür noch was
„aktivieren“ muss oder ob die Funktion im Framwork einen Fehler hatt.

Danke für die Mühe und großes Lob an die Entwickler des Skills!!
Was würden wir ohne euch machen…

Gruß
Andreas :loveips:

Hast du mal ein Beispiel für $text?

Hallo,

habe auch ein Beispiel für SSML:

return TellResponse::CreateSSML('<say-as interpret-as="spell-out">hello</say-as>.');

das Beispiel ist direkt aus der Doku von Patami
https://docs.braintower.de/display/IPSPATAMI/System+Information+Custom+Skill

bekomme es aber nicht zum laufen, wenn ich den Befehl so nutze kommt von Alexa kein Ton.

Danke!

Lg
Andreas

Da ist die Doku leider nicht ganz korrekt. Der Text muss mit <speak> tags eingeschlossen werden. Siehe auch hier:

return TellResponse::CreateSSML('<speak><say-as interpret-as="interjection">bingo</say-as>. So gehts</speak>');

Zudem ist in der SSMLSpeachOutput.php die folgende Funktion zu korrigieren (‚text‘ durch ‚ssml‘ ersetzen):

    public function GetData()
    {
        return array(
            'type' => self::TYPE_SSML,
            'ssml' => $this->text
        );
    }

Dann geht’s bei mir.:smiley:

Gruß

Burkhard

Danke Burkhard!

So funktioniert es auch bei mir! :slight_smile:

Gruß

Andreas

Hallo alle,
erstmal danke fuer das tolle Modul :slight_smile:
Ich komme mit einem eigenen custom skill nicht weiter… :confused:
In IPS ist soweit schon alles angelegt (PatamiModul, GetInformation funktioniert auch)
Was muss ich denn im developer builder beta und im entsprechenden Actionsscript eingeben damit ich folgende Abfragen oder Kommandos absetzen kann ?

abfrage: raum irgendeine temperatur/zustand usw
kommando: schalte lampe/steckdose/dimmer ein/aus - auf 50% usw

genauere Beispiele kann ich noch nennen

Hallo ihr alle,
so, ich habe jetzt einige Tage experimentiert und die Abfragen funktionieren jetzt.
Um Kommandos abzusetzen benutze ich das Modul IQL4SmartHome.

Nach einigem lesen hier im Forum und in der Beschreibung des Moduls habe ich es hin bekommen…:slight_smile:

Dank an die Modulentwickler

Hallo,

ich habe das gleiche Problem, ist dies mittlerweile gelöst?.

Ich habe wie im Beispiel von Patami und in der Doku beschrieben das Framework und das Beispiel angelegt. Die Verbindung funktioniert generell, USER-ID und Application-ID werden erkannt, dann scheitert jedoch die Validation der Decive-ID. Im Debug-Modus von Symcon steht, Device ID is invalid und im Test-Center von Alexa wird „Der angeforderte Skill konnte nicht ausgeführt werden weil eine ungültige Device ID übergeben wurde.“ zurückgegeben und alles weitere abgebrochen. Ich habe mich schon durch alles mögliche Im Internet „gewälzt“ finde aber keine Lösung. Kann mir jemand helfen? Kann ich die Device-ID-Validation irgendwie deaktivieren? Ich wüsste nämlich auch nicht, dass ich sie bewusst aktiviert habe.
Ich nutze IP-Symcon 4.4 und das Patami-Skript 3.4. Custom Skill und Intent sind so angelegt wie hier beschrieben: System Information Custom Skill - Patami IP Symcon Framework - Braintower Docs
Ich scheitere dann am Testen unter der Alexa Developer Console.

Vielen Dank und Grüße

Lars

ich beziehe mich auf diesen Post, als Ergänzung

Lars

Hallo,

nur zur Info für diejenigen, die auch das Problem haben. Man kann es umgehen indem man im request.php im Verzeichnis C:\IP-Symcon\modules\ipspatami\libs\Patami\IPS\Services\Alexa\Skills\Custom die Zeilen:

$this->Debug(‚Device ID Validation‘, ‚Device ID is invalid‘);
throw new InvalidDeviceIdException();

mittels // deaktiviert, also so:

//$this->Debug(‚Device ID Validation‘, ‚Device ID is invalid‘);
//throw new InvalidDeviceIdException();
vielleicht kann mir trotzdem einer sagen, was das schief läuft, bzw. ich anpassen muss. Erstmal läuft alles.

Grüße

Lars

Anscheinend hat sich die Länge der Device ID geändert und preg_match greift nicht mehr


preg_match('/^amzn1\.ask\.device\.[0-9A-Z]{156}$/', $id)

hier wird von einer Länge von 156 ausgegangen bei mir hat die Device ID aber eine Länge von 181 daher wirft hier preg_match 0 und das führt zur Debug Meldung.

Schreib doch mal ein Issue das die Länge der Device ID nicht stimmt dann kann das patami ausbessern wenn er denn Zeit findet, ansonsten kannst Du mal probieren einfach die 156 durch 181 auszutauschen, ob das eine Besserung bringt. Kann aber auch sein das die Länge nicht fest ist dann müsste der Ausdruck dann nochmals anders lauten.

EDIT:
Das ist sehr merkwürdig, ich konnte jetzt feststellen das die device ID unterschiedlich lang ist wenn man über den Emulator geht hat diese bei mir eine Länge von 181 während die von einem Alexa Device nur 156 hat. Ist also blöd das das nicht einheitlich ist. Vielleicht hat ja jemand eine Idee wie man das dann sauber prüft.

Ich habe den Code jetzt folgendermaßen geändert - immer noch ein Workaround (vermutlich kann man das in dem regulären Ausdruck auch besser implementieren):

  if (! preg_match('/^amzn1\.ask\.device\.[0-9A-Z]{181}$/', $id) && ! preg_match('/^amzn1\.ask\.device\.[0-9A-Z]{156}$/', $id)) {
        $this->Debug('Device ID Validation', 'Device ID is invalid');
        throw new InvalidDeviceIdException();
  }

Gruß
Peter

Hallo zusammen,

wenn ich den Framework über die Module installiere installiert sich eine weitere Kern-Instanz bei mir nicht automatisch.
Wenn ich dann versuche die Framework-Instanz manuell hinzuzufügen hängt sich das IPS auf. Kein Zugriff mehr - nur über PC-Neustart zu beheben.
Neben dem neuen Modul habe ich das IQL4Symcon-Modul installiert, welches problemlos schon länger läuft.
Was kann ich noch tun, um den Framework ans laufen zu bekommen?
Virenscanner/Firewall hatte ich auch mal komplett deaktiviert -ohne Erfolg.
Nach dem Neustart ist der Framwork dann als ungültiges Objekt installiert.

Was für eine IP-Symcon Version hast Du denn installiert? Stehen denn irgendwelche Meldungen im Meldungsfenster nachdem Du IP-Symcon neu gestartet hast?

im Messagefenster kommt erst mal nichts…
mein IP-Symcon ist die 4.4 (vom 19.02.2018) auf einem Windows x64 (IntelATOM)

folgende Meldungen finden sich dann nach dem Neustart im Script:

01.06.2018 11:23:34 | 10042 | MESSAGE | PatamiFramework | Erstelle…
01.06.2018 11:23:34 | 00000 | DEBUG | ScriptEngine | Skriptausführung (Text) - Länge: 164 ~ Absender: RunScript
01.06.2018 11:23:34 | 00000 | DEBUG | ScriptEngine | Executed Text (Length: 0) ~ Sender: RunScript ~ Duration: 261 ms
01.06.2018 11:23:34 | 10042 | MESSAGE | PatamiFramework | Entferne…
01.06.2018 11:23:34 | 10042 | ERROR | InstanceManager | Could not create instance interface: <br />
<b>Fatal error</b>: Uncaught exception ‚Patami\IPS\Libraries\Exceptions\ModuleControlNotFoundException‘ in C:\IP-Symcon\modules\ipspatami\libs\Patami\IPS\Libraries\Libraries.php:62
Stack trace:
#0 C:\IP-Symcon\modules\ipspatami\libs\Patami\IPS\Libraries\Libraries.php(78): Patami\IPS\Libraries\Libraries::GetModuleControlInstanceId()
#1 C:\IP-Symcon\modules\ipspatami\libs\Patami\IPS\Libraries\Libraries.php(90): Patami\IPS\Libraries\Libraries::GetLibraries()
#2 C:\IP-Symcon\modules\ipspatami\libs\Patami\IPS\Libraries\Library.php(112): Patami\IPS\Libraries\Libraries::IsLibraryLoaded(‚ipspatami‘)
#3 C:\IP-Symcon\modules\ipspatami\libs\Patami\IPS\Libraries\Library.php(75): Patami\IPS\Libraries\Library->IsLoaded()
#4 C:\IP-Symcon\modules\ipspatami\libs\Patami\IPS\Libraries\Library.php(94): Patami\IPS\Libraries\Library->__construct(‚ipspatami‘)
#5 C:\IP-Symcon\modules\ipspatami\libs\Patami\IPS\Modules\Module.php(94): Patami\IPS\Libraries\Library::Create(‚ipspatami‘)
#6 -(4): Patami\IPS\Modules\Module->__construct(10042)
#7 {main}
thro in <b>C:\IP-Symcon\modules\ipspatami\libs\Patami\IPS\Libraries\Libraries.php</b> on line <b>62</b><br />