Discourse 帖子命令仅在一个频道中生效
现在,这很可能是我的问题,但我无法弄清楚。我已经查阅了所有相关主题的讨论帖,非常希望能得到一些帮助。我已检查并反复确认了 Slack 应用的权限设置,可以确认它确实 100% 有效……但仅限于我的一个频道!
/discourse post 20
因此,我知道访问令牌已正确设置并正常工作。然而,在我的 Slack 团队的所有其他频道中,上述命令仅输出:
正在加载记录...
然后就结束了。这些全都是公共频道,我尝试了各种设置组合。唯一生效的频道是今天新创建的,但当我创建另一个新频道进行测试时,它却无法工作。我甚至不知道该如何开始排查问题。据我所知,Discourse 中唯一的日志是:
./launcher logs app
但那里似乎没有任何相关信息。我可能忽略了哪个设置,导致仅允许在一个频道中发布帖子?我又该从哪里入手进行调试呢?
本主题从以下链接拆分而来:
simon
2
检查您是否可以从 Discourse 发布到您尝试向其发布到 Discourse 的频道。我猜测问题在于,在能够向该频道发布或从该频道发布之前,您需要将您创建的应用添加到该频道中。
@simon 我想那可能就是原因!老实说,我对 Slack 应用的工作原理有些困惑。既然我能够在任何 Slack 频道中运行 /discourse ... 命令,而且该“应用”似乎已在全球级别安装,我认为我已经以所有必要的方式“添加”了该应用。然而,当我显式地 /invite 我的 Discourse 应用用户进入另一个频道时,它就开始工作了!
/invite @Discourse
/discourse post 20
这非常令人烦恼的是,在我添加 @discourse 用户后,Slack 甚至没有显示该用户已加入我的频道。Slack UI 中的用户数量没有变化,如果我查看该频道的所有成员,我的应用用户也没有列在其中。我想这是 Slack 本身的一个缺陷,而不是 Discourse 的问题。
如果能不需要将 Discourse 用户邀请到我团队中的每个 Slack 频道就好了(天知道,我们有大量的频道),但我认为这必须是 Slack 对应用的限制?另外,我们能否为 Discourse 聊天插件添加一个增强功能,以检测此问题并显示更有用的错误消息?
simon
4
我第一次尝试设置时,惊讶地发现必须将 Discourse 应用添加到每个频道。我会留意是否有办法绕过这一要求。
当应用因没有权限向频道发布或从频道接收消息而导致操作失败时,Slack 可能会向 Discourse 返回错误信息。如果是这种情况,利用该错误在 Discourse 的频道条目中添加提示,将有助于调试此类问题。我不确定这是否可行,但我会查看 Slack 是否会在该情况下向 Discourse 返回任何有用的信息。
simon
5
这似乎是正确的。我仅在 Slack 上进行了测试。当 Discourse 尝试向尚未添加该应用的 Slack 频道发布消息时,“聊天集成”页面会显示警告,并且出现问题的频道上方会显示错误消息:
点击尚未添加该应用的频道的错误图标,即可显示具体问题:
{
"error_key": null,
"request": "",
"response_code": "200",
"response_body": "{\"ok\":false,\"error\":\"not_in_channel\"}"
}
Discourse 或许可以解析该错误消息,向用户提供关于如何解决该问题的详细信息。
当我尝试在尚未添加该应用的频道中通过斜杠命令向 Discourse 发布消息时,slack_command_controller.rb:86 会在 Discourse 上抛出 Job exception: break from proc-closure 错误。我不确定 Slack 是否返回了足够的信息,以便针对此情况生成有意义的错误消息。
riking
(Kane York)
6
我们也可以尝试通过请求 channels.join 权限来响应此错误,以加入该频道。