【问题标题】:How can I make Alexa Intent handler respond with different things each time it is called?如何让 Alexa Intent 处理程序在每次调用时以不同的方式响应?
【发布时间】:2021-12-31 00:48:42
【问题描述】:

我正在尝试使用 ASK node.js SDK 开发 Alexa Skill。我正在尝试构建一个 Alexa 和用户轮流计数的游戏(不是一个很棒的游戏,但对我来说很有教育意义)。 Alexa 从 1 开始,然后是用户 2,然后 Alexa 说 3,依此类推,直到用户说出错误的数字。在这种情况下,我希望实现逻辑来结束游戏。我正在努力弄清楚如何让 Alexa 在每次用户说出一个数字后做出不同的响应。这是我需要多个意图处理程序的情况吗?这似乎很愚蠢,因为一般逻辑不会改变。我一般都在努力寻找最新的游戏逻辑示例代码,所以我可以从中学习的任何资源将不胜感激。我目前的代码如下--

const MyGameIntentHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
  && Alexa.getIntentName(handlerInput.requestEnvelope) === 'MyGameIntent';
},
handle(handlerInput) {
const speechText = 'One';

return handlerInput.responseBuilder
  .speak(speechText).listen()
  .getResponse();
}
};

显然,我还没有走多远。我已经成功创建了一个意图并测试了当我要求开始游戏时 Alexa 会以“一个”响应。我被卡住的地方是如何让 Alexa 说“一”,然后等待用户说“二”,根据他们说的数字是否正确,Alexa 会说“三”或“游戏结束”并结束游戏。 ASK 的 Codecademy 课程使用不同且过时的语法,但它是我迄今为止最接近答案的。它建议在说话后链接.listen(),但没有提供有关此.listen() 是否会重新提示相同意图处理程序的信息

【问题讨论】:

    标签: node.js alexa alexa-skill alexa-voice-service alexa-app


    【解决方案1】:

    要使其按您的意愿运行,您需要在话语之间保持Session Attributes 中的游戏状态。请阅读它以更好地了解它的工作原理。

    如果关于您的游戏,我建议您按照以下步骤操作:

    1. 您说“开始游戏”,技能响应为“一”(您已经实现了这部分)并存储游戏状态(即通过保存下一个预期答案)
    2. 轮到你时,技能应该检查收到的答案是否等于预期并做出反应 - 继续并存储下一个预期答案或完成游戏。对于这一步,您需要另一个只需要一个数字的意图处理程序。

    Alexa 团队提供了一个示例,展示了如何创建游戏并存储话语之间的状态 - Trivia Game

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 2017-02-22
      • 2016-10-31
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      相关资源
      最近更新 更多