本文共 5859 字,大约阅读时间需要 19 分钟。
参考https://ding-doc.dingtalk.com/doc#/serverapi2/tvu5f4
使管理员在后台的管理界面中创建一个模板,在浏览器url中查找process_code参数记录下来后面发送钉钉审批时需要用到Postman测试钉钉审批流发送
1.获取access_token
https://oapi.dingtalk.com/gettoken?appkey=appkey &appsecret=appsecret";//在钉钉管理员后台中获取appkey和appsecret 2.发送审批申请 地址:https://oapi.dingtalk.com/topapi/processinstance/create?access_token=access_token{ "form_component_values": { "name": "详细信息",//传入为控件定义的名称,控件详细信息可看官方文档 "value": "所在部门:什么部 \n 所要发布职位名称:java \n 职级:p8 \n 职位要求:会java \n 发布理由:缺人 " },//内容 "dept_id": "-1",//所在部门根部门为-1 "process_code": "process_code",//url中的process_code "originator_user_id": "userid"//发起人userid可以通过手机或unionid获取}
钉钉发送请求帮助类
3.需要在maven中导入httpClient坐标org.apache.httpcomponents httpclient 4.5.10
4.帮助类代码
public class DDAuthUntil { public static JSONObject httpGet(String url){ JSONObject jsonrResult = null; CloseableHttpClient closeableHttpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(url); try { CloseableHttpResponse response = closeableHttpClient.execute(httpGet); HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity, "UTF-8"); jsonrResult = JSON.parseObject(result); } catch (IOException e) { e.printStackTrace(); } return jsonrResult; } public static JSONObject httpPost(String url,JSONObject json){ CloseableHttpClient httpClient = HttpClients.createDefault(); JSONObject jsonrResult = null; HttpPost httpPost = new HttpPost(url); try { if (null != json){ StringEntity entity = new StringEntity(json.toString(),"utf-8"); entity.setContentEncoding("UTF-8"); entity.setContentType("application/json"); httpPost.setEntity(entity); CloseableHttpResponse response = httpClient.execute(httpPost); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ String result =EntityUtils.toString(response.getEntity(), "utf-8"); System.out.println("result:"+result); jsonrResult = JSONObject.parseObject(result); } } }catch (Exception e){ e.printStackTrace(); }finally { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return jsonrResult; } //钉钉工作消息发送帮助类 public static String sendMessage(String content,String mobile){ try { String access_tokenUrl = "https://oapi.dingtalk.com/gettoken?appkey=dingq8p7srlitsx0xjey&appsecret=S1SzCjx3VAAAzrhCehl1UhgCu3WEygyvVWZsyl_mcpIa3R52sZz6WqvrMDBlQmcI"; JSONObject access_token = DDAuthUntil.httpGet(access_tokenUrl); String accessToken = access_token.getString("access_token"); String getUseridurl = "https://oapi.dingtalk.com/user/get_by_mobile?access_token="+accessToken+"&mobile="+mobile; JSONObject useridJson = DDAuthUntil.httpGet(getUseridurl); String userid = useridJson.getString("userid"); //发送通知 String asyncsendurl = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token="+accessToken; JSONObject jsonObject = new JSONObject(); jsonObject.put("agent_id","696435982"); jsonObject.put("userid_list",userid); JSONObject msgtype = new JSONObject(); msgtype.put("msgtype","text"); JSONObject contents = new JSONObject(); contents.put("content",content); msgtype.put("text",contents); jsonObject.put("msg",msgtype); System.out.println(jsonObject); DDAuthUntil.httpPost(asyncsendurl,jsonObject); return "发送消息成功"; }catch (Exception e){ e.printStackTrace(); return "发送消息失败"; } }}
4.审批流发送代码
我们采用的是获取用户的钉钉手机号来获取userid *第一个参数 mobile 为手机号,第二个参数processCode为process_code,第三个参数deptId为所在部门//钉钉审批工作流 public static void ddApproval(String mobile,String processCode,String deptId,String content){ //获取accessToken String access_tokenUrl = "https://oapi.dingtalk.com/gettoken?appkey=appkey&appsecret=appsecret";//在钉钉管理员后台中获取appkey和appsecret JSONObject access_token = DDAuthUntil.httpGet(access_tokenUrl); String accessToken = access_token.getString("access_token"); //获取userid String getUseridurl = "https://oapi.dingtalk.com/user/get_by_mobile?access_token="+accessToken+"&mobile="+mobile; JSONObject useridJson = DDAuthUntil.httpGet(getUseridurl); String userid = useridJson.getString("userid"); //发起审批 String createApproval = "https://oapi.dingtalk.com/topapi/processinstance/create?access_token="+accessToken; //用JSONObject封装参数 JSONObject jsonObject = new JSONObject(); //封装userid jsonObject.put("originator_user_id",userid); //url中的process_code jsonObject.put("process_code",processCode); //所在部门根部门为-1 jsonObject.put("dept_id",deptId); //参数拼接 JSONObject form_component_values = new JSONObject(); //组件内容 form_component_values.put("name","详细信息"); form_component_values.put("value",content); jsonObject.put("form_component_values",form_component_values); System.out.println(jsonObject); DDAuthUntil.httpPost(createApproval,jsonObject); }
该方式采用的是钉钉创建默认的审批流程,如需指定审批人将approvers加入jsonObject 中
参数参考地址:https://ding-doc.dingtalk.com/doc#/serverapi2/cmct1a6.返回结果
{ "errcode": 0, "process_instance_id": "3f2e9752-ca89-4c-b7-9,//审批流唯一代码 "request_id": "6inrrnit9" }
转载地址:http://wstj.baihongyu.com/