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

问题描述 投票:0回答:1

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

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": []

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

aws-lambda alexa alexa-skills-kit alexa-skill
1个回答
2
投票

也许是因为你的第一次调用总是由NewSession处理程序处理,然后处理器以“Hello”响应并结束会话。我看到两种方法来激活你的Test处理程序,即让你的技能回应“这个意图是有效的”:

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

希望有所帮助! :)

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

© www.soinside.com 2019 - 2024. All rights reserved.