# 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](/docs/rtms/event-reference/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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The consumer answered event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The user answered event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The consumer ended event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The user ended event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The user hold event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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`. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The user unhold event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The monitor started event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The monitor transitioned event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The monitor ended event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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"`. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The takeover started event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The transfer initiated event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The transfer canceled event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The transfer accepted event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The transfer completed event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The transfer rejected event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The transfer timeout event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The conference canceled event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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). ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The conference participant invited event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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`. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The conference participant canceled event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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`. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The conference participant rejected event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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`. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The conference participant timeout event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The conference participant left event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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](/docs/rtms/contact-center/ivr-streaming/). ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The flow entered event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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`. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The flow exited event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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](/docs/rtms/event-reference/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The DTMF started event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The DTMF ended event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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. ```json { "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](/docs/rtms/data-types/#rtms_message_type). | | `event_type` | int | The queue waiting event type. For more information, see [RTMS_ZCC_VOICE_EVENT_TYPE](/docs/rtms/data-types/#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. |