对接钉钉Stream模式考勤打卡相关事件的指南

news2024/10/6 22:29:35

钉钉之前的accessToken是公司级别的,现在的accessToken是基于应用的,接口的权限也是基于应用的。所以第一步是在钉钉开放平台(https://open-dev.dingtalk.com/)创建一个应用。

image.png

创建好应用之后,因为我们后续还需要调用钉钉不少服务端api,这些api都要求这个应用被授予了相应的权限,所以我们先给当前这个应用授予足够多的权限(全部都勾上)。

image.png

在进行事件订阅之前,需要完成代码接入,才会展示事件列表,所以现在转到事件订阅的文档,先进行代码接入(https://open.dingtalk.com/document/orgapp/develop-stream-mode-push-server)

这块参考官方文档就行了。

接入成功之后,回到上面创建的应用,点击事件订阅菜单

选择Stream模式推送,再点“已完成接入,验证连接通道”

验证成功之后,下面的事件就会展示出来

如果只需要监听考勤相关的事件,经过我的验证,只需要监听下面2个事件就行

员工打卡的触发场景包括:员工上下班打卡,补卡申请通过(坑:如果当天无排班,不会触发这个事件。无排班的场景:1.对于固定上下班,钉钉默认只会初始化未来15天的排班,超过15天都是休息,这点可参考钉钉APP的考勤日历。这样就会导致。2. 节假日,即:节假日的补卡不会触发这个事件(需要再去监听审批完成事件))。以上内容都是开发过程中发现问题之后提工单给钉钉的开发人员得到的回复,不是杜撰的。

image.png

因为钉钉Stream事件返回的数据结构与考勤接口返回的数据不一致,如果需要更多的信息,需要对接钉钉考勤相关的接口。

所以我目前对于这块的设计是这样的:

接收到打卡事件之后,拿到userId和打卡时间,拿这2个参数再去查询考勤详情数据(https://open.dingtalk.com/document/orgapp/obtain-the-attendance-update-data),相当于Stream事件只作为我去钉钉拉取数据的一个触发器,请假、加班、出差、外出事件也是一个意思,拿到请假时间范围之后,去查询这段时间的考勤数据

  • 如果发现有些请假类型的数据没有收到推送(或者通过https://open.dingtalk.com/document/orgapp/queries-the-column-value-of-the-attendance-report 查到某个字段的value是null),需要检查以下配置:

image.png

把带薪年休假啥的都加进来

image.png

消息推送失败的处理方案

钉钉默认的推送失败处理方案:https://open.dingtalk.com/document/orgapp/obtain-the-event-list-of-failed-push-messages

我们只需要写一个SpringTask任务定时拉取就行

要注意的一点是这个接口的数据需要通过getBody读取

public JSONArray getStreamCallBackFailedResult() {
    DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/call_back/get_call_back_failed_result");
    OapiCallBackGetCallBackFailedResultRequest req = new OapiCallBackGetCallBackFailedResultRequest();
    req.setHttpMethod("GET");
    OapiCallBackGetCallBackFailedResultResponse rsp;
    try {
        rsp = client.execute(req, getAccToken());
        if (Objects.equals(SUCCESS_CODE, rsp.getErrcode())) {
            JSONObject body = JSON.parseObject(rsp.getBody());
            return body.getJSONArray("failed_list");
        }
    } catch (ApiException e) {
        log.warn("[请求钉钉接口失败]获取推送失败的数据", e);
    }
    return null;
}

调用量的问题

Stream推送量和付费API调用量都是需要收费的(有免费的额度),使用的时候需要注意

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1819107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式事务seata之AT与TCC模型

1. seata分布式事务简介 seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。 Seata提供了AT、TCC、SAGA和XA事务模型,为用户打造一站式的分布式解决方案。 简单来说,Seata就是针对主流事务解决方案的封装…

Unity:Text-TextMeshPro 不显示中文

共计四步: 一、去C盘复制一份字体: C:\Windows\Fonts二、粘贴到你的项目里(任意文件位置),得到“MSYH”: 三、右键字体文件,依次点击create–>TextMeshPro–>FontAsset: …

visdom使用时所遇的问题及解决方法

最近在用visdom进行可视化的过程中,虽然可有效的避免主机拒绝访问(该问题的解决方法,请参考深度学习可视化工具visdom使用-CSDN博客)即在终端输入python -m visom.server 1.训练过程中visdom出现ValueError: too many file descr…

科技项目验收测试必须进行吗?软件测试公司推荐

科技项目验收测试是指在科技项目开发周期中,对项目完成后进行的一种测试和评估工作。它的目的是验证项目是否达到预期的要求,并确保项目交付给客户前达到预期的质量标准。 一、科技项目验收测试的必要性   科技项目验收测试是项目管理中不可或缺的一个…

5.5 Python 迭代器与生成器

文章目录 1. 三元表达式1.1 格式1.2 示例1.3 嵌套 2. 生成式2.1 列表生成式2.2 字典生成式2.3 集合生成式2.4 元组生成式 3. 可迭代对象4. 迭代器4.1 迭代器的优缺点4.2 迭代器的惰性机制4.3 生成迭代器4.4 文本IO包装器4.5 字符串迭代器4.6 列表迭代器4.7 字典键迭代器4.8 元组…

怎么改图片尺寸更方便?在线图片改大小的使用方法

图片怎么快速改尺寸呢?在网上传图或者做其他用途时,经常会对图片的尺寸有要求,当拍摄或者制作的图片太大或者太小时,都会导致图片的无法正常使用,那么就需要按照规定将图片改大小之后才能正常使用。 在遇到图片修改大…

ui自动化中,隐式等待和显示等待什么时候使用

隐式等待 在页面刷新加载时,页面元素还没有出来,这个时候如果去找元素就会找不到报错 或者点了一个菜单,页面加载时 用笨办法,就是用sleep等待固定的时间,这种浪费的时间比较多,就可以用隐式等待&#xf…

酷暑骄阳,热情似火丨deepin校园联盟走进湖北大学,共话开源新篇章

内容来源:deepin(深度)社区 炎炎夏日,骄阳似火,6月11日,deepin校园联盟湖北大学站交流活动如期举行。在湖北大学计算机与信息工程学院,deepin(深度)社区研发工程师王溢学为热情似火的学子们开展…

打造地下管廊智慧监测解决方案-守护城市生命线|计讯物联

方案背景 地下综合管廊是城市基础设施的关键部分,即在城市地下建造一个隧道空间,将电力、通信,燃气、供热、排水等各种工程管线集于一体,被视为城市的“生命线”。随着城市化进程的加快,地下管线的数量、种类和密度不断…

动态规划:最长重复子数组

本题不算难,但是如果直接想dp数组怎么定义的话就会头晕,先想递推公式的含义就知道为什么需要冗余的dp[0][0]了 class Solution {public int findLength(int[] nums1, int[] nums2) {int res 0;//1.确定dp数组含义int[][] dp new int[nums1.length1][nu…

不懂产品和工艺的小白能学好FMEA吗?

在制造业的广阔天地里,FMEA(Failure Modes and Effects Analysis,失效模式与影响分析)一直被视为质量控制的关键武器。然而,很多人认为只有懂产品和工艺的行家才能玩转FMEA,对于小白来说似乎遥不可及。今天…

智慧环保一体化平台简介

据悉,环保问题日益受到人们的关注,智慧环保一体化平台作为解决环保问题的有力工具,正逐渐走进人们的视野。朗观视觉智慧环保一体化平台通过整合各类环保资源,实现环境数据的实时监测、分析与管理,为环境保护提供智能化…

windows10蓝屏原因自检记录

背景 跑训练的过程中电脑自动重启了,为了满足长期训练的需要,研究一下死机原因 查看系统日志 右键我的电脑——管理——系统工具——事件查看器——系统 检索级别为错误的内容,在死机时间附近查找相关日志,发现如下日志 计算机…

【第六篇】SpringSecurity的权限管理

一、权限管理的实现 服务端的各种资源要被SpringSecurity的权限管理控制可以通过注解和标签两种方式来处理。 放开了相关的注解后在Controller中就可以使用相关的注解来控制了 JSR250注解 /*** JSR250*/ @Controller @RequestMapping("/user") public class UserC…

深度!千字长文拆解AI Agent ,浅谈国内AI Agent 现状

“现如今ChatGPT的热度逐渐褪去,而字节的扣子逐渐被越来越多的国人知晓,钉钉、百度、Dify等也纷纷涉足工作流功能,打开国内AI工作流to B市场。今天学姐将用通俗易懂的方式讲解AI Agent是什么,以及国内大厂做Agent的进展。大家不要…

机器人中roll/pitch/yaw angles 和Euler angles的区别

在机器人学和航空领域,roll、pitch、yaw angles(滚转角、俯仰角、偏航角)和Euler angles(欧拉角)是两个经常出现的概念,它们用于描述物体在三维空间中的姿态或方向。以下是对这两个概念的解释以及它们之间的…

DeepSpeed Monitoring Comm. Logging

Monitoring 支持多种后端:Tensorboard、WandB、Comet、CSV文件; TensorBoard例子: 自动监控:DeepSpeed自动把重要metric记录下来。只需在配置文件里enable相应的看板后端即可: {"tensorboard": {"enabl…

园区数字化运营管理平台的优势、价值有哪些?

​随着全球及我国数字经济的蓬勃发展,数字化转型已成为各行各业提升效率和竞争力的关键。园区作为区域经济发展的重要载体,数字化运营管理平台更是成为了推动园区经济高质量发展的重要工具。 随着园区数字化运营管理平台的而引入,为园区在运…

FISCO BCOS x GitLink,为国产开源技术生态注入新活力

作为中国领先的区块链底层平台之一,FISCO BCOS 自成立以来始终致力于推动国产开源区块链技术的应用和普及。近期,FISCO BCOS 将开源代码托管到CCF官方代码托管平台 GitLink (确实开源),为国产开源技术生态注入新活力。…

github 本地仓库上传及报错处理

一.本地文件上传 这里为上传部分,关于gitbash安装配置,读者可自行搜索,由于已经安装完成,未进行截图保存,这里便不做赘述。 1.登录git账号并创建一个仓库 点击仓库打开后会看到这个仓库的网址链接(这个链…