Menu

Expand
Rate this page:

Troubleshooting Voice Calls

Debugging Tools

Twilio offers several tools for investigating the interaction between Twilio and your application. If a call fails to go through, or your voice call behaves unexpectedly, the Debugger and Request Inspector should be your first stops for debugging.

Logs

Found in your Twilio console, the Logs contain detailed log of activities within your application, from error logs to specific logs around the APIs you use. These logs can help you dive deeper and understand which Twilio resources were impacted (and by whom).

To get to the debugger, open the console navigation and toggle to the Monitor tab and select Logs to access your error logs:

To the right of the Develop tab in your console is the Monitor tab. When this tab is selected, you can click on "Logs" to expand log options, expand Errors to find Error Logs

Once in the error logs, you can dig into detailed logs, such as these HTTP retrieval failures, to understand the root cause of your problem.

A detailed view of the Error Logs in the Twilio console. We can see two red bar lines on a graph showing the dates of errors. Below this graph is a detailed list with specific errors, product, and timestamp.

Alert Triggers

You can set your own Alert triggers via the console. These will notify you via webhook or email when an error occurs on your account.

Product-specific logs

The Twilio Console logs also provide you with information regarding the requests Twilio makes to your application and the responses Twilio receives. You will be able to access logs for any Twilio product you work with. Twilio keeps these logs for 90 days.

  • Log into your Twilio account
  • Access your call logs by navigating the Monitor tab, expanding Logs, and clicking on the product you need to examine, like Calls or Messaging logs.

Navigate to Messaging logs via the Monitor tab in your Twilio Console, then click on "Logs" to open logs and select "Messaging"

A screenshot of Programmable Messaging Logs in the Twilio Console. We see fields for searching by Message SID, Start Fate & Time, End Date & Time, From, To, and Status. One log line shows a message sent with a service, with all available data and message status of "Canceled"

  • Once you’re in your voice logs, find the message where the problem occurred. Click the hyperlinked date to dig down into the details for this message.

Screenshot of Twilio console showing Messaging log details

Now we can inspect the request!

If any HTTP requests were logged for the event you're investigating, you will find the Request Inspector at the bottom of the page, where you can see all of the data, response headers, and any errors that may have been returned.

A detailed view of the messaging request inspector. We see the type of request (GET), the URL accessed, timestamp, and all available request and response data.

In the above screenshot, Twilio made a request to demo.twilio.com but failed to send the message to the end user due to an invalid phone number.

Error Codes

All Twilio-generated error codes are documented here. Find your error code and dig into causes and possible solutions.

Some Common Issues

"An application error has occurred" on your call

An 'application error' means that the code Twilio is trying to fetch at the URL specified on your servers is either unavailable or has errors in it. You can check the URL for a given phone number via your console or within your application's instructions for handling a call.

Find the URL configured for use with a phone number in the phone numbers Console.

If you see this error, check your Twilio account's debugger logs for more details.

Note: Your server must be publicly accessible for Twilio to reach it. If you're building and testing locally, we recommend you use ngrok for testing your webhooks. You can follow this guide to learn how to use ngrok with Twilio.

How to Stop Receiving Calls

If you do not want to receive any phone calls with your Twilio phone number, you must remove the Voice Request URL from your Twilio phone number and leave that field blank. Without a Voice Request URL, this phone number is considered 'out of service' for inbound calls. You will not be charged for any incoming calls, nor will these calls be received and logged in your account.

To reject phone calls coming from specific phone numbers, use the <Reject> verb. As long as <Reject> is the first verb in your response to the call, Twilio will not answer the call. If any other TwiML verbs are used before <Reject>, your application will receive the call and your account will be billed.

Issues with <Gather>

There is no test which can be done to definitively determine the origin of a problem with <Gather>. The best approach to take is to do everything possible to isolate the issue. Try the following:

  1. Use several different phones from different carriers. If the issue occurs reliably, but only on phones from a particular carrier, you might want to contact that carrier directly to report the issue. If the problem occurs reliably on multiple telephones from multiple service providers, please contact Twilio support.
  2. If the issue happens only intermittently, it may be due to environmental factors or the style of use from a particular user. Try to see if there is a particular user, phone or location that experiences this issue more often.
  3. Check how your application handles <Gather>. <Gather> may receive all of the inputs from your user, but your application may not properly handle the request at the URL specified in <Gather action="">. Be sure to check that action="" points to the correct location, and that your specified location can accept requests made with the method you are using.

For more help implementing <Gather>, please see this guide.

International Issues

Twilio supports calling worldwide, but international permissions must be explicitly enabled. You can enable international permissions here.

If your account is not yet set up for international dialing, you should request access. After your account has been granted access, revisit the Global Permissions page and enable any country you wish to call.

Recording Resource Exceptions

The Recording API may occassionally throw an exception along the lines of:

Twilio\Exceptions\RestException: [HTTP 400] Unable to create record: Requested resource is not eligible for recording (uncaught exception) at /path/to/your/twilio/code.file

The call resource could be ineligible for recording for a number of reasons, but it typically means that you're trying to record a call that has already been completed (for example, both parties hung up) or a call that never established (for example, a failed call, or a call in which the caller hung up before media started flowing.)

You can get more detailed information about the phone call by using the REST API or through your call logs in the Twilio Console.

Other Tools and Add-Ons

Twilio Status

You can always check the real-time status of Twilio systems via the Twilio status page. If anything is wrong on our end, you'll see it there.

Voice Insights and Add-Ons

If you're looking for additional insights into your voice calls, you may want to consider Voice Insights, which gives you use real-time data about call quality, carrier analytics, and WebRTC performance to proactively assist customers and minimize support time.

Twilio also offers a wide variety of add-ons that help you easily access partner technologies that let you do more with Twilio. You can see the entire catalog of add-ons in the marketplace, including Twilio Carrier Information and the #1 Robocall and Spam Blocking solution

Contact Support

If you're still having trouble with your Twilio Voice calls, you can reach out to our support team for help.

Rate this page:

Need some help?

We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd by visiting Twilio's Stack Overflow Collective or browsing the Twilio tag on Stack Overflow.

        
        
        

        Thank you for your feedback!

        Please select the reason(s) for your feedback. The additional information you provide helps us improve our documentation:

        Sending your feedback...
        🎉 Thank you for your feedback!
        Something went wrong. Please try again.

        Thanks for your feedback!

        Refer us and get $10 in 3 simple steps!

        Step 1

        Get link

        Get a free personal referral link here

        Step 2

        Give $10

        Your user signs up and upgrade using link

        Step 3

        Get $10

        1,250 free SMSes
        OR 1,000 free voice mins
        OR 12,000 chats
        OR more