尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ThingsBoard 集成生命周期事件通知模板化指南:参数、文本修饰与国际化详解

ThingsBoard 集成生命周期事件通知模板化指南:参数、文本修饰与国际化详解 物联网后端数据可视化消息队列【免费下载链接】thingsboardAll-in-one IoT Platform - Device management, data collection, processing and visualization.项目地址https://gitcode.com/GitHub_Trending/th/thingsboard点击查看免费下载本篇技术指南讲解 ThingsBoard 物联网平台中「集成生命周期事件」通知Integration lifecycle event notification的模板化与本地化能力。当 MQTT、HTTP、OPC-UA 等设备集成在启动、更新或停止时发生状态变化尤其是启动失败时平台可向管理员发送通知而通知的主题、消息内容与按钮文案均支持使用模板参数动态生成并可按接收者语言设置自动翻译。读完本文你将掌握全部可用模板参数、大小写/首字母大写修饰符、translate本地化语法以及这些参数在服务端源码中的实际生成与解析原理可直接用于配置实战。一、集成生命周期事件通知是什么ThingsBoard 的「集成」Integration模块负责与外部系统建立连接例如 MQTT Broker、HTTP 端点、OPC-UA 服务器等。当集成实例的状态发生变化时平台可以触发通知规则将状态变化事件发送给相关人员。围绕该功能仓库中存在一套完整的定义事件触发器IntegrationLifecycleEventTrigger.java 定义了触发器本身其类型为INTEGRATION_LIFECYCLE_EVENT携带integrationId、integrationType、integrationName、event生命周期事件与error异常信息。触发配置IntegrationLifecycleEventNotificationRuleTriggerConfig.java 允许你限定关注的集成类型integrationTypes、指定具体集成integrations、选择通知事件notifyOn并可开启onlyOnError仅在出错时通知。生命周期事件枚举ComponentLifecycleEvent.java 定义了完整的组件状态而集成生命周期通知仅使用其中三种STARTED已启动、UPDATED已更新、STOPPED已停止对应前端模型 notification.models.ts 中ComponentLifecycleEvent枚举的三个取值。在通知规则中你可以配置一个或多个触发事件notifyOn例如仅在集成启动失败时通知onlyOnError truenotifyOn [STARTED]。一旦规则被触发平台就会使用对应的通知模板渲染并发送通知。二、通知模板的模板化与本地化集成生命周期事件通知的主题subject、消息message和按钮button均支持模板化与本地化其行为由本指南所对应的官方说明文档 integration_lifecycle_event.md 定义。模板化的核心规则所有参数名必须用${...}包裹引用例如${recipientFirstName}可用的模板参数取决于模板类型——对于集成生命周期事件通知可用的参数集合固定为本文第三节列出的九项参数值可以通过后缀进一步修饰大写、小写、首字母大写可以通过translate后缀实现通知文案的国际化语言取自接收者个人资料设置默认使用英语。这些模板被保存在通知模板NotificationTemplate中每个投递渠道Web、Email、Slack、SMS、Microsoft Teams、移动端 App 等可分别定义自己的 subject 与 body相关数据模型可见 NotificationTemplate.java 与 DeliveryMethodNotificationTemplate.java。三、可用模板参数总览下表为集成生命周期事件通知模板支持的全部参数前六个来自集成事件本身后四个来自通知接收者参数含义integrationType集成类型如MQTT、HTTP、OPC-UA等integrationName集成的名称integrationId集成的 ID以 uuid 字符串形式表示eventType事件类型取值为started、updated、stopped三者之一action对应动作取值为start、update、stop三者之一error错误文本若集成启动/更新/停止过程发生异常recipientTitle接收者称谓若配置了姓名则显示名与姓否则显示邮箱recipientEmail接收者的邮箱recipientFirstName接收者的名first namerecipientLastName接收者的姓last name需要特别说明的是eventType与action的区别前者是状态结果started/updated/stopped后者是触发动作start/update/stop二者在文案中可以组合使用例如描述集成启动失败的告警场景。参数的源码依据前六个集成相关参数的来源可以从 IntegrationLifecycleEventNotificationInfo.java 的getTemplateData()方法中得到证实return mapOf( integrationId, integrationId.toString(), integrationType, integrationType, integrationName, integrationName, action, action, eventType, eventType.name().toLowerCase(), error, error );可以看到eventType在服务端被转成小写字符串STARTED→started与文档中取值为started、updated、stopped的描述完全对应。而后四个接收者参数的来源则可以在 NotificationProcessingContext.java 的createTemplateContextForRecipient方法中看到return Map.of( recipientTitle, recipient.getTitle(), recipientEmail, Strings.nullToEmpty(recipient.getEmail()), recipientFirstName, Strings.nullToEmpty(recipient.getFirstName()), recipientLastName, Strings.nullToEmpty(recipient.getLastName()) );四、用后缀修饰参数值除了直接引用参数你还可以为参数值附加修饰后缀对输出文本进行格式化。支持的修饰符如下后缀作用示例upperCase全部转为大写${recipientFirstName:upperCase}→JOHNlowerCase全部转为小写${recipientFirstName:lowerCase}→johncapitalize首字母大写${recipientFirstName:capitalize}→John修饰符的底层实现位于 TemplateUtils.javaprivate static final MapString, UnaryOperatorString FUNCTIONS Map.of( upperCase, String::toUpperCase, lowerCase, String::toLowerCase, capitalize, StringUtils::capitalize );模板解析正则\$\{(.?)(:[a-zA-Z])?\}会同时提取参数名与可选的:后缀部分若参数不存在模板原样保留避免产生空字段。五、使用translate实现通知本地化通知模板还支持国际化使用translate后缀即可将翻译键translation key渲染为对应语言的文案${some.translation.key:translate}工作流程如下假设你在平台中自定义了一个翻译键custom.notifications.greetings其值为Hello, ${recipientFirstName}!模板中写入${custom.notifications.greetings:translate}通知发送时平台会先按接收者语言解析该翻译键得到Hello, ${recipientFirstName}!再对结果中的嵌套参数继续进行二次解析最终渲染为Hello, John!。这里有一个重要的机制细节translate会先完成翻译再递归处理翻译文本内部的${...}参数。这一行为可以在 TemplateUtils.java 的源码中得到确认function customFunctions.get(functionName); if (function ! null) { value function.apply(key); value processTemplate(value, context, null); // 对翻译结果递归解析参数 }关于语言locale的取值官方文档明确所需的语言取自接收者的个人资料设置默认使用英语。这一点在服务端实现中也有对应逻辑——NotificationProcessingContext.java 中接收者为用户User时取user.getLocale()否则回退到Locale.US只有当模板确实包含接收者相关变量或translate键时才会执行带 locale 的模板处理以提升批量发送场景的性能。六、实战示例集成启动失败通知官方文档给出了一个完整的示例场景。假设名为My integration的 MQTT 集成启动失败使用以下模板${integrationType} integration ${integrationName} - ${action} failure: ${error} {:copy-code}将被渲染为MQTT integration My integration - start failure: failed to connect to MQTT broker逐段拆解其渲染过程${integrationType}→MQTT集成类型${integrationName}→My integration集成名称${action}→start触发动作因为本次事件是启动${error}→failed to connect to MQTT broker服务端捕获到的具体错误文本来自IntegrationLifecycleEventTrigger中携带的Throwable。在此基础上你可以组合出更丰富的文案例如[ALERT] ${integrationType} integration ${integrationName} ${eventType} unexpectedly (${action} failure): ${error} Recipient: ${recipientTitle} ${recipientEmail}结合上一节介绍的修饰符与本地化能力还可以写出${integrationName:upperCase} ${eventType:capitalize} — ${custom.notifications.integration.failure:translate}七、如何创建与触发此类通知配置路径要在你的 ThingsBoard 环境中使用上述模板化能力需要完成以下配置均为查看与配置方式仓库本身为只读代码库创建通知模板在平台「通知中心 → 通知模板」中新建模板模板类型选择集成生命周期事件在 Web/Email/Slack 等各投递渠道的 subject、message 与按钮文案中写入上文的${...}模板创建通知规则新建通知规则触发器类型选择集成生命周期事件在触发配置中按需指定integrationTypes关注哪些类型的集成或integrations关注哪些具体集成勾选notifyOn事件STARTED/UPDATED/STOPPED并按需开启onlyOnError仅错误时通知相关字段定义见 IntegrationLifecycleEventNotificationRuleTriggerConfig.java 及前端模型 notification.models.ts指定接收者在规则中配置接收者用户/用户组等平台会自动填充recipientTitle、recipientEmail、recipientFirstName、recipientLastName四个接收者参数并按其个人资料语言设置完成translate本地化。配置完成后任何匹配规则的集成生命周期事件例如 MQTT 集成启动失败都会触发通知且通知文案会按照上述模板规则动态生成、格式化并本地化。本指南对应的官方帮助文档 integration_lifecycle_event.md 与通知模板相关的其余帮助文件位于 notification 帮助目录可供你在配置时随时查阅。赞分享物联网后端数据可视化消息队列【免费下载链接】thingsboardAll-in-one IoT Platform - Device management, data collection, processing and visualization.项目地址https://gitcode.com/GitHub_Trending/th/thingsboard点击查看免费下载相关推荐ThingsBoard 规则引擎生命周期事件通知模板化完整指南参数、修饰符与本地化实战ThingsBoard 规则引擎生命周期事件通知模板化完整指南参数、修饰符与本地化实战 导读 本篇指南围绕 ThingsBoard 通知Notificati物联网后端数据可视化消息队列ThingsBoard 报告生成通知模板化指南参数、值修饰与本地化详解ThingsBoard 报告生成通知模板化指南参数、值修饰与本地化详解 导读 在 ThingsBoard 中当定时或手动触发的报表任务Report Job物联网后端数据可视化消息队列ThingsBoard 告警评论通知模板化指南参数、修饰符与国际化实战ThingsBoard 告警评论通知模板化指南参数、修饰符与国际化实战 本指南围绕 ThingsBoard 通知中心的「告警评论Alarm Comment物联网后端数据可视化消息队列上一篇终极指南PC版微信QQ防撤回补丁完整教程告别对方已撤回的遗憾下一篇CANN ops-cv 文档中心导航指南算子构建、调用与开发的学习路线全景创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表