diff --git a/apps/emqx_rule_engine/src/emqx_rule_api_schema.erl b/apps/emqx_rule_engine/src/emqx_rule_api_schema.erl index 1caa8da23..d992cdc07 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_api_schema.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_api_schema.erl @@ -68,6 +68,7 @@ fields("rule_events") -> fields("rule_test") -> [ {"context", sc(hoconsc:union([ ref("ctx_pub") , ref("ctx_sub") + , ref("ctx_unsub") , ref("ctx_delivered") , ref("ctx_acked") , ref("ctx_dropped") diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl b/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl index 205f85488..cbfda16db 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl @@ -257,11 +257,16 @@ format_output(Outputs) -> [do_format_output(Out) || Out <- Outputs]. do_format_output(#{mod := Mod, func := Func, args := Args}) -> - #{function => list_to_binary(lists:concat([Mod,":",Func])), + #{function => printable_function_name(Mod, Func), args => maps:remove(preprocessed_tmpl, Args)}; do_format_output(BridgeChannelId) when is_binary(BridgeChannelId) -> BridgeChannelId. +printable_function_name(emqx_rule_outputs, Func) -> + Func; +printable_function_name(Mod, Func) -> + list_to_binary(lists:concat([Mod,":",Func])). + get_rule_metrics(Id) -> Format = fun (Node, #{matched := Matched, rate := Current, diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine_schema.erl b/apps/emqx_rule_engine/src/emqx_rule_engine_schema.erl index ba516bfa7..5d72d5a6d 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine_schema.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_engine_schema.erl @@ -182,6 +182,7 @@ rule_name() -> {"name", sc(binary(), #{ desc => "The name of the rule" , default => "" + , nullable => false , example => "foo" })}.