google-api - 如何获取尚未将 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 只返回那些用户的空间列表,这些用户已经将机器人添加到他们的覆盖中。
他们是否有任何工作可以为谷歌域中的每个用户获取/创建空间?
解决方案
不幸的是,如果用户没有与机器人交互,就无法提取空间 ID。允许这样做将使机器人能够在未经同意的情况下向任何用户发送垃圾邮件。
我建议将空间 ID 存储到数据库中。因此,一旦用户开始与机器人对话,您以后可以随时向他们发送消息。在房间中添加机器人或与之交互是机器人向用户发送消息所需的“同意”。
推荐阅读
- node.js - 如何更改 React 文本区域的值
- python - 读入 Pandas 的 .cat 文件
- android - 提前确定轮换
- gcc - 在二进制文件中嵌入可访问文本 - 编译后
- javascript - 从搜索文本中派生关键字
- sql - SQL如何根据该集合的单个值是否等于某物来过滤出整个值集?
- android - 使用 MediaProjection API 截屏并只请求一次权限
- algorithm - 是否存在开放车间调度问题 (OSSP) 的并行变体
- java - 如何在java中定期检查文件夹是否存在
- python - 如何从嵌入在 Python 中的 PyQt5 小部件中的 youtube 视频中打开 youtube 链接?