如何在用户打开技能时验证用户的引脚(LaunchRequest)

时间:2017-06-20 19:39:43

标签: amazon alexa alexa-skills-kit alexa-voice-service

我的Alexa技能有些问题。我希望对话能够像这样:

  

用户:' Alexa,开放派对'

     

Alexa:'你好,你的四位数密钥是什么?'

     

用户:' 1234'

     

Alexa:'确认,我能为您提供哪些帮助?'

但我对如何构建这个问题感到困惑。我需要使用用户的引脚并在我的代码库中验证它。我知道你不能让对话代表团在LaunchRequest内工作。 LaunchRequest无法自定义,因此我无法为其添加插槽。我无法在互联网上找到任何其他建议/示例。有没有人之前做过这个或者有什么建议吗?

2 个答案:

答案 0 :(得分:0)

亚马逊支持account linking作为将用户与其他帐户相关联的方法。这允许用户在安装技能时使用OAuth登录其他帐户。虽然可以根据session object userid确定用户,但可能很难发布此类技能。

答案 1 :(得分:0)

事实证明,您无法将广告代码集合委托给LaunchRequest内的Alexa,因为它不属于LaunchRequest的有效response type

我的初步逻辑是:

  1. 用户说' Alexa,开放派对'
  2. Alexa Skill致电LaunchRequest。 (此时我需要通过委托Alexa进行插槽收集来询问用户他们的引脚)
  3. LaunchRequest中,使用this.emit(':getPinIntent');进行即时回复,其中getPinIntent是我的Alexa技能中存在的另一个意图。上面的代码是我在互联网上看到的如何调用另一个意图,而无需用户使用语音激励。
  4. getPinIntent被调用并立即检查以查看是否所有必需的时隙都已填满(即插槽PIN是否有值)。如果它们不是dialogState !== 'COMPLETED',那么我将插槽集合委托给Alexa。
  5. 上面的步骤(#4)是出错的地方。由于委派不是LaunchRequest的有效响应类型,因此对于Alexa的委派不需要字段dialogueState。 Alexa请求仍然是LaunchRequest而不是Intent请求,因为用户没有通过向Alexa说些什么来调用intent。
  6. 总之,这不是完成对话的有效方式,在启动时,用户被要求提供一个引脚,然后只能通过说明该引脚来回复:
  7.   

    用户:" Alexa,开放派对"

         

    Alexa:"你的销钉是什么" (alexa永远不会到这里,因为上面的#4和#5)

         

    用户:"一二三四"

         

    Alexa:"确认,我能为您提供哪些帮助?"

    如果我犯了任何错误或错误的假设,请告诉我。

    我现在的逻辑现在已经改变了。如果您不使用Skill Builder Beta,则可以使用一个插槽作为您的某个意图的话语。所以我现在getPinIntent有一个名为{PIN}的广告位和一个{PIN}形式的话语。这样可以进行上述类型的对话,因为当用户说出他或她的回销时("一个二三四")它会启动getPinIntent然后我可以继续或将对话委托给Alexa因为IntentRequest对话框是有效的response type

    我现在唯一的问题是,因为我没有使用Skill Builder Beta,所以我无法(或者没有找到方法)将对话模型添加到我的Intent Schema中。我尝试在添加正确的对话模型后将JSON文本从Skill Builder Beta复制到我的Intent Schema中,但这总是会导致构建错误。

    所以现在我可以完成用户的pin身份验证并使用"我如何帮助",但之后的IntentRequest可能需要委托给Alexa寻找插槽,这样就可以了导致崩溃,因为没有Skill Builder Beta我无法为委托插槽收集期间使用的Alexa添加适当的对话模型。