我正在开发一个使用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}});
}
当我单击交互式松弛消息中的按钮时,我看到“您单击”是公开写在频道上的,但我希望它是短暂的。
为什么会发生这种情况?
答案 0 :(得分:1)
这是不可能的(截至5/17/2019)
消息将保留其生命周期。这意味着您不能从in_channel到短暂的(反之亦然)。
您可以包括:replace_original: false
,然后将显示短暂消息。
在幕后,replace_original就像一个更新,而不是删除并创建新消息。
您的代码默认为replace_original:true,它将执行更新,因此将无法正常工作。