HTTP-posting mit Alexa und JS

Ich versuche, einen Alexa-Fähigkeit (JS/Lambda) post-ein Wert, der zu einem REST-server über HTTP.Anfrage. Ich bin versucht zu hacken zusammen etwas einfaches, das wird den job zu erledigen. Ich glaube, ich bin etwas fehlt offensichtlich.

Ideale Skill Nutzung

  1. Ich sagen, "Alexa, Sag Posting-Test fünf."
  2. Alexa aktualisiert den Wert an der angegebenen URL in code 5.
  3. Alexa sagt: "ich habe aktualisiert sich der Wert um fünf."

Probleme

Habe ich zwei Probleme:

  1. Gesprochen vs. typisierte äußerungen. Wenn ich aus meinem slot-Wert in der Amazon-Service-Simulator ("fünf") der Wert ist gepostet zu meinem server, wie es sein sollte. Allerdings, wenn ich sprechen der gleichen äußerung, auch wenn Alexa erkennt die Wörter korrekt (bestätigt durch einen Blick auf die Karten in der app), der Wert ist nicht veröffentlicht, und Sie sagt, "ich kann nicht finden die Antwort auf die Frage."

  2. , Wo und wie der Aufruf der Ausgabe-Funktion. Ich glaube, ich muss etwas hinzufügen, wie Sie die folgenden zwei Zeilen, aber je nachdem, wo ich es in meinem aktuellen code, Alexa entweder reagiert, ohne dass eine Aktualisierung der Knoten, oder nicht tun.

    var text = 'I have updated the value to' + targetSlot;
    output( text, context );

Aufruf Name

posting test

Absicht Schema

{
  "intents": [ {
    "intent": "writeTarget",
    "slots": [ {
       "name": "Target",
       "type": "NUMBER"
    } ]
  }]
}

Beispiel Äußerungen

writeTarget {Target}

AlexaSkill.js und index.js

Ich bin mit dem AlexaSkill.js Datei gefunden werden kann, wird in jedem Beispiel hier.

Meine index.js sieht aus wie diese. URL req.schreiben string, etc., ersetzt mit ****.

exports.handler = function( event, context ) {

    var APP_ID = undefined;

    const http = require( 'http' );

    var AlexaSkill = require('./AlexaSkill');

    var options = {
      host: '****.com',
      path: '/****',
      port: '****',
      method: 'PUT'
    };

    callback = function(response) {
      var str = ''
      response.on('data', function (chunk) {
        str += chunk;
      });

      response.on('end', function () {
        console.log(str);
      });
    };
    var targetSlot = event.request.intent.slots.Target.value;
    var req = http.request(options, callback);
    req.write("****");
    req.end();    
};

function output( text, context ) {

    var answer = {
        outputSpeech: {
            type: "PlainText",
            text: text
        },
        card: {
            type: "Simple",
            title: "System Data",
            content: text
        },
        shouldEndSession: true
    };

    context.succeed( { answer: answer } );

}

Aktuelle Nutzung: Ein

  1. Ich der Typ "fünf" in der Service-Simulator.
  2. Knoten updates, aber Alexa sagt nichts.

Aktuelle Nutzung: B

  1. Erzähle ich Alexa, "Sagen die Entsendung Test zwei".
  2. Alexa sagt: "ich kann nicht finden die Antwort auf die Frage." Karte bestätigt Sie mich richtig verstanden.
  3. Nichts aktualisiert wird.

Vielen Dank im Voraus für jede Hilfe.

Update: Protokolle

Update-post hinzufügen-Protokolle:

Fehlermeldung

{
  "errorMessage": "Process exited before completing request"
}

Log-Ausgabe-Fehler

TypeError: Cannot read property 'intent' of undefined
    at exports.handler (/var/task/index.js:24:35)

Lambda-Reaktion

The response is invalid
InformationsquelleAutor ARB | 2016-02-10
Schreibe einen Kommentar