fix(rule): republish all available fields if payload template empty

This commit is contained in:
Shawn 2022-04-26 18:19:40 +08:00
parent 5457e5551f
commit ba800d853d
1 changed files with 7 additions and 2 deletions

View File

@ -82,7 +82,7 @@ republish(Selected, #{flags := Flags, metadata := #{rule_id := RuleId}},
topic := TopicTks, topic := TopicTks,
payload := PayloadTks}}) -> payload := PayloadTks}}) ->
Topic = emqx_plugin_libs_rule:proc_tmpl(TopicTks, Selected), 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), QoS = replace_simple_var(QoSTks, Selected, 0),
Retain = replace_simple_var(RetainTks, Selected, false), Retain = replace_simple_var(RetainTks, Selected, false),
?TRACE("RULE", "republish_message", #{topic => Topic, payload => Payload}), ?TRACE("RULE", "republish_message", #{topic => Topic, payload => Payload}),
@ -96,7 +96,7 @@ republish(Selected, #{metadata := #{rule_id := RuleId}},
topic := TopicTks, topic := TopicTks,
payload := PayloadTks}}) -> payload := PayloadTks}}) ->
Topic = emqx_plugin_libs_rule:proc_tmpl(TopicTks, Selected), 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), QoS = replace_simple_var(QoSTks, Selected, 0),
Retain = replace_simple_var(RetainTks, Selected, false), Retain = replace_simple_var(RetainTks, Selected, false),
?TRACE("RULE", "republish_message_with_flags", #{topic => Topic, payload => Payload}), ?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; end;
replace_simple_var(Val, _Data, _Default) -> replace_simple_var(Val, _Data, _Default) ->
Val. Val.
format_msg([], Selected) ->
emqx_json:encode(Selected);
format_msg(Tokens, Selected) ->
emqx_plugin_libs_rule:proc_tmpl(Tokens, Selected).