如何获取尚未将 Google Chat Bot 添加到其覆盖范围的用户的空间 ID

Posted

技术标签:

【中文标题】如何获取尚未将 Google Chat Bot 添加到其覆盖范围的用户的空间 ID【英文标题】:How to get space Id of users who have not added Google Chat Bot to their coversation 【发布时间】:2018-07-11 07:19:11 【问题描述】:

我们正在实施一个 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 只返回那些用户的空间列表,这些用户已经将机器人添加到他们的覆盖中。

他们是否有任何解决办法来获取/创建谷歌域中每个用户的空间?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

空间id,我们得到的是来自gsuite的域。所以不应该有垃圾邮件的情况。 Bot 只能与域中的用户交互.. 是的,机器人只能与域中的用户交互,我同意谷歌应该提供一种检索域中所有用户的空间 id 的方法。不过这只是 API 的第一个版本,因此可能会在以后的版本中解决。 希望谷歌增加一种检索空间 ID 的方法。我在 ADDED_TO_SPACE 事件中获取空间 ID 并将其存储在他们的员工记录中。在我的发送消息例程中,如果我在他们的员工记录上找不到 Space ID,我会发送一封电子邮件,要求他们与机器人进行交互。只有 1/3 的员工添加了机器人。 即使过了一年,这个问题也让我们感到困惑!!我们的情况相同 - 只有 1/3 的员工添加了机器人

以上是关于如何获取尚未将 Google Chat Bot 添加到其覆盖范围的用户的空间 ID的主要内容,如果未能解决你的问题,请参考以下文章

Telegram Bot - 如何获取群聊 ID?

转发来自 Telegram Bot 的消息

使用AWS lambda函数调用lex chat bot

Google Chat 服务器如何将通知推送给数亿客户?

如何将实时语音添加到 Microsoft bot 框架的文本数据(正是 google 语音所做的)

RuntimeWarning , RuntimeError (Discord 服务器上的 Python Al Chat Bot)