有三种方法可以解决您的整体问题 - 手动输入 URL 并使您的操作可用。他们中的两个按照您建议的方式解决了这个问题 - 涉及对 Facebook 进行身份验证并以某种方式将其绑定到 Assistant 帐户。一个完全在助手内部解决。
与 Facebook 帐户相关联的帐户
您已经标记了 firebase-authentication,所以我假设您正在使用它进行身份验证,并且您已经通过它启用了 Facebook 登录。这意味着您的用户有一个“Firebase 帐户”,但他们使用 Facebook 登录该帐户。
我假设你有办法在他们登录后从信使那里获取 URL。
在这种情况下,诀窍是在他们的 Firebase 帐户和他们的 Assistant 帐户之间设置 Account Linking。这是通过设置一个OAuth2 server 来完成的,该OAuth2 server 可以访问 Firebase 帐户并将创建授权和刷新令牌,并提供给 Google 助理。
在操作中,您会将用户发送到Sign In helper,这会将用户重定向到您的登录页面并将一次性身份验证代码发送回 Google 助理。然后,助手将使用您的 OAuth2 服务器将此代码交换为身份验证和刷新令牌。它会定期使用刷新令牌来获取新的身份验证令牌。
当用户通过 Google 助理返回对话时,您将获得一个身份验证令牌,您可以使用它来查找用户。由于您也知道他们的 Facebook 帐户,因此您可以通过您计划的方式获取 URL。
这种方法有一些缺点 - 它非常复杂,并且设置自己的 OAuth2 服务器不适合胆小的人。您也许可以使用 Auth0 之类的东西而不是 Firebase 身份验证来完成同样的事情,但是您无法轻松访问 Firebase 数据库。
帐户链接到 Facebook 和 Google
但是,在您的 Firebase 帐户中,您无需将其限制为仅登录 Facebook。您可以让他们使用 Firebase 来记录他们正在使用的 Facebook 和 Google 帐户。这会将您系统中的两个帐户“链接”在一起。
有了这个,您不需要设置 OAuth2 服务器。相反,您可以让助手使用Google Sign In 进行身份验证。如果 Firebase 使用的 Google Cloud 项目和 Assistant 使用的是同一个项目,那么一旦用户使用他们的 Google 帐户登录到您项目的网页,您将在 Assistant 上获得一个身份令牌,其中将包含他们的谷歌身份证。您可以使用它来匹配他们的 Firebase 帐户并获取 Facebook ID 并从那里继续。
但这仍然需要大量工作,而且有点混乱,需要在系统之间跳转。
仅使用 Google 助理(也可能是网页)
如果您愿意对您的用户使用的设备做出一些假设,那么您也许可以只使用 Google 助理完成所有这些操作。智能助理不仅可以在 Google Home 和其他智能扬声器上运行,它还可以在大多数当前的 Android 和 iOS 设备上运行。
所以你可以detect if they have such a device available,如果他们这样做但他们目前不在上面,当你需要 URL 时,direct them to switch to that device。
如果他们没有这样的设备可用(可能是因为他们的 Android 版本较旧),并且您认为这可能是一种常见情况,您可能需要提供另一个可用的入口源。这可能是上述解决方案之一,或者您可能只想拥有一个简单的网页(可能是通过 Firebase 托管和 Firebase 功能完成),他们使用他们的 Google 帐户登录(这样您就可以得到他们的 ID),然后让他们输入网址。如果您只需要一个 URL - 通过 Dialogflow 可能比您需要的更复杂。