2017-06-23 95 views
2

我在Amazon开发人员控制台上使用Interaction Model Builder Beta定义了技能模型。 我也使用AWS Lambda定义了一个简单的lambda函数;亚马逊Alexa技能端点无法访问

'use strict'; 

console.log('Loading function'); 

exports.handler = (event, context, callback) => { 
    console.log('Received event:', JSON.stringify(event, null, 2));  
    callback(null, "Hello world"); 
}; 

在测试部分,我进入一个话语,我可以看到正在创建一个JSON请求,但响应:

远程端点无法调用,或者返回的响应是无效。

我接受了请求JSON,并在AWS Lambda中为我的函数创建了一个测试。测试成功通过并返回请求的“hello world”。

我的功能触发器是“Alexa Skills Kit”。 功能日志不显示任何东西。

任何想法为什么它不工作? 是否有某种认证问题?我需要在某处弹出一个开关吗?

我使用的ARN地址如下所示:arn:aws:lambda:eu-west-1:481045208193:function:eventCount

回答

1

您的Lambda handler需要依赖于alexa-sdk

例如

import Alexa from 'alexa-sdk'; 

export const handler = (event, context, callback) => { 
    const alexaHandler = Alexa.handler(event, context, callback); 
    alexaHandler.appId = 'amzn1.ask.skill.XXX'; 
    alexaHandler.registerHandlers(
     // DEFINE YOUR HANDLERS HERE 
    ); 
    alexaHandler.execute(); 
}; 

欲了解更多信息和例子看看这里:Alexa Skills Kit SDK for Node.js

+0

感谢您的建议。我认为这回答了我最初的问题(出于某种原因,不能将它标记为我手机上的答案,所以稍后会做)。我已经下载了整个github软件包,并尝试上传zip文件,以查看包含的index.js是否会编译,但是我得到了“errorMessage”:“无法找到模块'alexa-sdk'”。我看到互联网提示我需要上传sdk软件包,但这不是我刚刚做的吗?显然你有一些经验,对这个问题有什么建议? –

+0

您是否运行'npm install'来安装所有依赖项? – MaiKaY

+0

挖完之后,我需要进行以下操作:如果我使用stock index.js文件'var AlexaLambdaHandler = require('./ lib/alexa'); module.exports.handler = AlexaLambdaHandler.LambdaHandler; module.exports.CreateStateHandler = AlexaLambdaHandler.CreateStateHandler; module.exports.StateString = AlexaLambdaHandler.StateString;'从Alexa测试页执行测试我得到“无效响应”。 –

0

你当然可以不使用Alexa的SDK创建的node.js技能。 this is the link to a github gist为一个不使用SDK的实时技术称为“计数卡”。

根据我的经验,Alexa Developer Console中的服务模拟器充满了错误。如果您的函数在由服务模拟器创建的JSON中复制后在Lambda上运行,那么“arn”可能就没问题。
您是否尝试过使用实际的亚马逊Alexa或Amazon Echo来调用您的技能?你可能会惊讶地发现你的技能真的有效。

由于Alexa技能套件在US-N.Virginia和EU-Ireland中得到支持,因此您的支持不错。

相关问题