Hangouts聊天:如何在传入事件请求中检索project_id或client_id



我在Hangouts chat中设置了一个完全可操作的聊天机器人,由一个定制的网络服务器协调。我现在希望能够让这个网络服务器与我创建的其他Hangouts机器人进行交互,并将一些请求路由到我的其他服务器,这些服务器必须知道是哪些机器人发起了事件。对于其他提供者(如Slack),在事件请求数据中提供app_id。但对于常去的地方,情况并非如此。我在请求正文或标头中找不到任何表示project_id或client_id的数据。更简单地说,我的问题是:"如何识别向我发送事件请求的Hangouts机器人?":)

事件请求的响应将在其主体中包含一个event实例,其中一个字段将是User对象。该User对象将包含一个name字段,该字段将表示用户的id(无论是人还是机器人)。

它看起来是这样的:

{
"name": "users/<id>",
"displayName": "<name that appears in the chat>",
"type": "BOT" 
}

一个月后,我终于找到时间回答我的问题:)

为了识别正在调用服务器的Hangouts项目,当您从Hangouts-Chat收到事件时,您会在传入请求中发现标头Authorization,其值类似于Bearer abcd1234。如果您解码此JWToken(即,在我们的示例中为abcd1234),在生成的数据中,您将有一个字段aud,它正是Hangouts应用程序的"项目编号"。此"项目编号"位于https://console.cloud.google.com/home/dashboard?project=referenceofyourprojecthere".

最新更新