MQTT engine.publish can't write tag and Sparkplug Decoder show "Failed to parse the payload"

Hello everyone

I want to use ‘system.cirruslink.engine.publish’ script write MQTT tag
but it can’t run

my script:

server = 'Chariot SCADA'
topic = 'spBv1.0/IgnitionMQTT/DCMD/test/test'


today = system.date.now()
next = system.date.setTime(system.date.getDate(1970, 0, 1), 8, 0, 0)

timestamp = str(system.date.millisBetween(next,today))

payload = '{"timestamp":' + timestamp +',"metrics":[{"name":"ClientEvent/WindowChangeSec","timestamp":' + timestamp +',"dataType":"Int32","value":15}],"seq":0}'

system.cirruslink.engine.publish(server, topic, str(payload).encode(), 0, 0)

I use MQTTfx check.
My “Sparkplug Decoder” show “Filed to parse the payload”

but “Plain Text Decoder” show my payload is correct

Sparkplug B messages are encoded using Google Protocol Buffers (see section 4.3 of the Sparkplug specification); you won’t be able to write straight JSON payloads by default. Is there a reason why you can’t just bring the group/node/device in via MQTT Engine and then just write to the tag (which would then propagate the write via a DCMD message through MQTT/Sparkplug)?

Becouse I have a hardware gateway have MQTT Publish able.
I can use it publish to Ignition distributor.
It read tag correct.
but I can’t write the tag.

I check MQTTfx it sparkplug Decoder
it like this

I don’t know why name is none

so I try the function.