Twilio, the Cloud… and Me!

Today, we’ll briefly detail how to setup a Twilio VoIP number in a way that it’ll allow us to:

– Receive SMS’s via Email
– Send SMS’s via CLI
– Receive Voice Calls via Landline, and if nobody picks up, fallback to Softphone
– Make Voice Calls via Softphone

Before we begin, you’ll need to:

1. Signup!
2. Register a Number!
3. Create a SIP Domain
4. Add a User under the SIP Domains > Credential Lists
5. Setup this “SMS to Email” PHP script”, in your favorite EC2 box

Once ready, let’s open the Developer Center, and opening the TwiML bins. Once there, add the following TwiML’s:

Name: Incoming Voice to Softphone:

[cc lang=”xml”]



USER@SIP-DOMAIN.sip.us1.twilio.com


[/cc]

Name: Incoming Voice to Landline:

[cc lang=”xml”]


Please, hold on the line while i put you through.

YOUR-LANDLINE-NUMBER


[/cc]

Name: Incoming SIP to Destination:

[cc lang=”xml”]


{{#e164}}{{To}}{{/e164}}

[/cc]

Name: Incoming SMS to Email:

[cc lang=”xml]


URL-MAPPED-TO-YOUR-SEND-MAIL-SCRIPT

[/cc]

Once ready, open Phone Numbers > Manage Numbers > Active Numbers and map everything as follows:

A call comes in: Incoming voice to Landline TwiML
A message comes in: Incoming SMS to email Script’s URL

Finally, we need to map the “Incoming Voice to Softphone” TwiML, as follows:

– Open Programmable Voice
– Open SIP Domains and click over your domain
– Set the “Incoming Voice to Softphone” TwiML URL in the Voice Configuration > Request URL field

That should be it, pretty much. As per Soft Phones available for macOS, the most common one is X-Lite, which offers a free version (and it’s also available for iOS).

Hope that helps!

P.s.: With the following snippet, placed in you ~/.profile, you should be also able to send SMS’s via CLI:

[cc lang=”bash”]
function sms() {
curl -X POST ‘https://api.twilio.com/2010-04-01/Accounts/ACCOUNT-KEY/Messages.json’ \
–data-urlencode “To=${@:1:1}” \
–data-urlencode “From=YOUR-TWILIO-PHONE” \
–data-urlencode “Body=${@:2:1}” \
-u USER-KEY:USER-SECRET
}
[/cc]