From ba800d853d37d8b4c054d95abfdf036f59bcccea Mon Sep 17 00:00:00 2001 From: Shawn <506895667@qq.com> Date: Tue, 26 Apr 2022 18:19:40 +0800 Subject: [PATCH] fix(rule): republish all available fields if payload template empty --- apps/emqx_rule_engine/src/emqx_rule_outputs.erl | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/apps/emqx_rule_engine/src/emqx_rule_outputs.erl b/apps/emqx_rule_engine/src/emqx_rule_outputs.erl index c0f685d4e..6a858a73b 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_outputs.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_outputs.erl @@ -82,7 +82,7 @@ republish(Selected, #{flags := Flags, metadata := #{rule_id := RuleId}}, topic := TopicTks, payload := PayloadTks}}) -> Topic = emqx_plugin_libs_rule:proc_tmpl(TopicTks, Selected), - Payload = emqx_plugin_libs_rule:proc_tmpl(PayloadTks, Selected), + Payload = format_msg(PayloadTks, Selected), QoS = replace_simple_var(QoSTks, Selected, 0), Retain = replace_simple_var(RetainTks, Selected, false), ?TRACE("RULE", "republish_message", #{topic => Topic, payload => Payload}), @@ -96,7 +96,7 @@ republish(Selected, #{metadata := #{rule_id := RuleId}}, topic := TopicTks, payload := PayloadTks}}) -> Topic = emqx_plugin_libs_rule:proc_tmpl(TopicTks, Selected), - Payload = emqx_plugin_libs_rule:proc_tmpl(PayloadTks, Selected), + Payload = format_msg(PayloadTks, Selected), QoS = replace_simple_var(QoSTks, Selected, 0), Retain = replace_simple_var(RetainTks, Selected, false), ?TRACE("RULE", "republish_message_with_flags", #{topic => Topic, payload => Payload}), @@ -163,3 +163,8 @@ replace_simple_var(Tokens, Data, Default) when is_list(Tokens) -> end; replace_simple_var(Val, _Data, _Default) -> Val. + +format_msg([], Selected) -> + emqx_json:encode(Selected); +format_msg(Tokens, Selected) -> + emqx_plugin_libs_rule:proc_tmpl(Tokens, Selected).