我正在Javascript/Bolt中为slack构建一个斜杠命令(https://slack.dev/bolt/concepts)
它"有时"有效,但并不总是:
- [x]在公共频道中
- []在私人频道中
- []在直接消息中
我正在使用bot令牌进行身份验证,但我确信我遇到了一些身份验证权限问题。
我正在尝试使用:chat.postEphemeral
slack api来向我的用户呈现交互式显示。
在私人或直接消息的情况下,我的应用程序正在打印出一个channel_not_found
错误,我认为这是由于某些权限错误造成的
[DEBUG] WebClient:0 apiCall('chat.postEphemeral') start
[DEBUG] WebClient:0 will perform http request
[DEBUG] WebClient:0 http response received
[DEBUG] bolt-app An API error occurred: channel_not_found
当事情正常工作时,它看起来是这样的:
[DEBUG] WebClient:0 apiCall('chat.postEphemeral') start
[DEBUG] WebClient:0 will perform http request
[DEBUG] WebClient:0 http response received
我的斜杠命令代码看起来是这样的——基本上是对命令的简单回复:
app.command("/wl", async ({
command,
ack
}) => {
console.log(command)
await ack()
channel_id = command.channel_id
user_id = command.user_id
await app.client.chat.postEphemeral({
token: BOT_TOKEN,
channel: channel_id,
user: user_id,
text: "hi"
});
});
我已经在OAUTH页面的Bot Scope中添加了每一个选项,但似乎没有什么能满足我的需求。
1( 有可能在bolt中编写一个有效的斜杠命令吗2( 只使用BOT令牌就可以做到这一点吗?还是我需要使用用户令牌3( 我还缺少什么?
感谢
我也遇到了同样的问题。帮助我的是从以下命令中获取user_id:
const result = await app.client.users.list({
token: process.env.SLACK_BOT_TOKEN
});
console.log(result);
result对象将有一个所有用户的数组,从中获取id。为了允许它,请确保在Oauth作用域中激活了users:read
。
最终,这就是帮助我为用户发送DM的原因。
出现此错误Error: An API error occurred: channel_not_found
的一种情况是,当您试图向未被邀请的专用通道发送消息时。
尝试将你的机器人添加/邀请到你想发送消息的私人频道
注意:检查是否附有相关范围。
感谢