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

钉钉机器人发送excel表(简易版)

首先要先进入企业内部成为管理员,因为在钉钉pc端自己定义的机器人只有Webhook,没有企业内部机器人的appkey和appsecert,然后就拿着这两个去获取其他id最后用代码实现

进入钉钉管理后台,更新机器人发送互动卡片(普通版) - 钉钉开放平台,然后登录,去创建一个自己可以测试的企业,现在去创建一个企业,然后创建一个企业内部群,在钉钉后台开发管理创建企业内部群

然后点击我的后台 

如果自己是管理员,就直接点击创建应用,如果不是就会象我这样,要去找群主给自己一个管理员权限 

进去后,然后点击机器人,创建应用 

创建应用 

创建好够就去点机器人 

 

进入里面后就是这样,我的机器人是已经上线了,所以不用管,然后在添加应用能力翻到最下面,添加机器人

 添加机器人

然后去点击权限配置,在搜索栏输入qyapi_robot_sendmsg

 然后申请权限,最后点击版本与发布,然后点击发布或者是上线,我的是完成的,不用管

 然后再钉钉上去找到自己的创建的钉钉群,然后就去创建机器人,找到企业机器人

找到自己的创建的机器人
应用他就行了

 然后回到这个页面

他就会变成这样 

然后翻到最下面 选择

获取到appkey和aooSecret了

已存在的企业内部群,点这个链接根据corpid选择会话JSAPI获取。需要手机钉钉扫描调试获取此参数,然后点这个

 点这个

用手机扫码,然后点击运行测试,选择自己的企业内部的群,在调式结果获取到chatId 

最后根据这个代码

package org.lanqiao;

import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiMediaUploadRequest;
import com.dingtalk.api.response.OapiMediaUploadResponse;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.taobao.api.FileItem;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

public class FileUploadAndShare {
    private static final String APP_KEY = "";
    private static final String APP_SECRET = "";
    private static final String CHAT_ID = "";

    public static String getAccessToken() {
        String url = "https://oapi.dingtalk.com/gettoken?appkey=" + APP_KEY + "&appsecret=" + APP_SECRET;
        try {
            URL obj = new URL(url);
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();
            con.setRequestMethod("GET");

            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            Map<String, Object> responseMap = new Gson().fromJson(response.toString(), new TypeToken<Map<String, Object>>(){}.getType());
            System.out.println((String) responseMap.get("access_token"));
            return (String) responseMap.get("access_token");
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public static String uploadFile(String accessToken, File file) {
        try {
            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/media/upload");
            OapiMediaUploadRequest req = new OapiMediaUploadRequest();
            req.setType("file");
            FileItem item = new FileItem(file);
            req.setMedia(item);
            req.setTopContentType("multipart/form-data");
            OapiMediaUploadResponse rsp = client.execute(req, accessToken);
            System.out.println(rsp.getBody());

            Map<String, Object> responseMap = new Gson().fromJson(rsp.getBody(), new TypeToken<Map<String, Object>>(){}.getType());
            String s = (String) responseMap.get("media_id");
            return s;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }


    public static void shareFile(String accessToken, String chatId, String mediaId) {
        String url = "https://oapi.dingtalk.com/chat/send?access_token=" + accessToken;
        try {
            URL obj = new URL(url);
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();
            con.setRequestMethod("POST");
            con.setDoOutput(true);
            con.setRequestProperty("Content-Type", "application/json");

            Map<String, Object> requestBody = new HashMap<>();
            requestBody.put("chatid", chatId);
            Map<String, Object> msg = new HashMap<>();
            msg.put("msgtype", "file");
            Map<String, String> file = new HashMap<>();
            file.put("media_id", mediaId);
            msg.put("file", file);
            requestBody.put("msg", msg);

            String jsonInputString = new Gson().toJson(requestBody);
            try(OutputStream os = con.getOutputStream()) {
                byte[] input = jsonInputString.getBytes("utf-8");
                os.write(input, 0, input.length);
            }

            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            System.out.println("Response: " + response.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        String accessToken = getAccessToken();
        if (accessToken != null) {
            File file = new File("C:\\Users\\chenxufei\\Desktop\\tag_import_template(1).xlsx");
            String mediaId = uploadFile(accessToken, file);
            if (mediaId != null) {
                shareFile(accessToken, CHAT_ID, mediaId);
            }
        }
    }
}

 获取到id依次给,mian方法里面file给自己excel表地址,然后运行就可以了,如果报错就有可能没有导入包,把import的包复制到ai去问。


http://www.kler.cn/a/456366.html

相关文章:

  • 探索 .idea 文件夹:Java Maven 工程的隐形守护者
  • 实战案例——ZooKeeper集群部署(新手教程超详细)
  • 图片转成oled使用的字模数据
  • 【通信网络】二层基础:03 二层转发基础
  • logback之pattern详解以及源码分析
  • 如何使用Porcupine做一个安卓端语音唤醒demo
  • 使用ArcGIS/ArcGIS pro绘制六边形/三角形/菱形渔网图
  • vim文本编辑器常用命令和快捷键
  • Modern C++ std::atomic简介
  • neo4j无法导入csv文件
  • 渗透测试入门DVWA 教程1:环境搭建
  • 【WRF模拟】最高/最低日气温偏高/偏低的参数调整
  • 【Android】application@label 属性属性冲突报错
  • 潇洒郎:部署Dify, 安装Ollama,Ollama下载模型,Dify配置模型
  • JavaScript甘特图 dhtmlx-gantt
  • 面试场景题系列:设计URL短链
  • 深度学习中的参数初始化
  • Anaconda 安装与虚拟环境创建完整指南
  • jetbrains HTTPS 请求与响应流量分析报告【二】
  • C语言实践中的补充知识 Ⅶ
  • 在国产电脑上运行PDFSAM软件使用pdf分割合并交替混合处理pdf文档
  • 基于 Vant UI + Redisson BitSet 实现签到日历
  • springBoot发布https服务及调用
  • 77、将adaface的mtcnn模型npy文件转成atlas310p模型,并进行推理
  • 【Linux网络编程】第十五弹---传输层深度解析:端口号划分、UDP协议特性与TCP协议全面剖析(含连接管理、流量控制、拥塞控制等)
  • ShenNiusModularity项目源码学习(6:访问控制)