Alexa lambda函数能够执行除自定义之外的所有意图吗?

时间:2017-12-19 04:27:23

标签: aws-lambda alexa alexa-skills-kit alexa-skill

当我在服务模拟器中测试时,启动(新会话),未处理和亚马逊默认意图(取消,帮助,停止)正常工作,但我写的任何一个似乎都不起作用。以下是测试意图的示例:

var handlers = {
'NewSession': function() {
    this.emit(':tell', 'Hello');

'Test': function() {
    this.emit(':tell','This intent is working');    
},     
'Unhandled': function() {
    this.emit(':tell','Sorry, I don\'t know what to do');    
},   
'AMAZON.HelpIntent': function(){
    this.emit(':ask', 'What can I help you with?', 'How can I help?');
},
'AMAZON.CancelIntent': function(){
    this.emit(':tell', 'Okay');
},
'AMAZON.StopIntent': function(){
      this.emit(':tell', 'Goodbye');
},


exports.handler = function(event,context){
var alexa = Alexa.handler(event,context);
alexa.registerHandlers(handlers);
alexa.execute();
};

意图的代码段:

 "intents": [
  {
    "name": "AMAZON.CancelIntent",
    "samples": []
  },
  {
    "name": "AMAZON.HelpIntent",
    "samples": []
  },
  {
    "name": "AMAZON.StopIntent",
    "samples": []
  },
  {
    "name": "ColorIntent",
    "samples": [],
    "slots": [
  {
    "name": "Test",
    "samples": [
      "Test me"
    ],
    "slots": []

无论我做什么,我都无法让测试意图工作并返回"这个意图正在发挥作用。请帮忙!

1 个答案:

答案 0 :(得分:2)

也许是因为你的第一次调用总是由NewSession处理程序处理,然后处理程序以“你好”的方式响应。并结束会议。 我认为有两种方法可以激活您的Test处理程序,即让您的技能回复'此意图正在运行':

  1. 您可以使用NewSession结束this.emit(':ask', 'Hello! What do you want to do next?');处理程序,然后说出“测试我”来创建多回合对话。
  2. 您将NewSession处理程序替换为LaunchRequest处理程序,并使用' Alexa调用您的技能,告诉领带选择器测试我'。
  3. 希望有所帮助! :)

    顺便说一句,因为我无法在任何地方发表评论:你可以记录你的lambda状态,例如:用于调试,使用console.log( 'Test handler invoked');,然后在AWS CloudWatch中查找日志。