0

我一直在努力尝试编写一个工作代码,以便使用带有 JSON-url 的 Amazon Echo (Alexa) 来控制我的灯。我已经阅读了许多示例并尝试了许多不同的组合,但我无法让它发挥作用。启动请求确实有效。IntentRequest 没有。我已经更改了链接。

目前它看起来像这样:

var http = require('http')

exports.handler = (event, context) => {

try {

      if (event.session.new) {

    console.log("NEW SESSION");
}

switch (event.request.type) {

    case "LaunchRequest":
    console.log(`LAUNCH REQUEST`);
    context.succeed(
        generateResponse(
            buildSpeechletResponse("Welcome", true),
            {}
            )
            );
    break;

    case "IntentRequest":
    console.log(`INTENT REQUEST`);

    switch(event.request.intent.name) {
        case "TurnTheLightsOn":
          var url = "http://full link";
            http.get(url, function(response){    
                var body = "";

               response.on('data', function(chunk) {
                  body += chunk;
               });

                response.on('end', function() {
               var data = JSON.parse(body);  // {"result":"ok"}
                       console.log("Got a response: ", data);



           context.succeed(
               generateResponse(
                   buildSpeechletResponse(`Ok`)
                    )
                    );
            });
    });
    }

    break;

    case "SessionEndedRequest":
    console.log(`SESSION ENDED REQUEST`);
    break;

    default:
    context.fail(`INVALID REQUEST TYPE: ${event.request.type}`);
}



} catch(error) { context.fail(`Exception: ${error}`); }
};



buildSpeechletResponse = (outputText, shouldEndSession) => {

return {
    outputSpeech: {
        type: "PlainText",
        text: outputText
    },
    shouldEndSession: shouldEndSession
    };
};

generateResponse = (speechletResponse, sessionAttributes) => {

    return {
        version: "1.0",
        sessionAttributes: sessionAttributes,
        response: speechletResponse
    };

};

Intent 模式如下所示: Intent Schema 和服务模拟器: Service Simulator 无论我尝试什么,我都会不断收到错误消息:“无法调用远程端点,或者它返回的响应无效。”

我不知道如何解决这个问题。谁能帮助我?提前谢谢了!

4

0 回答 0