我正在开发一个Alexa技能,如果我在开发过程中以最佳方式设置所有内容,我正在努力理解。
现在我正在使用Node.js在本地开发,准备好时上传到云端,并使用开发人员控制台的“测试”部分中的服务模拟器测试所有对意图的响应。 我觉得这个过程有点慢但工作正常......但是,我还有两个问题:
1)有没有办法避免上传到云端的过程?
最重要的是2)如何在控制台中测试高级交互,例如多步交互?例如,如何测试触发对意图的响应,然后要求用户确认(是/否)?现在唯一的方法是使用实际的设备。
高度赞赏任何改进
答案 0 :(得分:2)
像@Tom建议的那样 - 看看bespoken.tools在本地测试技能。
此外,最近发布了Alexa Command Line Interface,它有一些您可能会查看的命令行选项。
例如,'api invoke-skill'命令允许您通过命令行(或脚本)在本地调用技能,因此您不必使用服务模拟器。像这样......
$ask api invoke-skill -s $SKILL_ID -f $JSON --endpoint-region $REGION --debug
这是我做的一个快速视频,介绍了ASK CLI。它没有专门涵盖测试,但它将提供快速介绍。
希望有所帮助。
编辑:有另一个想法在本地进行测试。如果您正在使用node和Lambda函数,则可以从另一个本地.js文件(例如:test.js)调用index.js文件,并传入事件数据和上下文。这是一个例子://path to the Lambda index.js file
var lambdaFunction = require('../lambda/custom/index.js');
// json representing the event - just copy from the service simulator
var event = require('./events/GetUpdateByName.json');
var context = {
'succeed': function (data) {
console.log(JSON.stringify(data, null,'\t') );
},
'fail': function (err) {
console.log('context.fail occurred');
console.log(JSON.stringify(err, null,'\t') );
}
};
function callback(error, data) {
if(error) {
console.log('error: ' + error);
} else {
console.log(data);
}
}
// call the lambda function
lambdaFunction.handler (event, context, callback);
答案 1 :(得分:1)
以下是我在本地测试多步互动的方法。
我正在使用名为BSTAlexa的第三方免费工具:
http://docs.bespoken.tools/en/latest/api/classes/bstalexa.html
它模仿亚马逊在接受请求,提升您的技能以及维持交互状态方面的作用。
所以我通过配置BSTAlexa开始我的测试脚本 - 将它指向我的技能配置(例如意图)和我的技能的本地实例(在我的情况下,我给它一个本地URL)。
然后我向BSTAlexa提供一系列文字请求,并验证我是否收到了预期的回复。我把所有这些都放在了Mocha脚本中。
效果很好。
答案 2 :(得分:0)
请找到答案(以相反的顺序回答),
您可以使用模拟器(echosim.io)测试多个步骤,但每次必须按住麦克风按钮(或按住空格键)。比如说,首先你要向Alexa用echosim和alexa回复确认'是/否'然后你必须再次按住麦克风按钮才能回复确认。
您可以自动执行lambda部署过程。请看链接, http://docs.aws.amazon.com/lambda/latest/dg/automating-deployment.html
最好编写完整的单元测试,以便在上传Lambda之前测试逻辑。此外,它还有助于减少Lambda部署的数量