首页 > 解决方案 > 如何获取尚未将 Google Chat Bot 添加到其覆盖范围的用户的空间 ID

问题描述

我们正在实施一个 Google 环聊聊天机器人,它将主动向域中的用户发送通知。为此,Google 聊天机器人 API 需要空间 ID 来向用户发送主动通知。

参考文档:https ://developers.google.com/hangouts/chat/reference/rest/v1/spaces/list

代码 :

jwtClient.authorize(function (err) {
                if (err) {
                    console.log(err);
                    return;
                }
                else {
                    chat.spaces.list({
                        auth: jwtClient
                    }, function (err, resp) {
                        if (err)
                            console.log(err);
                        else {
                            chat.spaces.list({
                                auth: jwtClient
                            }, function (err, resp) {
                                if (err)
                                    console.log(err);
                                else {
                                    var spaceList = resp.data.spaces;
                                    spaceList.forEach(element => {
                                        var spaceUrl = `https://chat.googleapis.com/v1/${element.name}/messages?key=${apiKey}`;
                                        request({
                                            url: spaceUrl,
                                            method: "POST",
                                            headers: {
                                                'Content-Type': 'application/json'
                                            },
                                            json: customMessage
                                        },
                                            function (error, response, body) {
                                                callback(error, body)
                                            }
                                        );
                                    })
                                };
                            });
                        }
                    });
                }
            });
        }
    }

但是这个 API 只返回那些用户的空间列表,这些用户已经将机器人添加到他们的覆盖中。

他们是否有任何工作可以为谷歌域中的每个用户获取/创建空间?

标签: google-apichatbotgoogle-hangoutshangouts-apihangouts-chat

解决方案


不幸的是,如果用户没有与机器人交互,就无法提取空间 ID。允许这样做将使机器人能够在未经同意的情况下向任何用户发送垃圾邮件。

我建议将空间 ID 存储到数据库中。因此,一旦用户开始与机器人对话,您以后可以随时向他们发送消息。在房间中添加机器人或与之交互是机器人向用户发送消息所需的“同意”。


推荐阅读