仅从 Alexa Skills Kit 获取单个单词参数

Posted

技术标签:

【中文标题】仅从 Alexa Skills Kit 获取单个单词参数【英文标题】:Only getting single word parameters from Alexa Skills Kit 【发布时间】:2016-07-28 16:31:51 【问题描述】:

我正在编写一个 Alexa Skill,我只能在我的代码中获取单个单词参数。

这是意图架构:

    
  "intents": [
    
      "intent": "HeroQuizIntent",
      "slots": [
        
          "name": "SearchTerm",
          "type": "SEARCH_TERMS"
        
      ]
    ,
    
      "intent": "HeroAnswerIntent",
      "slots": [
        
          "name": "SearchTerm",
          "type": "SEARCH_TERMS"
        
      ]
    ,
    
      "intent": "AMAZON.HelpIntent"
    
  ]

我的示例话语是:

HeroQuizIntent quiz me
HeroAnswerIntent is it SearchTerm

对于 HeroAnswerIntent,我正在检查 SearchTerm 槽,我只在其中得到单个单词。

所以,“Peter Parker”给“Parker”,“Steve Rogers”给“Rogers”,“Tony Stark”给“Stark”。

如何在一个槽中接受多个单词?

【问题讨论】:

你得到的 json 结构有什么线索吗?没有什么明显的。可能值得发布结构。 好点。这是发送到 Lamda 的请求的相关部分。 "request": "type": "IntentRequest", "requestId": "EdwRequestId.da0c74ea-15bd-45b9-a69e-76c523f08195", "timestamp": "2016-04-08T18:04:45Z", "intent": "name": "HeroAnswerIntent", "slots": "SearchTerm": "name": "SearchTerm", "value": "Parker" , 所以,SearchTerm 插槽仍然只是我告诉 Alexa 的最后一个工作。似乎问题出在 Alexa 语音解释中,唯一的解决方案可能是接受多个插槽。这将是可悲的,因为它会在 lamda 函数中产生一些地狱般的逻辑。 【参考方案1】:

我的技能也有同样的问题,这是我技能使用多个单词的唯一解决方案,但您需要检查这些插槽是否为空并将它们连接起来

意图架构:


  "intent": "HeroAnswerIntent",
  "slots": [
    
      "name": "SearchTermFirst",
      "type": "SEARCH_TERMS"
    ,
    
      "name": "SearchTermSecond",
      "type": "SEARCH_TERMS"
    ,
    
      "name": "SearchTermThird",
      "type": "SEARCH_TERMS"
    
  ]
,

示例话语

HeroAnswerIntent is it SearchTermFirst HeroAnswerIntent is it SearchTermFirst SearchTermSecond HeroAnswerIntent is it SearchTermFirst SearchTermSecond SearchTermThird

最后一个你需要将你的每一个单词放在 SEARCH_TERMS 槽定义中的单独行中

即使您使用服务模拟器(技能控制台、测试选项卡)进行测试,有时也使用 AMAZON.LITERAL 有时根本不会将变量传递给技能

【讨论】:

【参考方案2】:

@Xanxir 提到的解决方案与较新的 custom slots 格式等效。在这种情况下,您只需在槽类型的自定义值列表中放置多个长度示例。

【讨论】:

【参考方案3】:

我不得不将 Slot 类型更改为 AMAZON.LITERAL。

诀窍在于,在示例话语中,我还必须提供多个话语来展示 Alexa 应解释的文字的最小和最大大小。这很不稳定,但有效。

这是它的参考:https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-interaction-model-reference

【讨论】:

【参考方案4】:

AMAZON.SearchQuery

所以你可以在你的话语中使用它,它会检测到用户所说的所有单词,它相当准确

它会解决你的问题。

参考链接:Alexa SearcQuery

【讨论】:

以上是关于仅从 Alexa Skills Kit 获取单个单词参数的主要内容,如果未能解决你的问题,请参考以下文章

Alexa Skills Kit 示例技能不会上传到 Amazon Lambda - 引发错误

Alexa Skills Kit:如何使用 JS 将图像添加到标准卡片

如何向 Amazon Alexa Skills Kit (ASK) 混合字符串和数字提供输入?

Amazon Alexa Skills Kit:如何与外部应用程序帐户/用户 ID 关联

最简单的方法是将现有的 AWS Lex 和 Lambda 部署为 Alexa Skills Kit (ASK)?

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