本文主要是介绍Slack API users.list介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Slack API users.list介绍
- 一、方法功能介绍
- 二、使用介绍
- 2.1.请求参数介绍
- 2.2.返回参数介绍
- 三、场景示例
- 3.1.获取工作区下所有用户的信息
- 3.2.工作区中超过5000人,分页获取用户信息
官方文档链接: users.list
一、方法功能介绍
官方原译为:该方法返回工作区中所有用户的列表。这包括已删除/停用的用户。返回一个分页用户对象的列表,没有特定的顺序。
二、使用介绍
Slack API提供了四种调用该方法的使用方式。官方文档中声明了代码示例
TYPE | 请求方式 | 请求头 | 请求必填参数 |
---|---|---|---|
HTTP | POST | application/x-www-form-urlencoded、application/json | token、channel |
JavaScript | X | application/x-www-form-urlencoded、application/json | token、channel |
Python | X | application/x-www-form-urlencoded、application/json | token、channel |
Java | X | application/x-www-form-urlencoded、application/json | token、channel |
2.1.请求参数介绍
请求参数名 | 含义 | 示例 |
---|---|---|
token(必填) | token令牌 | xxxx-xxxxxxxxx-xxxx |
cursor | 上一页的游标 | dXNlcjpVMDYxTkZUVDI= |
include_locale | 将此设置为true以接收用户的语言环境。默认值为false | false |
limit | 本次请求数据条数阈值。不提供阈值将导致Slack试图向您提供整个结果集。如果集合太大,你可能会遇到limit_required或HTTP 500错误。建议一次不超过200个结果,响应将包括一个顶级response_metadata属性,其中包含一个next_cursor值通过在后续请求中使用该值作为游标参数,以及limit,您可以逐个虚拟页在集合页中导航 | Hello world |
team_id | true:列出指定团队id的所有用户,如果使用org令牌则需要T1234567890 | T1234567890 |
2.2.返回参数介绍
一般情况下只需关注"ok"、“members”-“id”、“members”-“profile”-“phone”、“members”-“profile”-“real_name”、“members”-“profile”-“team”
以及最后的"response_metadata"-“next_cursor”
三、场景示例
3.1.获取工作区下所有用户的信息
目标:获取工作区下所有用户的信息,并打印出每个用户的用户名、ID、手机号、所属teamID。
实现方式:通过pycharm使用http方式实现效果。
import json
import requests
from datetime import datetime
def getAllUserInfo(token):url = 'https://slack.com/api/users.list'header = {"Content-Type": "application/json; charset=utf-8", "Authorization": "Bearer " + token}response = requests.get(url, headers=header)ApplyReposen = json.loads(response.text)if ApplyReposen["ok"]:for userInfo in ApplyReposen["members"]:userInfo_name = userInfo.get("profile")print("用户名:{},用户ID={},用户手机号={},用户所属teamID={}".format(userInfo.get("real_name"),userInfo.get("id"),userInfo_name.get("phone"),userInfo_name.get("team")))else:print("[info] {} GET Slack User.list Fail! detailMessage:{}".format(str(datetime.datetime.now()), ApplyReposen))if __name__ == "__main__":token ="***-********-********-********" #Bot的TokengetAllUserInfo(token)
结果:
3.2.工作区中超过5000人,分页获取用户信息
目标:工作区中超过5000人,分页获取用户信息,每次分页获取200条信息,直到获取完毕。
实现方式:通过pycharm使用http方式实现效果。
import json
import datetime
import time
import requestsdef getAllUserInfo(token,cursor):url = 'https://slack.com/api/users.list'header = {"Content-Type": "application/json; charset=utf-8", "Authorization": "Bearer " + token}payload = {"cursor": cursor,"limit":200} #这里的limit设置的是本次分页获取数据条数的阈值,建议最高设置为200,如果您的slack是付费,可以提高阈值response = requests.get(url,params=payload, headers=header)ApplyReposen = json.loads(response.text)next_cursor = ApplyReposen["response_metadata"].get("next_cursor","")if ApplyReposen["ok"]:for userInfo in ApplyReposen["members"]:userInfo_name = userInfo.get("profile")print("用户名:{},用户ID={},用户手机号={},用户所属teamID={}".format(userInfo.get("real_name"),userInfo.get("id"),userInfo_name.get("phone"),userInfo_name.get("team")))else:print("[info] {} GET Slack User.list Fail! detailMessage:{}".format(str(datetime.datetime.now()), ApplyReposen))if next_cursor != '':time.sleep(60) #因为我用的是免费通道,所以请求Slack API 接口时会限制调用频率从而导致报错,故此我设置了睡眠60sgetAllUserInfo(token, next_cursor)else:print("[info] {} GET Slack User.list Successed!".format(str(datetime.datetime.now())))
if __name__ == "__main__":token ="***-*******-*********-*******" #Bot的TokengetAllUserInfo(token,"")
结果:
这篇关于Slack API users.list介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!