Search code examples
google-apichatbotgoogle-hangoutshangouts-api

How to get space Id of users who have not added Google Chat Bot to their coversation


We are implementing a Google hangout Chat Bot , Which will send proactive notification to the user in domain. To do this Google chat Bot API requires the space Id to send proactive notification to user.

Reference document: https://developers.google.com/hangouts/chat/reference/rest/v1/spaces/list

code :

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)
                                            }
                                        );
                                    })
                                };
                            });
                        }
                    });
                }
            });
        }
    }

But This API returns space list of only those user , who has added the Bot to their coversation.

Is their any work around to get/create space of/to every user in google domain?


Solution

  • Unfortunately there is no way to extract the Space ID without the user ever interacting with the bot. Allowing this would give the bot ability to spam any user whenever without consent.

    I would suggest storing space IDs to a database. So once a user has started a conversation with a bot, you can later message them whenever you want. Adding the bot or interacting with it in a room is the "consent" that is needed for a bot to message a user.