Call Events

All events representing the state of telephone calls share common fields and meanings; whether they are delivered in response to call control methods, or by querying for events, or delivered via webhook. All call events have the following properties:

Property Description
id The unique id of the event
userId The VIS user id associated with the event
accountId The VIS account id associated with the event
externalId The unique id of the event provided by the external communications provider, only used for informational purposes
direction Either INBOUND or OUTBOUND
phoneNumber The phone number of the remote party
callerId The name of the remote party
state The call state, see Event States below
duration The length of the call (in milliseconds)
startTime An ISO-8601 date/time when the call started. For outbound, the start time marks when the call is placed; for incoming calls, it marks the time the call was first received
answerTime An ISO-8601 date/time when the call was answered
endTime An ISO-8601 date/time when the call ended

Event States

The VIS APIs present an event state model for telephone calls, hiding the differences and complexities of either Vonage Business Communications and Vonage Enterprise. These event states are delivered in response to method APIs (such as place call, get calls) and included in webhook event notifications. Understanding the event state model is critical to building external integrations.

The following finite state machine describes the allowable state transitions:

The only initial state is Initializing. The only allowable ending states are Answered, Cancelled, Rejected, and Missed. Call states in one of the final ending states will always stay in the ending state.

State Initial Final Direction Allowable Transitions Description
Initializing Yes No Inbound Ringing, Answered A call has been placed but the remote party has not yet been alerted
Ringing No No Inbound, Outbound Active, Answered, Cancelled, Rejected, Missing The remote party is being alerted (outbound) or an inbound call is occurring
Active No No Inbound, Outbound Answered, Held, Remote Held A call is active and the participants are speaking
Held No No Inbound, Outbound Active An active call is currently on hold
Remote Held No No Inbound, Outbound Active A remote party of an active call is currently on hold
Answered No Yes Inbound, Outbound A call of non-zero duration has ended
Cancelled No Yes Outbound An outbound call has been cancelled before the remote party answered
Missed No Yes Inbound An incoming call was not answered
Rejected No Yes Inbound An incoming call was rejected or sent to voicemail without being answered

For every state, the values for startTime, answerTime, endTime, and duration will follow certain rules. All call states will have a valid startTime. Only Active, Held, Remote Held, and Answered will have a valid answerTime. The endTime property will stay null until the call reaches a final state (Answered, Cancelled, Missed, Rejected). Only calls that have reach the final Answered state will have a non-zero duration.

Getting Call Events

The API supports retrieving call events for either active or ended calls. Because the number of call event records may be numerous, the response may be paged. Typically, applications retrieve the total number of records for a particular set of query parameters and then retrieve the events over a span of multiple API calls using the same set of query parameters and a maximum number of events to return per call.