如何在开发Alexa技能时测试高级交互

时间:2017-09-18 10:10:29

标签: node.js alexa alexa-skills-kit

我正在开发一个Alexa技能,如果我在开发过程中以最佳方式设置所有内容,我正在努力理解。

现在我正在使用Node.js在本地开发,准备好时上传到云端,并使用开发人员控制台的“测试”部分中的服务模拟器测试所有对意图的响应。 我觉得这个过程有点慢但工作正常......但是,我还有两个问题:

1)有没有办法避免上传到云端的过程?

最重要的是2)如何在控制台中测试高级交互,例如多步交互?例如,如何测试触发对意图的响应,然后要求用户确认(是/否)?现在唯一的方法是使用实​​际的设备。

高度赞赏任何改进

3 个答案:

答案 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。它没有专门涵盖测试,但它将提供快速介绍。

https://youtu.be/p-zlSdixCZ4

希望有所帮助。

编辑:有另一个想法在本地进行测试。如果您正在使用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)

请找到答案(以相反的顺序回答),

  1. 您可以使用模拟器(echosim.io)测试多个步骤,但每次必须按住麦克风按钮(或按住空格键)。比如说,首先你要向Alexa用echosim和alexa回复确认'是/否'然后你必须再次按住麦克风按钮才能回复确认。

  2. 您可以自动执行lambda部署过程。请看链接, http://docs.aws.amazon.com/lambda/latest/dg/automating-deployment.html

  3. 最好编写完整的单元测试,以便在上传Lambda之前测试逻辑。此外,它还有助于减少Lambda部署的数量