我创建了一个 Slack 机器人,它有一些交互式按钮。单击按钮后,我将向单击交互按钮的用户发布一条直接消息。我需要显示用户个人资料而不是机器人个人资料图像。为了发布消息,我正在使用 slack api 聊天。发布消息()。
当我调用此方法时,消息将作为机器人用户发布(它显示机器人用户图标)。但我需要以单击此按钮的用户身份发布此消息。我检查了 as_user: false 属性来执行此操作。但没用?我正在使用我的应用程序身份验证 token 来调用此方法。
var url = "https://slack.com/api/chat.postMessage";
var auth_token ='xoxb-518598944980-577890089556-0i753DBbVkigtyuhfbnmfhjn'; //Your Bot's auth token
var headers = {
"Authorization": "Bearer " + auth_token,
"Content-Type" : "application/json"
}
var body = {
channel: actionJSONPayload.channel.id,
text: "Your text goes here.",
as_user: false // Slack user or channel, where you want to send the message
}
request.post({
"url": url,
"headers": headers,
"body": JSON.stringify(body)
}, (err, response, body) => {
if (err) {
reject(err);
}
console.log("response: ", JSON.stringify(response));
console.log("body: ",body);
});
}
那么有没有办法专门为与按钮动态交互的用户生成 token 并使用该 token 来调用此方法?它会解决这个问题还是有其他方法?我在安装应用程序时添加了所有相关权限,例如 chat:write:user
最佳答案
如果您需要以单击按钮的用户身份发布回复消息,您的应用需要使用该用户的 token 调用 API 方法来发布消息。这是应用程序在 Slack 上模拟用户的唯一方法。
因此,要在您的工作区中实现此功能,您需要要求每个用户安装一次您的应用程序,并在 Ouath 2.0 安装过程中为后续用户收集他们的 token 。
这种方法有一些明显的安全问题需要考虑,例如您的应用程序将可以访问工作区中每个用户的每条消息。
解决方法是手动设置应用发送的消息的用户名和图标(通过相应地设置 icon_url
和 username
以及 as_user
= false
调用 chat.postMessage
时)。您可以从 users.info
检索图标和用户名。不过,消息仍将带有 APP 标签,以将其标记为来自机器人。
关于javascript - 如何使用 chat.postmessage 作为工作区用户发布松弛消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56523552/