事实证明,您不能将槽收集委托给LaunchRequest
内的Alexa,因为它不是有效的response typeLaunchRequest
的一部分。
我最初的逻辑是:
- 用户说 'Alexa的,开party'
- Alexa的技能要求
LaunchRequest
。 (在这一点上,我需要通过委托Alexa进行插槽集体询问用户的销售号码)
- 在
LaunchRequest
中,立刻用this.emit(':getPinIntent');
回应,其中getPinIntent
是我的Alexa技能中存在的另一个意图。上面的代码是我在互联网上看到的如何调用另一个意图,而用户不必挑起使用语音。
getPinIntent
被调用并立即检查是否填满了所有需要的插槽(即如果插槽PIN
有一个值)。如果他们不是,并且dialogState !== 'COMPLETED'
然后我将插槽集合委托给Alexa。
- 上述步骤(#4)是出问题的地方。由于代表团不是
LaunchRequest
的有效回复类型,因此没有字段dialogueState
,这是授权给Alexa所需的字段。 Alexa请求仍然是LaunchRequest
而不是Intent请求,因为用户没有通过对Alexa说些什么来调用意图。
- 总之,这是没有完成,其中一经推出,要求用户输入PIN,然后可以通过只说引脚回复对话的有效方式,下面显现:
用户:“Alexa的,开party “
Alexa的: ”你是什么针“(ALEXA从来没有送过来,因为#4及以上#5)
用户: ”一二三四“
Alexa的:” Confirme d,我能帮你什么?“
如果我犯了任何错误或错误的假设,请让我知道。
我现在的逻辑现在已经改变。如果您不使用技能生成器测试版,则您可以将插槽作为您的意图之一的话语存在。所以我现在有getPinIntent
带有一个名为{PIN}
的插槽和一个{PIN}
形式的话语。这使上述类型的对话会发生,因为当用户他或她的脚说回(“一二三四”),它会启动getPinIntent
,我可以再继续或委托的对话,以Alexa的,因为IntentRequest
对话框是一个有效的response type。
我现在唯一的问题是,因为我没有使用技能生成器测试版我不能(或者还没有找到一种方式),以对话模型添加到/我的意图架构内。在添加正确的对话模型后,我试图将Skill Builder Beta中的JSON文本复制到我的意图架构中,但这总是会导致构建错误。
所以,现在我可以完成用户的PIN认证并回应一个“我该怎么帮忙”,但是之后发布的IntentRequest可能需要委派给Alexa插槽,并且这会导致崩溃,因为没有Skill Builder测试版我无法为代理插槽收集期间的Alexa添加适当的对话模型。
您的示例对话与您正在寻找的帮助相矛盾。在这个例子中,launchRequest会触发你的技能请求销售。之后,您会询问用户是否可以在启动请求中指定其针脚。 – aberger
我已经想出了一些其他的东西,这使得这个问题现在不相关,所以我很抱歉,如果有任何混淆。我即将关闭它。 –