I have a phone number registered in Twilio that I wanted to use for both a Twiml application and an Elastic SIP Trunk (connected to Asterisk). The idea is that inbound calls hit the Twiml app first and then can be forwarded to the Asterisk server if needed, while outbound calls just go via the SIP trunk. (The reason it needs to be a SIP trunk instead of simply using SIP Registration with Programmable Voice is because that is the only way to have E911 support for outbound calls.)
Twilio support told me that it is not possible to use the same number for both.
Because of that limitation, my current plan is to use two Twilio phone numbers. My published phone number will go to the Twiml application, and a second number that I will not give out will go to the SIP Trunk. (Twilio allows number spoofing of other numbers on your account, so I will have the Asterisk server pretend to use my primary number for outbound calls instead of using the second private number.)
In order for this to work, I need to be able to transfer calls from my Twiml app to Asterisk and from Asterisk server back to the Twiml application. The former is easy: just use <Dial>
with a SIP URL that points to the trunk. The latter is what I need help with. (I also want to do this in case someone does manage to call the second number - I want them to be redirected to the Twiml app.)
As far as I can tell, the only way for me to transfer calls back into my Twiml application is to forward the call from the Asterisk server back to my public number. The problem is that I think this will look like an outgoing+incoming call and I will get double-billed for these minutes. I'm already paying for another number, and I really don't want to have to pay extra for the minutes too.
Is there a better (or "official") way to transfer a call back to the Twiml app? Or am I wrong about Twilio seeing (and billing) this as two calls?