使用Node.js Bolt API开发Slack机器人:斜杠命令频道不可见问题
问题:Slack Bolt机器人斜杠命令响应无法在频道中显示
我使用Node.js的Bolt API开发Slack机器人,发送斜杠命令后,机器人能成功接收并响应,但该命令的响应不会在频道中对所有成员显示。我了解到需要添加{"response_type": "in_channel"}参数,但不清楚如何修改代码实现这一点。以下是我的slack.js代码:
const { App, LogLevel } = require("@slack/bolt"); app.command("/ask", async ({ command, ack, say, respond }) => { console.log("command ", command) console.log("ack ", ack) await ack(); await say(`Hi <@${command.user_name}>`) }) (async () => { const port = 8000 await app.start(port); console.log(`⚡️ Slack Bolt app is running on port ${port}!`); })()
解决方案
要让斜杠命令的响应在频道中对所有成员可见,只需在发送响应时指定response_type: 'in_channel'参数,你可以通过两种方式实现:
方式一:修改say方法调用
将原本的say调用改为传入配置对象,明确指定响应类型:
await ack(); // 修改后的say调用 await say({ text: `Hi <@${command.user_name}>`, response_type: 'in_channel' });
方式二:使用respond方法
如果需要基于命令自带的response_url发送响应,同样可以添加该参数:
await ack(); await respond({ text: `Hi <@${command.user_name}>`, response_type: 'in_channel' });
注意:ack()仅用于确认Slack已收到你的命令请求,它不会生成频道可见的消息,真正的频道响应需要由say或respond方法生成。
内容的提问来源于stack exchange,提问作者Dummy Cron
相关产品推荐
相关产品推荐

