Alexa Speak does not queue multiple calls

Hello,
i use the node “node-red-contrib-alexa-remote2-applestrudel”. When I call the node “alxa speak” in parallel, only the first call is successfully executed as voice output on an Alexa Eco speaker. All other simultaneous calls do not lead to a voice output. How is it possible to specify any calls at a time so that all calls lead to a voice output?

I rate limit calls to make alexa speak using a 3 second delay

I've not found any method of making Alexa speak on different echos simultaeously

1 Like

Unfortunately, the 3-second time limit does not work because the texts are variable in length. Then I just have to use “node-red-contrib-tts-ultimate”. This node queues the output. But then I can only use SONOS speakers for the voice output

Then calculate the delay using the number of words and then rate limit and flush new messages
e.g.

[{"id":"2d4d1a5ebe6fa138","type":"inject","z":"d1395164b4eec73e","name":"","props":[{"p":"speak","v":"this is a test","vt":"str"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":190,"y":7500,"wires":[["e7a35c671efb26f4"]]},{"id":"e7a35c671efb26f4","type":"delay","z":"d1395164b4eec73e","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"60","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":300,"y":7620,"wires":[["dda450d57a5c0d76"]]},{"id":"fb2badba4ae0f979","type":"function","z":"d1395164b4eec73e","name":"function 157","func":"\nreturn {flush:1}","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":7560,"wires":[["e7a35c671efb26f4"]]},{"id":"dda450d57a5c0d76","type":"alexa-remote-routine","z":"d1395164b4eec73e","name":"","account":"c8738129.d902c","routineNode":{"type":"speakAtVolume","payload":{"type":"regular","text":{"type":"msg","value":"speak"},"volume":{"type":"num","value":"50"},"mode":"set","devices":["G090LF1182850C6D"]}},"x":510,"y":7620,"wires":[["2d9c41f1b9b24157"]]},{"id":"a893122ae5977c48","type":"delay","z":"d1395164b4eec73e","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":900,"y":7620,"wires":[["b2439e62bc81b2a5","fb2badba4ae0f979"]]},{"id":"2d9c41f1b9b24157","type":"change","z":"d1395164b4eec73e","name":"","rules":[{"t":"set","p":"delay","pt":"msg","to":"$ceil($count($split($$.speak, \" \" ))/3)*1000","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":740,"y":7620,"wires":[["a893122ae5977c48"]]},{"id":"b2439e62bc81b2a5","type":"debug","z":"d1395164b4eec73e","name":"debug 2575","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":970,"y":7560,"wires":[]},{"id":"c8738129.d902c","type":"alexa-remote-account","name":"alexa remote 2","authMethod":"proxy","proxyOwnIp":"localhost","proxyPort":"3456","cookieFile":"/data/data/com.termux/files/home/.node-red/.alexa.cookie","refreshInterval":"14","alexaServiceHost":"layla.amazon.co.uk","pushDispatchHost":"","amazonPage":"amazon.co.uk","acceptLanguage":"en-GB","onKeywordInLanguage":"","userAgent":"","usePushConnection":"on","autoInit":"off","autoQueryActivityOnTrigger":"off"}]
1 Like

Thanks for the tip. Unfortunately, the Alexa speakers are called from different places/flows. How should your solution work then?

Use link out and in nodes, with out full details i can not add much more details.

Thank you very much. I have only used one Alexa Speak node with your delay node information and it works great