当前位置: 首页 > news >正文

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

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

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

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.lryc.cn/news/309275.html

相关文章:

  • 基于springboot的大型商场应急预案管理系统论文
  • 强化学习嵌入Transformer(代码实践)
  • 决定西弗吉尼亚州地区版图的关键历史事件
  • LeetCode_22_中等_括号生成
  • Verilog(未完待续)
  • 【Linux实践室】Linux初体验
  • Flutter中高级JSON处理:使用json_serializable进行深入定制
  • 华为OD技术面试案例4-2024年
  • 【TestNG】(4) 重试机制与监听器的使用
  • “智农”-高标准农田
  • 利用 lxml 库的XPath()方法在网页中快速查找元素
  • nginx---------------重写功能 防盗链 反向代理 (五)
  • unity shaderGraph实例-物体线框显示
  • 分类问题经典算法 | 二分类问题 | Logistic回归:公式推导
  • redis实现分布式全局唯一id
  • Sora引发安全新挑战
  • Android 14.0 Launcher3定制化之桌面分页横线改成圆点显示功能实现
  • SemiDrive E3 MCAL 开发系列(3)– Wdg 模块的使用
  • AI推荐算法的演进之路
  • Tomcat安装,配置文件、组件
  • 精读《React Hooks 最佳实践》
  • varFormatter 数据格式化库 以性能优先的 快速的 内存对象格式转换
  • 基于PHP的在线英语学习平台
  • 基于微信小程序电影院订票选座系统 (后台JSP+JDBC+Mysql)答辩常规问题和如何回答(答辩指导)
  • C++知识点总结(22):模拟算法真题 ★★★☆☆《安全警报》
  • 蓝桥杯练习系统(算法训练)ALGO-993 RP大冒险
  • Unity的相机跟随和第三人称视角
  • 哪个超声波清洗机品牌值得入手?销量榜品牌值得选购!
  • Stwo:基于Circle STARK和M31的下一代STARK证明系统
  • 笔记本以太网集线器Hub充电可能导致网络异常(貌似是我把服务器网关写错了)