机器人通知(SpringBoot)"/>
钉钉机器人通知(SpringBoot)
我们在工作中钉钉办公需要一些提醒或者通知,需要用到钉钉机器人来代替我们完成一些重复性的工作,看到钉钉有个机器人的自定义文档。
=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.ssl.SSLContext;@Configuration
public class RestTemplateConfig {/*** 服务器返回数据(response)的时间*/private static final Integer READ_TIME_OUT = 6000;/*** 连接上服务器(握手成功)的时间*/private static final Integer CONNECT_TIME_OUT = 6000;@Beanpublic RestTemplate restTemplate(){ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient());return new RestTemplate(requestFactory);}@Beanpublic 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、HTTPSRegistry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>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 {@AutowiredRestTemplate 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==6970bbc0e0c73bc9bc6f4c7770c9d0280481b16a0adc628248444d459fe38bac
写完之后我们启动服务或者打成jar包就好了
3.效果
具体代码可以参考
更多推荐
钉钉机器人通知(SpringBoot)
发布评论