【问题标题】:Writing a slack slash command in bolt / nodeJS api在bolt / nodeJS api中编写一个斜杠命令
【发布时间】:2020-07-17 03:12:05
【问题描述】:

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

它“有时”起作用,但并非总是如此:

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

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

我正在尝试使用:chat.postEphemeralslack api 向我的用户呈现交互式显示。

privatedirect message 情况下,我的应用打印出 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) 我还缺少什么?

谢谢

【问题讨论】:

  • 我所期望的您的 channel_id 不可用。你能告诉我当你登录console.log(command)时记录了什么。在所有三种情况下。
  • @Jeef 你找到解决方案了吗?

标签: javascript node.js slack slack-api


【解决方案1】:

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

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

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

谢谢

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-17
      • 1970-01-01
      • 2014-03-21
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 2022-11-26
      • 2019-07-10
      相关资源
      最近更新 更多