This project is built using the Sinatra web framework.
-
First clone this repository and
cd
into it.$ git clone git@github.com:TwilioDevEd/warm-transfer-sinatra.git $ cd warm-transfer-sinatra
-
Install the dependencies.
$ bundle
-
Copy the sample configuration file and edit it to match your configuration.
$ cp .env.example .env
You can find your TWILIO_ACCOUNT_SID
and TWILIO_AUTH_TOKEN
in your
Twilio Account Settings.
You will also need a TWILIO_NUMBER
, which you may find here.
Run source .env
to export the environment variables
-
Create development and test databases
Make sure you have installed PostgreSQL. If on a Mac, I recommend Postgres.app.
$ createdb warm_transfer_sinatra $ createdb warm_transfer_sinatra_test
-
Make sure the tests succeed.
$ bundle exec rspec
-
Run the server.
$ bundle exec rackup
-
Expose your application to the wider internet using ngrok. This step is important because the application won't work as expected if you run it through localhost.
$ ngrok http 9292
Once ngrok is running, open up your browser and go to your ngrok URL. It will
look something like this: http://9a159ccf.ngrok.io
You can read this blog post for more details on how to use ngrok.
- Configure Twilio to call your webhooks
You will also need to configure Twilio to call your application when calls are received on your TWILIO_NUMBER
. The voice URL should look something like this:
http://9a159ccf.ngrok.io/conference/connect/client
That's it!
-
Navigate to
https://<ngrok_subdomain>.ngrok.io
in two different browser tabs or windows.Notes:
-
In one window/tab click
Connect as Agent 1
and in the other one clickConnect as Agent 2
. Now both agents are waiting for an incoming call. -
Dial your Twilio Number to start a call with
Agent 1
. YourTWILIO_NUMBER
environment variable was set when configuring the application to run. -
When
Agent 1
answers the call from the client, he/she can dialAgent 2
in by clicking on theDial agent 2 in
button. -
Once
Agent 2
answers the call all three participants will have joined the same call. After thatAgent 1
can drop the call and leave both the client andAgent 2
having a pleasant talk.
- No warranty expressed or implied. Software is as is. Diggity.
- MIT License
- Lovingly crafted by Twilio Developer Education.