企业微信机器人配置webhook自动推送错误订单信息
一、背景
随着业务量增长,传统人工核查错误订单模式已难以满足时效性要求。为解决漏单风险及响应滞后问题,需构建自动化告警机制。通过配置企业微信机器人Webhook接口,系统中标记异常的订单数据(如支付超时、地址无效等),以即时消息形式同步至开发运维群组。该方案能有效缩短问题发现周期,降低人为疏漏概率,保障业务流程顺畅运行,同时提升跨部门协作效率。
二、机器人配置流程
1.打开企业微信→创建群聊→在群的右上方点击(...)选择消息推送

2.点击自定义消息推送

3.填写基本信息,复制webhook地址

三、Java代码集成微信机器人
1.配置推送工具
import java.util.Arrays;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Mono;
import willand.com.cloud.customer.common.utils.DateUtil;
import willand.com.cloud.customer.common.utils.HttpUtils;
@Slf4j
public class WeXinUtil {private static String warnWebHook = "****请修改为你的企业微信webhook地址";private static String applicationName = "****请修改为你的项目名称";public static void sendWarnMessage(String message, boolean notifyAll, String env) {// 本地环境和测试正式环境颜色不同String envStr = "<font color=\"warning\">%s</font> \n";if (!env.equals("test") && !env.equals("formal")) {envStr = "<font color=\"comment\">%s</font> \n";}String content = String.format("应用[%s]报警\n >环境:" + envStr + " >时间:%s \n >内容:%s", applicationName, env,DateUtil.getBeijingTime(), message);JSONObject body = new JSONObject();body.put("msgtype", "markdown");body.put("markdown", new JSONObject());body.getJSONObject("markdown").put("content", content);if (notifyAll) {body.getJSONObject("markdown").put("mentioned_list", Arrays.asList("@all"));}// 发送到企业微信群中sendWeXinMessage(warnWebHook, body);}public static void sendWarnMessage(String url, String message) {String content = String.format("应用[%s]报警\n" + " >时间:%s \n >内容:%s", applicationName, DateUtil.getBeijingTime(),message);JSONObject body = new JSONObject();body.put("msgtype", "markdown");body.put("markdown", new JSONObject());body.getJSONObject("markdown").put("content", content);// 发送到企业微信群中sendWeXinMessage(url, body);}// 通用机器人消息发送public static void sendCommonMessage(String url, JSONObject body) {// 发送到企业微信群中sendWeXinMessage(url, body);}private static void sendWeXinMessage(String url, JSONObject body) {Mono<String> resultMono = HttpUtils.post(url, body, null);resultMono.subscribe(value -> {JSONObject result = JSON.parseObject(value);// 如果有异常打印出来if (result.getInteger("errcode") != 0) {log.warn("warnWebHook 结果异常: " + value);}}, error -> log.error(error.getMessage(), error));}}
2.配置测试接口Service
@Autowired
private Environment env; public ResponseEntity<String> sendWarnMessage() {String param="orderNumber:1234";//env为服务环境String activeProfile = env.getProperty("spring.profiles.active");WeXinUtil.sendWarnMessage("test订单推送SF失败,请关注!" + ",param:" + param , false, activeProfile); return null;}
四、相关资料
企业微信官方资料:https://developer.work.weixin.qq.com/document/path/99110
