在 Echo 上测试时无法识别 Alexa Skill

Posted

技术标签:

【中文标题】在 Echo 上测试时无法识别 Alexa Skill【英文标题】:Alexa Skill not recognized when tested on Echo 【发布时间】:2016-12-28 08:31:15 【问题描述】:

我正在做一个教程(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 tell greeter to say hello”。 Alexa似乎没有识别技能?

我正在使用 Amazon Lambda 执行代码,所以我检查了日志,当我向上面说出命令时,代码没有执行。

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

我还尝试了其他教程(ChemistryFlashCards 和 HistoryBuff),Alexa 回复说“我不确定你的意思是什么。”

不知道发生了什么!任何指导表示赞赏!

【问题讨论】:

查看交互模型和配置屏幕会有所帮助。 你能发布你的语音代码吗? 【参考方案1】:

为了让您的 Echo / Dot / Tap 设备正确调用您的自定义技能,您的交互模型的语言需要与您部署 lambda 资源的区域相匹配。我遇到了这个问题,因为我在 EU-West1 部署了 lambda (爱尔兰),但交互模型的默认语言是英语(美国)。在交互模型中,我添加了一种新的英语(英国)语言并复制了我的意图和话语,然后删除了英语美国语言,我的 Echo Dot 现在正确调用了我的自定义技能意图

【讨论】:

我建议人们注意这一点;我花了 3 个小时试图测试在控制台上运行良好的设备上的技能 - 结果只是这个问题 - 我只需要将英语(英国)设置为一种语言,因为那是我在哪里。 我花了一段时间才发现这一点。花了大约 5 分钟才能在我的设备上对其进行测试,但这解决了我的问题。谢谢。 巴里你的传奇!那是一个小时我没有回来.. @AmanGupta 尝试检查应用程序中的语言,并且技能显示在我的技能下 谢谢!令人讨厌的是亚马逊没有让这一点更明显,花了好几个小时试图找出为什么 Alexa 无法识别调用短语 在我的例子中,lambda 的区域并不重要,但它需要我使用与设备语言相同的语言(英语 IN)来配置我的交互模型。我的 lambda 仍然部署在 us-east-1 中。【参考方案2】:

您是否启用了使用设备进行技能测试?

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

【讨论】:

该技能已启用测试并显示在“您的技能”下。问题依然存在 技能信息部分的调用名称是什么?它应该是“greeter”——小写很重要。 调用名称是小写的“greeter” 我也有类似的问题=( 我有类似的问题,我的测试技能工作了 10 段,在过去的几天里,Alexa 在超过 90% 的情况下无法调用我的技能,只有 10% 的情况下我调用我的技能,我的技能真的被调用了。我不知道发生了什么... :(【参考方案3】:

您的设备语言和您在开发者帐户中用于创建自定义技能的语言应该相同。如果您的设备在英语印度注册,那么您必须在您的自定义技能中添加英语印度语言。

检查您的 alexa 应用设置中的语言 -> 您的 Echo 设备 -> 语言

【讨论】:

就我而言,我的技能语言是 en-us(美国),但我的设备设置为 en-ca(加拿大)。棘手!【参考方案4】:

我在北弗吉尼亚地区(用于 Lambda 函数)使用默认的 en-US 语言进行开发,但总部位于印度。我什至尝试在 Alexa 应用程序中使用美国地址,但没有成功。

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

【讨论】:

您不必将 lambda 函数从弗吉尼亚北部迁移到爱尔兰吗?由于根据文档,如果使用 Lambad 函数,欧洲和印度的终点是欧盟(爱尔兰)。 developer.amazon.com/docs/custom-skills/… 只有在我搬到爱尔兰后它才对我有用,因为文档清楚地表明对于欧洲和印度,Lamda 端点必须在爱尔兰。 @RafiAliKhan 引用文档中的行“如果客户所在地区的首选端点不可用,Alexa 将调用默认端点。”我将来自 N. Virginia 的 lambda 函数放在 Alexa Skill Console 内的默认文本框中 所以每次您对其中一个模型进行更改时,您都会复制并粘贴所有其他语言?出错的可能性很大,不是吗?【参考方案5】:

我使用下面的 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.

【讨论】:

【参考方案6】:

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

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

重新启用技能

转到https://alexa.amazon.in/。确保设备在线显示。在您的技能部分禁用该技能。再次启用它。

这应该可以解决问题。

【讨论】:

【参考方案7】:

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

此外,如果您想快速启用您的技能,如果您还没有这样做,比如 Alexa(或任何您的唤醒词),请启用

【讨论】:

以上是关于在 Echo 上测试时无法识别 Alexa Skill的主要内容,如果未能解决你的问题,请参考以下文章

Alexa无法识别意图

亚马逊 Alexa 无法识别号码槽

Alexa 无法识别某些依赖于样本话语的槽值

Alexa 技能包与 Alexa 语音服务

高工AI · 快讯 | Echo音箱支持多用户共用脸书发布独立虚拟现实头显Oculus Go三川智慧与华为软件进行云计算合作

Alexa 技能工具包 -Lambda 函数 - 无法验证 SpeechletRequest (java)