diff --git a/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_msg.erl b/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_msg.erl index bdd516db6..defbbaea2 100644 --- a/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_msg.erl +++ b/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_msg.erl @@ -71,14 +71,13 @@ to_remote_msg(#message{flags = Flags0} = Msg, Vars) -> to_remote_msg(MapMsg, #{ remote := #{ topic := TopicToken, - payload := PayloadToken, qos := QoSToken, retain := RetainToken - }, + } = Remote, mountpoint := Mountpoint }) when is_map(MapMsg) -> Topic = replace_vars_in_str(TopicToken, MapMsg), - Payload = process_payload(PayloadToken, MapMsg), + Payload = process_payload(Remote, MapMsg), QoS = replace_simple_var(QoSToken, MapMsg), Retain = replace_simple_var(RetainToken, MapMsg), PubProps = maps:get(pub_props, MapMsg, #{}), @@ -100,16 +99,15 @@ to_broker_msg( #{ local := #{ topic := TopicToken, - payload := PayloadToken, qos := QoSToken, retain := RetainToken - }, + } = Local, mountpoint := Mountpoint }, Props ) -> Topic = replace_vars_in_str(TopicToken, MapMsg), - Payload = process_payload(PayloadToken, MapMsg), + Payload = process_payload(Local, MapMsg), QoS = replace_simple_var(QoSToken, MapMsg), Retain = replace_simple_var(RetainToken, MapMsg), PubProps = maps:get(pub_props, MapMsg, #{}), @@ -121,9 +119,12 @@ to_broker_msg( ) ). -process_payload([], Msg) -> +process_payload(From, MapMsg) -> + do_process_payload(maps:get(payload, From, undefined), MapMsg). + +do_process_payload(undefined, Msg) -> emqx_json:encode(Msg); -process_payload(Tks, Msg) -> +do_process_payload(Tks, Msg) -> replace_vars_in_str(Tks, Msg). %% Replace a string contains vars to another string in which the placeholders are replace by the diff --git a/changes/v5.0.14/fix-9672.en.md b/changes/v5.0.14/fix-9672.en.md new file mode 100644 index 000000000..01724801e --- /dev/null +++ b/changes/v5.0.14/fix-9672.en.md @@ -0,0 +1 @@ +Fix the problem that the bridge is not available when the Payload template is empty in the MQTT bridge. diff --git a/changes/v5.0.14/fix-9672.zh.md b/changes/v5.0.14/fix-9672.zh.md new file mode 100644 index 000000000..86106cc1d --- /dev/null +++ b/changes/v5.0.14/fix-9672.zh.md @@ -0,0 +1 @@ +修复 MQTT 桥接中 Payload 模板为空时桥接不可用的问题。