栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

钉钉机器人通知(SpringBoot)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

钉钉机器人通知(SpringBoot)

我们在工作中钉钉办公需要一些提醒或者通知,需要用到钉钉机器人来代替我们完成一些重复性的工作,看到钉钉有个机器人的自定义文档。

https://developers.dingtalk.com/document/robots/custom-robot-access?spm=ding_open_doc.document.0.0.6284657351Hh8K#topic-2026027

如何实现自定义机器人? 1.首先在钉钉群中添加机器人获取webhook地址



注意这里 :
如果选择自定义关键字 在内容的开头一定要和自定义关键字一样
如:关键字设置为:通知
那么内容的开头一定是:通知XXXXX

2.代码实现

1.搭建springboot项目
使用RestTemplate发送HTTP请求

package com.bky.dingding;

import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.ssl.SSLContextBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

import javax.net.ssl.SSLContext;


@Configuration
public class RestTemplateConfig {
    
    private static final Integer READ_TIME_OUT = 6000;
    
    private static final Integer CONNECT_TIME_OUT = 6000;

    @Bean
    public RestTemplate restTemplate(){
        ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient());
        return new RestTemplate(requestFactory);
    }

    @Bean
    public HttpClient httpClient(){
       //默认证书有效
        SSLConnectionSocketFactory sslConnectionSocketFactory = SSLConnectionSocketFactory.getSocketFactory();
        SSLContext sslContext = null;
        try {
            //信任所有的SSL证书
            sslContext = SSLContextBuilder.create().setProtocol(SSLConnectionSocketFactory.SSL)
                    .loadTrustMaterial((x, y) -> true).build();
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (sslContext != null) {
            sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext);
        }
        // 支持HTTP、HTTPS
        Registry registry = RegistryBuilder.create()
                .register("http", PlainConnectionSocketFactory.getSocketFactory())
                .register("https", sslConnectionSocketFactory)
                .build();
        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry);
        connectionManager.setMaxTotal(200);
        connectionManager.setDefaultMaxPerRoute(100);
        connectionManager.setValidateAfterInactivity(2000);
        RequestConfig requestConfig = RequestConfig.custom()
                // 服务器返回数据(response)的时间,超时抛出read timeout
                .setSocketTimeout(READ_TIME_OUT)
                // 连接上服务器(握手成功)的时间,超时抛出connect timeout
                .setConnectTimeout(CONNECT_TIME_OUT)
                // 从连接池中获取连接的超时时间,超时抛出ConnectionPoolTimeoutException
                .setConnectionRequestTimeout(1000)
                .build();
        return HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).setConnectionManager(connectionManager).build();
    }
}

```java
@Service
public class DingRobart {
    @Autowired
    RestTemplate restTemplate;
    @Value("${dingding.robart.webhook}")
    private String URL;
    private ReqBody reqBody = new ReqBody(new At(null, true), new Text("新的一天,大家发一下日报,元气满满"), "text");
    //private ReqBody reqBody1 = new ReqBody(new At(null, true), new Text("工作一周辛苦了,大家发一下周报"), "text");
    //private ReqBody reqBody2 = new ReqBody(new At(null, true), new Text("大家好!"), "text");
    //private ReqBody reqBody3 = new ReqBody(new At(null, true), new Text("大家早上好,开始努力搬砖吧!"), "text");
    //
    @Scheduled(cron = "0 00 9 ? * MON-FRI")
    public JSONObject ribaoEveryDay() {
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", "application/json");
        System.out.println("开始日报");
        String respBody = restTemplate.postForObject(URL, reqBody, String.class);
        return JSONObject.parseObject(respBody);
    }
}

application.properties文件的配置

# 应用名称
spring.application.name=dingding
# 把钉钉群里创建机器人的那个URL贴到这里替换掉
dingding.robart.webhook=https://oapi.dingtalk.com/robot/send?access_token=6970bbc0e0c73bc9bc6f4c7770c9d0280481b16a0adc628248444d459fe38bac

写完之后我们启动服务或者打成jar包就好了

3.效果

具体代码可以参考

https://gitee.com/easyu_stan/dingding-demo

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/591545.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号