For any call that gets routed via Exotel, the status is tabulated based on the direction of the call viz. Incoming and Outgoing, which in-turn results with inferring the Leg1 status (status of the 1st party on the call) and Leg2 status (status of the 2nd party on the call).

Dashboard & reports

  • Completed - the caller & the callee were successfully connected over a call

  • Call attempt - the caller hung-up before the call could be routed to any of the agents

  • Missed call:

    • No answer - the call was not answered by any of the agents after it rang for the specified duration

    • Busy - none of the agents were available to answer the call

    • Failed - calls could not either reach or connect to the agents

  • Voicemail - based on the call flow, if a voicemail applet is configured, then any calls that end up here would have a final status indicating that it is a ‘voicemail’


Inbound calls

Leg1Status will always be 'completed' if call is picked up by Exotel i.e., if the caller is connecting to a call flow which has a menu prompt such as Greeting, IVR, Gather, Voicemail as the first applet.


Leg1Status

Leg2Status 

(DialCallStatus)

Status

Description

completed

completed

completed

This indicates that a connection was established and audio was exchanged between the caller and the callee.

completed

no-answer

completed

Exotel dialled the number but we did not get an answered event back before the timeout value elapsed.

completed

busy

completed

Exotel dialled the number but received a busy response

completed

failed

completed

Exotel's carriers could not connect the call. Possible reasons include the number is switched off or not reachable, the number is invalid, transient connection error etc.

completed

canceled

completed

Exotel dialled the number (Leg2) but Leg1 disconnected the call before we received completed / busy / failed / no-answer signal (i.e. before the timeout period elapsed).


This can occur if a user disconnects when call is queued / ringing or as he begins to hear operator tone suggesting phone number is invalid or switched off.

completed

N/A (empty)

completed

The incoming call didn't have a second leg or the user disconnected before Exotel reached the connect applet to begin dial.


Leg1Status can vary in case the caller is connecting to a call flow which does not have a menu prompt in the beginning as Exotel will directly patch the user to the 2nd leg without picking up the call.


Leg1Status

Leg2Status (DialCallStatus)

 Status

Description

busy

no-answer / busy

completed

Exotel dialled the number but we did not get answered event back before the timeout value elapsed or Leg2 disconnected. In such cases, Exotel will send a busy signal back to Leg1.

no-answer

no-answer

completed

Exotel dialled the number but we did not get answered event back before the timeout value elapsed. In such cases, Exotel will send a no-answer signal back to Leg1.

busy

canceled

completed

Exotel dialled the number but Leg1 disconnected the call before the timeout value elapsed. In such cases, Exotel will receive a busy signal from Leg1.


NOTE: In case of an Incoming call, for all purposes, Leg2Status will determine all scenarios to find out what happened with a call. 'Status' and 'Leg1Status' are not really relevant to be used for practical purposes and are present due to archaic (backward compatibility) reasons


Explanation:

  • The overall ‘Status’ will always be 'completed' in case of an incoming call as it has successfully arrived to Exotel from the caller.

  • Leg2Status (also passed as 'DialCallStatus' in passthru) will refer to the call status of the callee (to whom caller wanted to get connected to) of the last attempted number via the connect applet (if it attempts to multiple numbers).


Outbound calls

Connecting two numbers (API Link)


Leg1StatusLeg2Status 
(DialCallStatus)
 Status
Description
completed
completedcompletedThis indicates that a connection was established and audio was exchanged between the caller and the callee.
completed
no-answerno-answerThis indicates Leg1 picked up the call and Exotel dialled the Leg2 number but we did not get an answered event back before the timeout value elapsed.
completed
busybusyThis indicates Leg1 picked up the call and Exotel dialled the Leg2 number but received a busy response
completedfailedfailedThis indicates Leg1 picked up the call and Exotel dialled the Leg2 number but Exotel's carriers could not connect the call. Possible reasons include the number is switched off or not reachable, the number is invalid, transient connection error etc.
completedcanceledfailedExotel dialled the number (Leg2) but Leg1 disconnected the call before we received completed / busy / failed / no-answer signal (i.e. before the timeout period elapsed).

This can occur if a user disconnects before ringing is completed or as soon as he begins to hear operator tone suggesting phone number is invalid / switched off.
completed
N/A (empty)
failed
This indicates Leg1 picked up the call but the call didn't have a second leg or the user disconnected before Exotel began to dial.
no-answerN/A (empty)no-answerThis indicates Exotel dialled the Leg1 number but we did not get an answered event back before the timeout value elapsed.
busyN/A (empty)busyExotel dialled the Leg1 number but received a busy response.
failedN/A (empty)failedExotel's carriers could not connect Leg1 of the call. Possible reasons include the number is switched off or not reachable, the number is invalid, transient connection error etc.


NOTE: In case of an outgoing call, for all purposes, Leg1Status and Leg2Status will determine all scenarios to find out what happened with a call. 'Status' is not really relevant to be used for practical purposes and is present due to archaic (backward compatibility) reasons


Connecting a number to a call flow (API Link)


Leg1 Status

Leg2 Status (DialCallStatus)

 Status

Description

completed

completed

completed

This indicates that a connection was established and audio was exchanged between the caller and the callee.

completed

no-answer

completed

This indicates Leg1 picked up the call and Exotel dialled the Leg2 number but we did not get an answered event back before the timeout value elapsed.

completed

busy

completed

This indicates Leg1 picked up the call and Exotel dialled the Leg2 number but received a busy response

completed

failed

completed

This indicates Leg1 picked up the call and Exotel dialled the Leg2 number but Exotel's carriers could not connect the call. Possible reasons include the number is switched off or not reachable, the number is invalid, transient connection error etc.

completed

canceled

completed

Exotel dialled the number (Leg2) but Leg1 disconnected the call before we received  completed / busy / failed / no-answer signal (i.e. before the timeout period elapsed).

This can occur if a user disconnects before ringing is completed or as soon as he begins to hear operator tone suggesting phone number is invalid / switched off.
completed
N/A (empty)

completed
This indicates Leg1 picked up the call but the call didn't have a second leg or the user disconnected before Exotel began to dial.

no-answer

N/A (empty)

no-answer

This indicates Exotel dialled the Leg1 number but we did not get an answered event back before the timeout value elapsed.

busy

N/A (empty)

busy

Exotel dialled the Leg1 number but received a busy response.

failed

N/A (empty)

failed

Exotel's carriers could not connect Leg1 of the call. Possible reasons include the number is switched off or not reachable, the number is invalid, transient connection error etc.


NOTE: In case of an outgoing call, for all purposes, Leg1Status and Leg2Status will determine all scenarios to find out what happened with a call. 'Status' is not really relevant to be used for practical purposes and is present due to archaic (backward compatibility) reasons


Points to remember:

  • In the Call details API, we have the Leg1Status and Leg2Status that denote the statuses of those specific legs, in a particular call
    • Here, you would also find an additional parameter called ‘canceled’, which would essentially indicate that ‘the call was canceled while queued or ringing’ i.e. during the call run

  • Similarly, in the passthru applet, we have a ‘DialCallStatus’ that corresponds to Leg2Status

  • Irrespective of the status, a call is charged based on the Leg1 or Leg2 (or both) having answered a call from an Exotel number (ExoPhone), at any given point in time

  • Below are the reasons for Leg2 which can be N/A (empty/null):
    • No number is returned to dial out the 2nd leg of call
    • Number is returned but before even Exotel starts dialling out, the 1st leg caller dropped the call
    • If there is no Leg2 in the call flow


Glossary:

Leg1StatusStatus of the first leg of the call. Can be one of
  • completed - The call was answered and has ended normally
  • busy - The caller received a busy signal
  • failed - The call could not be completed as dialled, most likely because the phone number was non-existent
  • no-answer - The call ended without being answered
  • canceled - The call was canceled while queued or ringing
Leg2StatusStatus of the second leg of the call. Can be one of
  • completed - The call was answered and has ended normally
  • busy - The caller received a busy signal
  • no-answer - The call ended without being answered
  • failed - The call could not be completed as dialled, most likely because the phone number was non-existent
  • canceled - The call was canceled while queued or ringing