thingboard告警信息格式美化

原始报警json内容:

javascript 复制代码
{ 

	"severity": "CRITICAL",
	"acknowledged": false,
	"cleared": false,
	"assigneeId": null,
	"startTs": 1739801102349,
	"endTs": 1739801102349,
	"ackTs": 0,
	"clearTs": 0,
	"assignTs": 0,
	"propagate": false,
	"propagateToOwner": false,
	"propagateToTenant": false,
	"propagateRelationTypes": [],
	"originatorName": "DTU-863569063344204",
	"originatorLabel": "DTU-863569063344204",
	"assignee": null,
	"name": "Inactivity TimeOut",
	"status": "ACTIVE_UNACK",
	"details": {}
}

报警格式美化js代码:

javascript 复制代码
var date = new Date();
var year = date.getFullYear();
var month = ('0' + (date.getMonth() + 1)).slice(-2);
var day = ('0' + date.getDate()).slice(-2);
var hours = ('0' + date.getHours()).slice(-2);
var minutes = ('0' + date.getMinutes()).slice(-2);
var seconds = ('0' + date.getSeconds()).slice(-2);

var currentTime = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;

// 解析告警时间
function formatUnixTime(unixTimestamp) {
    var date = new Date(unixTimestamp);
    var year = date.getFullYear();
    var month = ('0' + (date.getMonth() + 1)).slice(-2);
    var day = ('0' + date.getDate()).slice(-2);
    var hours = ('0' + date.getHours()).slice(-2);
    var minutes = ('0' + date.getMinutes()).slice(-2);
    var seconds = ('0' + date.getSeconds()).slice(-2);
    return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
}

// 格式化报警级别
var severityMap = {
    "CRITICAL": "🔥 **严重告警**",
    "MAJOR": "⚠ **主要告警**",
    "MINOR": "🔶 **次要告警**",
    "WARNING": "ℹ **警告**"
};
var severity = severityMap[msg.severity] || "⚠ **未知级别**";

// 确认状态
var acknowledged = msg.acknowledged ? "✅ 已确认" : "❌ 未确认";
var cleared = msg.cleared ? "✅ 已清除" : "❌ 未清除";

// 组装格式化的告警信息
var messageContent =
    "📢 **设备告警通知** 📢\n" +
    "------------------------------\n" +
    "📅 **当前时间**: " + currentTime + "\n" +
    "📍 **设备名称**: " + msg.originatorName + "\n" +
    "🔖 **设备标识**: " + msg.originatorLabel + "\n" +
    "⚠ **告警名称**: " + msg.name + "\n" +
    "🚨 **告警级别**: " + severity + "\n" +
    "🕒 **告警开始时间**: " + formatUnixTime(msg.startTs) + "\n" +
    "🕒 **告警结束时间**: " + formatUnixTime(msg.endTs) + "\n" +
    "🔎 **告警状态**: " + msg.status + "\n" +
    "📌 **确认状态**: " + acknowledged + "\n" +
    "📌 **清除状态**: " + cleared + "\n" +
    "------------------------------";

var newMsg = {
    "msgtype": "text",
    "text": {
        "content": messageContent,
        "mentioned_list": ["wangqing", "@all"],
        "mentioned_mobile_list": ["13800001111", "@all"]
    }
};

return {
    msg: newMsg
};

输出到企业微信消息:

相关推荐
云烟成雨TD1 天前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
lwx9148521 天前
Linux-Shell算术运算
linux·运维·服务器
于慨1 天前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
石小石Orz1 天前
油猴脚本实现生产环境加载本地qiankun子应用
前端·架构
swg3213211 天前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
从前慢丶1 天前
前端交互规范(Web 端)
前端
gelald1 天前
SpringBoot - 自动配置原理
java·spring boot·后端
殷紫川1 天前
深入理解 AQS:从架构到实现,解锁 Java 并发编程的核心密钥
java
一轮弯弯的明月1 天前
贝尔数求集合划分方案总数
java·笔记·蓝桥杯·学习心得
CHU7290351 天前
便捷约玩,沉浸推理:线上剧本杀APP功能版块设计详解
前端·小程序