Java 通过智能微秘书向微信群定时推送每日新闻
想要利用 Java 自动化地将新闻或通知推送到微信社群?本文将演示如何基于 Spring Boot 集成智能微秘书(智能微秘书是对 Wechaty 的封装),通过调用的其 OpenAPI 接口,结合天行数据的新闻接口,实现每日清晨定时向指定微信群推送包含标题列表和早安寄语的消息。
准备条件
在开始编码前,请确保具备以下基础环境和资源:
- 开发环境:Java 运行环境及一个可运行的 Spring Boot 项目。
- 外部依赖:
Hutool(用于 HTTP 请求及 JSON 处理)、Lombok(简化实体类代码)。 - 数据源:已注册天行数据账号并申请【每日新闻简报】API 接口权限。
- 微信推送通道:
- 访问智能微秘书官网进行注册,该工具基于
Wechaty封装,提供了更易用的 WebAPI 来操作微信。 - 登录个人中心获取个人的
apiKey,后续 API 调用需鉴权使用。 - 注意:建议使用专门的微信号或扫码授权方式,避免影响主号正常使用。
- 访问智能微秘书官网进行注册,该工具基于
- 服务器:由于涉及定时任务和微信长连接保持,建议部署在稳定的云服务器上。
核心操作原理
整体流程分为三步:第一,通过定时任务触发新闻抓取;第二,组装符合智能微秘书规范的 JSON 消息体;第三,POST 请求发送至微信房间(群聊)。智能微秘书的关键在于通过 roomName 定位目标群组,并通过 type 字段定义消息类型(如文字、图片等)。
代码实现步骤
第一步:定义消息传输对象 (VO)
为了规范发送给智能微秘书的数据结构,我们需要创建一个实体类。该类对应智能微秘书 API 要求的参数,包括消息类型、内容、URL 卡片信息等。
package com.shiyi.vo;
import lombok.Data;
/**
* 微信消息推送实体类
*/
@Data
public class WeiZhiMiShuVO {
/**
* 消息类型:1 文字 2 图片url 3 图片base64 4 url卡片链接
*/
private Integer type;
/**
* 消息内容,如果type为1必填,内容换行使用\n
*/
private String content;
/**
* type 为2,3,4必填,图片地址,或者文件地址
*/
private String url;
/**
* type 为4必填,卡片链接的描述
*/
private String description;
/**
* type 为4必填,卡片链接的缩略图
*/
private String thumbnailUrl;
/**
* type 为4必填,卡片标题内容
*/
private String title;
}
第二步:构建推送服务逻辑
在 Service 层编写核心方法。该方法接收前端抓取的新闻数据(JSON格式),解析出标题列表,拼接成带有问候语的字符串,然后通过 Hutool 发起 POST 请求。
/**
* 将每日新闻推送到微信群中
*/
@Override
public void sendWechat(JSONObject contentObject) {
// 1. 设置接口地址
String url = WEI_MI_SHU_API + "/openapi/v1/chat/room";
// 2. 初始化消息体
WeiZhiMiShuVO weiZhiMiShuVO = new WeiZhiMiShuVO();
weiZhiMiShuVO.setType(1); // 1代表纯文本
// 3. 拼装消息内容
JSONArray array = contentObject.getJSONArray("list");
StringBuilder sb = new StringBuilder("今天是:" + contentObject.getString("todayDate") + ",早安🌞🌞🌞\n");
int index = 1;
for (Object o : array) {
JSONObject item = (JSONObject) o;
sb.append(index).append(". ").append(item.getString("title")).append("\n");
index++;
}
// 添加详情页链接
sb.append("详情请点击:https://88688.team/articles/")
.append(contentObject.getString("aid")).append(" 查看~\n");
// 添加自定义早安寄语
sb.append("\n【早安寄语】").append(goodMorning());
System.out.println("发送的消息为:" + sb.toString());
weiZhiMiShuVO.setContent(sb.toString());
// 4. 遍历发送配置的所有微信群
for (String str : SEND_GROUP) {
JSONObject object = new JSONObject();
object.put("apiKey", WEI_MI_SHU_KEY); // 替换为你的真实 Key
object.put("roomName", str); // 群名称或 Room ID
object.put("message", weiZhiMiShuVO);
HttpUtil.createPost(url)
.body(JSON.toJSONString(object))
.execute()
.body();
}
}
第三步:配置定时调度控制器
在 Controller 层暴露接口并绑定定时任务。Spring Boot 默认支持 @Scheduled 注解。示例配置为每天凌晨 5:20 执行。
@GetMapping(value = "/getDaysNews")
@Scheduled(cron = "0 20 5 * * ?")
public ResponseResult getDaysNews() {
// 此处应调用获取新闻的逻辑,并在获取成功后调用上述 sendWechat 方法
return articleService.getDaysNews();
}
完成判断与排错
- 验证状态:启动项目后,观察控制台打印的 JSON 数据是否正确,等待设定的 Cron 时间后,检查目标微信群是否收到格式化良好的图文消息。
- Key 失效排查:若返回错误码,首先检查
apiKey是否在智能微秘书后台被重置或过期。 - 网络连通性:确认服务器能正常访问
apishuzhi.com(智能微秘书域名)及天行数据 API 的地址。 - 群名匹配:
roomName必须与微信群名称完全一致,或者使用 Wechaty 生成的唯一 RoomID 以保证稳定性。
以上就是基于 Java 和智能微秘书向微信群定时推送内容的详细内容,更多关于 Spring Boot 微信自动化交互的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













