Programmable Voice is offered as a developer preview for Programmable Wireless SIMs — see the section Known Limitations below.
Any device connected by a Twilio SIM can make and receive Programmable Voice calls. This requires the device itself to support PSTN voice calling; PSTN is short for Public Switched Telephone Network, the traditional circuit-switched telephone network.
Before you set up your device for voice, the Programmable Wireless SIM used in the device needs to have a SIM Rate Plan that has, at least, Voice selected as an Enabled Service. If not, you need to create one. See Understanding Rate Plans to learn how to create a Voice-enabled Rate Plan.
- Once you have your SIM voice-enabled, you first need to purchase a voice-enabled Twilio phone number.
- You then create a TwiML bin for making phone calls. You use this new TwiML to associate your Twilio SIM with your new phone number.
- Next you create a TwiML bin for receiving incoming calls. Again, you associate this TwiML with the Twilio SIM and your new phone number.
Your Programmable Wireless SIM-connected device can now make and receive phone calls through Twilio.
Your device must be located within the United States on the T-Mobile network to use voice. Voice will not work when roaming on T-Mobile partner networks within the United States, or internationally.
You first to use the Console to purchase a voice-enabled Twilio phone number.
In the Console, you want to make sure the Internet of Things icon is visible in the side menu. If not, click All Products and Services, locate it under Super Network, and pin it to the dock.
- Point your browser to the Buy a Number section of the Console.
- In the page that appears, select a country.
- Optionally, enter an area code in the Number field to narrow the search.
- Select at least a Voice capability. Additional options (including the type of number, any address requirements, and beta numbers) are available by clicking Show Advanced Search.
- Click Search to generate a list of available Twilio numbers that you can purchase.
- Choose a number and click its Buy button.
You can see an example below, which is the result of searching for a number in the United States:
You now have a Twilio phone number that you can associate with your Programmable Wireless SIM.
- From Programmable Wireless click SIMs.
- Select the SIM that is in your phone. (Need help registering a SIM? See Ordering and Registering Your First SIM.)
- Click the Programmable Voice & SMS tab.
- In the Programmable Voice section, select TwiML from the VOICE URL popup.
- Click the blue + button to the right of the input field.
- You’ll now see a panel appear with a TwiML template for routing calls.
- You can give the TwiML bin a FRIENDLY NAME.
- In the
Dialelement, replace YOUR_NUMBER_HERE with the phone number you bought in the previous section.
- Click Add TwiML Bin.
- Click Save.
You need to enter phone numbes in E.164 format. What does that mean? Look here
You’re done — you can now make a phone call from your phone. The outbound Caller ID seen by the recipient will be the Twilio phone Number you purchased earlier. Feeling creative? Use functions or set up your own TwiML server to dynamically set the Caller ID.
You can nowmake phone calls from your cellphone with a Programmable Wireless SIM but you can’t yet receive them. Let’s set this up now. Once again we’ll use TwiML to tell the Twilio cloud how to handle incoming calls.
In the Console, you want to make sure the TwiML Bins icon is visible in the side menu. If not, click All Products and Services, look under Runtime and pin TwiML Bins to the dock.
- Open TwiML Bins.
- Click the Red + Button to create a new TwiML Bin.
- Enter a name in the FRIENDLY NAME input field.
- For the TwiML, you can use the example shown below: copy and paste it into the TWIML field.
- In the
Simelement, enter the SIM SID in place of YOUR_SIM_SID_HERE. You can find your SIM SID in the SIMs section under Programmable Wireless in the Console. It begins with the prefix DE.
- Click Create.
<?xml version="1.0" encoding="UTF-8"?> <Response> <Dial> <Sim>YOUR_SIM_SID_HERE</Sim> </Dial> </Response>
Here’s a completed example:
- Open the Phone Numbers section of the Console.
(See Purchase an SMS-enabled Twilio Phone Number above if you don’t have a number yet)
- Select the phone number you wish to associate with your SIM.
- Scroll down to Voice & Fax and make sure that Webhooks, TwiML Bins, Functions, Studio or Proxy is selected for CONFIGURE WITH.
- Under A CALL COMES IN, select TwiML Bin.
- Select the TwiML bin you created in the previous section using its Friendly Name.
- Click Save.
Call the phone number and you should receive the call on your SIM-connected device.
You can view Call Logs for Wireless calls by selecting an Active Number in the Console and then clicking the Calls Log tab.
Most call flows that involve a SIM will include two independent call legs: one call between Twilio and the non-SIM party, and the other between Twilio and the SIM-connected device.
The call leg from Twilio to the non-SIM party (PSTN, SIP, Client, etc.) is billed at standard Twilio voice rates, depending on the connectivity method used. The other call leg between Twilio and the SIM is billed at Programmable Wireless voice rates.
A phone number is provided on the SIM known as the MSISDN which is not used by Programmable Voice or Programmable SMS. The presence of the MSISDN means that some (potentially unwanted) calls may arrive straight to your SIM without routing via Twilio. If this occurs, Twilio cannot yet offer programmatic control over the calls and you won't see them in your Twilio call logs. However, 100% of calls and messages originating from the SIM are programmatically routed by Twilio.
Programmable Voice is currently only offered when connected to the T-Mobile network in the USA. Voice will not work when roaming on T-Mobile partner networks within the United States.
Currently, Wireless Programmable Voice requires an upgraded Twilio account.
Wireless Programmable Voice calls can be processed using TwiML, as shown in these examples. However, it is not possible to directly address a SIM resource in the
To field of the Calls REST API.