Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Build Status


Dog n Bone: A JavaScript browser phone implementation for Twilio.


Dog n Bone is an application for Twilio. It requires

  • a Twilio account with Account SID and Auth Token,
  • a Twilio phone number with voice capability and
  • a TwiML app.

All of these can be set up from the Twilio console.

Twilio Account

Go to and click Sign Up. After creating an account, the Account SID and Auth Token are shown on the console dashboard.

Phone Number

Create a Twilio Phone Number from the Phone Numbers section of the console. Click (+) to buy a new number. Select any number with Voice capability.

TwiML application

Create a new TwiML application under the Phone Numbers / Tools menu of the console. Click (+) to create a new application. Enter 'Dog n Bone' as the Friendly name and leave the URLs blank for now. We'll set the Voice URL after the app is deployed.

After creating the TwiML application, click on it and note its SID.


Clone the application code (git clone or download the source zip and run

npm run build

to build the application.


The application requires environment infomation to be set in the .env file. See .env.example for an example .env file. Rename this file as .env and then set the TWILIO_TWIML_APP_FRIENDLY_NAME to your TwiML application's friendly name ('Dog n Bone').

The application can then be run locally with

npm start

Browse to http://localhost:8080 to check the application is running - it should show a login screen.

Testing locally with ngrok

Twilio must be able to communicate with the application's voice endpoint at /api/voice. To expose this on a local development environment, use ngrok

ngrok http 8080

This will expose your application on https://<something> Note the URL and add it as the Voice Request URL of your TwiML application. The request URL should be of format:


You should now be able to login to Dog n Bone on http://localhost:8080, login with your Twilio Account SID and Auth Token (copy them from the Twilio Console) and then make a call.

Deploy to Google App Engine

Dog n Bone is a Node JS application so can be deployed to Google App Engine (standard environment). See the Hello World example for instructions on setting up a Google Cloud Platform project and installing the Google Cloud SDK to your local machine.

Before deploying, you'll need to build the application. The Google App Engine descriptor file (app.yaml) is included in the source code.

Once you've set up the CGP project and have the command line tools, Dog n Bone can be deployed with

gcloud app deploy

It will deploy to https://<something> Set this URL as the Voice Request URL of your TwiML application. The request URL should be of format:


Deploy to other PaaS vendors

Dog n Bone is a Node JS application so should be good to deploy to other PaaS vendors such as Heroku or AWS Elastic Beanstalk. I've tested only on Google App Engine though so you're on your own for this. Don't forget to:

  • Deploy your .env file or otherwise set the TWILIO_TWIML_APP_FRIENDLY_NAME environment variable in your deployment.
  • Set the Voice Request URL of your TwiML application to your deployment's /api/voice endpoint.