Slack api对话。历史返回错误:not_in_channel

Eri*_*sen 37 slack-api

我开始Slack API尝试获取消息列表。

这是我的步骤:

  1. 创建了一个 Slack 应用程序并提供了它channels:readchannels:history 范围(还有re-installed它)
  2. 查询频道列表conversations.list(这很好用)
  3. 从 的输出中conversations.list,我找到了一个我使用的频道并复制了id
  4. 使用了conversations.history apichannelid步骤3

结果:

{ "ok": false, "error": "not_in_channel" }
Run Code Online (Sandbox Code Playgroud)

我完全不确定这里发生了什么。我肯定在频道中有消息,该api文档页面没有说明这个“not_in_channel”错误代码。

我究竟做错了什么?

Kee*_*asa 70

经过长时间的调查(约 2 小时),我找到了一个简单的方法。对于 Caleb 的回答,我不明白如何邀请 Bot 加入频道。因此,我发布了这个答案。

转到您的 Slack 频道并键入以下内容作为消息。

/invite @BOT_NAME
Run Code Online (Sandbox Code Playgroud)

例如:如果您的 Bot 名称是,SRE Incident Manager则命令如下。

/invite @sre_incident_manager
Run Code Online (Sandbox Code Playgroud)

一旦您开始输入@,Slack 就会自动提出建议。所以变得容易。为此,需要将机器人添加到您的 Slack 工作区。

PS:原答案

  • 我使用应用程序设置页面上的“重新安装应用程序”按钮多次将机器人添加到我的频道,但这没有帮助。但后来我使用了``/invite @BOT_NAME```并且它起作用了。 (5认同)

Art*_*tru 68

该错误not_in_channel具有确切的含义,您的自定义 Slack 应用程序应添加到频道中。

精确解1

要解决该错误,请在 Web Slack 界面中:

  • 打开channel settings
  • 单击Integrations tab
  • 单击Add apps并找到您的自定义应用程序。

Slack 应用程序可能有不同的界面,请参阅Iryna Vernik 的回答在此输入图像描述


替代方案2

通过添加工作区范围(例如,chat:write.public. 取决于您的需求和安全要求。

替代方案3

要从 API 访问频道聊天,请指定Incoming webhook。Slack 将为每个通道生成一个带有令牌的唯一 URL。仅方便少数频道。


Cal*_*iri 30

当您使用机器人 oauth 令牌并且机器人未被邀请加入频道时,会出现此错误。要解决这个问题,您需要

  • 邀请机器人(slack app)加入频道。
  • 改用 OAuth 访问令牌

要将 Bot 添加到您的频道,您需要在 slack 频道中写入 /invite @Bot_name


小智 11

我也不明白如何邀请 Bot 加入频道。Caleb 和 Keet 提出的方式对我来说不清楚或不起作用。在我看来,“邀请”工作之后

  • 开放渠道
  • 在详细信息选项卡中,选择“更多”条款
  • 在下拉菜单中,选择“添加应用程序”
  • 在弹出窗口中寻找你的应用程序(机器人)

我还使用了Bot User OAuth Access Token,因为我需要在私人频道中使用此功能(此外,您应该为机器人添加:历史范围)


Nao*_*awa 5

正如其他人所说,您需要加入每个频道。

该机器人可以使用以下 API 以编程方式加入频道:

https://api.slack.com/methods/conversations.join

不要忘记添加权限conversations.join