代码之家  ›  专栏  ›  技术社区  ›  hdmiimdh

Slack bot可以共享文件,但不在通道中发布消息

  •  1
  • hdmiimdh  · 技术社区  · 7 年前

    我对slack web api和机器人程序尤其陌生。我的问题是,尽管我们可以代表机器人向其上传文件,但机器人用户在被隐式邀请之前无法向频道发布消息的原因是什么。下面是几个代码片段

    我请求了以下范围 chat:write:user bot files:write:user

    当我上载带有通过OAuth2获得的bot令牌的文件时,该文件会出现在带有bot图标和名称的通道中

    .token(BOT_TOKEN)
                .title("title")
                .content("content")
                .channels(Collections.singletonList("#channel"))
                .build();
    

    但是,当我使用相同的方法试图将消息发布到同一个通道时,我在\u通道中得到一个错误not\u

    .token(BOT_TOKEN)
                .channel("#channel")
                .text("text")
                .asUser(true)
    

    我知道它可以正常工作,但没有传递为user true,但是它设置了默认的应用程序图标和名称,而不是bots图标和名称。

    是否有一种方法可以在使用bot进行身份验证后,在没有用户交互的情况下将消息发布/上载到频道。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Erik Kalkoken    7 年前

    这里的问题是,当第一次以bot身份将消息发布到频道,然后以bot身份上载文件时,图标和用户名是不同的。这可能是松弛的一个已知问题。这就是文档中所说的 chat.postMessage 对于 as_user false :

    注意:在上面的松弛应用程序案例中,这肯定更有意义 将应用程序的名称作为与 您的应用程序。这种不一致的行为将得到纠正。当然,你 仍然可以将您的机器人命名为“bot”,如果这是您的机器人的名称。

    但是有一个解决方法可以获得相同的用户名和图标。发送消息时只需手动设置,例如:

    curl -F token=BOT_TOKEN -F channel=CHANNEL -F text=Hello -F username=NAME_OF_BOT -F icon_url=ICON_URL https://slack.com/api/chat.postMessage