当前位置: 首页 > 知识库问答 >
问题:

测试lambda函数不工作的话语(但lambda函数本身执行)

毛景曜
2023-03-14

我有一个lambda函数,它成功地执行了一个名为GetEvent的意图,该意图返回一个特定的字符串。为了测试目的,我已经为这个意图创建了一个话语(一个简单的话语,不需要任何可选的插槽来调用这个技能),但是当使用服务模拟器用这个话语测试lambda函数时,我会遇到表示"响应无效"的lambda响应。下面是交互模型的样子:

#Intent Schema

   {
   "intents": [
     {
       "intent": "GetVessel",
       "slots": [
         {
           "name": "boat",
           "type": "LIST_OF_VESSELS"
         },
         {
           "name": "location",
           "type": "LIST_OF_LOCATIONS"
         },
         {
           "name": "date",
           "type": "AMAZON.DATE"
         },
         {
           "name": "event",
           "type": "LIST_OF_EVENTS"
         }
       ]
     },
     {
       "intent": "GetLocation",
       "slots": [
         {
           "name": "event",
           "type": "LIST_OF_EVENTS"
         },
         {
           "name": "date",
           "type": "AMAZON.DATE"
         },
         {
           "name": "boat",
           "type": "LIST_OF_VESSELS"
         },
         {
           "name": "location",
           "type": "LIST_OF_LOCATIONS"
         }
       ]
     },
     {
       "intent": "GetEvent",
       "slots": [
         {
           "name": "event",
           "type": "LIST_OF_EVENTS"
         },
         {
           "name": "location",
           "type": "LIST_OF_LOCATIONS"
         }
       ]
     }
   ]    
}

使用适当的自定义技能类型语法,

#First test Utterances
GetVessel what are the properties of {boat}

GetLocation where did {event} occur

GetEvent get me my query

当向Alexa提供语句get me my query时,lambda响应应该像在执行中一样输出字符串。我不知道为什么不是这样;这是我的第一个Alexa Skills Kit项目,所以我还是个新手。关于lambda函数、意图模式和话语是如何拼凑在一起的,有什么我不理解的吗?

更新:多亏了AWSSupport的帮助,我把问题缩小到了json请求中新会话标记为true的区域。为了让话语有效,必须将其设置为false(手动输入json请求时有效,在lambda执行期间也是如此)。为什么会这样?Alexa真的关心调用期间是否是一个新会话吗?几天前,我也在亚马逊开发者论坛上交叉发布了这篇文章,但还没有得到任何人的回复。

共有1个答案

丌官盛
2023-03-14

这可能改变,也可能没有改变--上次我使用服务模拟器时(大约两周前,在撰写本文时),它有一个非常严重的错误,这将导致请求映射到您的第一个/错误的意图,而不管实际的模拟语音输入。因此,即使你输入了一些随机的东西,比如瓦夫aaefgae,它也只是试图将其映射到你定义的第一个意图,没有为所述意图提供可能导致意外结果的插槽。

你的问题很可能与此有关,因为你没有在你的示例话语中使用任何时隙,所以触发了同样的意外/错误行为

在花更多时间调试之前,我建议尝试使用实际的回音或其他方式https://echosim.io/--与“模拟器”不同,通过实际语音进行的交互效果与预期一致

 类似资料:
  • 有时您可能只需要在程序中的一个位置使用一个函数,并且该函数非常简单,您可能不会给它命名,或者可能不想将它存储在符号表中,而宁愿编写一个未命名或匿名的函数。 LISP允许您编写仅在程序中遇到它们时才计算的匿名函数。 这些函数称为Lambda functions. 您可以使用lambda表达式创建此类函数。 lambda表达式的语法如下 - (lambda (parameters) body) 无法

  • 问题内容: 我有一个使用node.js express开发的移动应用程序后端。我尝试将其部署为lambda服务。为此,我创建了一个无服务器框架项目(https://github.com/serverless)。以前,我通过启动快速后端应用程序在本地测试了移动应用程序。现在,我找不到没有本地后端就可以在本地测试我的移动应用程序的方法。命令只在我调用一次后运行。 有什么方法可以将lambda函数作为W

  • 运行lambda函数时,我得到一个Boto3无效参数异常。我正试图找到一种方法来处理这个异常。 我遇到了以下解决方案: 我使用的是python3,我知道boto现在已被弃用,并被boto3取代。但我在boto3中找不到等效的解决方案。 有人能帮我解决这个问题吗?

  • 其实就是一个匿名函数,为什么叫lambda?因为和后面的函数式编程有关. 推荐: 知乎

  • 问题内容: (如“家庭作业”标签所示,这是计算机科学中一项 大型 项目的一部分。) 我在写 危险! 使用tkinter在Python中进行模拟,而我在按钮中使用lambda函数时遇到了一个大问题。假设并且是一个列表。 有关所有代码,请参见我的小代码查看器(正在构建中!) 这就是出现问题的地方,因为当我单击板上的任何按钮时,它总是转到板上的最后一个按钮。我尝试了其他方法,不幸的是所有方法都使用过,而

  • 我是Kotlin的新手,很难理解下面的代码 所以这个函数叫做,它的输入参数是一个名为的函数,它是