Twilio is launching a new Console. Some screenshots on this page may show the Legacy Console and therefore may no longer be accurate. We are working to update all screenshots to reflect the new Console experience. Learn more about the new Console.
In this guide we’ll show you how to use Twilio Programmable Voice to record phone calls with your Python web application.
We’ll learn how to record both inbound and outbound calls. In both examples we’ll use Twilio's Python SDK.
Twilio makes answering a phone call as easy as responding to an HTTP request. When a phone number you have bought through Twilio receives an incoming call, Twilio will send an HTTP request to your web application asking for instructions on how to handle the call. Your server will respond with an XML document containing TwiML that instructs Twilio on what to do with the call. Those instructions can direct Twilio to read out a message, play an MP3 file, make a recording and much more.
- Buy and configure a Twilio-powered phone number capable of making and receiving phone calls, and point it at your web application
Webhooks are user-defined HTTP callbacks. They are usually triggered by some event, such as receiving an SMS message or an incoming phone call. When that event occurs, Twilio makes an HTTP request (usually a POST or a GET) to the URL configured for the webhook.
To handle a webhook, you only need to build a small web application that can accept the HTTP requests. Almost all server-side programming languages offer some framework for you to do this. Examples across languages include ASP.NET MVC for C#, Servlets and Spark for Java, Express for Node.js, Django and Flask for Python, and Rails and Sinatra for Ruby. PHP has its own web app framework built in, although frameworks like Laravel, Symfony and Yii are also popular.
どのフレームワークや言語を選んだにせよ、WebhookはあらゆるTwilioアプリケーションに対して同様に機能します。 これらはTwilioに与えられたURIに対するリクエストを生成します。 アプリケーションはデータベースの読み書き、他のAPIとの統合、あるいは何らかの演算など、必要とされるあらゆる処理を実行し、それからTwilioに実行してほしい指示をTwiMLのレスポンスとしてTwilioに応答します。
TwiML is the Twilio Markup Language, which is just to say that it's an XML document with special tags defined by Twilio to help you build your SMS and voice applications. TwiML is easier shown than explained. Here's some TwiML you might use to respond to an incoming phone call:
<?xml version="1.0" encoding="UTF-8"?> <Response> <Say>Thanks for calling!</Say> </Response>
And here's some TwiML you might use to respond to an incoming SMS message:
<?xml version="1.0" encoding="UTF-8"?> <Response> <Message>We got your message, thank you!</Message> </Response>
Now comes the fun part — writing Python that will handle an incoming HTTP request from Twilio!
In this example we’ll use the Flask web framework to respond to Twilio’s request. We’ll then use TwiML to tell Twilio how to handle the call.
This code is generating the
<Record> TwiML verb, check the documentation for additional options and configuration. You can find all recordings in your console. In addition, you can make use of callbacks to be notified when a recording is ready for use.
Next up, we’ll record an outgoing call by writing a little Python. First, we’ll need to retrieve the credentials for our Twilio account.
Just pass an extra argument,
record, to the
client.calls.create method and Twilio will record the entire phone call.
You can also receive a Webhook request when your recording is ready by passing a
RecordingStatusCallback URL with your
client.calls.create command. Twilio will send a request to the URL you specified, and that request will include a link to the recording’s audio file: look for the
You can learn more about the
RecordingStatusCallback parameter in the Making Calls reference docs.
We just learned to record inbound and outbound phone calls using Twilio Programmable voice and Python. If you’d like to learn more about how you can use Twilio and Python, check out these handy guides: