在bolt/nodeJS api中编写slack slash命令



我正在Javascript/Bolt中为slack构建一个斜杠命令(https://slack.dev/bolt/concepts)

它"有时"有效,但并不总是:

  • [x]在公共频道中
  • []在私人频道中
  • []在直接消息中

我正在使用bot令牌进行身份验证,但我确信我遇到了一些身份验证权限问题。

我正在尝试使用:chat.postEphemeralslack 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的一种情况是,当您试图向未被邀请的专用通道发送消息时。

尝试将你的机器人添加/邀请到你想发送消息的私人频道

注意:检查是否附有相关范围。

感谢

最新更新