【问题标题】:How can Alexa take a slot-only utterance?Alexa 如何接受仅限插槽的话语?
【发布时间】:2017-12-29 15:22:41
【问题描述】:

我正在尝试编写我的第一个 Alexa 技能,但应用程序流程有点混乱,甚至阅读了有关对话委托等的所有文档。我真的很想得到一些建议。

我追求的流程

“Alexa,开始电影时间测验。”

欢迎来到电影时间测验。在我们开始之前,你在哪个团队:红队还是蓝队?

“蓝色。”

Blue 一直是最好的球队。问题 1:这些电影中有哪些不是阿尔弗雷德·希区柯克导演的? A:眩晕,B:绳索,C:Happy Gilmore。

“C”。

正确!蓝队10分。问题 2...

这是一个简化的示例,以最简短、最清晰的方式说明我的问题,在您想知道为什么需要团队参与之前。

我的直觉/天真的方法

让初始启动请求处理程序说“欢迎和什么团队”,然后有两个意图。第一个显然是 AnswerQuestionIntent,它监听“A”、“B”、“C”或“D”。第二个是 SetTeamIntent,它监听“红色”或“蓝色”。

我会有一个包含约 100 个琐事问题的数组。游戏开始时,将会话属性'currentQuestion'设置为0。在AnswerQuestionIntent中,处理用户的正确/错误响应后,增加该数字,如果为9,则结束游戏;如果没有,请随机提问。

我的问题

我实际上无法弄清楚如何让 Alexa 使用单个插槽作为话语。我的意思是,我想要一个“团队”插槽类型(值“红色”和“蓝色”)和一个“答案”插槽类型(值“A”、“B”、“C”和“D” )。 SetTeamIntent 应该由{team} 和 AnswerQuestionIntent 由{answer} 激活,但是当我尝试设置它时,developer.amazon.com 技能生成器给了我“错误请求”错误。

我尝试查看 GitHub 上的 SDK 示例,但我有点迷茫,因为我在学习时一直在使用 GUI 技能构建器,但不确定它是如何映射的——还不足以阅读解决方案,反正。

【问题讨论】:

    标签: alexa alexa-skills-kit


    【解决方案1】:

    有两种不同的方法来处理这个问题。

    1.带对话模型的 ElicitSlot 指令

    启动技能并触发 Intent 后,您可以回复 elicitslot directive

    交互模型:您定义一个槽和一个意图,例如 PlayGameIntent 中的 {team} 和 {answer}。提供触发意图的话语,例如“开始游戏”。

    技能:触发 PlayGameIntent 后。返回带有引出槽指令的响应。类似于以下内容。

    {
      "version": "1.0",
      "sessionAttributes": {},
      "response": {
        "outputSpeech": {
          "type": "PlainText",
          "text": "What team are you on? Blue or Red? "
          },
        "shouldEndSession": false,
        "directives": [
          {
            "type": "Dialog.ElicitSlot",
            "slotToElicit": "team",
            "updatedIntent": {
              "name": "PlayGameIntent",
              "confirmationStatus": "NONE",
              "slots": {
                "team": {
                  "name": "team",
                  "confirmationStatus": "NONE"
                },
                "answer": {
                  "name": "answer",
                  "confirmationStatus": "NONE"
                }
              }
            }
          }
        ]
      }
    }
    

    用户现在可以为插槽 {team} 提供答案,并且 Alexa 为 PlayGameIntent 发送另一个 IntentRequest。您可以根据需要多次重复请求,直到游戏结束。

    2。没有对话模型的自定义意图

    如果不使用对话模型,您就没有任何限制,只有槽口。您可以按照您的描述构建您的意图模式。如果您退出 Skill Builder Beta,您会自动禁用交互模型的对话模型。

    然后,您可以使用如下示例话语构建意图架构:

    AnswerQuestionIntent {answer}
    SetTeamIntent {team}
    

    【讨论】:

    • 感谢@A.Kraus 的回复。不幸的是,我无法让它工作,也没有找到它不工作的原因(只是“技能反应的问题”)。我可以在亚马逊论坛和 Alexa SDK GitHub 上看到很多人抱怨 elicitSlot 在没有定义对话模型和放入虚假虚拟提示的情况下无法正常工作,所以我正在努力找出可能是我的错误以及可能存在的错误已知的错误。
    • 我的 slot 唯一意图曾经可以工作(大约一年前),但现在不行了......
    • 我的意思是:我的插槽只列出了针对过去(大约一年前)工作的意图的话语,但现在不再......
    猜你喜欢
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多