7

我正在尝试获取 Alexa 技能(JS/Lambda)以使用 HTTP.request 将值发布到 REST 服务器。我正在尝试拼凑一些简单的东西来完成工作。我想我错过了一些明显的东西。

理想的技能用法

  1. 我说,“Alexa,告诉发布测试五。”
  2. Alexa 将代码中指定的 URL 处的值更新为 5。
  3. Alexa 说:“我已将值更新为 5。”

问题

我有两个问题:

  1. 口语与打字的话语。如果我在 Amazon Service Simulator 中键入我的槽值(“五”),则该值将按原样发布到我的服务器。但是,如果我同样的话,即使 Alexa 正确识别了这些单词(通过查看应用程序中的卡片来确认),值也不会发布,她会说,“我找不到问题的答案。”

  2. 在哪里以及如何调用输出函数。我想我需要添加类似下面两行的内容,但取决于我在当前代码中添加它的位置,Alexa 要么响应而不更新节点,要么不做任何事情。

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

调用名称

posting test

意图模式

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

示例话语

writeTarget {Target}

AlexaSkill.js 和 index.js

我正在使用可以在此处的每个示例中找到的 AlexaSkill.js 文件。

我的 index.js 看起来像这样。URL、req.write 字符串等,替换为 ****。

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 } );

}

当前使用情况:A

  1. 我在服务模拟器中输入“五”。
  2. 节点更新但 Alexa 什么也没说。

当前使用情况:B

  1. 我告诉 Alexa,“告诉发布测试二。”
  2. Alexa 说:“我找不到问题的答案。” 卡确认她没听错。
  3. 什么都没有更新。

提前感谢您的帮助。

更新:日志

更新帖子以添加日志:

错误信息

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

日志输出错误

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

拉姆达响应

The response is invalid
4

0 回答 0