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请求

packagecom.bky.dingding;
importorg.apache.http.client.HttpClient;
importorg.apache.http.client.config.RequestConfig;
importorg.apache.http.config.Registry;
importorg.apache.http.config.RegistryBuilder;
importorg.apache.http.conn.socket.ConnectionSocketFactory;
importorg.apache.http.conn.socket.PlainConnectionSocketFactory;
importorg.apache.http.conn.ssl.SSLConnectionSocketFactory;
importorg.apache.http.impl.client.HttpClientBuilder;
importorg.apache.http.impl.conn.PoolingHttpClientConnectionManager;
importorg.apache.http.ssl.SSLContextBuilder;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.http.client.ClientHttpRequestFactory;
importorg.springframework.http.client.HttpComponentsClientHttpRequestFactory;
importorg.springframework.web.client.RestTemplate;
importjavax.net.ssl.SSLContext;
@ConfigurationpublicclassRestTemplateConfig {
/*** 服务器返回数据(response)的时间*/privatestaticfinalIntegerREAD_TIME_OUT=6000;
/*** 连接上服务器(握手成功)的时间*/privatestaticfinalIntegerCONNECT_TIME_OUT=6000;
@BeanpublicRestTemplaterestTemplate(){
ClientHttpRequestFactoryrequestFactory=newHttpComponentsClientHttpRequestFactory(httpClient());
returnnewRestTemplate(requestFactory);
    }
@BeanpublicHttpClienthttpClient(){
//默认证书有效SSLConnectionSocketFactorysslConnectionSocketFactory=SSLConnectionSocketFactory.getSocketFactory();
SSLContextsslContext=null;
try {
//信任所有的SSL证书sslContext=SSLContextBuilder.create().setProtocol(SSLConnectionSocketFactory.SSL)
                    .loadTrustMaterial((x, y) ->true).build();
        } catch (Exceptione) {
e.printStackTrace();
        }
if (sslContext!=null) {
sslConnectionSocketFactory=newSSLConnectionSocketFactory(sslContext);
        }
// 支持HTTP、HTTPSRegistry<ConnectionSocketFactory>registry=RegistryBuilder.<ConnectionSocketFactory>create()
                .register("http", PlainConnectionSocketFactory.getSocketFactory())
                .register("https", sslConnectionSocketFactory)
                .build();
PoolingHttpClientConnectionManagerconnectionManager=newPoolingHttpClientConnectionManager(registry);
connectionManager.setMaxTotal(200);
connectionManager.setDefaultMaxPerRoute(100);
connectionManager.setValidateAfterInactivity(2000);
RequestConfigrequestConfig=RequestConfig.custom()
// 服务器返回数据(response)的时间,超时抛出read timeout                .setSocketTimeout(READ_TIME_OUT)
// 连接上服务器(握手成功)的时间,超时抛出connect timeout                .setConnectTimeout(CONNECT_TIME_OUT)
// 从连接池中获取连接的超时时间,超时抛出ConnectionPoolTimeoutException                .setConnectionRequestTimeout(1000)
                .build();
returnHttpClientBuilder.create().setDefaultRequestConfig(requestConfig).setConnectionManager(connectionManager).build();
    }
}
```java@ServicepublicclassDingRobart {
@AutowiredRestTemplaterestTemplate;
@Value("${dingding.robart.webhook}")
privateStringURL;
privateReqBodyreqBody=newReqBody(newAt(null, true), newText("新的一天,大家发一下日报,元气满满"), "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")
publicJSONObjectribaoEveryDay() {
HttpHeadersheaders=newHttpHeaders();
headers.add("Content-Type", "application/json");
System.out.println("开始日报");
StringrespBody=restTemplate.postForObject(URL, reqBody, String.class);
returnJSONObject.parseObject(respBody);
    }



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

3.效果


目录
相关文章
|
1月前
|
人工智能 Java 机器人
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
Spring AI Alibaba集成Ollama,基于Java构建本地大模型应用,支持流式对话、knife4j接口可视化,实现高隐私、免API密钥的离线AI服务。
969 1
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
|
6月前
|
JSON 前端开发 Java
深入理解 Spring Boot 中日期时间格式化:@DateTimeFormat 与 @JsonFormat 完整实践
在 Spring Boot 开发中,日期时间格式化是前后端交互的常见痛点。本文详细解析了 **@DateTimeFormat** 和 **@JsonFormat** 两个注解的用法,分别用于将前端传入的字符串解析为 Java 时间对象,以及将时间对象序列化为指定格式返回给前端。通过完整示例代码,展示了从数据接收、业务处理到结果返回的全流程,并总结了解决时区问题和全局配置的最佳实践,助你高效处理日期时间需求。
789 0
|
6月前
|
存储 Java 数据库
Spring Boot 注册登录系统:问题总结与优化实践
在Spring Boot开发中,注册登录模块常面临数据库设计、密码加密、权限配置及用户体验等问题。本文以便利店销售系统为例,详细解析四大类问题:数据库字段约束(如默认值缺失)、密码加密(明文存储风险)、Spring Security配置(路径权限不当)以及表单交互(数据丢失与提示不足)。通过优化数据库结构、引入BCrypt加密、完善安全配置和改进用户交互,提供了一套全面的解决方案,助力开发者构建更 robust 的系统。
193 0
|
6月前
|
前端开发 安全 Java
Spring Boot 便利店销售系统项目分包设计解析
本文深入解析了基于Spring Boot的便利店销售系统分包设计,通过清晰的分层架构(表现层、业务逻辑层、数据访问层等)和模块化设计,提升了代码的可维护性、复用性和扩展性。具体分包结构包括`controller`、`service`、`repository`、`entity`、`dto`、`config`和`util`等模块,职责分明,便于团队协作与功能迭代。该设计为复杂企业级应用开发提供了实践参考。
251 0
|
3月前
|
JSON 分布式计算 大数据
springboot项目集成大数据第三方dolphinscheduler调度器
springboot项目集成大数据第三方dolphinscheduler调度器
215 3
|
3月前
|
Java 关系型数据库 数据库连接
Spring Boot项目集成MyBatis Plus操作PostgreSQL全解析
集成 Spring Boot、PostgreSQL 和 MyBatis Plus 的步骤与 MyBatis 类似,只不过在 MyBatis Plus 中提供了更多的便利功能,如自动生成 SQL、分页查询、Wrapper 查询等。
323 3
|
3月前
|
Java 关系型数据库 MySQL
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
418 2
|
3月前
|
分布式计算 Java 大数据
springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理
springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理
222 2
|
3月前
|
Java 测试技术 Spring
简单学Spring Boot | 博客项目的测试
本内容介绍了基于Spring Boot的博客项目测试实践,重点在于通过测试驱动开发(TDD)优化服务层代码,提升代码质量和功能可靠性。案例详细展示了如何为PostService类编写测试用例、运行测试并根据反馈优化功能代码,包括两次优化过程。通过TDD流程,确保每项功能经过严格验证,增强代码可维护性与系统稳定性。
179 0
|
3月前
|
存储 Java 数据库连接
简单学Spring Boot | 博客项目的三层架构重构
本案例通过采用三层架构(数据访问层、业务逻辑层、表现层)重构项目,解决了集中式开发导致的代码臃肿问题。各层职责清晰,结合依赖注入实现解耦,提升了系统的可维护性、可测试性和可扩展性,为后续接入真实数据库奠定基础。
332 0

热门文章

最新文章