我正在开发一个简单的Slack Bot,可以发布在任何渠道(私有,公共,机器人dms)中。我正在使用node.js,axios和chat.postMessage松弛方法(https://api.slack.com/methods/chat.postMessage) 要发布在我的频道中。该漫游器对我来说非常完美,但是当其他人将应用程序/漫游器添加到其频道时,它将不会为他们发布。测试用户也都在同一个工作区中。它仍然看到他们正在调用它,但是它没有为他们发布消息。
module.exports.result = function postMessage(message,ID){
axios.post(url,
JSON.stringify(message),
{headers:
{
'Content-type': contentType,
'Authorization': auth
}})
.then(function (response) {
console.log("status: " + response.status + " status test:" + response.statusText +" ");
return response.status;
})
.catch(function (error) {
console.log(error);
});
}
答案 0 :(得分:0)
如前所述,您的漫游器无法在某些频道中工作的原因是,它只能看到安装该漫游器的用户/ API令牌的所有者也是其成员的私有频道。这是Slack基本安全性的标准,不能更改。
它们是解决此问题的三种常见方法:
如果使用斜杠命令调用bot,它将在任何通道中运行,并且还可以响应对该通道的调用(仅对主叫用户或整个通道)。不过,您将无法使用任何与通道相关的API方法。
另一种常见方法是让您的应用程序具有一个bot用户,并要求该用户邀请该bot用户访问您的应用程序无权访问的每个频道。被邀请后,您的应用即可通过其漫游器用户访问该频道。
或者,也可以让您的应用从工作区中的每个用户收集用户令牌。这样,它可以通过这些令牌访问每个通道。但是,这种方法绕过了Slack的安全性,需要所有用户的支持。因此,大多数管理员可能会不允许此类应用程序。
总之,如果您不需要在通道中运行API方法,我建议使用方法A。否则,我建议使用方法B。