钉钉机器人发送折线图卡片 工具类代码

钉钉机器人 “创建并投放卡片 接口 ”   可以  发送折线图、柱状图

官方文档:创建并投放卡片 - 钉钉开放平台

0依赖、1模板、2机器人放到内部应用、3放开这个权限 、4工具类、5调用工具类 拼接入参

卡片模板 自己看文档创建,卡片模板的id 有用

0、依赖 
<dependency><groupId>com.aliyun</groupId><artifactId>dingtalk</artifactId><version>2.0.87</version>
</dependency><dependency><groupId>com.aliyun</groupId><artifactId>alibaba-dingtalk-service-sdk</artifactId><version>2.0.0</version></dependency>
1、找到你的机器人,迁移到内部应用

2、放开这个权限    Card.Instance.Write

3、参数要求,重要 (这是发给个人的)

3.1 发给群的参数这样写 (看红框里的)

3.2其他参数

3.3 你的入参是这样的就对了
{"cardData":{"cardParamMap":{"count":"{\"data\":[{\"x\":\"N0\",\"type\":\"line\",\"y\":48},{\"x\":\"N1\",\"type\":\"line\",\"y\":74}],\"type\":\"histogram\",\"config\":{}}"}},"outTrackId":"test23","cardTemplateId":"785b7cec-c8c5-4bba-99be-6da77befb022.schema","openSpaceId":"dtv1.card//im_group.cid4cUEK93zmHMHb1ycvDESQQ==","imRobotOpenDeliverModel":{"spaceType":"IM_ROBOT"},"imGroupOpenSpaceModel":{"supportForward":false},"imGroupOpenDeliverModel":{"robotCode":"ding0a8fitygi7torxla"}
}
4、柱状图效果

卡片模板 自己看文档创建,卡片模板的id 有用

5、工具类代码
import com.aliyun.dingtalkcard_1_0.models.CreateAndDeliverHeaders;
import com.aliyun.dingtalkcard_1_0.models.CreateAndDeliverRequest;
import com.aliyun.dingtalkcard_1_0.models.CreateAndDeliverResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.teautil.models.RuntimeOptions;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomStringUtils;import java.util.Map;/*** @author szl* @date 2024/2/29 0029 10:38*/
@Slf4j
public class DingCardUtils {public static final String APP_KEY = "dinwergsdfrx";public static final String APP_SECRET = "G8Gasdfsdfasd";public static String cardTemplateId_personal = "3b8besadfsdf-85asdff1.schema";public static String cardTemplateId_principal = "96sadf9.schema";public static com.aliyun.dingtalkcard_1_0.Client createClient() throws Exception {com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();config.protocol = "https";config.regionId = "central";return new com.aliyun.dingtalkcard_1_0.Client(config);}/*** 给某个人 创建并投放卡片*/public static void sendDingcard(String receiveUserId, String outTrackId, Map<String, String> cardDataCardParamMap, String cardTemplateId, String Key) throws Exception {com.aliyun.dingtalkcard_1_0.Client client = createClient();CreateAndDeliverHeaders createAndDeliverHeaders = new CreateAndDeliverHeaders();String accessToken = DingUtils.setAccessToken();createAndDeliverHeaders.xAcsDingtalkAccessToken = accessToken;CreateAndDeliverRequest.CreateAndDeliverRequestCardData cardData = new CreateAndDeliverRequest.CreateAndDeliverRequestCardData().setCardParamMap(cardDataCardParamMap);CreateAndDeliverRequest.CreateAndDeliverRequestImRobotOpenDeliverModel imRobotOpenDeliverModel = new CreateAndDeliverRequest.CreateAndDeliverRequestImRobotOpenDeliverModel().setSpaceType("IM_ROBOT");//折线图卡片需要这个CreateAndDeliverRequest.CreateAndDeliverRequestImRobotOpenSpaceModel imRobotOpenSpaceModel = new CreateAndDeliverRequest.CreateAndDeliverRequestImRobotOpenSpaceModel().setSupportForward(false);CreateAndDeliverRequest.CreateAndDeliverRequestImGroupOpenDeliverModel imGroupOpenDeliverModel = new CreateAndDeliverRequest.CreateAndDeliverRequestImGroupOpenDeliverModel().setRobotCode(APP_KEY);CreateAndDeliverRequest createAndDeliverRequest = new CreateAndDeliverRequest().setOutTrackId(outTrackId).setCardTemplateId(cardTemplateId).setOutTrackId(outTrackId).setCardData(cardData).setImRobotOpenSpaceModel(imRobotOpenSpaceModel).setOpenSpaceId("dtv1.card//IM_ROBOT." + receiveUserId + ";").setImGroupOpenDeliverModel(imGroupOpenDeliverModel).setImRobotOpenDeliverModel(imRobotOpenDeliverModel).setUserIdType(1);try {CreateAndDeliverResponse andDeliverWithOptions = client.createAndDeliverWithOptions(createAndDeliverRequest, createAndDeliverHeaders, new RuntimeOptions());log.info("卡片id为:" + andDeliverWithOptions);} catch (TeaException err) {err.printStackTrace();}}/*** 获取消息id** @return*/public static String getOutTrackId() {return System.currentTimeMillis() + RandomStringUtils.randomAlphanumeric(6);}

5.2 获取token 的代码  不再详细描述  APP_KEY,   APP_SECRET  自己的

/*** 初始化--权限Client** @return Client* @throws Exception*/public static com.aliyun.dingtalkoauth2_1_0.Client createAuthClient() throws Exception {Config config = new Config();config.protocol = "https";config.regionId = "central";return new com.aliyun.dingtalkoauth2_1_0.Client(config);}/*** 获取并设置最新accessToken,每两小时失效*/public static String setAccessToken() throws Exception {com.aliyun.dingtalkoauth2_1_0.Client client = createAuthClient();GetAccessTokenRequest getAccessTokenRequest = new GetAccessTokenRequest().setAppKey(APP_KEY).setAppSecret(APP_SECRET);try {GetAccessTokenResponse accessToken = client.getAccessToken(getAccessTokenRequest);System.out.println("000----:" + accessToken);//设置access_tokenreturn accessToken.getBody().accessToken;} catch (TeaException err) {System.out.println(err.message);return null;} catch (Exception _err) {TeaException err = new TeaException(_err.getMessage(), _err);System.out.println(err.message);return null;}}

5.3、拼接数据,调用工具类 (入参看不懂的,评论区问)

/*** 拼接数据后发送** @param aname a name* @param dnum  a number*/public void sendDingcard(String campusName, String receiveUserId, String cardTemplateId,String aname, String bname, String cname, String dname,Integer anum, Integer bnum, Integer cnum, Integer dnum) {try {List<JSONObject> data = new ArrayList<>();JSONObject json1 = new JSONObject();json1.put("x", aname);json1.put("y", anum);json1.put("type", aname);data.add(json1);JSONObject json2 = new JSONObject();json2.put("x", bname);json2.put("y", bnum);json2.put("type", bname);data.add(json2);JSONObject json3 = new JSONObject();json3.put("x", cname);json3.put("y", cnum);json3.put("type", cname);data.add(json3);JSONObject json4 = new JSONObject();json4.put("x", dname);json4.put("y", dnum);json4.put("type", dname);data.add(json4);JSONObject count = new JSONObject();count.put("data", data);count.put("type", "histogram");count.put("config", new JSONObject());Map<String, String> cardCreateParam = new HashMap<>();cardCreateParam.put("campusName", campusName);cardCreateParam.put("yifenpei", anum.toString());cardCreateParam.put("weifenpei", bnum.toString());cardCreateParam.put("yigoutong", bnum.toString());cardCreateParam.put("weigoutong", cnum.toString());cardCreateParam.put("weizhuanhua", dnum.toString());cardCreateParam.put("chartData", count.toString());DingCardUtils.sendDingcard(receiveUserId, DingCardUtils.getOutTrackId(), cardCreateParam, cardTemplateId, null);} catch (Exception e) {e.printStackTrace();}}

看不懂的,评论区问

2024年3月1日14:02:18

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

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

相关文章

Springboot项目中定时任务的四种实现方式

文章目录 1. 使用Scheduled注解1.1 时间间隔执行1.2 固定时间点执行 2. 使用EnableScheduling注解启用定时任务3. 实现SchedulingConfigurer接口4. 使用Quartz框架4.1 配置QuartzScheduler4.2 定义Job类和Trigger类 5. 总结 在开发现代应用时&#xff0c;定时任务是一个非常常见…

地图可视化绘制 | R-ggplot2 NC地图文件可视化

在推出两期数据分享之后&#xff0c;获取数据的小伙伴们也知道&#xff0c;数据格式都是NetCDF(nc) 格式网格数据&#xff0c;虽然我在推文分享中说明使用Python、R或者GIS类软件都是可以进行 处理和可视化绘制的&#xff0c;但是&#xff0c;还是有小伙伴咨询使用编程软件Pyth…

牛客周赛 Round 34(A,B,C,D,E,F,G)

把这场忘了。。官方也迟迟不发题解 比赛链接 出题人题解 A 小红的字符串生成 思路&#xff1a; 枚举四种字符串打印出来即可&#xff0c;为了防止重复可以用set先去一下重。 code&#xff1a; #include <iostream> #include <cstdio> #include <cstring&g…

day48 ● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

一遍过。 当前房屋偷与不偷取决于 前一个房屋和前两个房屋是否被偷了。所以这里就更感觉到&#xff0c;当前状态和前面状态会有一种依赖关系&#xff0c;那么这种依赖关系都是动规的递推公式。 class Solution { public:int rob(vector<int>& nums) {vector<vec…

门店纵深不足、入口有遮挡影响客流准确率?近景客流帮你搞定!

为了优化运营策略、提升门店营收&#xff0c;很多店铺和商场都会安装客流摄像机。但是在实际应用中&#xff0c;由于门店纵深受限等原因&#xff0c;导致无法使用之前的常规客流产品。 针对这种情况&#xff0c;悠络客最新研发了近景客流产品&#xff0c;即使存在入口被遮挡或门…

内网信息搜集

目录 内网基础知识 基本流程图 怎么判断是否在域内 常规信息类收集-应用&服务&权限等 cs信息搜集 bloodhound安装及使用 内网基础知识 工作组&#xff1a;将不同的计算机按照功能分别列入不同的组&#xff0c;想要访问某个部门的资源&#xff0c;只要在【网络】里…

pyqt教程

一、组件安装配置 1.安装组件 在Anaconda Prompt下进入自己的python环境 pip install PyQt5 pip install PyQt5-tools 2.vscode安装插件 3.配置路径 配置Pyuic:Cmd与Qtdesigner:Path路径 1.Pyuic:Cmd路径 一般是在你安装的python环境下的 \Scripts\pyuic5.exe 2.Qtdesigner:P…

anaconda简介以及安装(Windows)

介绍 Anaconda是一个开源的Python发行版本&#xff0c;它是一个打包的集合&#xff0c;里面预装了conda、Python、众多packages、科学计算工具等。Anaconda的目的是方便使用Python进行数据科学研究&#xff0c;它涵盖了数据科学领域常见的Python库&#xff0c;并且自带了专门用…

Python的循环结构练习

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 生命对某些人来说是美丽的&#xff0c…

我国每年研究生的毕业数量统计分享

本数据集详细记录了自1949年至2021年我国每年研究生的毕业数量&#xff08;包括硕士和博士学位的毕业生&#xff09;。在2021年&#xff0c;我国的研究生毕业生人数达到了772,761人&#xff0c;此数字比上一年度增加了44,000人。 统计的数据单位使用的是人数。 数据展示&…

mysql,for循环执行sql

遇到一个问题&#xff0c;我需要模拟上百万数据来优化sql&#xff0c;线上数据down不下来&#xff0c;测试库又没有&#xff0c;写代码执行要么慢要么就是sql语句太长。 于是&#xff0c;直接用mysql自带的功能去实现&#xff01; 简单而简单 mysql可以for循环&#xff1f;没…

Laravel框架: Call to a member function connect() on null 异常报错处理

Laravel框架&#xff1a; Call to a member function connect() on null 异常报错处理 Date: 2024.03.01 21:03:11 author: lijianzhan 原文链接: https://learnku.com/laravel/t/63721 问题&#xff1a; local.ERROR: Call to a member function connect() on null {"…

【前端素材】推荐优质后台管理系统 Greeva平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理网站、应用程序或系统的管理界面&#xff0c;通常由管理员和工作人员使用。它提供了访问和控制网站或应用程序后台功能的工具和界面&#xff0c;使其能够管理用户、内容、数据和其他各种功能。 2、功能需求 后台管理系…

使用mininet快速入门ONOS路由交换技术与原理-路由篇

上篇文章 《使用mininet快速入门ONOS路由交换技术与原理-交换篇》 使用mininet搭建了一个简单的网络拓扑&#xff0c;并实现了同一交换机下同网段多主机的通信&#xff0c;其中涉及到的通信知识主要以二层mac地址通信为主。 但在芸芸网络的世界中&#xff0c;主机间的通信除了…

【C++】数组、函数、指针

文章目录 1.数组1.1一维数组1.2二维数组 2.函数3.指针&#xff1a;可以通过指针间接访问内存(指针记录地址&#xff09;3.1 指针的定义和使用3.2 指针所占用空间3.3 空指针和野指针3.4 const修饰指针3.5指针和数组3.6指针和函数3.7练习&#xff08;指针、数组、函数&#xff09…

综合练习(二)

目录 列出薪金比 SMITH 或 ALLEN 多的所有员工的编号、姓名、部门名称、领导姓名、部门人数&#xff0c;以及所在部门的平均工资、最高和最低工资 补充 spool Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 列出薪金比 SMITH 或 AL…

STM32USART串口数据包

文章目录 前言一、介绍部分数据包两种包装方式&#xff08;分割数据&#xff09;HEX数据包文本数据包 数据包的收发流程数据包的发送数据包的接收固定包长的hex数据包接收可变包长的文本数据包接收 二、实例部分固定包长的hex数据包接收连接线路代码实现 可变包长的文本数据包接…

【InternLM 实战营笔记】基于 InternLM 和 LangChain 搭建你的知识库

准备环境 bash /root/share/install_conda_env_internlm_base.sh InternLM升级PIP # 升级pip python -m pip install --upgrade pippip install modelscope1.9.5 pip install transformers4.35.2 pip install streamlit1.24.0 pip install sentencepiece0.1.99 pip install a…

MySQL 多表查询 连接查询 外连接

介绍 MySQL 多表查询 连接查询 内连接 外连接分为两种&#xff0c;左外和右外连接&#xff0c; 左外&#xff1a;相当于查询表1(左表)的所有数据 包含 表1和表2交集部分的数据,完全包含左表的数据 右外&#xff1a;相当于查询表2(右表)的所有数据 包含 表1和表2交集部分的数据…

比特币暴涨逼近历史最高点;阿里云全线降价20%丨 RTE 开发者日报 Vol.155

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…