Ankündigung

Einklappen
Keine Ankündigung bisher.

Alexa4p3 für Dummies

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

  • 2malmama
    antwortet
    ha - aber Dein Hinweis war super!!!!

    Ich habe mal die ganzen alten Funktionen gelöscht. Und nachdem ich das erledigt hatte, war in meiner Funktion der "Ursprungscode" drinnen. Der, der die 200 ausgibt.

    Dann habe ich nochmals den Code aus der Anleitung einkopiert - und siehe da - der Test bringt ein ganz anderes Bild und noch viel (ich hoffe, ich dar das hier jetzt mal so ausdrücken) viel, viel VIEL geiler - meine Alexa hat ein neues Gerät gefunden, dass da heißt: "LAMPE"

    Den Aufschrei von uns hier allen hättest Du gerade hören müssen!!!

    DANKE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (muss ich jetzt noch sagen, dass Du der Held des Tages bist?!??)

    Einen Kommentar schreiben:


  • 2malmama
    antwortet
    das ja lustig - bei mir gibt es nur die eine js, die mit dem richtigen Code: (da gibt angeblich der richtige Code den falschen Response zurück)
    discoveryCode2.PNG

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Hallo 2malmama ,

    ich glaube ich habe den Übeltäter. Beim Anlegen einer neuen NodeJS-Anwendung wird ein Beispiel Script erzeugt. Das hast Du wohl noch irgendwo stehen.
    Diese wird dann bei der Testfunktion aufgerufen und antwortet mit "Hello from Lambda".

    Das muss komplett weg - nur "unsere" Lambda-Funktion darf hier stehen. "Unsere" Funktion muss genau in diese index.js, in keine zweite oder ähnlich.
    Falls Du zwei index.js hast lösche die Falsche.

    Lambda.png
    Weiterhin viel Erfolg, ich denke Du bist nahe dran.

    Gruss Andre

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    OK das sieht gut aus

    dann muss ich selbst mal auf die Suche gehen wie man so einen Response bekommen kann - es geht definitiv nichts aus der Amazon-Welt raus, das passiert
    irgendwo intern.

    Ich mach mich mal auf die Suche

    Gruss Andre

    Einen Kommentar schreiben:


  • 2malmama
    antwortet
    der Smiley ist das P nach dem :

    Einen Kommentar schreiben:


  • 2malmama
    antwortet
    achso - tschuldige:
    Der Einfachheit halber, nicht als Screenshot - sondern rauskopiert:

    /*
    You need to specify the following environmental variables in the lambda function:
    - SMARTHOME_HOST
    foobar.dyndns.tld
    - SMARTHOME_PORT
    443 - endpoint must be https enabled!
    - SMARTHOME_PATH
    '/'
    - SMARTHOME_AUTH
    'userassword'
    */
    exports.handler = function(event, context, callback) {
    var data = JSON.stringify(event)
    var options = {
    hostname: process.env.SMARTHOME_HOST,
    port: process.env.SMARTHOME_PORT,
    path: process.env.SMARTHOME_PATH,
    method: 'POST',
    auth: process.env.SMARTHOME_AUTH,
    headers: {
    'Content-Type': 'application/json',
    'Content-Length': Buffer.byteLength(data)
    }
    };
    var https = require('https');
    var req = https.request(options, (res) => {
    console.log(`HTTP ${res.statusCode}`);
    res.setEncoding('utf8');
    var responseData = '';
    res.on('data', (dataChunk) => {
    responseData += dataChunk
    });
    res.on('end', () => {
    console.log('raw response:', responseData)
    var response = JSON.parse(responseData);
    if (res.statusCode == 200) {
    console.info('OK', JSON.stringify(response))
    callback(null, response);
    } else {
    console.error('Failed', JSON.stringify(response))
    callback('DependentServiceUnavailableError');
    }
    });
    });
    req.on('error', (e) => {
    console.error('request failed', e);
    callback(e);
    });
    console.log('requesting', data)
    req.write(data);
    req.end();
    }

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Hi,

    ich meinte den Funktionscode in der Lambda selbst - in Deinem Screenshot mit den Umgebungsvariable für Deinen NGINX steht :

    "Über den Umgebungsvariablen habe ich den Funktionscode eingefügt" - diesen hatte ich gemeint.

    Gruss Andre

    Einen Kommentar schreiben:


  • 2malmama
    antwortet
    Hallo Andre,

    mmh - das ist der Code, den Du mir zur Verfügung gestellt hast.
    Ich habe ihn in den Testerereignissen als neuen Code eingefügt, ich hoffe, dass das die richtige Stelle war?!


    discoveryCode.PNG
    Angehängte Dateien
    Zuletzt geändert von 2malmama; 20.10.2020, 17:43.

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Schick mal bitte Deinen Funktioncode
    aus der Lambda

    Die Anwort „Hello from Lambda“ - keine Ahnung was diesen Response sendet. Das Plugin jedenfalls nicht

    Gruss Andre

    Einen Kommentar schreiben:


  • 2malmama
    antwortet
    Hallo Andre,
    der Lambda-Test meldet zwar erfolgreich.
    Auf dem nginx finde ich aber weder Einträge in der access.log, noch in der error.log

    06 Lambda Test.PNG

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Hi,

    d.h. der Lambdatest war erfolgreich - hast dazu Einträge beim nginx ?
    Was hat die Testfunktion geliefert ?

    Falls Einträge beim nginx ohne Fehler sind passt die Lambda, dann liegt es an der Verknüpfung Skill <-> Lambda

    Das muss ich mir heute Abend selbst nochmal ansehen

    Gruss Andre

    Einen Kommentar schreiben:


  • 2malmama
    antwortet
    Ich bin das hier gefühlt auch schon 100 mal durchgegangen:

    Zitat von AndreK Beitrag anzeigen
    Folgende Punkte würde ich bei Amazon im Skill prüfen :

    - den default-endpoint für die Lambda im Skill
    - die "geographical region"im Skill (korrekt ist hier "Europe/India")
    - beim Account Linking mal einen Scope hinzufügen (add scope)
    - beim Account Linking muss unter "Scope" -> "profile:user_id" stehen (genauso ohne Quotes)


    folgendes würde ich in der Lambda prüfen
    - Die IAM-Role und deren Berechtigung
    - die Region der Lambda (korrekt ist hier "Ireland")

    im Sicherheitsprofil (Seite 19) obiger Anleitung die "Alexa Redirect URLs" vom Skill eintragen

    Findet Ihr vielleicht einen Dusselfehler in meiner Konfiguration? Ich bin es eben noch mal Stück für Stück anhand schumas Anleitung durchgegangen (zusätzlich dem Scope - der in der Anleitung noch nicht drin ist):


    01 developer.PNG 02 account linking.PNG 03 lambda.PNG 04 Umgebungsvariablen.PNG 05 Sicherheitsprofil.PNG
    Zuletzt geändert von 2malmama; 20.10.2020, 11:35. Grund: Anhänge hinzugefügt

    Einen Kommentar schreiben:


  • 2malmama
    antwortet
    Guten Morgen in die Runde!

    Gestern habe ich es leider nicht geschafft - Familie geht eben vor.

    Dank Andre für den Testcode! Ich muss mich bei Gelegenheit mal in den Rest einlesen - aber alles auf einmal geht irgendwie nicht Der Tag hat einfach viel zu wenig Stunden für viel zu viel Aufgaben....

    Den Test hab ich gemacht - er lief erfolgreich. Keine Fehler.
    Aber weder im error.log, noch im access.log kann ich einen Zugriffsversuch feststellen, wenn ich mit meinem Skill nach neuen Geräten suche.

    Das ist doch komisch, oder nicht? Irgendwas müsste ich doch sehen?

    Zuletzt geändert von 2malmama; 20.10.2020, 10:08.

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Hallo 2malmama ,

    Testereignisse (Directiven) kann man sich aus der Alexa-Developer-Doku holen
    z.B. das Disovery hier

    Das "Discovery" (neue Geräte suchen) eignet sich mit am besten für Tests. Da muss was vernünftiges zurück kommen.


    Code:
    {
      "directive": {
        "header": {
          "namespace": "Alexa.Discovery",
          "name": "Discover",
          "messageId": "<message id>",
          "payloadVersion": "3"
        },
        "payload": {
          "scope": {
            "type": "BearerToken",
            "token": "<an OAuth2 bearer token>"
          }
        }
      }
    }
    Diesen Payload in den Testereignissen der Lambda einfügen und unter einem beliebigen Name speichern.
    !! Es muss nichts angepasst werden !!

    Weiter Directiven zu den einzelnen Controllern findest Du hier.

    Die Lambda-Funktion wirft beim Testen dann meist brauchbare Hinweise auf eventuelle Fehler.

    Gruss Andre

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    Dann haltet Euch ran, Jungs

    Einen Kommentar schreiben:

Lädt...
X