I have made some progress here. I added the following lines to the dial plan:

<action application="pre_answer"/> 
<action application="sleep" data="2000"/> (this one was the trick)

Now, I can speak TTS, or play a file, or any other application before bridging the call to a gateway. However, when bridging the call I'm still getting "NORMAL_TEMPORARY_FAILURE". And of course, if I call bridge the call first (before any other application) then it connects the call with no problem. 

Any ideas?