SUPPORT.TWILIO.COM END OF LIFE NOTICE: This site, support.twilio.com, is scheduled to go End of Life on February 27, 2024. All Twilio Support content has been migrated to help.twilio.com, where you can continue to find helpful Support articles, API docs, and Twilio blog content, and escalate your issues to our Support team. We encourage you to update your bookmarks and begin using the new site today for all your Twilio Support needs.

Detecting When a Recipient Is Already on Another Call With Twilio Programmable Voice

Objective

This article explains how Twilio Programmable Voice handles outbound calls when the recipient is already on another call. It covers what information is available via Twilio APIs, webhooks, and Voice Insights, and clarifies why you may see “no-answer” or “completed” statuses instead of “busy” in certain scenarios.

 

Product

Twilio Programmable Voice

 

Environment

Twilio Console

 

User Account Permission/Role(s) Required

  • Standard Twilio account with access to Programmable Voice
  • Developer or Admin role required to configure webhooks, access Voice Insights, or review call logs

 

Procedure

1. Understanding Busy Detection in Twilio

  • Twilio relies on the downstream carrier (the recipient’s phone provider) to signal if a line is busy.
  • If the carrier returns a SIP “busy” code (such as 486 Busy Here or 600 Busy Everywhere), Twilio will:
    • Set the call’s CallStatus to busy
    • Trigger your configured StatusCallback webhook with CallStatus=busy
    • Log the busy event in Voice Insights and Debugger (error code 31486)

2. When Busy Is Not Detected

  • Some carriers do not send a busy SIP code when the recipient is on another call.
  • Instead, they may:
    • Play an in-band audio announcement (e.g., “The person you are calling is on another call”)
    • Let the call ring indefinitely
    • Route the call to voicemail
  • In these cases, Twilio receives a normal connect or ringing signal (e.g., SIP 200 OK), and the call is marked as completedno-answer, or answerednot busy.

3. How to Detect Busy Status

  • Webhook/StatusCallback: Monitor the CallStatus parameter for busy. If present, the recipient’s carrier explicitly signaled a busy line.
  • Voice Insights: Review the “Last SIP Response” for the call. A value like 486 Busy Here confirms a busy signal was received.
  • No Busy Status? If you see no-answer or completed, the carrier did not send a busy signal. Twilio cannot programmatically detect in-band announcements or distinguish between a true busy and other scenarios.

4. Advanced: Detecting In-Band Announcements

  • If you need to detect when a carrier plays an audio announcement (rather than signaling busy), you must:
    • Enable call recording at the start of the call
    • Use speech analytics or silence detection on the recording to identify automated messages
    • Twilio does not transcribe or analyze in-band audio for busy announcements

 

Additional Information

  • Carrier Behavior Varies: Not all carriers handle busy lines the same way. Some support multiple simultaneous calls, some play announcements, and some send busy signals.
  • Twilio Limitations: Twilio can only reflect the signaling it receives from the carrier. If the carrier does not send a busy code, Twilio cannot infer or expose that the recipient is on another call.
  • Best Practices: Always check the CallStatus and “Last SIP Response” for each call. For critical workflows, consider integrating speech analytics if you need to detect in-band announcements.
  • References:

If you need further assistance or have questions about specific call scenarios, Twilio’s support team is available to help.

Have more questions? Submit a request
Powered by Zendesk