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.
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:
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.
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.
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.
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.
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.
All Twilio-generated error codes are documented here. Find your error code and dig into causes and possible solutions.
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.
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.
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.
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:
<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.
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.
The Recording API may occasionally 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.
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.
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.
If you're still having trouble with your Twilio Voice calls, you can reach out to our support team for help.