美文网首页
android 发送消息到钉钉群

android 发送消息到钉钉群

作者: 河里的枇杷树 | 来源:发表于2021-03-17 18:42 被阅读0次

    1. 钉钉群添加机器人,

    具体步骤参考 官网链接,我一般选择的 “安全设置方式” 为 “加签”。

    image.png

    设置成功以后 ,webhook秘钥 我们后面会用到。

    2. 添加依赖

    build.gradle 中 添加如下 依赖。

    implementation "commons-codec:commons-codec:1.11"
    implementation 'com.squareup.okhttp3:okhttp:3.14.9'
    

    3. copy DingDingUtils 到项目中

    文件在最后面,直接 copy 就行

    4. 使用

    直接调用 对应方法就行。

    DingDingUtils.sendText(“*****”, new String[]{"***", "***"}, false);
    

    附件:DingDingUtils.class

    package com.***.***.utils;
    
    
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import com.xianghuanji.util.utils.LogUtil;
    
    import org.apache.commons.codec.binary.Base64;
    
    import java.net.URLEncoder;
    import java.util.Objects;
    
    import javax.crypto.Mac;
    import javax.crypto.spec.SecretKeySpec;
    
    import okhttp3.MediaType;
    import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.RequestBody;
    import okhttp3.Response;
    
    public class DingDingUtils {
    
        private static final String DINDING_URL = "你自己的 webhook ";
        private static final String DINDING_SECRET = "你自己的 秘钥 ";
    
    
    
        private static String getCompliteUrl() throws Exception {
            Long timestamp = System.currentTimeMillis();
            String secret = DINDING_SECRET;
    
            String stringToSign = timestamp + "\n" + secret;
            Mac mac = Mac.getInstance("HmacSHA256");
            mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
            byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
            String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
    
            return DINDING_URL + "&timestamp=" + timestamp + "&sign=" + sign;
        }
    
    
        private static void send(String textMsg) {
            try {
                OkHttpClient client = new OkHttpClient();//创建OkHttpClient对象。
                MediaType JSON = MediaType.parse("application/json; charset=utf-8");//数据类型为json格式,
                RequestBody body = RequestBody.create(JSON, textMsg);
                Request request = new Request.Builder().url(getCompliteUrl()).post(body).build();
                Response response = client.newCall(request).execute();
    
                if (response.code() == 200 && !(response.body() == null)) {
                    String result = Objects.requireNonNull(response.body()).string();
                    LogUtil.e("发送钉钉成功:" + result);
                } else {
                    LogUtil.e("发送钉钉消息失败");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    
        //发送text格式的消息
        public static void sendText(String mag, String[] atMobile, boolean isAtAll) throws Exception {
            JSONObject object = new JSONObject();
            JSONObject object_text = new JSONObject();
            JSONObject object_at = new JSONObject();
    
            object_text.put("content", mag);
            object_at.put("atMobiles", atMobile);
            object_at.put("isAtAll", isAtAll);
    
            object.put("msgtype", "text");
            object.put("text", object_text);
            object.put("at", object_at);
    
            send(String.valueOf(object));
        }
    
    
        //发送markdown格式的消息
        public static void sendMarkdown(String title, String text, String[] atMobile, boolean isAtAll) throws Exception {
            JSONObject object = new JSONObject();
            JSONObject object_markdown = new JSONObject();
            JSONObject object_at = new JSONObject();
    
            object_markdown.put("title", title);
            object_markdown.put("text", text);
            object_at.put("atMobiles", atMobile);
            object_at.put("isAtAll", isAtAll);
    
            object.put("msgtype", "markdown");
            object.put("markdown", object_markdown);
            object.put("at", object_at);
    
            send(String.valueOf(object));
        }
    
        //整体跳转ActionCard类型
        public static void sendActionCard(String title, String text, String singleTitle, String singleURL, int btnOrientation, int hideAvatar) throws Exception {
            JSONObject object = new JSONObject();
            JSONObject object_actionCard = new JSONObject();
    
            object_actionCard.put("title", title);
            object_actionCard.put("text", text);
            object_actionCard.put("hideAvatar", hideAvatar);
            object_actionCard.put("btnOrientation", btnOrientation);
            object_actionCard.put("singleTitle", singleTitle);
            object_actionCard.put("singleURL", singleURL);
    
            object.put("actionCard", object_actionCard);
            object.put("msgtype", "actionCard");
    
            send(String.valueOf(object));
        }
    
        //独立跳转ActionCard类型
        public void sendActionCard1(String title, String text, String btnsTitle1, String btnsTitle2, String actionURL1, String actionURL2, int btnOrientation) throws Exception {
            JSONObject object = new JSONObject();
            JSONObject object_actionCard1 = new JSONObject();
            JSONObject object_btns1 = new JSONObject();
            JSONObject object_btns2 = new JSONObject();
    
            object_btns1.put("title", btnsTitle1);
            object_btns1.put("actionURL", actionURL1);
            object_btns2.put("title", btnsTitle2);
            object_btns2.put("actionURL", actionURL2);
    
            object_actionCard1.put("title", title);
            object_actionCard1.put("text", text);
            object_actionCard1.put("btnOrientation", btnOrientation);
    
            JSONArray btns = new JSONArray();
            btns.add(object_btns1);
            btns.add(object_btns2);
            object_actionCard1.put("btns", btns);
    
            object.put("actionCard", object_actionCard1);
            object.put("msgtype", "actionCard");
    
            send(String.valueOf(object));
        }
    
        //FeedCard类型
        public static void sendFeedCard(String title1, String messageURL1, String picURL1, String title2, String messageURL2, String picURL2) throws Exception {
            JSONObject object = new JSONObject();
            JSONObject object_feedCard = new JSONObject();
            JSONObject object_link1 = new JSONObject();
            JSONObject object_link2 = new JSONObject();
    
            object_link1.put("title", title1);
            object_link1.put("messageURL", messageURL1);
            object_link1.put("picURL", picURL1);
    
            object_link2.put("title", title2);
            object_link2.put("messageURL", messageURL2);
            object_link2.put("picURL", picURL2);
    
            JSONArray links = new JSONArray();
            links.add(object_link1);
            links.add(object_link2);
            object_feedCard.put("links", links);
    
            object.put("feedCard", object_feedCard);
            object.put("msgtype", "feedCard");
    
            send(String.valueOf(object));
        }
    }
    
    

    相关文章

      网友评论

          本文标题:android 发送消息到钉钉群

          本文链接:https://www.haomeiwen.com/subject/wovecltx.html