wait_template and delay are, in my opinion, quite broken in Home Assistant. If, for any reason, a script or automation gets triggered while it’s waiting/delaying, HA quits the delay and continues processing the rest of the commands, but doesn’t actually run the script a second time. So it’s bad twice.
I have found that using a python_script instead will allow two calls of the script to run concurrently. So, when I really need something like this, I use a python_script.
However, in this case, you should use something like assistant-relay:
https://github.com/greghesp/assistant-relay/tree/v2
You can send as many TTS notifications as you’d like and it’ll play them all, one by one, in order. It has the added benefit of not stopping whatever the google home was doing before the TTS. It pauses it, plays your TTS notification, and then continues playing whatever media you had going. The downside is, it will only broadcast to ALL google home devices. You can’t select a specific media player.
There are lots of approaches to the python_script… but I think the general idea should be that it implements a queue. It’d need to check a boolean that indicates a TTS is currently playing. If it’s on, it should add the TTS to a queue and end. If it’s off, it should set the boolean, play the tts, then unset the boolean. Then it should check the queue, if there are any items in it, it should call itself with an empty notification to play. When the script gets an empty notification, it’ll check the boolean and, if not set, set it, then play the next item in the queue, unset the boolean, and then check the queue again.
It’s a tedious bit of code to write.