Ankündigung

Einklappen

Sammelbestellung ETS6 Vollversionen aktiv!

Sammelbestellung für ETS6 Vollversionen (Prof., Home, Lite) mit 40% Rabatt aktiv! Infos im Forum!
Mehr anzeigen
Weniger anzeigen

Alexa Smarthome Skill (Payload Version 3)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • jonofe
    antwortet
    Zitat von ThorstenGehrig Beitrag anzeigen
    SAUBER :-) Danke
    Na also, super! Ich hatte schon Befürchtung irgendetwas vergessen zu haben.

    ThorstenGehrig Hast du eigentlich auch den "Alexa Last Active Echo Device LBS" im Einsatz? Bislang gabe es kaum Feedback, obwohl ich finde, dass dies ein echtes Killerfeature ist, beim Einsatz mehrerer Echo Devices.

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Hi
    getestet: jetzt funktioniert auch das aktivieren des Skills bei aktivierter EventGateway option im Skill.
    Wenn das EventGateway aktiviert ist und ich den skill aktiviere - wird auch die eventGatewayConfig.php erzeugt (mit eventGatewayRegion variable).
    SAUBER :-) Danke

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von ThorstenGehrig Beitrag anzeigen
    Verstehe ich das richtig das es in der alexa-config-PLv3.php drin sein muss um dann bei der skill-aktivierung automatisch in die eventGatewayConfig.php übernommen zu werden?
    Ja genau so ist das. Es gibt nur eine Config, in der man entwas ändern muss, das ist die alexa-config-PLv3.php.
    Wenn es da drin steht, dann sollte bei der Aktivierung des Skill die Datei eventGatewayConfig.php erzeugt werden und den Eintrag enthalten.
    Am besten du verschiebst die eventGatewayConfig.php vor der Aktivierung einfach mal woanders hin, dann siehst du auch, ob diese Datei neu erzeugt wird.

    Funktioniert denn bei dir die Aktivierung des Skills bei aktivierter EventGateway Option im Skill?

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Hi Jonofe,
    danke - hab mal alle files aktualisiert.
    Etwas verwirrt hast du mich aber schon mit der eventgatewayregion: das ist jetzt in der alexa-config-PLv3.php - ich musste es aber in die eventGatewayConfig.php eintragen damit es funktioniert. Deine Aussagen dazu waren nicht ganz klar.
    Verstehe ich das richtig das es in der alexa-config-PLv3.php drin sein muss um dann bei der skill-aktivierung automatisch in die eventGatewayConfig.php übernommen zu werden?
    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Das Log zeigt einen Alexa.Discovery Befehl, d.h. du hast nach neuen Geräten suchen lassen.
    Bei der Aktivierung sollte aber zuerst ein Alexa.Authorization kommen.

    Grundsätzlich geht es bei deinem Fehler um die Funktion:

    PHP-Code:

    function validate_token($token)
    {
        global 
    $user_id$client_id;
        
    $url "https://api.amazon.com/auth/O2/tokeninfo?access_token=" urlencode($token);
        
    logging("Validation URL: $url");
        
    //
        // validate token via CURL
        //
        
    $ch curl_init();
        
    $timeout 1;
        
    curl_setopt($chCURLOPT_URL$url);
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    curl_setopt($chCURLOPT_CONNECTTIMEOUT$timeout);
        
    curl_setopt($chCURLOPT_VERBOSE1);
        
    curl_setopt($chCURLOPT_HEADER1);
        
    $r curl_exec($ch);
        
    logging("RAW Message:" print_r($rtrue));
        
    $header_size curl_getinfo($chCURLINFO_HEADER_SIZE);
        
    $header substr($r0$header_size);
        
    $json substr($r$header_size);
        
    curl_close($ch);
        
    logging("JSON Validation Response: $json"); 
    Diese wird mit dem Token aus deinem o.g. Log aufgerufen.
    Offensichtlich liefert die HTTPS Abfrage von

    Code:
    https://api.amazon.com/auth/O2/tokeninfo?access_token=" . urlencode($token)
    gar nichts zurück, was extrem seltsam ist. Zur Sicheheit mal folgendes machen:

    Code:
    yum update nss
    Das löst mögliche Probleme mit curl und https.

    Und dann in der o.g. Funktion mal das Timeout erhöhen:

    Code:
    $timeout = 3;
    Außerdem wäre das Log der Alexa.Authorization Commands interessant. Dieses wird bei Aktivierung des Skills gesendet, wenn die EventGateway Option aktiv ist. Kommt das überhaupt im Log an?

    Einen Kommentar schreiben:


  • millo
    antwortet
    Zitat von jonofe Beitrag anzeigen
    Damit wir alle wieder von den gleichen Voraussetzungen ausgehen, habe ich mal alle aktuellen Files in der Version 0.5.1 hochgeladen.
    Auf Seiten Amazon hat sich nichts geändert, d.h. es reicht, die
    • alexa-config-PLv3.php zu checken und ggf. anzupassen
    • 19001200_lbs.php neu in EDOMI zu importieren
    • edomi-smarthome-skill-PLv3.php auf dem EDOMI Server zu ersetzen

    Danach habt ihr auf jeden Fall dieselbe Version wie ich, bei der die Skillaktivierung auch bei eingeschaltetem EventGateway funktioniert.

    Alles Aktualisiert, Aktivieren mit EventGateway geht jedoch nicht. Ich denke dass Liegt daran dass der Token immer ungültig ist.
    Ich habe die Daten in der Config nochmals geprüft, die stimmen alle.

    Werden die Daten als Cookies noch irgendwo gespeichert?


    Code:
    Received (JSON) Event from alexa@amazon
    =========================================
    Array
    (
        [directive] => Array
            (
                [header] => Array
                    (
                        [payloadVersion] => 3
                        [namespace] => Alexa.Discovery
                        [name] => Discover
                        [messageId] => 30050088-5384-4bfb-85f0-e492c03a2411
                    )
    
                [payload] => Array
                    (
                        [scope] => Array
                            (
                                [token] => (DELETED-Millo)
                                [type] => BearerToken
                            )
    
                    )
    
            )
    
    )
    
    Validation URL: (DELETED-Millo)
    RAW Message:
    JSON Validation Response: 
    OAUTH Validattion Response:
    
    
    Source    : FAIL
    OAUTH Access Token invalid

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Damit wir alle wieder von den gleichen Voraussetzungen ausgehen, habe ich mal alle aktuellen Files in der Version 0.5.1 hochgeladen.
    Auf Seiten Amazon hat sich nichts geändert, d.h. es reicht, die
    • alexa-config-PLv3.php zu checken und ggf. anzupassen
    • 19001200_lbs.php neu in EDOMI zu importieren
    • edomi-smarthome-skill-PLv3.php auf dem EDOMI Server zu ersetzen

    Danach habt ihr auf jeden Fall dieselbe Version wie ich, bei der die Skillaktivierung auch bei eingeschaltetem EventGateway funktioniert.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von millo Beitrag anzeigen
    Wie bekomme ich diese Datei?
    Diese sollte generiert werden, wenn du den Skill neu aktivierst. Hast du das versucht?

    Vorher aber die Zeile:
    PHP-Code:
      $eventGatewayRegion       'DE'
    in die Datei alexa-config-PLv3.php eintragen

    Zitat von millo Beitrag anzeigen
    Skill neu aktivieren -> (Ja, geht aber nach wie vor nur wenn ich in der Alexa Development Console > Skills > Edomi > Send Alexa Events: deaktiviere)
    Okay, das ist dann das Problem. Denn die Message, welche das File erzeugt, wird genau von dieser Option ausgelöst.

    Einen Kommentar schreiben:


  • millo
    antwortet
    Zitat von jonofe Beitrag anzeigen
    Was genau hast du in welcher Reihenfolge gemacht und was steht im Skillskript-Log?
    Zitat von jonofe Beitrag anzeigen
    • Die zuletzte beschriebene Änderung vornehmen. -> (Ja)
      • Prüfen ob eventGatewayRegion in alexa-config-PLv3.php definiert ist (s.o.) -> (Habe ich eingetragen)
    • Skill deaktivieren -> (Ja)
    • Skill neu aktivieren -> (Ja, geht aber nach wie vor nur wenn ich in der Alexa Development Console > Skills > Edomi > Send Alexa Events: deaktiviere)

    In dem Log bekomme ich OAuth Token Invalid, darum habe ich den OAuth Token check vorerst auskommentiert.

    Es wundert mich nun dass ich in den Logs meine User_ID nicht mehr finde und eben auch dass ich die Datei eventGatewayConfig.php nicht habe.
    Wie bekomme ich diese Datei?

    Besten Dank!

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Ah - ok... jetzt sehe ich es. Ich war etwas verwirrt weil ich mit config and die alexa-config gedacht habe - die du ja auch in Schritt 2 referenziert hast:
    Prüfen ob eventGatewayRegion in alexa-config-PLv3.php definiert ist (s.o.)

    Der Fehler ist geblieben als ich in der Alexa config war - ist jetzt aber weg nach eintrag in der eventGatewayConfig.php. Ein =NULL eingtrag war übriegens nicht da - es hat einfach gefehlt...

    Gruß
    Thorsten

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Ich habe ja extra geschrieben, dass es in der Config drin sein muss. Also einfach eintragen und dann sollte es funktionieren. Oder hast du das gemacht und es taucht trotzdem nicht auf?

    Einen Kommentar schreiben:


  • ThorstenGehrig
    antwortet
    Hi
    ich hab die änderungen vorgenommen und den skill deaktiviert und neu aktiviert... der fehler bleibt bestehen... funktioniert aber sonst soweit.
    Ich habe auch gerade nochmal nachgeschaut: in dem Baustein aus dem Download gibt es die Gateway-definition in der config-datei garnicht...
    Bist du sicher das wir von dem selben "release" ausgehen?

    Gruß
    Thorsten

    PS: muss das nicht in die eventGatewayConfig.php?
    Code:
     $eventGatewayRegion       = 'DE';
    Zuletzt geändert von ThorstenGehrig; 13.07.2019, 19:14.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Was genau hast du in welcher Reihenfolge gemacht und was steht im Skillskript-Log?

    Einen Kommentar schreiben:


  • millo
    antwortet
    Ich habe alle Änderungen eingepflegt, habe jetzt aber das Problem dass ohne
    PHP-Code:
    //if (validate_token($token) === false)
    // fail('OAUTH Access Token invalid'); 
    nix mehr geht.

    Auch die UserID finde ich in den Logs nicht mehr, somit kann ich diese in der Config nicht eintragen.

    Auch eine Datei eventGatewayConfig.php habe ich nicht.



    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Eigentlich sollte dieser Fehler nicht auftreten. Voraussetzng ist allerdings, dass in der alexa-config-PLv3.php die eventGatewayRegion definiert ist:

    Code:
    $eventGatewayRegion       = 'DE';
    Wichtig, diese Definition muss schon bei Aktivierung des Skills vorhanden gewesen sein.
    Wenn dies der Fall war, dann sollte die eventGatewayRegion auch in der Datei /usr/local/edomi/www/admin/lbs/alexa/eventGatewayConfig.php
    definiert sein und somit sollte der Fehler nicht auftauchen.

    Allerdings steht derzeit sehr wahrscheinlich noch eine

    Code:
    $eventGatewayRegion       = NULL;
    in dieser Datei. Dies ist einem kleinen Fehler in der Datei edomi-smarthome-skill-PLv3.php geschuldet. Dort muss in der Funktion handleAcceptGrantRequest() die eventGatewayRegion noch als globale Variable deklariert werden.

    PHP-Code:

    function handleAcceptGrantRequest($event)
    {
        global 
    $eventGatewayClientId$eventGatewayClientSecret$eventGatewayRegion
    Also, am besten wie folgt vorgehen:
    1. Die zuletzte beschriebene Änderung vornehmen.
    2. Prüfen ob eventGatewayRegion in alexa-config-PLv3.php definiert ist (s.o.)
    3. Skill deaktivieren
    4. Skill neu aktivieren
    Habe dies gerade bei mir getestet und es hat reibungslos funktioniert. Im nächsten Update ist diese Änderung dann enthalten. Grundsätzlich gibt es aber funktional ohne diese Änderung keine Probleme, da dann per Default das eventGateway für die Region DE verwendet wird.

    Einen Kommentar schreiben:

Lädt...
X