一、背景

随着业务量增长,传统人工核查错误订单模式已难以满足时效性要求。为解决漏单风险及响应滞后问题,需构建自动化告警机制。通过配置企业微信机器人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

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐