Dialogflow es 手动调用登录帮助程序后继续对话

Dialogflow es 手动调用登录帮助程序后继续对话,dialogflow-es,actions-on-google,Dialogflow Es,Actions On Google,我对如何处理以下情况感到有点困惑: 用户触发FooBarIntent,其履行需要来自第三方的链接帐户 我从我的履行代码手动调用 用户授权我的代理,Google上的操作将带有登录状态的helpers响应发送到Dialogflow,在Dialogflow中,signinintent将其拾取并传递给我的履行服务 现在,我如何继续执行原始的FooBarIntent?我认为这会以某种方式得到无缝处理,但signin helpers响应是一个全新的webhook请求,没有关于原始请求的信息。我似乎可以在上下

我对如何处理以下情况感到有点困惑:

  • 用户触发
    FooBarIntent
    ,其履行需要来自第三方的链接帐户
  • 我从我的履行代码手动调用
  • 用户授权我的代理,Google上的操作将带有登录状态的helpers响应发送到Dialogflow,在Dialogflow中,
    signin
    intent将其拾取并传递给我的履行服务
  • 现在,我如何继续执行原始的
    FooBarIntent
    ?我认为这会以某种方式得到无缝处理,但signin helpers响应是一个全新的webhook请求,没有关于原始请求的信息。我似乎可以在上下文中存储这些信息,但这似乎相当笨拙。我是否遗漏了一些东西,或者我真的必须告诉用户类似“感谢登录,现在请再次询问您的原始问题”

    说“现在请再次询问您的原始问题”肯定是错误的做法-您的部分是正确的

    您还正确地认识到,没有自动重新触发原始意图。虽然这看起来很奇怪,但这仅仅是因为意图代表了用户所说的,而不是你将要回答的。用户的初始声明和他们的登录确认都是用户所说的单独的事情,您可能希望以不同的方式处理它们

    正如你所建议的,有一件事是有意义的,那就是在你从助手那里得到结果之前,对他们最初说的话做出反应。在这些情况下,当您请求帮助者时,在上下文中保存意图或操作名称和参数可以让您在之后重新选择。(还有其他可能的行为,这可能是有意义的。例如,如果你请求登录作为欢迎的意图的一部分。因为用户永远不会通过这个第一步,你不需要跟踪状态。)< /P>
    例如,当您绕道登录时,这种保存状态的模式是库直接支持的模式。使用multivocal,您可以指定在触发意图或操作处理程序之前所需的需求(例如要求对用户进行身份验证)。它负责满足这些要求,然后确保谈话继续进行到您中断的地方,然后绕道进行。

    谢谢,我只是想确保我没有忽略一些事情。Multivocal看起来很有趣,但由于我使用Python,我想我必须使用上下文方法。Multivocal只是使用上下文方法并为开发人员处理它-这只是一个稍微不同的方法的示例,可以将问题作为库的一部分来处理。