05 Events


05 Events

Notes:

  • Events describe “what happened” (server-pushed or locally emitted by the SDK).
  • Event constants are exposed via AgentSDK.EventType (or an equivalent enum).
  • Each event payload typically contains an eventType string to identify the event.
  • Types in 06-Types.md are the source of truth. This document provides field-level payload tables and practical notes for integration.

1. Subscribe to events (on/off/once)

const { EventType } = AgentSDK;

const onStatus = (e) => console.log('agentStatus', e);
AgentSDK.on(EventType.AGENT_STATUS, onStatus);

AgentSDK.once(EventType.SESSION_INIT, () => console.log('session init'));

// Cleanup on unload
AgentSDK.off(EventType.AGENT_STATUS, onStatus);

2. Event catalog (common)

ScenarioEvent name (eventType)EventType constant
Agent statusagentStatusAGENT_STATUS
Preview outbound: start dialing customerpreviewObCallStartPREVIEW_OBCALL_START
Preview outbound: customer ringingpreviewObCallRingingPREVIEW_OBCALL_RINGING
Preview outbound: bridgedpreviewObCallBridgePREVIEW_OBCALL_BRIDGE
Preview outbound: resultpreviewObCallResultPREVIEW_OBCALL_RESULT
Consult startedatxferStartATXFER_START
Consult connectedatxferLinkATXFER_LINK
Consult ended (resume/hangup/cancel)atxferEndedATXFER_ENDED
Consult failedatxferErrorATXFER_ERROR
Consult three-way resultthreewayAtxferResultTHREEWAY_ATXFER_RESULT
Consult three-way endedatxferThreewayUnlinkATXFER_THREEWAY_UNLINK
Consult transfer completedcompleteAtxferResultCOMPLETE_ATXFER_RESULT
RingingringingRINGING
Session init/terminatesessionInit / sessionTerminateSESSION_INIT / SESSION_TERMINATE
SIP session init/terminatesipSessionInit / sipSessionTerminateSIP_SESSION_INIT / SIP_SESSION_TERMINATE
Reconnect attemptreconnectAttemptRECONNECT_ATTEMPT
Queue status (supervisor)queueStatusQUEUE_STATUS
Silent monitoring (result/link/unlink)spyResult / spyLink / spyUnlinkSPY_RESULT / SPY_LINK / SPY_UNLINK
Three-way (result/link/unlink)threewayResult / threewayLink / threewayUnlinkTHREEWAY_RESULT / THREEWAY_LINK / THREEWAY_UNLINK
Whisper coaching (result/link/unlink)whisperResult / whisperLink / whisperUnlinkWHISPER_RESULT / WHISPER_LINK / WHISPER_UNLINK
Barge-in (result/link/unlink)bargeResult / bargeLink / bargeUnlinkBARGE_RESULT / BARGE_LINK / BARGE_UNLINK
Force disconnect resultdisconnectResultDISCONNECT_RESULT
Force offline resultsetOfflineResultSET_OFFLINE
Extension stateextenStateEXTENSTATE
IVR interaction returninteractReturnINTERACT_RETURN
Softphone disconnectedsipDisconnectedSIP_DISCONNECTED
Real-time transcriptiontranscriptTRANSCRIPT
Scheduled callbackorderCallBackORDER_CALLBACK
Ping (latency / network)pingPING
WebRTC stats (per second in-call)webrtcStatsWEBRTC_STATS

3. Payloads (field-level)

Tip: state/stateAction values are defined in 08-State-Machine-stateAction.md. For stricter typing, use 06-Types.md.

3.1 agentStatus (Agent status)

Emitted when the agent state changes.

FieldTypeDescription
eventTypestringAlways agentStatus
tenantIdstringTenant ID
agentNostringAgent ID
statusobjectAgent status object (state/stateAction/initialStatus/deviceStatus/...)

Example shape:

{
  eventType: 'agentStatus',
  tenantId: 't1',
  agentNo: '0001',
  status: {
    state: 'idle',
    stateAction: 'idle',
    initialStatus: 1,
    deviceStatus: 0
    // When deviceStatus=2/3/4, may include callType/uniqueId/mainUniqueId, etc.
  }
}

3.2 previewObCallStart (Preview outbound: start dialing customer)

FieldTypeDescription
eventTypestringAlways previewObCallStart
tenantIdstringTenant ID
agentNostringAgent ID
customerNumberstringCustomer number
customerNumberTypenumber0 landline; 1 mobile
obClidAreaCodestringCustomer area code
mainUniqueIdstringMain call unique id
requestUniqueIdstringRequest unique id
obClidstringOutbound caller ID

3.3 previewObCallRinging (Preview outbound: customer ringing)

FieldTypeDescription
eventTypestringAlways previewObCallRinging
tenantIdstringTenant ID
agentNostringAgent ID
customerNumberstringCustomer number
customerNumberTypenumber0 landline; 1 mobile
obClidAreaCodestringCustomer area code
statestringAgent state (offline/invalid/idle/busy/calling/ringing/talking/wrapup)
stateActionstringState action (see 08-State-Machine-stateAction.md)
mainUniqueIdstringMain call unique id

3.4 previewObCallBridge (Preview outbound: bridged)

FieldTypeDescription
eventTypestringAlways previewObCallBridge
tenantIdstringTenant ID
agentNostringAgent ID
customerNumberstringCustomer number
customerNumberTypenumber0 landline; 1 mobile
obClidAreaCodestringCustomer area code
channelstringChannel name
destChannelstringDestination channel name
mainUniqueIdstringMain call unique id

3.5 previewObCallResult (Preview outbound: result)

FieldTypeDescription
eventTypestringAlways previewObCallResult
tenantIdstringTenant ID
agentNostringAgent ID
customerNumberstringCustomer number
resultstringsuccess connected; error failed (e.g., cancelled)
uniqueIdstringCall unique id
obClidstringOutbound caller ID

3.6 ringing

FieldTypeDescription
eventTypestringAlways ringing
tenantIdstringTenant ID
agentNostringAgent ID
callTypenumber1 inbound; 2 WebCall; 4 preview outbound; 5 predictive outbound; 6 outbound; 9 internal call; 11 SIP access
channelstringChannel name
mainUniqueIdstringMain call unique id
uniqueIdstringPer-leg unique id
customerNumberstringCustomer number
customerAreaCodestringArea code
customerProvincestringProvince
customerCitystringCity
subCallTypenumberSub-type (101/102/103/...) used to differentiate transfer/consult/monitoring, etc.
hotlinestringHotline
numberTrunkstringTrunk
queueNostringQueue number
chanVariablesobjectCustom variables

3.7 Consult events: atxferStart / atxferLink / atxferEnded / atxferError

atxferStart (Consult started)

FieldTypeDescription
eventTypestringAlways atxferStart
tenantIdstringTenant ID
agentNostringAgent ID
channelstringChannel name
destChannelstringDestination channel name
statestringAgent state
stateActionstringState action
mainUniqueIdstringMain call unique id

atxferLink (Consult connected)

FieldTypeDescription
eventTypestringAlways atxferLink
tenantIdstringTenant ID
agentNostringAgent ID
channelstringChannel name
targetstringConsult target
targetTypenumber0 PSTN; 1 agent; 2 extension
statestringAgent state
stateActionstringState action

atxferEnded (Consult ended: resume/hangup/cancel)

FieldTypeDescription
eventTypestringAlways atxferEnded
tenantIdstringTenant ID
agentNostringAgent ID
targetstringConsult target
targetTypenumber0 PSTN; 1 agent; 2 extension
hangupSidenumberWho hung up (consult party vs agent/customer)
statestringAgent state
stateActionstringState action

atxferError (Consult failed)

FieldTypeDescription
eventTypestringAlways atxferError
tenantIdstringTenant ID
agentNostringAgent ID
statestringAgent state
stateActionstringState action

3.8 threewayAtxferResult / atxferThreewayUnlink / completeAtxferResult

threewayAtxferResult (Consult three-way result)

FieldTypeDescription
eventTypestringAlways threewayAtxferResult
tenantIdstringTenant ID
agentNostringAgent ID
targetstringConsult target
targetTypenumber0 PSTN; 1 agent; 2 extension
statestringAgent state
stateActionstringState action

atxferThreewayUnlink (Consult three-way ended)

FieldTypeDescription
eventTypestringAlways atxferThreewayUnlink
tenantIdstringTenant ID
agentNostringAgent ID
targetstringConsult target
targetTypenumber0 PSTN; 1 agent; 2 extension
statestringAgent state
stateActionstringState action

completeAtxferResult (Consult transfer completed)

FieldTypeDescription
eventTypestringAlways completeAtxferResult
tenantIdstringTenant ID
agentNostringAgent ID
targetstringConsult target
targetTypenumber0 PSTN; 1 agent; 2 extension
statestringAgent state
stateActionstringState action

3.9 reconnectAttempt

Emitted when the SDK is about to attempt a reconnect. Max attempts: 20. After that, the agent should re-login.

FieldTypeDescription
eventTypestringAlways reconnectAttempt
attemptnumberAttempt number (starting at 1)
codenumber0 reconnected; -1 disconnected
firstAttemptTsnumberTimestamp (ms) when reconnect loop started
maxAttemptsnumberMax attempts (fixed at 20)
sinceFirstAttemptMsnumberElapsed time since first attempt (ms)

3.10 queueStatus (Supervisor)

FieldTypeDescription
eventTypestringAlways queueStatus
queueStatusobjectMap: { "<queueNo>": { queueParams, agentStatuses, queueEntries } }

See queue types in 06-Types.md.

3.11 spyResult / spyLink / spyUnlink (Silent monitoring)

spyResult

FieldTypeDescription
eventTypestringAlways spyResult
tenantIdstringTenant ID
agentNostringAgent ID
spiedCnostringTarget agent ID
initiatorstringMonitoring initiator
initiatorTypenumber0 PSTN; 1 agent; 2 extension
uniqueIdstringCall unique id
resultstringsuccess or error

spyLink

FieldTypeDescription
eventTypestringAlways spyLink
tenantIdstringTenant ID
agentNostringAgent ID
spiedCnostringTarget agent ID
initiatorstringMonitoring initiator
initiatorTypenumber0 PSTN; 1 agent; 2 extension
resultstringsuccess or error
channelstringChannel name

spyUnlink

FieldTypeDescription
eventTypestringAlways spyUnlink
tenantIdstringTenant ID
agentNostringAgent ID
spiedCnostringTarget agent ID
initiatorstringMonitoring initiator
initiatorTypenumber0 PSTN; 1 agent; 2 extension

3.12 threewayResult / threewayLink / threewayUnlink (Supervisor three-way)

threewayResult

FieldTypeDescription
eventTypestringAlways threewayResult
tenantIdstringTenant ID
agentNostringAgent ID
threewayedCnostringTarget agent ID
initiatorstringInitiator
initiatorTypenumber0 PSTN; 1 agent; 2 extension
uniqueIdstringCall unique id
resultstringsuccess or error

threewayLink

FieldTypeDescription
eventTypestringAlways threewayLink
tenantIdstringTenant ID
agentNostringAgent ID
threewayedCnostringTarget agent ID
initiatorstringInitiator
initiatorTypenumber0 PSTN; 1 agent; 2 extension
channelstringChannel name

threewayUnlink

FieldTypeDescription
eventTypestringAlways threewayUnlink
tenantIdstringTenant ID
agentNostringAgent ID
threewayedAgentNostringTarget agent ID
initiatorstringInitiator
initiatorTypenumber0 PSTN; 1 agent; 2 extension

3.13 whisperResult / whisperLink / whisperUnlink (Whisper coaching)

whisperResult

FieldTypeDescription
eventTypestringAlways whisperResult
tenantIdstringTenant ID
agentNostringAgent ID
whisperedCnostringTarget agent ID
initiatorstringInitiator
initiatorTypenumber0 PSTN; 1 agent; 2 extension
uniqueIdstringCall unique id
resultstringsuccess or error

whisperLink

FieldTypeDescription
eventTypestringAlways whisperLink
tenantIdstringTenant ID
agentNostringAgent ID
whisperedCnostringTarget agent ID
initiatorstringInitiator
initiatorTypenumber0 PSTN; 1 agent; 2 extension
channelstringChannel name

whisperUnlink

FieldTypeDescription
eventTypestringAlways whisperUnlink
tenantIdstringTenant ID
agentNostringAgent ID
whisperedAgentNostringTarget agent ID
initiatorstringInitiator
initiatorTypenumber0 PSTN; 1 agent; 2 extension

3.14 bargeResult / bargeLink / bargeUnlink (Barge-in)

bargeResult

FieldTypeDescription
eventTypestringAlways bargeResult
tenantIdstringTenant ID
agentNostringAgent ID
bargedAgentNostringTarget agent ID
initiatorstringInitiator
initiatorTypenumber0 PSTN; 1 agent; 2 extension
uniqueIdstringCall unique id
resultstringsuccess or error

bargeLink

FieldTypeDescription
eventTypestringAlways bargeLink
tenantIdstringTenant ID
agentNostringAgent ID
bargedAgentNostringTarget agent ID
initiatorstringInitiator
initiatorTypenumber0 PSTN; 1 agent; 2 extension
channelstringChannel name

bargeUnlink

FieldTypeDescription
eventTypestringAlways bargeUnlink
tenantIdstringTenant ID
agentNostringAgent ID
bargedCnostringTarget agent ID
initiatorstringInitiator
initiatorTypenumber0 PSTN; 1 agent; 2 extension

3.15 disconnectResult (Force disconnect result)

FieldTypeDescription
eventTypestringAlways disconnectResult
tenantIdstringTenant ID
agentNostringAgent ID
disconnectorCnostringTarget agent ID
initiatorstringInitiator
initiatorTypenumber0 PSTN; 1 agent; 2 extension
uniqueIdstringCall unique id
resultstringsuccess or error

3.16 setOfflineResult (Force offline result)

FieldTypeDescription
eventTypestringAlways setOfflineResult
tenantIdstringTenant ID
agentNostringAgent ID
initiatorstringWho forced offline (supervisor agentNo or admin name)
codestring0 success; -1 failure
messagestringMessage (commonly ok)

3.17 orderCallBack (Scheduled callback)

This event exists (eventType=orderCallBack, EventType.ORDER_CALLBACK), but the current source documentation does not provide a field-level payload contract.

Recommended approach:

  • Treat it as a pass-through event and branch on eventType=orderCallBack
  • If you must rely on concrete fields, confirm the payload contract with the backend team before integration

3.18 extenState (Extension state)

FieldTypeDescription
eventTypestringAlways extenState
statestringReachable / Unreachable
registerStatestringRegistered / Unregistered
registerTimestringRegistration time (e.g., 2024-01-01 10:54:19)
expirationTimestringExpiration time
extenIpstringPhone IP
URIstringRegistration URI
extenNostringExtension number
tenantIdstringTenant ID

3.19 interactReturn (IVR interaction return)

FieldTypeDescription
eventTypestringAlways interactReturn
tenantIdstringTenant ID
agentNostringAgent ID
returnVariablesobjectReturn variables (provided via transferIvr)

3.20 sipDisconnected (Softphone disconnected)

Emitted when the softphone connection is interrupted. In most cases, the agent should re-login / recreate the softphone session.

3.21 transcript (Real-time transcription)

Naming note: legacy docs may mention transcriptEvent or rasr. The SDK public eventType is transcript.

FieldTypeDescription
eventTypestringAlways transcript
textstringTranscribed sentence text
rolenumber1 agent side; 2 customer side
transcriptTimenumberAbsolute timestamp (ms) when text is generated
beginTimenumberRelative begin time from recording start (ms)
endTimenumberRelative end time from recording start (ms)
finishednumber1 finished; 0 in progress
sentenceIndexnumberIndex, starting from 0
sentenceTypestringintermediateResult / sentenceEnd
mainUniqueIdstringMain call unique id
sentenceBeginTimestampnumberTimestamp (ms) when engine started for the sentence (returned with sentenceEnd)
sentenceEndTimestampnumberTimestamp (ms) when final text returned (returned with sentenceEnd)

3.22 ping (Latency / network quality)

FieldTypeDescription
eventTypestringAlways ping
latencyTimenumberPing latency in ms
networkStatenumberNetwork quality bucket derived from latency

3.23 webrtcStats (WebRTC call stats)

Requires webrtcStats=true in setup() (or tenant-side enablement). Emitted once per second during a softphone call.

The payload is large; treat it as WebrtcStatsEvent from 06-Types.md. Key fields include:

  • iceState, dtlsState
  • packetsSent/packetsReceived, packetsState
  • jitter, rtt, packetLossRate
  • sentNetworkQuality, receivedNetworkQuality

4. Typical sequences

For key event sequences (preview outbound / consult flows), see 10-Key-Flows-Sequence-Diagrams.md.