数据桥接发送的是“undefined”

环境信息

  • EMQX 版本:5.0.6
  • 操作系统及版本:centos
  • 其他

问题描述

使用webhook数据桥接,转发设备通讯消息一切正常,使用$events/client_connected和$events/client_disconnected 做上下线通知,接收到的消息为“undefined”,实际核实日志也是相同,排除接收接口问题。

配置文件及日志

2022-09-12T02:08:08+00:00 [MQTT] 861241057727164@39.144.1.96:3339 msg: mqtt_packet_received, packet: CONNECT(Q0, R0, D0),ClientId=861241057727164, ProtoName=MQTT, ProtoVsn=4, CleanStart=false, KeepAlive=240, Username=iot, Password=******
2022-09-12T02:08:08+00:00 [AUTHN] 861241057727164@39.144.1.96:3339 msg: authenticator_result, authenticator: password_based:built_in_database, result: {ok,#{is_superuser => false}}
2022-09-12T02:08:08+00:00 [AUTHN] 861241057727164@39.144.1.96:3339 msg: authentication_result, reason: chain_result, result: {stop,{ok,#{is_superuser => false}}}
2022-09-12T02:08:08+00:00 [SUBSCRIBE] 861241057727164@39.144.1.96:3339 msg: subscribe, sub_id: 861241057727164, sub_opts: [nl: 0, qos: 0, rap: 0, rh: 0, sub_props: []], topic: meter_sub/861241057727164
2022-09-12T02:08:08+00:00 [UNSUBSCRIBE] 861241057727164@39.144.5.54:5356 msg: unsubscribe, sub_opts: [nl: 0, qos: 0, rap: 0, rh: 0, sub_props: [], subid: 861241057727164], topic: meter_sub/861241057727164
2022-09-12T02:08:08+00:00 [SOCKET] 861241057727164@39.144.5.54:5356 msg: emqx_connection_terminated, reason: {shutdown,takenover}
2022-09-12T02:08:08+00:00 [BRIDGE] 861241057727164@39.144.1.96:3339 msg: bridge_action, bridge_id: webhook:meter
2022-09-12T02:08:08+00:00 [QUERY] 861241057727164@39.144.1.96:3339 msg: http_connector_received, connector: bridge:webhook:meter, request: {<<"jeecg-boot/onenet/api/mqqt/861241057727164">>,[{<<"content-type">>,<<"application/json">>}],<<"undefined">>}, state: [base_path: /, connect_timeout: 5000, host: meter.weixuniot.com, pool_name: bridge:webhook:meter:780, port: 80, request: [body: [{var,{var,<<"payload">>}}], headers: [{[{str,<<"content-type">>}],[{str,<<"application/json">>}]}], max_retries: 3, method: [{str,<<"post">>}], path: [{str,<<"jeecg-boot/onenet/api/mqqt/">>},{var,{var,<<"clientid">>}}], request_timeout: 5000]]
2022-09-12T02:08:08+00:00 [MQTT] 861241057727164@39.144.1.96:3339 msg: mqtt_packet_sent, packet: CONNACK(Q0, R0, D0),AckFlags=1, ReasonCode=0
2022-09-12T02:08:08+00:00 [MQTT] 861241057727164@39.144.1.96:3339 msg: mqtt_packet_received, packet: SUBSCRIBE(Q1, R0, D0),PacketId=2 TopicFilters=[meter_sub/861241057727164(#{nl => 0,qos => 0,rap => 0,rh => 0})]
2022-09-12T02:08:08+00:00 [SUBSCRIBE] 861241057727164@39.144.1.96:3339 msg: subscribe, sub_id: 861241057727164, sub_opts: [nl: 0, qos: 0, rap: 0, rh: 0, sub_props: []], topic: meter_sub/861241057727164
2022-09-12T02:08:08+00:00 [MQTT] 861241057727164@39.144.1.96:3339 msg: mqtt_packet_sent, packet: SUBACK(Q0, R0, D0),PacketId=2, ReasonCodes=[0]


‘$events/client_connected’ 和 ‘$events/client_disconnected’ 事件是没有 payload 字段的,所以用 ${payload} 就取到了 undefined。

每个事件的可用字段可以看这里:SQL 数据源和字段 | EMQX 5.0 文档