松弛 api 以查找现有频道

Vik*_*Vik 7 slack-api slack

我正在使用 slack apis 来创建集成。我能够成功地创建一个松弛通道

 this.http.post(slackApiHost + '/channels.create', payload, {headers: headers})
            .subscribe(
                res => {
                    console.log(res);
                    resolve(res)
                },
                err => {
                    console.log('error:' + err)
                }
                )
        })
Run Code Online (Sandbox Code Playgroud)

有效载荷看起来像

var payload = {
        "name" : channelName
    };
Run Code Online (Sandbox Code Playgroud)

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

Eri*_*ken 6

要获取所有现有频道的列表,您可以使用conversations.list. 这是最灵活的方法,允许您根据需要检索任何类型的频道。

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

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

  • 那真是太可惜了 (17认同)
  • 有趣的是,当使用 Slack Web 客户端时,我看到有一个通过 https://edgeapi.slack.com/cache/TMQ5151S9/channels/search 的频道搜索 API(在开发工具栏中检查网络时),但它没有似乎不是“公开可用的”(无法正确检索/更新必要的访问令牌)也没有记录。 (2认同)

vvo*_*vvo 5

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

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

这是执行此操作的正确方法\xe2\x84\xa2\xef\xb8\x8f,因为它将确保您在找到正确的频道后立即停止列出频道。

\n

祝你好运!

\n