Slack 对response_url 的回复与临时消息不起作用

Dan*_*iel 2 node.js slack-api

我正在开发一个用 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,它会执行更新,因此不会工作。