松弛回复response_url与短暂消息不起作用

时间:2019-05-10 18:03:08

标签: node.js slack-api

我正在开发一个使用Express用Node.js编写的交互式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}});
}

当我单击交互式松弛消息中的按钮时,我看到“您单击”是公开写在频道上的,但我希望它是短暂的。

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

这是不可能的(截至5/17/2019)

消息将保留其生命周期。这意味着您不能从in_channel到短暂的(反之亦然)。

您可以包括:replace_original: false,然后将显示短暂消息。

在幕后,replace_original就像一个更新,而不是删除并创建新消息。

您的代码默认为replace_original:true,它将执行更新,因此将无法正常工作。