Patami Alexa Skill Framework

Zunächst mal musst Du prüfen ob Du die ApplicationID und die UserId komplett in den IO kopiert hast und dort auch übernommen. Als zweites musst Du prüfen ob der Rechner grundsätzlich erreichbar ist, dazu am besten mal die IP-Symcon Connect im Browser eingeben und schauen um der Webfront erreichbar ist. Als drittes öffnest Du den IO und klickst dort auf den grünen Käfer Debug hier siehst Du Alles was passiert. Dort kannst Du zunächst sehen ob überhaupt etwas ankommt und wenn ja steht dann dort auch eine Fehlermeldung.

Hallo,
jetzt funktioniert es. Es war ein Fehler in der URL, welche ich bei Amazon angegeben hatte.
Vielen Dank!

Mein Ziel ist es per Alexa das Licht, die Rollos und die Musik zu schalten.
Mal sehen wie weit ich komme. Als Beispielskript würde ich folgendes von dir hernehmen:
Patami Alexa Skill Framework - Seite 9

Für Musik würde ich in der Tat einen Custom Skill nehmen. Nur zum Schalten von Licht und Rollläden wäre auch der SmartHomeSkill möglich, da sparst Du Dir auch das sagen des Invocation Names des Skills. Wenn Du das spezifischer formulieren willst kannst Du natürlich auch einen Custom Skill nehmen. Wenn Du auch den Status der Lampen und Rollläden abfragen willst, macht es Sinn beide Skills, den SmartHomeSkill und Deinen eigenen Custom Skill, zu kombinieren.

Habe ein Skill über das Framework gemacht! Der hat eigentlich auch immer Funktioniert! Hatte ihn aber jetzt länger nicht benutzt!!

Wenn ich jetzt starte kommt das in der Debugging Konsole


{"version":"1.0","response":{"outputSpeech":{"type":"PlainText","text":"Der angeforderte Skill konnte nicht ausgef\u00fchrt werden weil eine ung\u00fcltige Device ID \u00fcbergeben wurde."},"shouldEndSession":true},"sessionAttributes":[]}

Das ist auch das was Alexa mir als Antwort gibt :

„Der angeforderte Skill konnte nicht ausgeführt weil eine ungültige Device ID übergeben wurde.“

Allerdings im Service Simulator funktioniert es

Wo konnte das Problem sein! Hatte zwischen durch mal Symcon neu aufgesetzt.

Kann mir keiner sagen was da los ist?

Hallo Community,

habe
$text = sprintf(‚die aktuelle Leistung der Photovoltaikanlage beträgt‘. number_format($photovoltaikleistung,0, ‚‘, ‚‘) . ‚Watt‘);
return Askresponse::CreateSSML(’<say-as interpret-as=„cardinal“>’. $text .’</say-as>’);
ausgeführt.

Alexa bringt keinen Ton, Programm läuft aber weiter…

Im Debuggermodus unter der AlexaCustomSkill Instanz kommt folgende Meldung:

{„version“:„1.0“,„response“:{„outputSpeech“:{„type“:„SSML“,„text“:"<say-as interpret-as=„cardinal“>der Gesamtenergiestand der Photovoltaikanlage betr\u00e4gt 28482 Kilowattstunden</say-as>"},„shouldEndSession“:false},„sessionAttributes“:{„slots“:{„subject“:„photovoltaikgesamtenergie“},„attributes“:,„callbackIntent“:„Systeminformation“}}

Kann es sein, dass dieser Ausdruck <say-as interpret-as=[b][/b]„cardinal[b][/b]“>der Gesamtenergiestand der Photovoltaikanlage betr\u00e4gt 28482 Kilowattstunden<[b][/b]/say-as> nicht korrekt
übernommen wird?

Mir kommt das Zeichen [b][/b] im Debug komisch vor.
Oder gibt es eine andere Erklärung, warum kein Ton kommt.

Danke!!

Lg
Richard

sprintf ist falsch ob das der alleine Grund ist mag ich nicht beurteilen das muss man testen.
Siehe auch sprintf

Muss so lauten:


$text = sprintf('die aktuelle Leistung der Photovoltaikanlage beträgt %s Watt',   number_format($photovoltaikleistung,0, '', ''));

Hallo,

Danke für den ersten Tipp.
Ich habe meinen Code wie nachfolgend angepasst, jedoch kommt immer noch keine Sprachausgabe.
Muss ich SSML ausser mit Askresponse::CreateSSML sonst noch irgendwie konfigurieren ?
Ohne die SSML-Zeile funktioniert der Code mit Sprachausgabe, ich möchte aber besondere Betonungen etc. ( mit SSML) testen.

hier mein Code:

case ‚photovoltaikgesamtstand‘:
$photovoltaikgesamtenergie = GetValueFloat(19461 /[Haus\Übersicht\Photovoltaik\Piko 5.5 PV-Wechselrichter\Gesamtertrag]/);
$text = sprintf(‚der Gesamtenergiestand der Photovoltaikanlage beträgt %s Kilowattstunden‘, number_format($photovoltaikgesamtenergie,0, ‚‘, ‚‘));
return Askresponse::CreateSSML(’<say-as interpret-as=„cardinal“>’. $text .’</say-as>’);
break;

Danke
Richard

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