Aws lambda 在Echo上测试时无法识别Alexa技能

Aws lambda 在Echo上测试时无法识别Alexa技能,aws-lambda,alexa-skills-kit,alexa-skill,amazon-echo,Aws Lambda,Alexa Skills Kit,Alexa Skill,Amazon Echo,我正在做一个教程(HelloWorld),为Echo制作一个技能,我按照说明进行操作。当我使用服务模拟器测试技能时,我输入了 Alexa, tell Greeter to say hello 并返回以下JSON响应: { "version": "1.0", "response": { "outputSpeech": { "type": "PlainText", "text": "Hello World!" }, "card": { "content"

我正在做一个教程(HelloWorld),为Echo制作一个技能,我按照说明进行操作。当我使用服务模拟器测试技能时,我输入了

Alexa, tell Greeter to say hello
并返回以下JSON响应:

{
  "version": "1.0",
  "response": {
    "outputSpeech": {
      "type": "PlainText",
      "text": "Hello World!"
},
"card": {
  "content": "Hello World!",
  "title": "Greeter",
  "type": "Simple"
},
"shouldEndSession": true
  },
  "sessionAttributes": {}
}
我认为这是正确的输出。然而,当我试着在我的Echo上测试这个技能时,Alexa回答说“对不起,我没有回答你的问题。”我继续记录历史,Alexa将我的命令解释为“Alexa告诉greeter打个招呼”。Alexa似乎不认识这个技能

我使用AmazonLambda来执行代码,所以我检查了日志,当我对上面的命令说话时,代码没有执行

我将javascript文件中的app_id替换为与我的技能对应的id。我还将亚马逊技能工具包作为触发器

我还尝试了其他教程(ChemistryFlashCards和HistoryBuff),Alexa回答说:“我不知道你这是什么意思。”


不知道发生了什么事!感谢您的指导

您是否启用了设备测试以提高您的技能


启用此功能后,您可以通过转到Alexa应用程序的“技能”部分并点击“您的技能”查看Echo识别的技能列表,检查它是否与您的设备正确关联。你应该看到你的技能上有一个绿色的开发标签

为了让Echo/Dot/Tap设备正确调用自定义技能,交互模型的语言需要与lambda资源部署的区域相匹配。我在EU-West1(爱尔兰)部署lambda时遇到了这个问题,但是交互模型的默认语言是英语(美国)。在交互模型中,我添加了一种新的英语语言(英国),并复制了我的意图和话语,然后删除了英语-美国语言,我的Echo Dot现在正确地调用了我的自定义技能意图。您的设备语言和您在开发人员帐户中创建自定义技能时使用的语言应该是相同的。如果您的设备是在英语印度注册的,那么您必须在自定义技能中添加英语印度语


检查alexa应用程序设置上的语言->您的回声设备->语言

我在北弗吉尼亚州地区(用于Lambda功能)使用默认的英语-美国语言开发,但总部位于印度。我甚至试着在Alexa应用程序中使用美国地址,但都没用


最后,我添加了所有英语(en-IN、en-CA、en-GB、en-EU),并复制了为en-US创建的JSON模型文件。分别构建它们,并填写每个的
Description->Skill Preview
详细信息。这很有效。

一个与语言设置有关的问题。

使用或alexa应用更正Echo设备中的语言设置。确保技能和设备中启用的语言相同。例如,使用英语和印度语

重新启用该技能

去。确保设备在线显示。禁用技能部分中的技能。再次启用它


这应该可以解决问题。

大多数情况下,您无法打开技能,因为它与您为Amazon echo设备设置的当前语言不同。如果这不起作用,您可能没有启用技能测试


另外,如果你想快速启用你的技能,如果你还没有这样做,可以说Alexa(或者你的wake单词是什么),enable(启用)

我使用下面的5点检查表,它总是有效的:

1. Under Alexa Language Settings, add all the languages like English-US and English-IN that your Echo devices are likely to be configured with.
2. Freshly build the interaction model and deploy again.
3. Tell Alexa to ignore the Alexa-hosted skill: Instead of its auto-generated lambda code, it should use the external custom lambda that you created.
4. Ensure that the service end point is correct: Under the AWS Lambda ARN, enter your custom lambda ARN for each and every region you will be invoking the skill.
5. In the Alexa simulator, select all the languages one by one in the drop down and test them individually.

该技能已启用测试,并显示在“您的技能”下。问题仍然存在。在技能信息部分,您对调用名称有什么要求?它应该是“greeter”--小写很重要。调用名称是小写的“greeter”,我有一个类似的问题=(我也有类似的问题,我的测试技能使用了10丹,在过去的几天里,Alexa在超过90%的情况下没有调用我的技能,只有10%的情况下,当我调用我的技能时,我的技能被真正调用。我不知道发生了什么…:(这将有助于查看交互模型和配置屏幕。你能发布你的speechlet代码吗?我建议大家注意这一点;我花了3个小时在一台在控制台上运行良好的设备上测试一项技能——结果就是这个问题——我只需要设置英语(英国)作为一种语言,因为这就是我所在的地方。我花了一段时间才发现这一点。花了大约5分钟在我的设备上测试它,但这解决了我的问题。谢谢你。巴里,你是个传奇人物!那是一个小时,我不会回来了。@AmanGupta尝试检查应用程序中的语言,并且技能显示在我的技能手链下!亚马逊不这么做真让人恼火我花了好几个小时试图找出Alexa为什么不识别调用短语。在我的例子中,lambda的区域并不重要,但它要求我用与设备语言相同的语言配置我的交互模型(英语).My lambda仍部署在us-east-1中。您是否不必将lambda功能从北弗吉尼亚移到爱尔兰?因为根据文件,如果使用Lambad功能,欧洲和印度的终点是EU(爱尔兰)。它只在我搬到爱尔兰后才对我起作用,因为文档中明确指出,对于欧洲和印度,Lamda端点必须在爱尔兰。@RafiAliKhan引用文档中的一行:“如果客户所在地区的首选端点不可用,Alexa称为默认端点。”我把N.Virginia的lambda函数放在Alexa Skill控制台内的默认文本框中,这样每当你对一个模型进行更改时,你就可以复制并粘贴所有其他语言的lambda函数?很有可能出错,不是吗?