【发布时间】:2023-03-06 20:43:02
【问题描述】:
我正在为 Hangouts Chat 设置一些新的聊天机器人。部分工作涉及使用运行良好的 Hubot。另一个用例需要基于外部函数发布到用户空间,这是通过 python 命令脚本完成的。我为每个机器人设置了一个项目和单独的服务帐户,并且机器人服务帐户的权限似乎相同。在 GSuite 安全级别,所有机器人都没有相应的域范围委派。
我们通过一个 Hubot 将每个用户的 spaceid 保存到数据库中,然后 python 脚本可以查找用户并获取该 id。
但是,这 5 个项目中只有一个似乎能够向用户空间发布消息。所有其他人都会收到 403 错误并且无法发布。相同的 python 脚本用于任何“机器人”,唯一的区别是用于身份验证的 json 文件。
不确定这些信息是否足够。但是,我想知道如果没有权限会导致这个问题?
【问题讨论】:
-
您是自己使用服务帐户还是冒充用户?取决于您要执行的请求类型impersonation might not be possible。
-
使用服务帐户,该帐户在确实有效的项目中显示为来自机器人的消息。我的问题是它不适用于其他项目,只有一个。
-
那么您的每个服务帐户是否都链接到您尝试使用它的相应项目(每个服务帐户都与某个项目相关联),是否为每个相应项目启用了环聊 API?
-
他们都通过 Hubot 独立工作。我尝试将一个不适用于 PubSub、Hangouts Chat API、凭据、OAuth 等的进行比较。由于我们在 GSuite 上,因此它们也作为私有发布到市场中,以便我们可以在G Suite 管理员。到目前为止,我没有看到任何差异。如果我找到它,我会在这里告诉你。
-
我想通了。我通过另一个机器人注册的 spaceid 与与任何其他机器人的机器人/用户通信关联的 spaceid 不同。换句话说,机器人为用户看到的 spaceid 似乎对于它与用户的通信是唯一的。我需要让用户注册需要发送消息的机器人,而不是普通的注册机器人。
标签: google-workspace service-accounts hangouts-chat hangouts-api