在Bolt / NodeJS API中编写松弛斜杠命令

时间:2020-04-05 02:58:48

标签: javascript node.js slack slack-api

我正在为Javascript / Bolt中的松弛构建斜线命令( 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

我的斜杠命令代码如下-基本是对命令hi的简单回复:

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范围中添加了每个选项-似乎什么也没做。

1)是否有可能在曾经有效的螺栓中实际写入有效的斜杠命令 2)是否可以仅使用BOT令牌来完成此操作,还是我需要使用用户令牌? 3)我还想念什么?

谢谢

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。 帮助我的是从这个命令中获取 user_id:

const result = await app.client.users.list({
    token: process.env.SLACK_BOT_TOKEN
});
console.log(result);

结果对象将包含所有用户的数组 - 从那里获取 id。 为了允许它,请确保您在 Oauth 范围内激活了 users:read

最终,这有助于我为用户发送 DM。

答案 1 :(得分:0)

您收到此错误 Error: An API error occurred: channel_not_found 的一种情况是当您尝试向未邀请您的私人频道发送消息时。

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

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

谢谢