【问题标题】:slack api to find existing channel用于查找现有频道的 slack api
【发布时间】:2018-10-10 21:19:09
【问题描述】:

我正在使用 slack api 来创建集成。我能够使用

成功创建一个松弛通道
 this.http.post(slackApiHost + '/channels.create', payload, {headers: headers})
            .subscribe(
                res => {
                    console.log(res);
                    resolve(res)
                },
                err => {
                    console.log('error:' + err)
                }
                )
        })

有效载荷看起来像

var payload = {
        "name" : channelName
    };

因此,如果频道已经存在,它将失败并显示 name_taken。这很棒。但是,我需要找到现有频道的频道 ID,以便我可以将其用于我的目的。我该怎么办?

【问题讨论】:

  • 这些信息对您有用吗? api.slack.com/methods/channels.list这不是你想要的,对不起。
  • 没有这个列表。我正在寻找按名称搜索特定内容
  • 给您带来的不便,我深表歉意。我曾认为可以使用从此 API 检索的频道列表来检索频道的存在以及频道名称和 ID。从您的评论中,我可以理解这种方式不是您想要的。对于我不完整的提案,我真的很抱歉。

标签: slack slack-api


【解决方案1】:

您可以使用内置的admin.conversations.search 然后迭代找到的结果。

另一种快速棘手的解决方案: 尝试发送chat.scheduleMessage,然后如果它被发送chat.deleteScheduledMessage 或捕获错误。 红宝石示例:

def channel_exists?(channel)
  begin
    response = @slack_client.chat_scheduleMessage(channel: channel, text: '', post_at: Time.now.to_i + 100)
    @slack_client.chat_deleteScheduledMessage(channel: channel, scheduled_message_id: response.scheduled_message_id)
    return true
  rescue Slack::Web::Api::Errors::ChannelNotFound
    return false
  end
end

【讨论】:

    【解决方案2】:

    目前没有直接的 Slack API 可以通过名称查找 Slack 频道。但是您可以使用conversations.list 来处理这个问题,这是正确的代码:

    const slack = new SlackWebClient(token);
    const channelNameToFind = "test";
    
    for await (const page of slack.paginate("conversations.list", {
      limit: 50,
    })) {
      for (const channel of page.channels) {
        if (channel.name === channelNameToFind) {
          console.log(`Found ${channelNameToFind} with slack id ${channel.id}`);
          break;
        }
      }
    }
    

    这是正确的方法™️,因为它可以确保您在找到正确的频道后立即停止列出频道。

    祝你好运!

    【讨论】:

      【解决方案3】:

      要获取所有现有频道的列表,您可以使用conversations.list。这是最灵活的方法,如果您愿意,您可以检索任何类型的频道。

      如果您要查找具有特定名称的频道,您需要先检索所有频道的列表,然后根据完整列表运行您自己的名称匹配。不存在允许您直接按名称搜索频道的 API 方法。

      请注意,如果您正在寻找私人频道,此方法将仅检索您(您的 Slack 应用程序的安装程序/您的机器人用户)已被邀请加入的频道。

      【讨论】:

      • 好吧。正如我所说,这是解决您的问题的唯一可用方法。没有其他/“更高效”的方法。
      • 那真是太可惜了
      • 有趣的是,在使用 Slack 网络客户端时,我看到有一个通过 edgeapi.slack.com/cache/TMQ5151S9/channels/search 的频道搜索 API(在开发工具栏中检查网络时),但它似乎不是“公开可用”(无法正确检索/更新必要的访问令牌)也没有记录。
      猜你喜欢
      • 2018-12-18
      • 2019-07-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 2023-04-08
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多