之前的博客里,已经说了一些钉钉企业内部应用所需的准备,有兴趣的可以浏览一下->前期准备
由于接口设计的原因,目前是不能直接获取企业内的员工名单。但可以通过调用两个接口进而实现这个目的:
1.获取企业内所有部门的ID列表
这里还是调用钉钉提供的方法和类
IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsub");
OapiV2DepartmentListsubRequest req = new OapiV2DepartmentListsubRequest();
OapiV2DepartmentListsubResponse rsp = client.Execute(req, AccessToken);
Console.WriteLine(rsp.Body);
返回的结果结构如下,会包括部门的细节,但这里我们只需要dept_id
{
"errcode": 0,
"errmsg":"ok",
"result": [
{
"auto_add_user": true,
"create_dept_group": true,
"dept_id": 37x1235xxx95,
"name": "运营部",
"parent_id": 1
},
{
"auto_add_user": true,
"create_dept_group": true,
"dept_id": 399xx126xx96,
"name": "开发部",
"parent_id": 1
}
],
"request_id": "4534647568"
}
2.获取企业内某部门下的员工名单
成功获得部门dept_id后,再把这作为参数调用接口
IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/list");
OapiV2UserListRequest req = new OapiV2UserListRequest();
req.Cursor = 0;//浮标,必填
req.Size = 100;//每页数量,必填
req.DeptId = dept_id;
OapiV2UserListResponse rsp = client.Execute(req, access_token);
Console.WriteLine(rsp.Body);
返回的结果结构如下,会包括个员工的个人信息
{
"errcode":"0",
"result":{
"next_cursor":"10",
"has_more":"true",
"list":{
"leader":"true",
"extension":"{}",
"unionid":"zgeryrtu6852iS658697gnZ",
"boss":"true",
"exclusive_account":"false",
"admin":"true",
"remark":"test",
"title":"zzzzzzzzzz",
"hired_date":"14455612328",
"userid":"asawqe123",
"work_place":"future",
"dept_id_list":"[2,4]",
"job_number":"4",
"email":"te24234@xx123x.com",
"dept_order":"1",
"mobile":"1233565685",
"active":"true",
"telephone":"010-86831124-2345",
"avatar":"xzz",
"hide_mobile":"false",
"org_email":"te24234@xx123x.com",
"name":"张三",
"state_code":"77"
}
},
"errmsg":"ok"
}
结合这两个接口,就可以获取员工名单了