我正在开发一个用 Node.js 和 Express 编写的交互式 Slack 应用程序。当用户单击交互式消息上的按钮时,我想发布一条临时消息;然而,回复总是公开出现在频道中。此外,无论我是否设置response_type
,带有用户单击的交互元素的原始消息都会消失。我的代码如下所示:
const request = require('request');
app.post('/slack-interactivity', async function(req, res) {
const payload = JSON.parse(req.body.payload);
sendResponse(payload.response_url, 'you clicked');
res.send('received');
});
function sendResponse(responseUrl, response) {
request.post({url: responseUrl,
method: 'POST',
json: {
response_type: "ephemeral",
text: response}});
}
Run Code Online (Sandbox Code Playgroud)
当我点击交互式 Slack 消息中的按钮时,我看到“您点击了”公开写入该频道,但我希望它是短暂的。
有什么想法为什么会发生这种情况吗?
小智 5
这是不可能的(截至 2019 年 5 月 17 日)
一条消息将终生保持其可见性。这意味着您不能从 in_channel 转到短暂的(反之亦然)。
您可以包括:replace_original: false
并且将显示短暂消息。
在幕后,replace_original 的作用就像更新,而不是删除和创建新消息。
您的代码默认为replace_original: true,它会执行更新,因此不会工作。