Help please with trunk

I am trying to play a message on all outbound calls.

Each use on my system is assigned a DID and there trunk is based on the DID IE TR-DID #

I use custom contexts to make sure that when they place an outbound call they go out the trunk that represents their DID.

Recently I wanted to play a message on all outbound calls. I found the article located here:

After several hours I got it working!

My setup is as follows

User places a call --> custom-context (says to use outbound route that matches their DID, other then restricting what route to sue it allows everything else.) --> outbound route has 2 trunks 1: custom: local/$OUTNUM$@free-service, trunk 2 is a fully working trunk based on the users sip credentials and DID.

In my extensions_custom.conf I have the following

exten => _X.,1,Answer
exten => _X.,2,Playback(tt-weasels,noanswer)
exten => _X.,3,Dial(SIP/whistle/${EXTEN},120,tr)
exten => _X.,4,Hangup

This setup works but I don’t want to have to manually define the trunk. I want it to fail to the second trunk in the outbound route that it is assigned to.

If I remove that line it fails with the message: Auto fallthrough, channel 'Local status unknown. It never fails to the second trunk.

I need to find a way to have it fail to the second trunk or to get the users extension and have it as a variable in the line exten => _X.,3,Dial(SIP/whistle/${EXTEN},120,tr) like exten => _X.,3,Dial(SIP/tr-${extension}/${EXTEN},120,tr)
Can some please help me with this?