首页 文章

Alexa如何才能采用仅限插槽的话语?

提问于
浏览
4

我正在尝试编写我的第一个Alexa技能,但应用程序流程有点令人困惑,甚至阅读有关对话委托等的所有文档 . 我真的很喜欢一些建议 .

我正在追求的流程

“Alexa,开始Movietime测验 . ”欢迎来到Movietime测验 . 在我们开始之前,你在哪个团队:红色还是蓝色? “蓝色 . ”蓝色始终是最好的球队 . 问题1:哪些电影不是由阿尔弗雷德希区柯克执导的? A:眩晕,B:绳索,C:快乐吉尔摩 . “C . ”正确! 10分给蓝队 . 问题2...

这是一个简单的例子,用于以最短,最清晰的方式说明我的问题,然后再想知道为什么团队需要参与其中 .

我的本能/天真的方法

让初始启动请求处理程序说welcome-and-what-team,然后有两个意图 . 第一个显然是AnswerQuestionIntent,它会侦听“A”,“B”,“C”或“D” . 第二个是SetTeamIntent,它监听“红色”或“蓝色” .

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

我的问题

我可以't actually figure out how to have Alexa use a single slot as an utterance. I mean, I' d想要'team'槽类型(值'red'和'blue')和'answer'槽类型(值'A','B','C'和'D') . SetTeamIntent应该由 {team} 和AnswerQuestionIntent由 {answer} 激活,但是当我尝试设置时,developer.amazon.com技能构建器会给我'Bad Request'错误 .

我尝试在GitHub上查看SDK示例,但我有点迷失,因为我在学习时一直在使用GUI技能构建器,并且不确定它是如何映射的 - 无论如何都不足以阅读解决方案 .

1 回答

  • 1

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

    1. ElicitSlot Directive WITH Dialog Model

    启动技能并触发意图后,您可以使用elicitslot directive进行回复 .

    Interaction Model :您定义了一个插槽和一个意图,例如PlayGameIntent中的 . 提供触发意图的话语,例如"start a game" .

    Skill :触发PlayGameIntent后 . 使用elicit slot指令返回响应 . 像下面这样的东西 .

    {
      "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"
                }
              }
            }
          }
        ]
      }
    }
    

    用户现在可以为插槽提供答案,Alexa为PlayGameIntent发送另一个IntentRequest . 在游戏结束之前,您可以根据需要多次使用 .

    2. Custom Intents WITHOUT Dialog Model

    如果不使用对话模型,您只能使用插槽 - 话语 . 您可以按照描述构建意图架构 . 如果您离开Skill Builder Beta,则会自动禁用交互模型的对话框模型 .

    然后,您可以使用如下样本话语构建意图模式:

    AnswerQuestionIntent {answer}
    SetTeamIntent {team}
    

相关问题