Contact Center events
Contact Center voice events provide real-time updates about call lifecycle, transfers, conferences, supervisor monitoring, and IVR streaming during Contact Center engagements.
These events use the RTMS_ZCC_VOICE_EVENT_TYPE enum (event codes 8-34) and are sent through the signaling connection as EVENT_UPDATE messages.
To use Contact Center events, you must first establish connections using Universal events. These foundational protocol events (handshakes, keep-alive, session state, media data) apply to all RTMS implementations including Contact Center.
Consumer answered
Sent from the signaling connection
The signaling connection sends a consumer answered event when a customer has already answered at stream start. Subscribe to this event with event_type: 8. This message does not require a response from the app.
The event_ts timestamp indicates when the customer's channel was answered.
{
"msg_type": 6,
"event": {
"event_type": 8,
"event_ts": 1727384349123,
"participant_info": {
"channel_id": "123abc",
"participant_mode": "caller",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550101",
"user_id": "customer-contact-id",
"display_name": "Jane Doe"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a consumer has answered. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The consumer answered event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the customer channel was answered. |
participant_info | object | Information about the customer participant. |
channel_id | string | The unique identifier of the customer SIP channel. |
participant_mode | string | The participant role. For inbound calls, the customer is "caller". For outbound calls, the customer is "callee". |
queue_id | string | The unique identifier of the queue. |
queue_name | string | The name of the queue. |
account_id | string | The parent Zoom account identifier. |
division_id | string | The division identifier. |
phone_number | string | The customer's phone number. |
user_id | string | The customer contact identifier. |
display_name | string | The customer's display name. |
User answered
Sent from the signaling connection
Contact Center only
The signaling connection sends a user answered event when an agent or supervisor has answered a call. Subscribe to this event with event_type: 10. This message does not require a response from the app.
For agents on inbound customer calls, participant_mode is "callee". For outbound calls, it is "caller". The email field is included when the user can be loaded.
{
"msg_type": 6,
"event": {
"event_type": 10,
"event_ts": 1727384350123,
"participant_info": {
"channel_id": "agent-channel-id",
"participant_mode": "callee",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550199",
"user_id": "szCyubr_aQhieHNWYbAGMYg",
"display_name": "Jane Doe",
"email": "jane.doe@example.com"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a user has answered. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The user answered event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the user answered. |
participant_info | object | Information about the user participant. |
channel_id | string | The unique identifier of the user's SIP channel. |
participant_mode | string | The participant role. "callee" for inbound, "caller" for outbound. |
queue_id | string | The unique identifier of the queue. |
queue_name | string | The name of the queue. |
account_id | string | The parent Zoom account identifier. |
division_id | string | The division identifier. |
phone_number | string | The user's phone number. |
user_id | string | The unique identifier of the user. |
display_name | string | The user's display name. |
email | string | The user's email address. |
Consumer ended
Sent from the signaling connection
Contact Center only
The signaling connection sends a consumer ended event when the customer hangs up. This event is often sent along with stream stop. Subscribe to this event with event_type: 9. This message does not require a response from the app.
The structure is the same as consumer answered.
{
"msg_type": 6,
"event": {
"event_type": 9,
"event_ts": 1727384999000,
"participant_info": {
"channel_id": "123abc",
"participant_mode": "caller",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550101",
"user_id": "customer-contact-id",
"display_name": "Jane Doe"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a consumer ends a call. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The consumer ended event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the customer hung up. |
participant_info | object | Information about the customer participant. See Consumer answered for field descriptions. |
User ended
Sent from the signaling connection
Contact Center only
The signaling connection sends a user ended event when an agent or supervisor hangs up or when their channel is removed. Subscribe to this event with event_type: 11. This message does not require a response from the app.
The structure is the same as user answered.
{
"msg_type": 6,
"event": {
"event_type": 11,
"event_ts": 1727384999000,
"participant_info": {
"channel_id": "agent-channel-id",
"participant_mode": "callee",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550199",
"user_id": "szCyubr_aQhieHNWYbAGMYg",
"display_name": "Jane Doe",
"email": "jane.doe@example.com"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a user ends a call. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The user ended event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the user hung up. |
participant_info | object | Information about the user participant. See User answered for field descriptions. |
User hold
Sent from the signaling connection
Contact Center only
The signaling connection sends a user hold event when an agent places a call on hold. Subscribe to this event with event_type: 12. This message does not require a response from the app.
The subject is the agent who toggled hold. The queue comes from the agent's task.
{
"msg_type": 6,
"event": {
"event_type": 12,
"event_ts": 1727384400000,
"participant_info": {
"channel_id": "agent-channel-id",
"participant_mode": "callee",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550199",
"user_id": "szCyubr_aQhieHNWYbAGMYg",
"display_name": "Jane Doe",
"email": "jane.doe@example.com"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a user places a call on hold. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The user hold event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the call was placed on hold. |
participant_info | object | Information about the agent who placed the call on hold. See User answered for field descriptions. |
User unhold
Sent from the signaling connection
Contact Center only
The signaling connection sends a user unhold event when an agent resumes a call from hold. Subscribe to this event with event_type: 13. This message does not require a response from the app.
The structure is identical to user hold, with event_type: 13.
{
"msg_type": 6,
"event": {
"event_type": 13,
"event_ts": 1727384450000,
"participant_info": {
"channel_id": "agent-channel-id",
"participant_mode": "callee",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550199",
"user_id": "szCyubr_aQhieHNWYbAGMYg",
"display_name": "Jane Doe",
"email": "jane.doe@example.com"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a user resumes a call from hold. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The user unhold event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the call was resumed from hold. |
participant_info | object | Information about the agent who resumed the call. See User answered for field descriptions. |
Monitor started
Sent from the signaling connection
Contact Center only
The signaling connection sends a monitor started event when a supervisor begins monitoring an agent's call (listen-only mode). Subscribe to this event with event_type: 14. This message does not require a response from the app.
The channel_id is the supervisor's channel. The participant_mode indicates the monitoring mode ("monitor", "whisper", "barge", or "takeover"). The user_id, display_name, and email fields identify the monitored agent. The monitoring_user_* fields identify the supervisor.
{
"msg_type": 6,
"event": {
"event_type": 14,
"event_ts": 1727384410000,
"participant_info": {
"channel_id": "supervisor-channel-id",
"participant_mode": "monitor",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550999",
"user_id": "agent-user-id",
"display_name": "Jane Doe",
"email": "jane.doe@example.com",
"monitoring_user_id": "supervisor-user-id",
"monitoring_user_display_name": "Sam Supervisor",
"monitoring_user_email": "sam@example.com",
"consumer_id": "customer-contact-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when monitoring starts. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The monitor started event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when monitoring started. |
participant_info | object | Information about the monitoring session. |
channel_id | string | The unique identifier of the supervisor's SIP channel. |
participant_mode | string | The monitoring mode. One of "monitor", "whisper", "barge", or "takeover". |
queue_id | string | The unique identifier of the queue. |
queue_name | string | The name of the queue. |
account_id | string | The parent Zoom account identifier. |
division_id | string | The division identifier. |
phone_number | string | The supervisor's phone number. |
user_id | string | The unique identifier of the monitored agent. |
display_name | string | The display name of the monitored agent. |
email | string | The email address of the monitored agent. |
monitoring_user_id | string | The unique identifier of the supervisor. |
monitoring_user_display_name | string | The display name of the supervisor. |
monitoring_user_email | string | The email address of the supervisor. |
consumer_id | string | The customer contact identifier. |
consumer_number | string | The customer's phone number. |
consumer_display_name | string | The customer's display name. |
Monitor transitioned
Sent from the signaling connection
Contact Center only
The signaling connection sends a monitor transitioned event when a supervisor changes their monitoring mode (for example, from listen to whisper, or whisper to barge). Subscribe to this event with event_type: 15. This message does not require a response from the app.
The structure is identical to monitor started, with participant_mode showing the new monitoring mode.
{
"msg_type": 6,
"event": {
"event_type": 15,
"event_ts": 1727384420000,
"participant_info": {
"channel_id": "supervisor-channel-id",
"participant_mode": "whisper",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550999",
"user_id": "agent-user-id",
"display_name": "Jane Doe",
"email": "jane.doe@example.com",
"monitoring_user_id": "supervisor-user-id",
"monitoring_user_display_name": "Sam Supervisor",
"monitoring_user_email": "sam@example.com",
"consumer_id": "customer-contact-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when monitoring mode changes. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The monitor transitioned event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the mode changed. |
participant_info | object | Information about the monitoring session with the new mode. See Monitor started for field descriptions. |
Monitor ended
Sent from the signaling connection
Contact Center only
The signaling connection sends a monitor ended event when a supervisor stops monitoring an agent's call. Subscribe to this event with event_type: 16. This message does not require a response from the app.
The structure is identical to monitor started.
{
"msg_type": 6,
"event": {
"event_type": 16,
"event_ts": 1727384430000,
"participant_info": {
"channel_id": "supervisor-channel-id",
"participant_mode": "monitor",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550999",
"user_id": "agent-user-id",
"display_name": "Jane Doe",
"email": "jane.doe@example.com",
"monitoring_user_id": "supervisor-user-id",
"monitoring_user_display_name": "Sam Supervisor",
"monitoring_user_email": "sam@example.com",
"consumer_id": "customer-contact-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when monitoring ends. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The monitor ended event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when monitoring ended. |
participant_info | object | Information about the monitoring session that ended. See Monitor started for field descriptions. |
Takeover started
Sent from the signaling connection
Contact Center only
The signaling connection sends a takeover started event when a supervisor takes over an agent's call. Subscribe to this event with event_type: 17. This message does not require a response from the app.
The structure is identical to monitor started, with participant_mode: "takeover".
{
"msg_type": 6,
"event": {
"event_type": 17,
"event_ts": 1727384440000,
"participant_info": {
"channel_id": "supervisor-channel-id",
"participant_mode": "takeover",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550999",
"user_id": "agent-user-id",
"display_name": "Jane Doe",
"email": "jane.doe@example.com",
"monitoring_user_id": "supervisor-user-id",
"monitoring_user_display_name": "Sam Supervisor",
"monitoring_user_email": "sam@example.com",
"consumer_id": "customer-contact-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when takeover starts. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The takeover started event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when takeover started. |
participant_info | object | Information about the takeover session. See Monitor started for field descriptions. |
Transfer initiated
Sent from the signaling connection
Contact Center only
The signaling connection sends a transfer initiated event when an agent initiates a call transfer. Subscribe to this event with event_type: 18. This message does not require a response from the app.
The subject is the source agent. The consumer_id is the customer channel identifier (not the contact ID). The transfer_to_* fields identify the transfer target.
{
"msg_type": 6,
"event": {
"event_type": 18,
"event_ts": 1727384500000,
"participant_info": {
"channel_id": "source-agent-channel-id",
"queue_id": "source-queue-id",
"queue_name": "Source Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550199",
"user_id": "source-user-id",
"display_name": "Jane Doe",
"consumer_id": "customer-channel-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer",
"transfer_to_queue_id": "target-queue-id",
"transfer_to_queue_name": "Target Queue",
"transfer_to_user_id": "target-user-id",
"transfer_to_user_display_name": "Alex Agent",
"transfer_to_user_channel_id": "target-agent-channel-id"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a transfer is initiated. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The transfer initiated event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the transfer was initiated. |
participant_info | object | Information about the transfer. |
channel_id | string | The unique identifier of the source agent's SIP channel. |
queue_id | string | The unique identifier of the source queue. |
queue_name | string | The name of the source queue. |
account_id | string | The parent Zoom account identifier. |
division_id | string | The division identifier. |
phone_number | string | The source agent's phone number. |
user_id | string | The unique identifier of the source agent. |
display_name | string | The display name of the source agent. |
consumer_id | string | The unique identifier of the customer's SIP channel. |
consumer_number | string | The customer's phone number. |
consumer_display_name | string | The customer's display name. |
transfer_to_queue_id | string | The unique identifier of the target queue. |
transfer_to_queue_name | string | The name of the target queue. |
transfer_to_user_id | string | The unique identifier of the target agent. |
transfer_to_user_display_name | string | The display name of the target agent. |
transfer_to_user_channel_id | string | The unique identifier of the target agent's SIP channel. |
Transfer canceled
Sent from the signaling connection
Contact Center only
The signaling connection sends a transfer canceled event when a transfer is canceled before completion. Subscribe to this event with event_type: 19. This message does not require a response from the app.
The structure is identical to transfer initiated.
{
"msg_type": 6,
"event": {
"event_type": 19,
"event_ts": 1727384510000,
"participant_info": {
"channel_id": "source-agent-channel-id",
"queue_id": "source-queue-id",
"queue_name": "Source Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550199",
"user_id": "source-user-id",
"display_name": "Jane Doe",
"consumer_id": "customer-channel-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer",
"transfer_to_queue_id": "target-queue-id",
"transfer_to_queue_name": "Target Queue",
"transfer_to_user_id": "target-user-id",
"transfer_to_user_display_name": "Alex Agent",
"transfer_to_user_channel_id": "target-agent-channel-id"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a transfer is canceled. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The transfer canceled event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the transfer was canceled. |
participant_info | object | Information about the canceled transfer. See Transfer initiated for field descriptions. |
Transfer accepted
Sent from the signaling connection
Contact Center only
The signaling connection sends a transfer accepted event when the target agent accepts the transfer. Subscribe to this event with event_type: 20. This message does not require a response from the app.
The structure is identical to transfer initiated.
{
"msg_type": 6,
"event": {
"event_type": 20,
"event_ts": 1727384520000,
"participant_info": {
"channel_id": "source-agent-channel-id",
"queue_id": "source-queue-id",
"queue_name": "Source Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550199",
"user_id": "source-user-id",
"display_name": "Jane Doe",
"consumer_id": "customer-channel-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer",
"transfer_to_queue_id": "target-queue-id",
"transfer_to_queue_name": "Target Queue",
"transfer_to_user_id": "target-user-id",
"transfer_to_user_display_name": "Alex Agent",
"transfer_to_user_channel_id": "target-agent-channel-id"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a transfer is accepted. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The transfer accepted event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the transfer was accepted. |
participant_info | object | Information about the accepted transfer. See Transfer initiated for field descriptions. |
Transfer completed
Sent from the signaling connection
Contact Center only
The signaling connection sends a transfer completed event when a transfer completes successfully. Subscribe to this event with event_type: 21. This message does not require a response from the app.
The structure is identical to transfer initiated.
{
"msg_type": 6,
"event": {
"event_type": 21,
"event_ts": 1727384530000,
"participant_info": {
"channel_id": "source-agent-channel-id",
"queue_id": "source-queue-id",
"queue_name": "Source Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550199",
"user_id": "source-user-id",
"display_name": "Jane Doe",
"consumer_id": "customer-channel-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer",
"transfer_to_queue_id": "target-queue-id",
"transfer_to_queue_name": "Target Queue",
"transfer_to_user_id": "target-user-id",
"transfer_to_user_display_name": "Alex Agent",
"transfer_to_user_channel_id": "target-agent-channel-id"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a transfer completes. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The transfer completed event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the transfer completed. |
participant_info | object | Information about the completed transfer. See Transfer initiated for field descriptions. |
Transfer rejected
Sent from the signaling connection
Contact Center only
The signaling connection sends a transfer rejected event when the target agent rejects the transfer. Subscribe to this event with event_type: 22. This message does not require a response from the app.
The structure is identical to transfer initiated.
{
"msg_type": 6,
"event": {
"event_type": 22,
"event_ts": 1727384540000,
"participant_info": {
"channel_id": "source-agent-channel-id",
"queue_id": "source-queue-id",
"queue_name": "Source Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550199",
"user_id": "source-user-id",
"display_name": "Jane Doe",
"consumer_id": "customer-channel-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer",
"transfer_to_queue_id": "target-queue-id",
"transfer_to_queue_name": "Target Queue",
"transfer_to_user_id": "target-user-id",
"transfer_to_user_display_name": "Alex Agent",
"transfer_to_user_channel_id": "target-agent-channel-id"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a transfer is rejected. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The transfer rejected event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the transfer was rejected. |
participant_info | object | Information about the rejected transfer. See Transfer initiated for field descriptions. |
Transfer timeout
Sent from the signaling connection
Contact Center only
The signaling connection sends a transfer timeout event when a transfer times out before being accepted or rejected. Subscribe to this event with event_type: 23. This message does not require a response from the app.
The structure is identical to transfer initiated.
{
"msg_type": 6,
"event": {
"event_type": 23,
"event_ts": 1727384550000,
"participant_info": {
"channel_id": "source-agent-channel-id",
"queue_id": "source-queue-id",
"queue_name": "Source Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550199",
"user_id": "source-user-id",
"display_name": "Jane Doe",
"consumer_id": "customer-channel-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer",
"transfer_to_queue_id": "target-queue-id",
"transfer_to_queue_name": "Target Queue",
"transfer_to_user_id": "target-user-id",
"transfer_to_user_display_name": "Alex Agent",
"transfer_to_user_channel_id": "target-agent-channel-id"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a transfer times out. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The transfer timeout event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the transfer timed out. |
participant_info | object | Information about the timed-out transfer. See Transfer initiated for field descriptions. |
Conference canceled
Sent from the signaling connection
Contact Center only
The signaling connection sends a conference canceled event when a conference is canceled. Subscribe to this event with event_type: 24. This message does not require a response from the app.
The host identity is in participant_info along with customer information from the engagement.
{
"msg_type": 6,
"event": {
"event_type": 24,
"event_ts": 1727384600000,
"participant_info": {
"channel_id": "host-channel-id",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550199",
"user_id": "host-user-id",
"display_name": "Jane Doe",
"email": "jane.doe@example.com",
"consumer_id": "customer-channel-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a conference is canceled. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The conference canceled event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the conference was canceled. |
participant_info | object | Information about the conference host and customer. |
channel_id | string | The unique identifier of the host's SIP channel. |
queue_id | string | The unique identifier of the queue. |
queue_name | string | The name of the queue. |
account_id | string | The parent Zoom account identifier. |
division_id | string | The division identifier. |
phone_number | string | The host's phone number. |
user_id | string | The unique identifier of the host. |
display_name | string | The display name of the host. |
email | string | The email address of the host. |
consumer_id | string | The unique identifier of the customer's SIP channel. |
consumer_number | string | The customer's phone number. |
consumer_display_name | string | The customer's display name. |
Conference participant invited
Sent from the signaling connection
Contact Center only
The signaling connection sends a conference participant invited event when an agent is invited to join a conference. Subscribe to this event with event_type: 26. This message does not require a response from the app.
The event includes conference_participants (everyone already in the conference) and invited_participant (the agent being invited).
{
"msg_type": 6,
"event": {
"event_type": 26,
"event_ts": 1727384610000,
"participant_info": {
"channel_id": "host-channel-id",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"phone_number": "+18005550199",
"user_id": "host-user-id",
"display_name": "Jane Doe",
"email": "jane.doe@example.com",
"consumer_id": "customer-channel-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer",
"conference_participants": [
{
"participant_channel_id": "customer-channel-id",
"participant_display_name": "Jane Customer",
"participant_role": "customer",
"participant_queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"participant_phone_number": "+18005550101"
},
{
"participant_channel_id": "host-channel-id",
"participant_user_id": "host-user-id",
"participant_display_name": "Jane Doe",
"participant_role": "host",
"participant_queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"participant_phone_number": "+18005550199"
}
],
"invited_participant": {
"participant_channel_id": "invitee-channel-id",
"participant_user_id": "invitee-user-id",
"participant_display_name": "Alex Agent",
"participant_queue_id": "target-queue-id",
"participant_phone_number": "+18005550200"
}
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a participant is invited to a conference. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The conference participant invited event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the invitation was sent. |
participant_info | object | Information about the conference. See Conference canceled for host and customer field descriptions. |
conference_participants | array | Array of participants currently in the conference. |
participant_channel_id | string | The unique identifier of the participant's SIP channel. |
participant_user_id | string | The unique identifier of the participant (for agents and host only). |
participant_display_name | string | The display name of the participant. |
participant_role | string | The role of the participant. One of "customer", "host", or "invitee". |
participant_queue_id | string | The unique identifier of the participant's queue. |
participant_phone_number | string | The participant's phone number. |
invited_participant | object | Information about the invited agent. Uses the same structure as items in conference_participants. |
Conference participant canceled
Sent from the signaling connection
Contact Center only
The signaling connection sends a conference participant canceled event when the host cancels an invitation before the invitee responds. Subscribe to this event with event_type: 25. This message does not require a response from the app.
The structure is similar to conference participant invited, with the invitee in canceled_participant.
{
"msg_type": 6,
"event": {
"event_type": 25,
"event_ts": 1727384615000,
"participant_info": {
"channel_id": "host-channel-id",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"user_id": "host-user-id",
"display_name": "Jane Doe",
"consumer_id": "customer-channel-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer",
"conference_participants": [],
"canceled_participant": {
"participant_channel_id": "invitee-channel-id",
"participant_user_id": "invitee-user-id",
"participant_display_name": "Alex Agent",
"participant_queue_id": "target-queue-id",
"participant_phone_number": "+18005550200"
}
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a conference invitation is canceled. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The conference participant canceled event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the invitation was canceled. |
participant_info | object | Information about the conference. See Conference participant invited for field descriptions. |
canceled_participant | object | Information about the canceled invitee. Uses the same structure as invited_participant. |
Conference participant rejected
Sent from the signaling connection
Contact Center only
The signaling connection sends a conference participant rejected event when an invitee rejects the conference invitation. Subscribe to this event with event_type: 27. This message does not require a response from the app.
The structure is similar to conference participant canceled, with the rejecting invitee in rejecting_participant.
{
"msg_type": 6,
"event": {
"event_type": 27,
"event_ts": 1727384617000,
"participant_info": {
"channel_id": "host-channel-id",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"user_id": "host-user-id",
"display_name": "Jane Doe",
"consumer_id": "customer-channel-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer",
"conference_participants": [],
"rejecting_participant": {
"participant_channel_id": "invitee-channel-id",
"participant_user_id": "invitee-user-id",
"participant_display_name": "Alex Agent",
"participant_queue_id": "target-queue-id",
"participant_phone_number": "+18005550200"
}
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a conference invitation is rejected. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The conference participant rejected event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the invitation was rejected. |
participant_info | object | Information about the conference. See Conference participant invited for field descriptions. |
rejecting_participant | object | Information about the rejecting invitee. Uses the same structure as invited_participant. |
Conference participant timeout
Sent from the signaling connection
Contact Center only
The signaling connection sends a conference participant timeout event when an invitee does not respond to the conference invitation within the allowed time. Subscribe to this event with event_type: 28. This message does not require a response from the app.
The structure is similar to conference participant canceled, with the timed-out invitee in timed_out_participant.
{
"msg_type": 6,
"event": {
"event_type": 28,
"event_ts": 1727384620000,
"participant_info": {
"channel_id": "host-channel-id",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"user_id": "host-user-id",
"display_name": "Jane Doe",
"consumer_id": "customer-channel-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer",
"conference_participants": [],
"timed_out_participant": {
"participant_channel_id": "invitee-channel-id",
"participant_user_id": "invitee-user-id",
"participant_display_name": "Alex Agent",
"participant_queue_id": "target-queue-id",
"participant_phone_number": "+18005550200"
}
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a conference invitation times out. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The conference participant timeout event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the invitation timed out. |
participant_info | object | Information about the conference. See Conference participant invited for field descriptions. |
timed_out_participant | object | Information about the timed-out invitee. Uses the same structure as invited_participant. |
Conference participant left
Sent from the signaling connection
Contact Center only
The signaling connection sends a conference participant left event when a conference participant leaves. Subscribe to this event with event_type: 29. This message does not require a response from the app.
The conference_participants array excludes the leaving participant. The leaving_participant object contains information about who left.
{
"msg_type": 6,
"event": {
"event_type": 29,
"event_ts": 1727384630000,
"participant_info": {
"channel_id": "host-channel-id",
"queue_id": "xqJE_cgERLyAJHYYL5LLeg",
"queue_name": "My Queue",
"account_id": "parent-account-id",
"division_id": "division-id",
"user_id": "host-user-id",
"display_name": "Jane Doe",
"consumer_id": "customer-channel-id",
"consumer_number": "+18005550101",
"consumer_display_name": "Jane Customer",
"conference_participants": [],
"leaving_participant": {
"participant_channel_id": "invitee-channel-id",
"participant_user_id": "invitee-user-id",
"participant_display_name": "Alex Agent",
"participant_queue_id": "target-queue-id",
"participant_phone_number": "+18005550200"
}
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a conference participant leaves. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The conference participant left event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the participant left. |
participant_info | object | Information about the conference. See Conference participant invited for field descriptions. |
leaving_participant | object | Information about the participant who left. Uses the same structure as invited_participant. |
IVR flow entered
Sent from the signaling connection
Contact Center only
The signaling connection sends an IVR flow entered event when a call enters an IVR flow that has the same RTMS app assigned. Subscribe to this event with event_type: 30. This message does not require a response from the app.
For more information about IVR streaming, see IVR streaming for Contact Center.
{
"msg_type": 6,
"event": {
"event_type": 30,
"event_ts": 1727384200000,
"flow_info": {
"engagement_id": "engagement-id",
"session_id": "business-id",
"flow_id": "flow-id",
"flow_name": "Main IVR",
"account_id": "parent-account-id",
"division_id": "division-id"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a call enters an IVR flow. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The flow entered event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the call entered the flow. |
flow_info | object | Information about the flow that was entered. |
engagement_id | string | The unique identifier for the Contact Center engagement. |
session_id | string | The business session identifier. |
flow_id | string | The unique identifier of the IVR flow. |
flow_name | string | The name of the IVR flow. |
account_id | string | The parent Zoom account identifier. |
division_id | string | The division identifier. |
IVR flow exited
Sent from the signaling connection
Contact Center only
The signaling connection sends an IVR flow exited event when a call leaves an IVR flow. Subscribe to this event with event_type: 31. This message does not require a response from the app.
The structure is identical to the flow entered event, with event_type: 31.
{
"msg_type": 6,
"event": {
"event_type": 31,
"event_ts": 1727384300000,
"flow_info": {
"engagement_id": "engagement-id",
"session_id": "business-id",
"flow_id": "flow-id",
"flow_name": "Main IVR",
"account_id": "parent-account-id",
"division_id": "division-id"
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a call exits an IVR flow. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The flow exited event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the call exited the flow. |
flow_info | object | Information about the flow that was exited. See IVR flow entered for field descriptions. |
DTMF input started
Sent from the signaling connection
Contact Center only
The signaling connection sends a DTMF input started event when a customer presses a key during an IVR flow. DTMF events are only emitted during IVR flows before an agent bridges the call. Subscribe to this event with event_type: 32. This message does not require a response from the app.
Each keypress generates a DTMF_STARTED event followed by a DTMF_ENDED event. The payload.ts RTP timestamp is identical for the matching start and end events.
{
"msg_type": 6,
"event": {
"event_type": 32,
"event_ts": 1789681294876,
"channel_id": "3ea506fa-0061-4ca2-894c-e038294e2a0c",
"payload": {
"digit": "1",
"ts": 44320
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when DTMF input starts. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The DTMF started event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the keypress started. |
channel_id | string | The unique identifier of the customer SIP channel that pressed the key. |
payload | object | The DTMF payload data. |
digit | string | The key that was pressed. One of "0" through "9", "*", or "#". |
ts | int | The RTP timestamp. This value is identical in the matching DTMF_STARTED and DTMF_ENDED events for the same keypress. |
DTMF input ended
Sent from the signaling connection
Contact Center only
The signaling connection sends a DTMF input ended event when a customer releases a key during an IVR flow. This event pairs with a DTMF_STARTED event. Subscribe to this event with event_type: 33. This message does not require a response from the app.
The payload.ts value matches the corresponding DTMF_STARTED event. The duration field indicates how long the key was pressed.
{
"msg_type": 6,
"event": {
"event_type": 33,
"event_ts": 1789681295116,
"channel_id": "3ea506fa-0061-4ca2-894c-e038294e2a0c",
"payload": {
"digit": "1",
"ts": 44320,
"duration": 2080
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when DTMF input ends. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The DTMF ended event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the keypress ended. |
channel_id | string | The unique identifier of the customer SIP channel that pressed the key. |
payload | object | The DTMF payload data. |
digit | string | The key that was pressed. One of "0" through "9", "*", or "#". |
ts | int | The RTP timestamp. This value matches the ts from the corresponding DTMF_STARTED event. |
duration | int | The duration of the keypress in 8 kHz samples. For example, a value of 2080 represents approximately 260 milliseconds. |
Queue waiting
Sent from the signaling connection
Contact Center only
The signaling connection sends a queue waiting event when a customer enters a queue during an IVR flow. Subscribe to this event with event_type: 34. This message does not require a response from the app.
When this event fires, the audio stream is paused until an agent joins the call.
{
"msg_type": 6,
"event": {
"event_type": 34,
"event_ts": 1789681295378,
"participant_info": {
"channel_id": "3ea506fa-0061-4ca2-894c-e038294e2a0c",
"queue_id": "KmI2i3O-SM-99sIqXnQIDA",
"queue_name": "RTMS_test_queue",
"account_id": "7hyzf8fNQlqJ_tuFPi1aSQ",
"flow_streaming": false
}
}
}
| Field | Type | Description |
|---|---|---|
msg_type | int | The signaling connection sends this message when a customer enters a queue. For more information, see RTMS_MESSAGE_TYPE. |
event_type | int | The queue waiting event type. For more information, see RTMS_ZCC_VOICE_EVENT_TYPE. |
event_ts | unsigned long | The Unix timestamp (milliseconds) when the customer entered the queue. |
participant_info | object | Information about the customer who entered the queue. |
channel_id | string | The unique identifier of the customer SIP channel. |
queue_id | string | The unique identifier of the queue. |
queue_name | string | The name of the queue. |
account_id | string | The parent Zoom account identifier. |
flow_streaming | bool | Indicates whether flow streaming is active. |