博客
关于我
钉钉审批流的调用(官方推荐审批流)
阅读量:178 次
发布时间:2019-02-28

本文共 4310 字,大约阅读时间需要 14 分钟。

钉钉审批流配置与使用指南

一、审批模板的定义

在钉钉后台管理界面中,管理员需要创建审批模板。通过分析审批模板的 process_code 参数,后续在发送审批时可以直接使用该参数。为实现这一功能,可参考钉钉提供的API文档。

二、审批流发送

1. 获取 access_token

通过以下URL获取访问令牌:

https://oapi.dingtalk.com/gettoken?appkey=appkey&appsecret=appsecret

请注意:在钉钉管理员后台中获取具体的 appkeyappsecret

2. 发送审批申请

发送审批请求的URL地址为:

https://oapi.dingtalk.com/topapi/processinstance/create?access_token=access_token

请求参数示例(JSON格式):

{  "form_component_values": {    "name": "详细信息",    "value": "所在部门:什么部\n所要发布职位名称:java\n职级:p8\n职位要求:会java\n发布理由:缺人"  },  "dept_id": "-1",  "process_code": "process_code",  "originator_user_id": "userid"}

3. 导入相关依赖

在 Maven 项目中,导入以下依赖以支持 HTTP 客户端通信:

org.apache.httpcomponents
httpclient
4.5.10

4. 帮助类代码

提供一个完整的 HTTP 请求工具类,用于处理钉钉 API 调用:

public class DDAuthUntil {    public static JSONObject httpGet(String url) throws IOException {        CloseableHttpClient closeableHttpClient = HttpClients.createDefault();        HttpGet httpGet = new HttpGet(url);        CloseableHttpResponse response = closeableHttpClient.execute(httpGet);        HttpEntity entity = response.getEntity();        String result = EntityUtils.toString(entity, "UTF-8");        JSONObject jsonrResult = JSON.parseObject(result);        closeableHttpClient.close();        return jsonrResult;    }    public static JSONObject httpPost(String url, JSONObject json) throws Exception {        CloseableHttpClient httpClient = HttpClients.createDefault();        JSONObject jsonrResult = null;        HttpPost httpPost = new HttpPost(url);        try {            if (json != null) {                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");                    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) throws Exception {        String access_tokenUrl = "https://oapi.dingtalk.com/gettoken?appkey=dingq8p7srlitsx0xjey&appsecret=S1SzCjx3VAAAzrhCehl1UhgCu3WEygyvVWZsyl_mcpIa3R52sZz6WqvrMDBlQmcI";        JSONObject access_token = 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 = 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);        httpPost(asyncsendurl, jsonObject);        return "发送消息成功";    }}

五、审批流发送代码

审批流的发送代码基于获取用户钉钉手机号获取 userid 的逻辑。主要步骤如下:

1. 获取 access_token

调用以下URL获取访问令牌:

https://oapi.dingtalk.com/gettoken?appkey=appkey&appsecret=appsecret

2. 获取 userid

通过钉钉提供的接口,根据手机号获取用户ID:

https://oapi.dingtalk.com/user/get_by_mobile?access_token=access_token&mobile=mobile

3. 发起审批流

调用以下URL发起审批流程:

https://oapi.dingtalk.com/topapi/processinstance/create?access_token=access_token

4. 参数配置

请求参数需包含以下信息:

  • originator_user_id:发起人的钉钉用户 ID
  • process_code:审批流的代码标识
  • dept_id:部门 ID(默认值为 -1)
  • form_component_values:审批模板的具体内容

六、返回结果

审批流发送成功后,系统返回以下 JSON 格式结果:

{  "errcode": 0,  "process_instance_id": "3f2e9752-ca89-4c-b7-9",  "request_id": "6inrrnit9"}

以上方法可帮助管理员顺利配置钉钉审批流,实现自动化审批需求。

转载地址:http://wstj.baihongyu.com/

你可能感兴趣的文章
OpenLDAP编译安装及配置
查看>>
Openmax IL (二)Android多媒体编解码Component
查看>>
OpenMCU(一):STM32F407 FreeRTOS移植
查看>>
OpenMCU(三):STM32F103 FreeRTOS移植
查看>>
OpenMCU(三):STM32F103 FreeRTOS移植
查看>>
OpenMCU(二):GD32E23xx FreeRTOS移植
查看>>
OpenMCU(五):STM32F103时钟树初始化分析
查看>>
OpenMCU(四):STM32F103启动汇编代码分析
查看>>
OpenMetadata 命令执行漏洞复现(CVE-2024-28255)
查看>>
OpenMMLab | AI玩家已上线!和InternLM解锁“谁是卧底”新玩法
查看>>
OpenMMLab | S4模型详解:应对长序列建模的有效方法
查看>>
OpenMMLab | 【全网首发】Llama 3 微调项目实践与教程(XTuner 版)
查看>>
OpenMMLab | 不是吧?这么好用的开源标注工具,竟然还有人不知道…
查看>>
OpenMMLab | 如何解决大模型长距离依赖问题?HiPPO 技术深度解析
查看>>
OpenMMLab | 面向多样应用需求,书生·浦语2.5开源超轻量、高性能多种参数版本
查看>>
OpenMP 线程互斥锁
查看>>
OpenMV入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>
OpenObserve云原生可观测平台本地Docker部署与远程访问实战教程
查看>>
openoffice使用总结001---版本匹配问题unknown document format for file: E:\apache-tomcat-8.5.23\webapps\ZcnsDms\
查看>>
views
查看>>