【问题标题】:Connect Google calendar api and api.ai连接谷歌日历api和api.ai
【发布时间】:2017-06-27 00:56:36
【问题描述】:

所以这就是我想要做的: 我用 api.ai 为我的业务构建了一个机器人,它现在托管在我的网页和我的 Facebook 页面上。机器人运行良好。

我想通过允许我的客户在我的日历上进行查询,要求预订特定时间,查看是否可用,如果没有提供类似的其他时间,然后进行预订,将其推进到下一步。

我一直在阅读this thread 并附有很好的答案,但我认为我的情况有点不同。 我想知道机器人是否总是可以拥有一个令牌,这样每个客人就不必进行身份验证来查询日历?

显然我是新手,我一直在阅读谷歌日历 api 和 api.ai 的指南,但我还没有真正了解如何做到这一点。我想有一种方法可以将令牌存储在某处,然后仅以某些特定意图触发查询,但不确定如何。

我还完成了 G-calendar api 的 node.js 快速入门指南,如果有帮助,它可以正常工作。

感谢您的帮助!

【问题讨论】:

  • 澄清一下 - 您不是试图将日历请求附加到特定的 Google 用户,而是允许通过 API.AI 与您交谈的任何人编辑日历?
  • 没错,所以我认为我必须在具有 webhook 的应用程序中存储一个带有客户端密码和 ID 的 client-secret.json 文件,但我不确定。

标签: node.js dialogflow-es google-calendar-api


【解决方案1】:

您可能希望使用允许访问相关日历的服务帐户。服务帐户与普通帐户类似,但它们只应进行服务器到服务器的通信,因此创建身份验证令牌的方法略有不同以确保其安全。

有关使用服务帐户的更多信息,请参阅https://developers.google.com/identity/protocols/OAuth2ServiceAccount

通常,您将使用共享密钥来创建和签署您发送到 Google 服务器的 JSON Web 令牌 (JWT)。您将取回一个访问令牌,然后您将使用它来调用日历 API。访问令牌将在大约一小时后过期,此时您需要重复该过程。

有一些库可以为您完成大部分工作。例如,如果您使用的是 node.js 库 https://github.com/google/google-api-nodejs-client,那么它会为您处理这些问题(尽管您需要修改密钥文件 - 请参阅文档了解详细信息)。

【讨论】:

  • 感谢您的回答。我看到这是一个选择,但我知道有一种方法可以做到这一点,而不必一直请求新的令牌。 This guy manage to do it 在 python 中,但我不知道如何在 Node.js 中翻译它。他说他的服务器上只有另一个名为 Credentials 的文件夹,其中包含一个 calendar-python-quickstart.json 文件,就是这样。
  • 他在必要时请求一个新的令牌 - 或者更确切地说,API 库正在为他做这件事。您正在使用的 node.js 库也可以做到这一点。
  • 哦,好的,我明白了,但这不会与查询机器人的人产生任何互动,对吧?有机会我能直接和你谈谈吗?
  • Would this在token上实现了和他一样的东西?
  • 我已更新答案以解决您的图书馆问题。它不需要(如果您使用的是服务帐户,也不应该)需要任何用户交互来进行身份验证部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
  • 2017-08-30
  • 1970-01-01
相关资源
最近更新 更多