JAVA 推送钉钉消息

 

1,添加钉钉机器人;钉钉群 = > 群设置 => 智能群助手 => 添加机器人 => 自定义机器人

 

 

 

 

 

2,添加SDK配置,下载jar

        <!-- 钉钉消息推送 -->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>alibaba-dingtalk-service-sdk</artifactId>
            <version>1.0.1</version>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>    

下载SDK地址 https://ding-doc.dingtalk.com/doc#/faquestions/vzbp02/8DMhu
至于怎么添加到本地maven和上传到私服库,在其他博客中有详细讲解。

 

3,代码实现

import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiRobotSendResponse;
import com.zy.core.model.BDic;
import com.zy.model.ding.in.SendMessageIn;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

/**
 * @author zxq
 * @description 钉钉推送服务类
 * @date 2020/11/26
 */
@Slf4j
public class DingTalkService {

    //文本消息
    private static final String TEXT = "text";
    private static final String LINK = "link";
    private static final String MARKDOWN = "markdown";
    private static final String ACTION_CARD = "actionCard";
    private static final String FEED_CARD = "feedCard";

    /**
     * @description: 推送消息
     * @param in
     * @return: void
     * @author: zxq
     * @Date: 2020/11/26 13:28
     */
    public static void sendMessage(SendMessageIn in) throws Exception {

        log.info("开始推送钉钉消息:" + in);
        Long timestamp = System.currentTimeMillis();
        String secret = in.getSecret();

        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");

        DingTalkClient client = new DefaultDingTalkClient(in.getWebhook() + "&timestamp=" + timestamp + "&sign=" + sign);
        OapiRobotSendRequest request = new OapiRobotSendRequest();

        OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
        if (in.isAtAll() || in.getMobileList() == null || in.getMobileList().size() == 0) {
            //推送所有人
            at.setIsAtAll(true);
        } else {
            //推送指定用户
            at.setAtMobiles(in.getMobileList());
            at.setIsAtAll(false);
        }
        request.setAt(at);

        //文本消息
        if (TEXT.equals(in.getMsgType())) {
            request.setMsgtype(BDic.DING_TALK_MSG_TYPE.TEXT);
            OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
            text.setContent(in.getText());
            request.setText(text);
        }

        OapiRobotSendResponse response = client.execute(request);
        log.info("钉钉推送返回结果:" + response);

    }

    public static void main(String[] args) throws Exception {

        List<String> mobileList = new ArrayList<>();
        mobileList.add("156xxxxxxxx");

        SendMessageIn in = new SendMessageIn();
        in.setMsgType(TEXT);
        in.setAtAll(false);
        in.setMobileList(mobileList);
        in.setWebhook("https://oapi.dingtalk.com/robot/send?access_token=xxxxx");
        in.setSecret("签");
        in.setText("桃花坞里桃花庵,桃花庵下桃花仙");

        sendMessage(in);

    }

}



import lombok.Data;
import java.util.List;

/**
 * @author zxq
 * @description 发送钉钉消息 入参
 * @date 2020/11/13
 */
@Data
public class SendMessageIn {

    //消息类型
    private String msgType;
    //webhook
    private String webhook;
    //密钥
    private String secret;
    //文本
    private String text;
    //指定对象
    private List<String> mobileList;
    //是否推送所有人
    private boolean isAtAll;
}

 

4,结果

 

 

钉钉开发文档地址:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq

 

posted @ 2020-11-26 13:38  追太阳的小码妹  阅读(4479)  评论(2编辑  收藏  举报