我正在玩松弛的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,以便我可以将它用于我的目的。我该怎么做呢?
答案 0 :(得分:1)
要获取所有现有频道的列表,您可以使用conversations.list
。这是最灵活的方法,如果您愿意,可以检索任何类型的频道。
如果您要按特定名称查找频道,则需要首先检索所有频道的列表,然后根据完整列表运行您自己的名称。允许您直接按名称搜索频道的API方法不存在。
请注意,如果您正在寻找私人频道,此方法只会检索您(Slack应用程序/您的机器人用户的安装程序)被邀请的频道。
答案 1 :(得分:0)
当前没有直接的Slack API可以通过其名称查找松弛通道。但是您可以使用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;
}
}
}
这是正确的方法,因为它可以确保您在找到合适的频道后立即停止列出频道。
祝你好运!
答案 2 :(得分:0)
您可以使用内置的 admin.conversations.search 然后迭代找到的结果。
另一种快速棘手的解决方案: 尝试发送 chat.scheduleMessage 然后如果发送 chat.deleteScheduledMessage 或捕获错误。 红宝石示例:
{{1}}