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).

Inbound calls

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’

API

The ‘Final Status’ depends on the ‘Leg1 Status’


Leg1 Status

Leg2 Status

Final Status

Completed

Completed

Completed

Completed

No answer

Completed

Completed

Busy

Completed

Completed

Failed

Completed

Completed
Canceled
Completed

Completed

NA

Completed


Outbound calls

Connecting two numbers

The ‘Final Status’ depends on the ‘Leg2 Status’


Leg1 Status

Leg2 Status

Final Status

Completed

Completed

Completed

Completed

No answer

No answer

Completed

Busy

Busy

Completed

Failed

Failed

NA (No answer)

NA

No answer

NA (Busy)

NA

Busy

NA (Failed)

NA

Failed


Connecting number to a call flow

The ‘Final Status’ depends on the ‘Leg1 Status’


Leg1 Status

Leg2 Status (optional)

Final Status

Completed

Completed

Completed

Completed

No answer

Completed

Completed

Busy

Completed

Completed

Failed

Competed

NA (No answer)

NA

No answer

NA (Busy)

NA

Busy

NA (Failed)

NA

Failed


Points to remember

  • NA = null (empty values)
  • 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

    • For incoming calls, the Leg1Status is always marked as ‘Completed’

  • 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 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

Leg1Status
Status 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
Leg2Status
Status 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 dialed, most likely because the phone number was non-existent
  • canceled - The call was canceled while queued or ringing