如果需要知道團隊內的使用者的Slack ID 應該怎麼辦呢?
這個時候就需要調整你的Slack bot 權限了
進入到Slack Bot的管理介面 一開始看到 xoxb 開頭的是你的Bot Token 請把他收好
先點選"Add an OAuth Scope" 輸入users:read 會跳出最上面黃色的通知訊息
提醒需要reinstall your app 就是需要重新給予一次權限 點選reinstall your app
這裡就在設定一次需要發送到的Channel
我們可以用postman來測試一下
Method: Get
Slack API : https://slack.com/api/users.list
輸入你的Bot Token
程式碼部分有一塊比較複雜 就是回傳的時候會有一個欄位next cursor要判斷是不是還有值,
因為回傳limit是預設為0 當團隊非常多人的時候, 就無法一次回傳所有訊息
需要多判斷一次是不是要再往下抓取 如果需要也要告訴他cursor在什麼位置
WebClient client = new WebClient();
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
List<SlackMember> slackMembers = new List<SlackMember>();
var slackUserListUrl = "https://slack.com/api/users.list";
var token = "你的機器人Token";
var cursor = "";
while (true)
{
var rtnStr = "";
var address = $"{slackUserListUrl}?token={token}{(string.IsNullOrEmpty(cursor) ? "": $"?cursor={cursor}")}";
using (Stream stream = await this.Client.OpenReadTaskAsync(address))
using (StreamReader reader = new StreamReader(stream))
{
rtnStr = reader.ReadToEnd();
}
var users = JsonConvert.DeserializeObject<SlackUserInfo>(rtnStr);
slackMembers.AddRange(users.Member.Where(x => x.Deleted == false));
if (string.IsNullOrEmpty(users.Response_metadata?.Next_cursor))
{
break;
}
else
{
cursor = users.Response_metadata?.Next_cursor;
}
}
return slackMembers;
Slack users.list API說明 :https://api.slack.com/methods/users.list
-----------------------------------------
有時在會走之前你就得跑
你不解決問題 就等問題解決你