钉钉OA审批评论接口,如何@ 人并发送通知

钉钉OA审批评论接口,如何@ 人并发送通

问题描述:

相关接口:https://oapi.dingtalk.com/topapi/process/instance/comment/add

我希望在钉钉oa审批流程中,添加评论的同时通过“@”或者其他方式提醒流程发起人去跟进审批工作。 但我没找到可以添加@别人的地方,请问如何才能做到这一点?

解决方案:

传参格式

img
[33](22608252107903100)
[张三](11507131006802001)

前面是被@人的姓名 后面是被@人的userId。

但这起到了显示作用,并不会发送工作通知。想要@别人的同时发送通知,只能自行通过调用 https://open.dingtalk.com/document/orgapp/asynchronous-sending-of-enterprise-session-messages 发送工作通知接口去通知对应的人。

### 如何用Java实现钉钉复杂的OA审批流程 #### 表结构设计与接口调用 为了实现钉钉复杂的OA审批流程,首先需要设计合理的数据库表结构来存储审批相关的数据。这通常包括但不限于以下几个方面:发起流程实例的数据记录、查询流程审核日志的功能支持、处理流程审核同意或拒绝后的回调逻辑等[^1]。 #### API访问工具类构建 通过创建一个专门用于访问钉钉API的工具类,能够简化后续对于不同接口的操作过程。此工具类应封装好诸如获取token之类的公共方法以便于重复利用减少冗余代码量[^3]。 #### 发起流程实例接口应用 当用户想要启动一个新的审批请求时,则需要用到“发起流程实例”的相关接口;该操作会向指定模板提交所需参数从而触发整个工作流引擎运行起来。 以下是基于Spring框架下简单的示例代码展示如何构造这样的HTTP POST 请求去调用上述提到过的接口: ```java @RestController @RequestMapping("/dingtalk") public class DingTalkController { private static final Logger logger = LoggerFactory.getLogger(DingTalkController.class); @PostMapping(value="/startProcessInstance", produces="application/json;charset=UTF-8") public String startProcessInstance(@RequestBody Map<String, Object> param){ // 构建实际发送给DingTalk服务器端的内容体部分 JSONObject requestBodyJson=new JSONObject(); requestBodyJson.put("agent_id",param.get("agentId")); JSONArray formComponentValuesArray=(JSONArray)((JSONObject)(new JSONParser().parse(param.get("processCode").toString()))).get("form_component_values"); // 设置其他必要字段... CloseableHttpClient httpClient=HttpClients.createDefault(); HttpPost postMethod=new HttpPost("https://oapi.dingtalk.com/processinstance/create?access_token="+getToken()); try{ StringEntity se=new StringEntity(requestBodyJson.toJSONString(),"utf-8"); se.setContentType("application/x-www-form-urlencoded"); postMethod.setEntity(se); HttpResponse httpResponse=httpClient.execute(postMethod); BufferedReader reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent())); StringBuilder resultBuffer = new StringBuilder(); char[] buf = new char[1024]; int length; while ((length = reader.read(buf)) != -1){ resultBuffer.append(buf , 0 , length ); } return resultBuffer.toString(); } catch(Exception e){ throw new RuntimeException(e.getMessage(),e); } finally{ try { if(null!=httpClient) httpClient.close(); }catch (IOException ex) {} } } } ``` 注意以上仅为示意性质片段,未涵盖全部细节,请根据实际情况调整完善之[^2]。 #### 查询流程审核日志接口运用 针对已存在的某个特定审批事项而言,可能还会存在对其状态变化轨迹感兴趣的需求场景——即所谓的‘历史版本’或者说是时间轴视图之类的东西。此时就可以借助到 “查询流程审核日志” 的能力了。 同样地,在这里也给出一段伪代码用来说明大概思路: ```java @GetMapping("/queryAuditLog/{processInstanceId}") public List<AuditLogEntry> queryAuditLogs(@PathVariable String processInstanceId){ ... } ``` #### 流程审核同意/拒绝回调接口设置 无论是批准还是驳回某项申请的动作发生之后,往往都需要通知前端页面刷新界面显示最新的结果出来。这就涉及到定义两个独立的服务入口分别对应这两种情形下的响应机制。 例如下面这个例子展示了其中一种情况(假设为同意)该如何编写相应的处理器函数原型: ```java @PostMapping("/approveCallback") public ResponseEntity<Void> handleApprovalNotification(){ ...... } ``` 同理可得另一方对应的实现形式亦然相似只是具体业务逻辑有所区别罢了。 #### 钉钉免登录接口集成 最后一点值得注意的是关于用户体验优化方面的考量因素之一便是能否做到让用户尽可能少输入账号密码就能完成身份验证手续进而进入系统内部开展下一步行动。所以引入类似于SSO单点登陆那样的解决方案就显得尤为重要起来了。 综上所述,我们已经探讨过了几个关键环节在整个项目开发过程中所扮演的角色及其相互之间是如何协作配合共同达成最终目标的过程概述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

切糕师学AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值