A SIP provider with PSTN number and extension range for DID - twilio

I have a Twilio account with USA PSTN number like +11234567890. In my company all users have an internal SIP 4-digit number like 2001, 2002 etc.
Is somewhere a USA SIP provider which allows anyone USA client to call my number +11234567890 with extension directly, like +11234567890XXXX, and pass this full number into my PBX via SIP trunk call? With that number I can bridge a caller and callee directly (Direct Inward Call, DID), bypassing voice menu.
A Twilio techsupport says that i must buy another PSTN number, and they don't allowing such extensions. So, buying a external number per every user looks silly.

Is somewhere a USA SIP provider which allows anyone USA client to call my number +11234567890 with extension directly, like +11234567890XXXX, and pass this full number into my PBX via SIP trunk call?
No. This is impossible -- phone numbers in the US (as well as Canada and some countries in the Caribbean) must confirm to the North American Numbering Plan, which mandates that phone numbers be nine digits long. The US telephone network does not permit longer numbers to be dialed, no more than an IPv4 network would permit a five-octet IP address to be used.
Some devices will allow extra digits to be entered, e.g. to allow novelty "phonewords" to be dialed, but the extra digits are discarded. They are not sent to the phone network.

As George mentions in the comment , that is not the most intuitive way of dialing for the end users. You could achieve something similar with your Twilio number by using inbound PSTN or SIP call to invoke your application which can ask for extension and respond using the <Sip> noun of the <Dial> verb, to establish a call with your SIP endpoint.
A possible flow to achieve what you require is mentioned below :
Create a rest endpoint that does the following
Asks caller to enter extension number by <Say>-ing a message
Uses TwiML to <Gather> extension number from caller
<Dial> this extension on your sip infrastructure
Point your Twilio Number to above endpoint.
3 . Dont forget to whitelist Twilio's SIP address and media ports in your infrastructure
Sample TwiML to dial to your sip infrastructure is mentioned below (if extension is can be dialed directly as endpoint , do a direct sip to the extension , else pass extension as a header to your pbx and have pbx dial the extension)
<Response>
<Dial>
<Sip>
sip:stan#example.com?extensionNumber=2001&customeheader=xyz
</Sip>
</Dial>
</Response>

Related

Twilio: Can Sip be used to call a Twilio Conference?

I've been reviewing the Twilio Voice documentation, but I can't see if it would be possible for a sip communications infrastructure to join a Twilio Conference.
This would be the ideal scenario for us.
However, if this wasn't possible, having a conference dial or invite a sip address would be almost as good.
Obvious this is the basic sip dial from a pstn, but can't see how this could be used with the Twiml Conference verbs.
https://www.twilio.com/docs/voice/twiml/sip
<Response>
<Dial>
<Sip>
sip:jack#example.com
</Sip>
</Dial>
</Response>
Also I can see that the Api supports 'Create a Participant – Agent Conference only', however we don't use the Agent Conference Only conference type and we've concerned this would break existing functionality.
https://www.twilio.com/docs/voice/api/conference-participant-resource
I guess we're hoping this can be achieved with Twiml.
Since you are initiating a call out toward your SIP infrastructure (if I am understanding you correctly?), you would use the Twilio REST API Calls resource to do so, and the To: would be a SIP URI. The URL would be pointing toward TwiML which then join the SIP participant into the conference when they answer.
If you want them to dial into Twilio via SIP from your SIP infrastructure, you would set up a SIP Domain.
You actually have an incredible amount of flexibility with either approach.
Alan
Making Calls

Transfer call from SIP trunk to Twiml application

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?
It is not clear why you cannot use the Twilio number for both a Twiml application and an Elastic SIP Trunk (connected to Asterisk). Did they indicate why?
Just don't assign that particular number to your Elastic SIP Trunk and you should be able to assign it to your TwiML application for inbound calls and use a when you want to forward the the call to your Asterisk PBX.
For outbound calls, you can have you Asterisk PBX send calls with that number as CallerID to your Elastic SIP Trunk Termination URI.
For E911 calls from the Twilio Elastic SIP Trunk, you should have a number associated with your Elastic SIP Trunk, enabled for Emergency Calling, so when 911 calls are placed, the CallerID of that number is used for outbound calls and calls can be returned to that number should the connection get disconnected.
If you did go the second route you mentioned, can you have your Asterisk Server send the call to a Twilio Programmable Voice SIP Domain, maybe have a Dial Plan defined so an Asterisk prefix digit sends calls out this different trunk. Not sure this will work (since mixing Elastic SIP Trunking with Programmable Voice in this manner) but one idea. Your Asterisk server will remain in the call path.

Register Twilio as extension/endpoint SIP client using username and password

I have the next situation:
A call is made to a PSTN/DID number of my phone company and that I can use with proprietary SIP cell phone app or SIP client application like Zoiper / Linphone configuring with SIP, user and password.
I cannot configure this service to forward a call to 3rd party service SIP URI. I've already asked it to my PSTN provider and they say that it is impossible.
The question is:
How can I make Twilio (or maybe another service) register as SIP client with user and password (like extension/endpoint ) to receive a call from PSTN and forward it to other SIP URI or phone number?
I know that asterisk / some cloud pbx can do it like it was previously free account at pbxes.com.
Have you considered porting your number to a carrier that will allow you to forward inbound calls to a specific SIP URI you configure or register for calls to that URI, given your current carriers constraints?
For example, Twilio has some documentation here on porting a number.
International Porting
Porting a number To Twilio
I understand, based on your country, this may not be an option.
Twilio does not have a way to register as a SIP client with another provider. It does offer the ability of using a Twilio hosted number (and thus the comment on porting) to register a SIP client against or forward a PSTN call to a SIP User Agent.

Twilio & ThinQ qustion

I know there are some twilio experts here and would really appreciate it if someone could answer a question for us and if so, please let me know if you do freelance work.
Our website offer clients to purchase numbers, which are twilio numbers, and we forward the calls and SMS to their original number, while doing demographics, call recordings and marketing. The number on which call was received is important to us. We want to use Thinq LCR to reduce cost. But Thinq wants us to port the twilio number to them. If we port the twilio number to Thinq, will the existing twilio services break? and on which routing profile will we forward the numbers after porting, if twilio number has been ported to thinq, there's no twilio number to forward anymore. And will we need to change all the code to work with the new Thinq API as twilio is out of the game now?
Thank you!!!
Chip :)
From what I understand of your problem, you should port your existing Twilio DIDs to ThinQ and switch to provisioning new DIDs from ThinQ directly, going forward.
Once the DIDs are visible in the dashboard (i.thinq.com), you would configure them all to route to a Twilio SIP domain that you will need to create. See https://www.thinq.com/thinq-voice-origination-with-twilios-bring-your-own-number-byon-service/ for instructions on how to do this.
With this setup, people trying to reach your clients would dial the DIDs controlled by ThinQ. ThinQ would send the SIP calls over to the Twilio SIP domain which would then interact with your server's callbacks to handle the call.
Your callback would use the appropriate Twilio API (REST or TwiML) to dial the client's actual phone number via SIP so that it goes over your ThinQ VoIP account for lower costs (e.g dial to sip:#wap.thinq.com?thinQid=&thinQtoken= )

TWIML for reverse click-to-dial browser plugin

I have a mostly working chrome extension that uses the Twilio client to allow calling a number from the browser. The twilio client is too unstable to be used reliably, so I'm re-wiring the extension to just perform 'reverse click to dial', but am having trouble getting my head wrapped around the twiml flow.
Assume I have a web service that can produce twiml. Here's the call flow I want to achieve:
Agent launches my chrome extension, and gives it a phone number to dial.
Stored in the extension's settings is the twilio account sid,token, app sid for the twiml app/service, AND the number to connect the dialed number to, typically the agent's cell phone.
My extension makes a request to twilio API, which in turn requests a route in my twiml app.
some magical twiml is produced
agent's cell phone rings
agent answers
he is connected to an outbound dial to the original number he was dialing
What is the simplest twiml that will accomplish this? to boil down the flow:
agent enters number into chrome extension and clicks CALL
agent's phone rings
agent answers and is connected to number entered in step 1.
Twilio evangelist here.
The way I would do this:
Extension talks to Twilio API to start an outbound phone call to entered number
When entered number answers your app returns Twiml that tells Twilio to <Say> something like "Hold on while we connect you to an agent and then <Dial> the agent:
<Response>
<Say>Hold on while we connect you</Say>
<Dial callerId="+15555555555">
<Number>[Agent Number]</Number>
<Dial>
<Response>
If you want to reverse this to dial the agent first, just have your extension tell Twilio to call the Agent number first and then, when the Agent answers, have the TwiML say something like "Hold on while we connect you to the customer" and <Dial> the customer number.
Hope that helps.

Resources