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
};

输出到企业微信消息:

相关推荐
野犬寒鸦19 分钟前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
wenzhangli719 分钟前
ooderA2UI BridgeCode 深度解析:从设计原理到 Trae Solo Skill 实践
java·开发语言·人工智能·开源
HalvmånEver22 分钟前
Linux:线程互斥
java·linux·运维
rainbow688929 分钟前
深入解析C++STL:map与set底层奥秘
java·数据结构·算法
灵感菇_33 分钟前
Java 锁机制全面解析
java·开发语言
indexsunny33 分钟前
互联网大厂Java面试实战:Spring Boot微服务在电商场景中的应用与挑战
java·spring boot·redis·微服务·kafka·spring security·电商
娇娇乔木1 小时前
模块十一--接口/抽象方法/多态--尚硅谷Javase笔记总结
java·开发语言
saber_andlibert1 小时前
TCMalloc底层实现
java·前端·网络
逍遥德1 小时前
如何学编程之01.理论篇.如何通过阅读代码来提高自己的编程能力?
前端·后端·程序人生·重构·软件构建·代码规范
wangjialelele1 小时前
平衡二叉搜索树:AVL树和红黑树
java·c语言·开发语言·数据结构·c++·算法·深度优先