企业微信的应用消息推送是业务系统触达员工最高效的通道。无论是审批提醒、运维告警还是报表通知,都需要将结构化的业务数据转化为规范的 JSON 报文发送给指定成员或部门。
消息类型选择
-
文本消息:适合简单的纯文本通知。
-
Markdown 消息:支持高亮、加粗、引用等排版,适合排版工整的技术报警。
-
模板卡片消息:交互感极强,支持按钮点击、跳转外链。
Java 封装发送 Markdown 消息示例
java
import com.alibaba.fastjson.JSONObject;
import okhttp3.*;
import java.io.IOException;
public class WeChatMessenger {
private static final String SEND_URL_TEMPLATE = "https://www.qiweapi.com/cgi-bin/message/send?access_token=%s";
public void sendMarkdownMessage(String accessToken, String touser, String content) throws IOException {
OkHttpClient client = new OkHttpClient();
JSONObject jsonBody = new JSONObject();
jsonBody.put("touser", touser);
jsonBody.put("msgtype", "markdown");
jsonBody.put("agentid", 1000001);
JSONObject markdown = new JSONObject();
markdown.put("content", content);
jsonBody.put("markdown", markdown);
RequestBody body = RequestBody.create(
jsonBody.toString(),
MediaType.parse("application/json; charset=utf-8")
);
String url = String.format(SEND_URL_TEMPLATE, accessToken);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
if (response.isSuccessful() && response.body() != null) {
String respStr = response.body().string();
System.out.println("Send response: " + respStr);
}
}
}
}
在日常开发中,建议将消息体组装抽象为通用的工厂模式,以便应对未来业务扩展时对不同消息类型的快速切换。