松弛api对话。历史记录返回错误:not_in_channel

时间:2020-02-12 23:02:53

标签: slack-api

我从松弛的API开始,尝试获取消息列表。这是我的步骤:

  1. 创建了一个松弛的应用程序,并为其提供了channels:read和channels:history作用域(也已重新安装)
  2. 使用conversations.list查询频道列表(效果很好)
  3. 从对话列表的输出中,找到我使用的频道并复制ID
  4. 使用了带有第3步中的通道ID的sessions.history API

结果:

{ "ok": false, "error": "not_in_channel" }

我完全不确定这里发生了什么。我肯定在该频道中有消息,并且documentation page for that api没有说任何有关此“ not_in_channel”错误代码的信息。

我在做什么错?

4 个答案:

答案 0 :(得分:29)

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

转到您的备用频道,然后输入以下内容作为消息。

/invite @BOT_NAME

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

/invite @sre_incident_manager

一旦您开始输入@,Slack将自动建议。这样就变得容易了。为此,需要将Bot添加到您的Slack Workspace。

PS:Original answer

答案 1 :(得分:17)

当您使用漫游器oauth令牌并且未邀请漫游器进入通道时,会出现此错误。要解决这个问题,您需要

  • 邀请漫游器(松弛应用)加入频道。
  • 改为使用OAuth访问令牌

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

答案 2 :(得分:2)

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

精确解 1

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

  • 打开channel settings
  • 点击 Integrations tab
  • 点击 Add apps 并找到您的定制应用。

Slack 应用程序可能有不同的界面,请参阅 Iryna Vernik's answerenter image description here


替代解决方案 2

通过添加工作区范围,例如 chat:write.public,授予对所有频道的机器人访问权限。取决于您的需求和安全要求。

替代解决方案 3

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

答案 3 :(得分:1)

我也不明白如何邀请Bot进入频道。 Caleb和Keet提出的方法对我来说尚不清楚或不起作用。在我这边,“邀请”工作

  • 开放频道
  • 在“详细信息”标签中,选择“更多”条款
  • 在下拉菜单中,添加一个“添加应用”
  • 在弹出窗口中查找您的应用(机器人)

我还使用了 Bot用户OAuth访问令牌,因为我需要在专用渠道中使用此功能(此外,您应该为bot groups:history 范围添加)