我正在开发Alexa技能,如果我在开发过程中以最好的方式设置所有的东西,我就会在理解中挣扎。
现在,我正在使用Node.js在本地进行开发,准备好后上传到云中,并在开发人员控制台的测试部分中使用服务模拟器测试所有对意图的响应。我觉得这个过程有点慢但是很有效..。不过,我还有两个问题:
( 1)是否有办法避免上传到云的过程?
最重要的是2)如何在控制台中测试高级交互,例如多步交互?例如,如何测试触发对意图的响应,但随后要求用户确认(是/否)?现在,唯一的方法是使用实际的设备。
任何改进都将受到高度赞赏。
发布于 2017-09-18 13:56:14
下面是我在本地测试多步交互的方法。
我正在使用一个名为BSTAlexa的免费第三方工具:
http://docs.bespoken.tools/en/latest/api/classes/bstalexa.html
它模仿Amazon在接受请求、按照您的技能提供请求和维护交互状态方面的作用。
因此,我开始我的测试脚本配置BSTAlexa -指向我的技能配置(例如。和我的技能的一个本地实例(在我的例子中,我是给它一个本地URL)。
然后,我向BSTAlexa提供一系列文本请求,并验证我是否得到了预期的响应。我把这些都写进了摩卡的剧本里。
效果很好。
发布于 2017-09-18 20:42:45
就像@Tom建议的--看看bespoken.tools在本地测试技能。
另外,最近发布了Alexa命令行接口,它有一些命令行选项可以查看。
例如,'api调用-技能‘命令允许您通过命令行(或脚本)在本地调用技能,因此不必使用服务模拟器。像这样..。
$ask api invoke-skill -s $SKILL_ID -f $JSON --endpoint-region $REGION --debug这是我做的一个快速视频,它介绍了ASK。它没有专门涵盖测试,但它将提供一个快速的介绍。
希望这能有所帮助。
编辑:对本地测试有另一个想法。如果使用的是节点函数和Lambda函数,则可以从另一个本地index.js文件(例如: test.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);发布于 2017-09-18 11:42:39
请找到答案(以相反的顺序回答),
最好编写完整的单元测试,以便在上传Lambda之前测试您的逻辑。此外,它还将有助于减少Lambda部署的数量。
https://stackoverflow.com/questions/46276745
复制相似问题