南宁网站seo大概多少钱,seo的搜索排名影响因素有哪些,枣庄企业网站建设,虚拟主机和服务器有什么区别文章目录 背景什么是钉钉订阅事件钉钉订阅事件的应用场景 整体思路查看钉钉文档 什么是钉钉回调钉钉回调具体实操创建自己的应用钉钉回调开发过程中遇到的问题 总结 背景
最近需要做一个业务#xff1a;钉钉组织架构下添加人员之后#xff0c;要对该人员的数据信息做一个处理… 文章目录 背景什么是钉钉订阅事件钉钉订阅事件的应用场景 整体思路查看钉钉文档 什么是钉钉回调钉钉回调具体实操创建自己的应用钉钉回调开发过程中遇到的问题 总结 背景
最近需要做一个业务钉钉组织架构下添加人员之后要对该人员的数据信息做一个处理比如存储表。 于是查阅了有关钉钉的订阅事件直接让钉钉回调自己的接口即可。也就是当钉钉的组织架构下有人员新增的时候就让他去调用给他配置的接口回调。
什么是钉钉订阅事件
钉钉订阅事件是指钉钉开放平台提供的一种机制允许开发者订阅企业内部发生的各类事件例如员工加入、离职、部门变动、审批进度更新等。当这些事件在企业内部发生时钉钉会向开发者事先指定的回调地址发送相应的通知开发者可以根据通知进行进一步处理。
钉钉订阅事件的应用场景
钉钉订阅事件广泛应用于企业内部信息的实时监控和处理。以下是几个常见的应用场景
人事管理及时了解员工加入、离职以及岗位调整等人事变动方便进行人力资源管理。 审批流程跟踪实时获取审批进度更新帮助相关人员掌握工作流程状态。 部门协作订阅部门变动事件及时调整团队工作布局保持组织结构的同步性。 数据分析与监控通过订阅特定数据变动事件实时监控关键业务数据并进行进一步分析与处理。
整体思路
查看钉钉文档
我们要先去看一个钉钉的开发文档可以看到他有一个通讯录事件添加链接描述 这里就有相关的事件类型我们需要去取对应的事件类型即可。而且钉钉也有对应的代码示例可以在钉钉上进行测试调用。
什么是钉钉回调
通俗来将钉钉回调就是让钉钉来订阅我们的一个接口。还是看钉钉的文档介绍。 添加链接描述
钉钉回调具体实操
创建自己的应用
在钉钉上在钉钉开放平台注册并创建一个应用。然后在应用中创建需要订阅的事件类型例如员工变动事件、审批进度更新事件等。每个事件都有对应的标识符和描述开发者可以根据需要选择订阅的事件。
这里加密aes_key和token钉钉自己生成。请求网址就需要自己在代码中写接口。
钉钉回调
具体的可以点击“了解更多”可以查看具体的代码应该怎么使用。这里先给大家看一下我在项目组中的使用。
ApiOperation(钉钉回调同步变动的人员)PostMapping(value /dingCallback/{id})public MapString, String dingCallback(RequestParam(value msg_signature, required false) String msg_signature,RequestParam(value timestamp, required false) String timeStamp,RequestParam(value nonce, required false) String nonce,RequestBody(required false) JSONObject json,PathVariable(id) String id){try {// 1. 从http请求中获取加解密参数// 2. 使用加解密类型// Constant.OWNER_KEY 说明// 1、开发者后台配置的订阅事件为应用级事件推送此时OWNER_KEY为应用的APP_KEY。// 2、调用订阅事件接口订阅的事件为企业级事件推送// 此时OWNER_KEY为企业的appkey企业内部应用或 SUITE_KEY三方应用MapString,String config dingProjectConfig.getDingproject().get(id);//回调页面上的获取的值String tokenconfig.get(token);String aesKey config.get(aesKey);String corpId config.get(corpId);String tenantIdconfig.get(tenantId);
// String appKeyconfig.get(appId);String appSecretconfig.get(secret);DingCallbackCrypto callbackCrypto new DingCallbackCrypto(token, aesKey, corpId);String encryptMsg json.getString(encrypt);String decryptMsg callbackCrypto.getDecryptMsg(msg_signature, timeStamp, nonce, encryptMsg);// 3. 反序列化回调事件json数据JSONObject eventJson JSON.parseObject(decryptMsg);JSONObject eventTypeJSON.parseObject(String.valueOf(eventJson));DingEntity dingEntity JSONObject.parseObject(JSONObject.toJSONString(eventType),DingEntity.class);String event dingEntity.getEventType();// 4. 根据EventType分类处理if (check_url.equals(dingEntity.getEventType())) {// 测试回调url的正确性System.out.println(测试回调url的正确性);} else if (user_add_org.equals(event)) {//用户增加事件organizationService.insertNewDingInformation(dingEntity,tenantId,corpId,appSecret);} else {// 添加其他已注册的System.out.println(发生了其他事件);}// 5. 返回success的加密数据MapString, String successMap callbackCrypto.getEncryptedMap(success);System.out.println(successMapsuccessMap);return successMap;} catch (DingCallbackCrypto.DingTalkEncryptException e) {e.printStackTrace();}return null;}需要注意的是在代码中需要把H5应用的token、加密aes_Key、appKey、Appsecret填写上 这两部分的内容。 主要是这两部分进行钉钉解密操作。
在这段代码中如果解密成功会有判断的事件也就是他会判断钉钉的是什么订阅这里有它的一部分标识比如新增人员的标识是user_add_org等等这部分是在开篇有介绍过。 在这些if判断中可以去编写自己的代码业务处理逻辑。
开发过程中遇到的问题
1、这里需要特别注意的是token、appKey这些值一定要书写正确 2、设置回调地址的时候上面不能有空格 3、多看钉钉帮助文档
总结
钉钉订阅事件的优势和特点
1、实时性钉钉订阅事件可以在事件发生之后立即通知开发者保证了信息的实时性和准确性。 2、简化操作开发者只需要创建订阅事件、配置回调地址和编写业务处理代码即可轻松实现对企业内部3、变化的订阅无需频繁查询和轮询。 4、扩展性钉钉订阅事件支持多种类型的企业内部事件方便根据具体需求进行订阅和处理具有很好的扩展性和灵活性。
钉钉订阅事件为企业提供了一种便捷的方式实时订阅并处理企业内部关键信息的变化。无论是人事管理、审批流程跟踪还是数据分析与监控都能通过钉钉订阅事件及时获取所需的信息并进行相应的处理。通过合理利用这一功能企业可以极大地提高工作效率和决策能力实现更加高效精准的协同合作。