Rhasspy + Node Red + Home Assistant = Smart Speaker Jr

This is what I get from the current-state-node as msg.payload (string). It is then passed to your http-request-node
https://podcast-mp3.dradio.de/podcast/2022/02/10/nachrichten_dlf_20220210_1130_ce2ec5f3.mp3

In your “Get CBC”-Node I replaced the URL with {{{payload}}}.

And this is what I get as msg.object out of it:

{“intent”:{“name”:“Nachrichten”,“confidence”:1},“entities”:[],“slots”:{},“text”:“nachrichten”,“raw_text”:“nachrichten”,“tokens”:[“nachrichten”],“raw_tokens”:[“nachrichten”],“wakeword_id”:null,“siteId”:“satellite”,“sessionId”:“22f71197-299c-4e56-9049-464c50523cbc”,“customData”:null,“wakewordId”:null,“lang”:null,"_session":{“type”:“websocket”,“id”:“533fd0f13253c7c4”},"_msgid":“af74322157d2cd25”,"_event":“node:8518cd2330e9e245”,“payload”:[73,68,51,3,0,0,0,0,4,101,84,68,65,84,0,0,0,11,0,0,1,255,254,49,0,48,0,48,0,50,0,84,89,69,82,0,0,0,11,0,0,1,255,254,50,0,48,0,50,0,50,0,84,76,65,78,0,0,0,9,0,0,1,255,254,68,0,69,0,85,0,84,65,76,66,0,0,0,33,0,0,1,255,254,68,0,101,0,117,0,116,0,115,0,99,0,104,0,108,0,97,0,110,0,100,0,102,0,117,0,110,0,107,0,84,73,84,50,0,0,0,77,0,0,1,255,254,78,0,97,0,99,0,104,0,114,0,105,0,99,0,104,0,116,0,101,0,110,0,32,0,118,0,111,0,109,0,32,0,49,0,48,0,46,0,48,0,50,0,46,0,50,0,48,0,50,0,50,0,44,0,32,0,49,0,49,0,58,0,51,0,48,0,32,0,85,0,104,0,114,0,67,79,77,77,0,0,0,86,0,0,1,69,78,71,254,255,0,0,255,254,68,0,101,0,117,0,116,0,115,0,99,0,104,0,108,0,97,0,110,0,100,0,114,0,97,0,100,0,105,0,111,0,32,0,45,0,32,0,49,0,48,0,46,0,48,0,50,0,46,0,50,0,48,0,50,0,50,0,32,0,49,0,49,0,58,0,51,0,48,0,58,0,48,0,48,0,84,80,69,49,0,0,0,33,0,0,1,255,254,68,0,101,0,117,0,116,0,115,0,99,0,104,0,108,0,97,0,110,0,100,0,102,0,117,0,110,0,107,0,84,79,80,69,0,0,0,75,0,0,1,255,254,68,0,101,0,117,0,116,0,115,0,99,0,104,0,108,0,97,0,110,0,100,0,102,0,117,0,110,0,107,0,45,0,78,0,97,0,99,0,104,0,114,0,105,0,99,0,104,0,116,0,101,0,110,0,114,0,101,0,100,0,97,0,107,0,116,0,105,0,111,0,110,0,84,80,85,66,0,0,0,33,0,0,1,255,254,68,0,101,0,117,0,116,0,115,0,99,0,104,0,108,0,97,0,110,0,100,0,102,0,117,0,110,0,107,0,84,67,79,80,0,0,0,45,0,0,1,255,254,50,0,48,0,50,0,50,0,32,0,68,0,101,0,117,0,116,0,115,0,99,0,104,0,108,0,97,0,110,0,100,0,114,0,97,0,100,0,105,0,111,0,87,79,82,83,0,0,0,29,0,0,104,116,116,112,58,47,47,119,119,119,46,100,101,117,116,115,99,104,108,97,110,100,102,117,110,107,46,100,101,87,80,85,66,0,0,0,30,0,0,104,116,116,112,58,47,47,119,119,119,46,100,101,117,116,115,99,104,108,97,110,100,114,97,100,105,111,46,100,101,84,73,77,69,0,0,0,11,0,0,1,255,254,49,0,49,0,51,0,48,0,255,251,144,64,0,0,0,0,0,75,128,0,0,8,0,0,9,112,0,0,1,0,0,1,46,0,0,0,32,0,0,37,192,0,0,4,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,32,0,0,0,16,0,0,0,22,64,0,0,0,5,67,143,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255],“data”:{“entity_id”:“sensor.podcast_deutschlandfunk_nachrichten”,“state”:“https://podcast-mp3.dradio.de/podcast/2022/02/10/nachrichten_dlf_20220210_1130_ce2ec5f3.mp3",“attributes”:{“friendly_name”:“podcast_deutschlandfunk_nachrichten”},“last_changed”:“2022-02-10T10:45:19.046550+00:00”,“last_updated”:“2022-02-10T10:45:19.046550+00:00”,“context”:{“id”:“dac99ac88baaa989a4d96beab5e75784”,“parent_id”:null,“user_id”:null},“timeSinceChangedMs”:834870,“original_state”:“https://podcast-mp3.dradio.de/podcast/2022/02/10/nachrichten_dlf_20220210_1130_ce2ec5f3.mp3”},“statusCode”:200,“headers”:{“accept-ranges”:“bytes”,“content-type”:“audio/mpeg”,“etag”:"“93e5250f764b3d5292a7f97181f37a68:1644489703.296094"”,“last-modified”:"Thu, 10 Feb 2022 10:41:43 GMT”,“server”:“AkamaiNetStorage”,“content-length”:“4643084”,“date”:“Thu, 10 Feb 2022 10:59:14 GMT”,“connection”:“close”,“access-control-max-age”:“86400”,“access-control-allow-credentials”:“false”,“access-control-allow-headers”:"",“access-control-allow-methods”:“GET, HEAD, OPTIONS”,“access-control-allow-origin”:"",“vary”:“Origin, Access-Control-Request-Headers”,“x-node-red-request-node”:“63f4f96a”},“responseUrl”:“https://podcast-mp3.dradio.de/podcast/2022/02/10/nachrichten_dlf_20220210_1130_ce2ec5f3.mp3",“redirectList”:[],"retry”:0}

EDIT:
And here is a screenshot of the respective flow:

Can anyone help me with this? I still could not solve it. @rlongfield maybe?

Thank you very much in advance!

Can you export the flow and paste it here?

1 Like

Sorry, apparently my response to your question didn’t get posted. I think there was a site issue a few months back. I’m sure I responded and then when I went to check your question was gone, I assumed it wasn’t relevant anymore.

Ok, just checked the “https://www.deutschlandfunk.de/podcast-nachrichten.1257.de.podcast.xml” site and I remember what is happening.

There is a new broadcast published every 30 minutes. Unlike the CBC here, your provider is changing the URL for each broadcast. This means you can’t set a static URL like I am able to do.
Unfortunately the provider just isn’t changing the Date and Time in the URL they are also including what appears to be a hash of something. If it was just the Date and Time that was changing that would be a fairly easy fix. In your example the URL contains “20220210_0930_” which is Feb 10, 2022 at 9:30am.
The kicker is this bit “ce2ec5f3” which is what I think might be the hash. What it’s purpose is, I’m not sure, other than maybe to prevent exactly what you are trying to do.

Maybe instead of accessing the URL directly as it changes, you scrape the current URL from the website and then use that in the node? I’ve not tried scraping in Node Red but I have scraped successfully for my local marine weather forecast and conditions for use in Home Assistant.
Unless of course you can sort out how that bit of trailing data is generated and then you just need a few extra nodes before the node that grabs the mp3 file.

Update:
I just looked at the source code for the URL and if you scrape the content between the first <guid> </guid> tags you’ll get the latest broadcast mp3 file.

1 Like

[{“id”:“29a57cf798248946”,“type”:“tab”,“label”:“DLF-Nachrichten”,“disabled”:false,“info”:"",“env”:[]},{“id”:“77b48a195cc71016”,“type”:“ffmpeg-conversion”,“z”:“29a57cf798248946”,“name”:“MP3 to Wav Conversion”,“format”:“wav”,“audiochannels”:“mono”,“audiofrequency”:"",“audiobitrate”:"",“audiocodec”:"",“x”:390,“y”:180,“wires”:[[“8677b6a7755c3f2b”,“6f24b4c0b3fd47d1”]]},{“id”:“8677b6a7755c3f2b”,“type”:“function”,“z”:“29a57cf798248946”,“name”:“Setting Message Headers”,“func”:“msg.headers = {};\nmsg.headers[‘Content-Type’] = ‘audio/wav’;\nreturn msg;”,“outputs”:1,“noerr”:0,“initialize”:"",“finalize”:"",“libs”:[],“x”:650,“y”:180,“wires”:[[“3ae254a6bc828a6b”]]},{“id”:“edcad1f5a59e836f”,“type”:“http request”,“z”:“29a57cf798248946”,“name”:“Hole DLF Nachrichten”,“method”:“GET”,“ret”:“bin”,“paytoqs”:“ignore”,“url”:"{{{payload}}}",“tls”:"",“persist”:false,“proxy”:"",“authType”:"",“senderr”:false,“x”:500,“y”:80,“wires”:[[“993eef3f8d2638d2”,“77b48a195cc71016”]]},{“id”:“53bef890e3208840”,“type”:“http request”,“z”:“29a57cf798248946”,“name”:"",“method”:“POST”,“ret”:“bin”,“paytoqs”:“ignore”,“url”:“http://192.168.178.60:12101/api/play-wav",“tls”:"",“persist”:false,“proxy”:"",“authType”:"",“senderr”:false,“x”:630,“y”:260,“wires”:[[]]},{“id”:“993eef3f8d2638d2”,“type”:“template”,“z”:“29a57cf798248946”,“name”:"",“field”:“payload”,“fieldType”:“msg”,“format”:“handlebars”,“syntax”:“mustache”,“template”:"Deutschlandfunk. Die Nachrichten.”,“output”:“str”,“x”:740,“y”:80,“wires”:[[“2b5de698db516805”]]},{“id”:“2b5de698db516805”,“type”:“link out”,“z”:“29a57cf798248946”,“name”:“News Speech”,“mode”:“link”,“links”:[“fdf0440997c3a4ea”],“x”:995,“y”:340,“wires”:[]},{“id”:“3ae254a6bc828a6b”,“type”:“delay”,“z”:“29a57cf798248946”,“name”:"",“pauseType”:“delay”,“timeout”:“5”,“timeoutUnits”:“seconds”,“rate”:“1”,“nbRateUnits”:“1”,“rateUnits”:“second”,“randomFirst”:“1”,“randomLast”:“5”,“randomUnits”:“seconds”,“drop”:false,“allowrate”:false,“outputs”:1,“x”:400,“y”:260,“wires”:[[“53bef890e3208840”,“65a87ebcaa130e61”]]},{“id”:“e7afe18c4bc091af”,“type”:“switch”,“z”:“29a57cf798248946”,“name”:"",“property”:“intent.name”,“propertyType”:“msg”,“rules”:[{“t”:“eq”,“v”:“Nachrichten”,“vt”:“str”},{“t”:“eq”,“v”:“GetTemperatureBalkon”,“vt”:“str”},{“t”:“eq”,“v”:“GetSolarmodul”,“vt”:“str”},{“t”:“else”}],“checkall”:“true”,“repair”:false,“outputs”:4,“x”:150,“y”:240,“wires”:[[“f59532b125d7e4c0”],[],[],[]]},{“id”:“cc6b12508c37204f”,“type”:“link in”,“z”:“29a57cf798248946”,“name”:“News and Jokes”,“links”:[“8518cd2330e9e245”],“x”:55,“y”:240,“wires”:[[“e7afe18c4bc091af”]]},{“id”:“8b77a0dd57b75bc9”,“type”:“comment”,“z”:“29a57cf798248946”,“name”:“Speech out to Flow 1”,“info”:"",“x”:1020,“y”:280,“wires”:[]},{“id”:“65a87ebcaa130e61”,“type”:“debug”,“z”:“29a57cf798248946”,“name”:“Nach dem Check State Node Suche nach Fehlerquelle bei DLF Nachrichten”,“active”:true,“tosidebar”:true,“console”:false,“tostatus”:false,“complete”:“payload”,“targetType”:“msg”,“statusVal”:"",“statusType”:“auto”,“x”:1260,“y”:100,“wires”:[]},{“id”:“f59532b125d7e4c0”,“type”:“api-current-state”,“z”:“29a57cf798248946”,“name”:“DLF Nachrichten”,“server”:“38a17052.fa78e”,“version”:3,“outputs”:1,“halt_if”:"",“halt_if_type”:“str”,“halt_if_compare”:“is”,“entity_id”:“sensor.podcast_deutschlandfunk_nachrichten”,“state_type”:“str”,“blockInputOverrides”:false,“outputProperties”:[{“property”:“payload”,“propertyType”:“msg”,“value”:"",“valueType”:“entityState”},{“property”:“data”,“propertyType”:“msg”,“value”:"",“valueType”:“entity”}],“for”:0,“forType”:“num”,“forUnits”:“minutes”,“override_topic”:false,“state_location”:“payload”,“override_payload”:“msg”,“entity_location”:“data”,“override_data”:“msg”,“x”:260,“y”:80,“wires”:[[“edcad1f5a59e836f”]]},{“id”:“2bfa6727c0e1b555”,“type”:“debug”,“z”:“29a57cf798248946”,“name”:“aus dem Switch Node”,“active”:true,“tosidebar”:true,“console”:false,“tostatus”:false,“complete”:“payload”,“targetType”:“msg”,“statusVal”:"",“statusType”:“auto”,“x”:1120,“y”:40,“wires”:[]},{“id”:“6f24b4c0b3fd47d1”,“type”:“debug”,“z”:“29a57cf798248946”,“name”:“Nach Hole DLF Nachrichten”,“active”:true,“tosidebar”:true,“console”:false,“tostatus”:false,“complete”:“true”,“targetType”:“full”,“statusVal”:"",“statusType”:“auto”,“x”:1120,“y”:160,“wires”:[]},{“id”:“2f280f3dc55ede1e”,“type”:“inject”,“z”:“29a57cf798248946”,“name”:"",“props”:[{“p”:“payload”},{“p”:“topic”,“vt”:“str”}],“repeat”:"",“crontab”:"",“once”:false,“onceDelay”:0.1,“topic”:"",“payload”:"",“payloadType”:“date”,“x”:80,“y”:60,“wires”:[[“f59532b125d7e4c0”]]},{“id”:“38a17052.fa78e”,“type”:“server”,“name”:“Home Assistant”,“version”:2,“addon”:true,“rejectUnauthorizedCerts”:true,“ha_boolean”:“y|yes|true|on|home|open”,“connectionDelay”:true,“cacheJson”:true,“heartbeat”:false,“heartbeatInterval”:30}]

Thank you very much for looking this thorougly to my problem here!

I think I managed to scrape the newest URL (via home assistant) to the most recent mp3 file.

The URL is handed to the http-request-node and then this is passed to the ffmpeg-conversion-node:

{"_msgid":“8d2192579d0aa3e0”,“payload”:[73,68,51,3,0,0,0,0,4,101,84,68,65,84,0,0,0,11,0,0,1,255,254,50,0,49,0,48,0,52,0,84,89,69,82,0,0,0,11,0,0,1,255,254,50,0,48,0,50,0,50,0,84,76,65,78,0,0,0,9,0,0,1,255,254,68,0,69,0,85,0,84,65,76,66,0,0,0,33,0,0,1,255,254,68,0,101,0,117,0,116,0,115,0,99,0,104,0,108,0,97,0,110,0,100,0,102,0,117,0,110,0,107,0,84,73,84,50,0,0,0,77,0,0,1,255,254,78,0,97,0,99,0,104,0,114,0,105,0,99,0,104,0,116,0,101,0,110,0,32,0,118,0,111,0,109,0,32,0,50,0,49,0,46,0,48,0,52,0,46,0,50,0,48,0,50,0,50,0,44,0,32,0,50,0,51,0,58,0,48,0,48,0,32,0,85,0,104,0,114,0,67,79,77,77,0,0,0,86,0,0,1,69,78,71,254,255,0,0,255,254,68,0,101,0,117,0,116,0,115,0,99,0,104,0,108,0,97,0,110,0,100,0,114,0,97,0,100,0,105,0,111,0,32,0,45,0,32,0,50,0,49,0,46,0,48,0,52,0,46,0,50,0,48,0,50,0,50,0,32,0,50,0,51,0,58,0,48,0,48,0,58,0,48,0,48,0,84,80,69,49,0,0,0,33,0,0,1,255,254,68,0,101,0,117,0,116,0,115,0,99,0,104,0,108,0,97,0,110,0,100,0,102,0,117,0,110,0,107,0,84,79,80,69,0,0,0,75,0,0,1,255,254,68,0,101,0,117,0,116,0,115,0,99,0,104,0,108,0,97,0,110,0,100,0,102,0,117,0,110,0,107,0,45,0,78,0,97,0,99,0,104,0,114,0,105,0,99,0,104,0,116,0,101,0,110,0,114,0,101,0,100,0,97,0,107,0,116,0,105,0,111,0,110,0,84,80,85,66,0,0,0,33,0,0,1,255,254,68,0,101,0,117,0,116,0,115,0,99,0,104,0,108,0,97,0,110,0,100,0,102,0,117,0,110,0,107,0,84,67,79,80,0,0,0,45,0,0,1,255,254,50,0,48,0,50,0,50,0,32,0,68,0,101,0,117,0,116,0,115,0,99,0,104,0,108,0,97,0,110,0,100,0,114,0,97,0,100,0,105,0,111,0,87,79,82,83,0,0,0,29,0,0,104,116,116,112,58,47,47,119,119,119,46,100,101,117,116,115,99,104,108,97,110,100,102,117,110,107,46,100,101,87,80,85,66,0,0,0,30,0,0,104,116,116,112,58,47,47,119,119,119,46,100,101,117,116,115,99,104,108,97,110,100,114,97,100,105,111,46,100,101,84,73,77,69,0,0,0,11,0,0,1,255,254,50,0,51,0,48,0,48,0,255,251,144,64,0,0,0,0,0,75,128,0,0,8,0,0,9,112,0,0,1,0,0,1,46,0,0,0,32,0,0,37,192,0,0,4,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,32,0,0,0,16,0,0,0,22,64,0,0,0,5,67,143,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255],“topic”:"",“data”:{“entity_id”:“sensor.podcast_deutschlandfunk_nachrichten”,“state”:“https://podcast-mp3.dradio.de/podcast/2022/04/21/nachrichten_dlf_20220421_2300_d4ecb66b.mp3",“attributes”:{“friendly_name”:“podcast_deutschlandfunk_nachrichten”},“last_changed”:“2022-04-21T21:16:23.099835+00:00”,“last_updated”:“2022-04-21T21:16:23.099835+00:00”,“context”:{“id”:“c591a7431b7b6498aff49ff2bfbecbd3”,“parent_id”:null,“user_id”:null},“timeSinceChangedMs”:2837895,“original_state”:“https://podcast-mp3.dradio.de/podcast/2022/04/21/nachrichten_dlf_20220421_2300_d4ecb66b.mp3”},“statusCode”:200,“headers”:{“accept-ranges”:“bytes”,“content-type”:“audio/mpeg”,“etag”:"“4e97c696603d52775594579366fef8a6:1650575693.51835"”,“last-modified”:"Thu, 21 Apr 2022 21:14:56 GMT”,“server”:“AkamaiNetStorage”,“content-length”:“9634574”,“date”:“Thu, 21 Apr 2022 22:03:41 GMT”,“connection”:“close”,“access-control-max-age”:“86400”,“access-control-allow-credentials”:“false”,“access-control-allow-headers”:"",“access-control-allow-methods”:“GET, HEAD, OPTIONS”,“access-control-allow-origin”:"",“vary”:“Origin, Access-Control-Request-Headers”,“x-node-red-request-node”:“62bcc15c”},“responseUrl”:“https://podcast-mp3.dradio.de/podcast/2022/04/21/nachrichten_dlf_20220421_2300_d4ecb66b.mp3",“redirectList”:[],"retry”:0}

After that nothing happens except that below the ffmpeg-conversion-node I can see “reading buffer”. But nothing more happens.

What did I do wrong?

I have imported the flow and I am now checking you sensor.
Is there a specific reason you use the scrape platform?

1 Like

The mp3 name changes every 30 mins. The change includes date and time, as well as what appears to be a short hash.
I suggested a scrape to get the most current file.

1 Like

Are you able to play the mp3 file outside of NodeRed?

You could also try scraping inside NodeRed
node-red-contrib-scrape-it (node) - Node-RED (nodered.org)

1 Like

Your flow works fine on my setup.

Make sure you do not have pretty single and/or double quotes.

1 Like

Awesome, thank you for the video!

But now I ask myself even more why it doesn’t work for me. After the flow starts, the ffmpeg-conversion-node states “reading buffer” and that’s it. It gets stuck there.

Maybe it is a node red problem because my Node-Red-Container runs inside Hassio? Do i need to change any setting there?

Mine as well, so no problems there I think.
Where are you running HA and NR on?

On a Raspberry Pi 4 with 2GB RAM

I guess my problem lies with the ffmpeg-conversion-node. Because when I am injecting directly a URL into the conversion-node, it gets stuck with “downloading”.

When I click on the link I can hear the news, yes.

But I can not play it via my Rhasspy, for this to happen it must be a wav-file. :frowning:

Hi Pittermaennchen, I just ran over the same problem with DLF, after the 5sec delay hint from rlongfield, I’ve got it running:

[{"id":"26ebfb7d.fb5784","type":"http request","z":"70d90eed.9fc7e8","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://www.deutschlandfunk.de/nachrichten-108.xml","tls":"","persist":false,"proxy":"","authType":"","x":220,"y":460,"wires":[["98317216.5b778"]]},{"id":"98317216.5b778","type":"xml","z":"70d90eed.9fc7e8","name":"","property":"payload","attr":"","chr":"","x":380,"y":460,"wires":[["16bbd29d.4df05d"]]},{"id":"8619d633.a1c258","type":"ffmpeg-conversion","z":"70d90eed.9fc7e8","name":"","format":"wav","audiochannels":"mono","x":750,"y":560,"wires":[["5fb57622.013118","d9f8668d.2ba188"]]},{"id":"16bbd29d.4df05d","type":"change","z":"70d90eed.9fc7e8","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.rss.channel[0].item[0].guid[0]","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":560,"wires":[["8619d633.a1c258"]]},{"id":"399345ed.9aa33a","type":"http request","z":"70d90eed.9fc7e8","name":"","method":"POST","ret":"txt","paytoqs":"body","url":"http://127.0.0.1:12101/api/play-wav","tls":"","persist":false,"proxy":"","authType":"basic","x":1470,"y":580,"wires":[["5fb57622.013118"]]},{"id":"d9f8668d.2ba188","type":"function","z":"70d90eed.9fc7e8","name":"Setting Message Headers","func":"msg.headers = {};\nmsg.headers['Content-Type'] = 'audio/wav';\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1030,"y":580,"wires":[["bf6f79ad.bac9c8"]]},{"id":"bf6f79ad.bac9c8","type":"delay","z":"70d90eed.9fc7e8","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1260,"y":580,"wires":[["399345ed.9aa33a"]]}]

maybe it help…