En este documento, se proporciona el esquema del registro de metadatos de la sesión de llamada,
el documento JSON que emite CCAI Platform al final de cada llamada de voz. CCAI Platform
entrega el registro a tu integración de CRM como el cuerpo del comando de finalización de la sesión
y escribe el registro en tu configuración de almacenamiento externo como un
archivo metadata.json. Cada llamada produce exactamente un registro. El id de nivel superior
identifica de forma única cada registro. Usa este esquema para transferir registros a
sistemas descendentes, validar las cargas útiles recibidas o asignar campos a
columnas de almacenes de datos.
Raíz del esquema
El registro de metadatos de la sesión de llamada es un solo objeto JSON que representa una sesión de llamada de voz. Tres conceptos en el nivel superior determinan la identidad y la forma del registro.
Clave primaria: id (número entero)
El id de nivel superior identifica de forma única la sesión de llamada dentro de tu instancia. Existe un registro por llamada. Todos los demás campos, arrays y objetos anidados de nivel superior
describen los atributos de la llamada que identifica este id.
Discriminador de controlador: agent_info (objeto, oneOf)
Un solo objeto cuya forma varía según el último controlador de la llamada. Las dos variantes son mutuamente excluyentes, y la clave también puede estar ausente por completo, por lo que un registro contiene, como máximo, uno de tres casos:
Variante de agente humano: Está presente cuando la llamada tuvo un agente humano y no un agente virtual. Contiene
email,first_name,last_nameyagent_number, además de los campos compartidosid,nameyavatar_url.Variante de agente virtual: Está presente cuando la llamada tuvo un agente virtual y ningún agente humano. Lleva
va_aliasy omiteemail,first_name,last_nameyagent_number.Clave ausente: La clave
agent_infose omite en dos casos: cuando la llamada no tuvo un agente humano ni un agente virtual, y cuando tuvo ambos. Una llamada lleva ambos cuando se conserva un agente virtual en una derivación a un agente humano, por lo que una llamada completamente controlada puede llegar sin la clave.
Para detectar qué variante tiene un registro, primero verifica si la clave agent_info está presente y, luego, busca un campo específico de la variante, por lo general, agent_info.email para la variante de agente humano o agent_info.va_alias para la variante de agente virtual. No infieras el controlador solo de agent_info. Para una
llamada que tuvo ambos, lee el agente humano de participants[] y el agente
virtual de virtual_agent_handle_durations[] o los campos from_virtual_agent y
to_virtual_agent en transfers[] y escalations[]. Para ver la forma completa de cada variante, consulta agent y virtual_agent.
Discriminadores de forma de llamada: call_type, session_type, session_type_v2 (cadena)
Tres vistas paralelas del mismo tipo de llamada subyacente. Nunca discrepan sobre el tipo de llamada que representa un registro; solo difieren en el vocabulario que usan para nombrar el tipo de llamada.
call_typeusa el vocabulario de enumeración heredado (por ejemplo,Voice Inbound (App),Voice OutboundoVoice Internal).session_typesiempre devuelve la misma cadena quecall_type. CCAI Platform proporciona este campo para la retrocompatibilidad con las integraciones que se basan en este campo; trátalo como un alias obsoleto decall_type. Consulta Control de versiones y bajas.session_type_v2usa el vocabulario de enumeración actual. Este vocabulario extiende el vocabulario decall_typecon distinciones de entrada más detalladas, por ejemplo,Voice Inbound (Mobile)yVoice Inbound (IVR via Mobile)en lugar de las más ampliasVoice Inbound (App)yVoice Inbound (IVR via App). Para los tipos de llamadas que no tienen un valor específico de v2,session_type_v2devuelve la misma cadena quecall_type. Las integraciones nuevas deben analizarsession_type_v2.
Para conocer los valores de cada campo, consulta Información principal.
Información básica
Estas propiedades capturan la información principal de la llamada:
id(número entero): Es un identificador único para cada sesión de llamada. Esta es la clave primaria que distingue una llamada de otra.call_uuid(cadena o nulo): Es un identificador único que correlaciona una llamada entre las instancias de origen y de recepción en las interacciones de enrutamiento dinámico de llamadas (DCR). Ambos tramos de una llamada de DCR comparten el mismo valor decall_uuid, lo que permite que los clientes unan los datos entre entornos. El campo es nulo o está vacío para cualquier llamada que no sea una interacción de DCR y para las llamadas que se produjeron antes de que CCAI Platform agregara el campo.lang(cadena): Es el código de idioma ISO 639 de la llamada (por ejemplo, "en" para inglés o "es" para español). Este código te ayuda a realizar análisis y generar informes específicos de cada idioma.call_type(cadena): Es el tipo de llamada, que usa el vocabulario de tipo heredado. Los valores incluyen "Voice Inbound (App)", "Voice Inbound (Web)", "Voice Inbound (IVR)", "Voice Inbound (IVR via App)", "Voice Inbound (API)", "Voice Inbound (Direct)", "Voice Inbound (Extension)", "Voice Scheduled (App)", "Voice Scheduled (Web)", "Voice Scheduled (API)", "Voice Callback", "Voice Callback (Web)", "Voice Outbound", "Voice Outbound (API)", "Voice Outbound (Direct)", "Voice Outbound (UCaaS)", "Voice Internal", "Voice Campaign (Acqueon)", "Voice Campaign (<your brand name>)" y "Agent Scheduled Call".session_type(cadena): Es un duplicado decall_type(mismos valores) que CCAI Platform conserva para la retrocompatibilidad. Consulta Control de versiones y bajas: Duplicados heredados.session_type_v2(cadena): Es el tipo de llamada, que usa el vocabulario de tipo actual. Define mejor los valores decall_typecon distinciones de entrada más detalladas (por ejemplo, "Entrada de voz (dispositivo móvil)" y "Entrada de voz (IVR a través de un dispositivo móvil)" en lugar de "Entrada de voz (app)" y "Entrada de voz (IVR a través de una app)"). Los valores incluyen "Voice Inbound (Mobile)", "Voice Inbound (Web)", "Voice Inbound (IVR)", "Voice Inbound (IVR via Mobile)", "Voice Inbound (API)", "Voice Inbound (Direct)", "Voice Inbound (Extension)", "Voice Scheduled (Mobile)", "Voice Scheduled (Web)", "Voice Scheduled (API)", "Voice Callback", "Voice Callback (Web)", "Voice Outbound", "Voice Outbound (API)", "Voice Outbound (Direct)", "Voice Outbound (UCaaS)", "Voice Internal", "Voice Campaign (Acqueon)", "Voice Campaign (<your brand name>)" y "Agent Scheduled Call".status(cadena): Es el estado de la llamada, que hace un seguimiento de su progreso a lo largo de su ciclo de vida. Los valores posibles, agrupados por fase del ciclo de vida, son los siguientes:Conexión previa:
"scheduled","selecting","queued","assigned","connecting","switching","requeued","requeued_detection_missed".Conectado:
"connected".Agente virtual:
"va_assigned","va_connected".Campaña:
"preview_pending","preview_ready","preview_waiting","predictive_waiting","progressive_waiting","campaign_dialing","campaign_connecting","campaign_connected".Solo acción:
"action_only","action_only_finished".Mensaje de voz:
"voicemail","voicemail_received","voicemail_read","voicemail_forwarded".Terminal:
"finished","failed","recovered","deflected".
created_at(string, date-time): Es la marca de tiempo precisa en la que CCAI Platform creó el registro de llamadas.queued_at(cadena, fecha y hora, o nulo): Es la marca de tiempo de cuando la llamada ingresó a la fila, o nulo si la llamada no ingresó a la fila.assigned_at(cadena, fecha y hora, o nulo): Es la marca de tiempo en la que CCAI Platform asignó la llamada a un agente, o nulo si CCAI Platform no asignó la llamada.connected_at(cadena, fecha y hora, o nulo): Es la marca de tiempo de cuando se conectó la llamada.ends_at(cadena, fecha y hora, o nulo): Es la marca de tiempo de cuando finalizó la llamada.scheduled_at(cadena, fecha y hora, o nulo): Es la marca de tiempo en la que CCAI Platform programó la llamada, o nulo si la llamada fue inmediata.updated_at(string, date-time): Es la marca de tiempo de la última vez que CCAI Platform actualizó los datos de la llamada.wait_duration(número entero o nulo): Es el tiempo total que el consumidor pasó en la fila durante toda la llamada, en segundos, o nulo si CCAI Platform no registró ningún tiempo de espera. Para ver el tiempo de cola desglosado por segmento individual, consulta el arrayqueue_durations(Duraciones de la cola). Consulta Control de versiones y bajas: Nomenclatura del campo de tiempo de espera.call_duration(número entero o nulo): Es la duración total de la llamada, en segundos.hold_duration(número entero o nulo): Es el tiempo total que el consumidor pasó en espera, en segundos, o nulo si no hubo tiempo de espera.rating(número entero o nulo): Es la calificación de satisfacción del cliente (CSAT) que envió el consumidor, o nulo si el consumidor no envió una calificación.has_feedback(booleano): Es un indicador que señala si el consumidor proporcionó comentarios después de la llamada.voip_provider(cadena): Es el proveedor de VoIP de la llamada. (Nota: Este campo está obsoleto y siempre devuelve "obsoleto").out_ticket_id(cadena o nulo): Es el ID del ticket que CCAI Platform creó en el sistema de CRM externo.out_ticket_url(cadena, URI o nulo): Es la URL del ticket de CRM.is_out_ticket_account(booleano o nulo): Indica si el ticket de CRM representa un cliente (verdadero) o una interacción de llamada (falso).verified(booleano): Indica si la acción inteligente de verificación verificó la interacción.recording_url(cadena, URI o nulo): Es la URL de la grabación de la llamada o nulo si no hay ninguna grabación disponible.recording_permission(cadena o nulo): Es el estado del permiso de grabación del consumidor. Los valores posibles son "not_asked", "granted" y "denied".voicemail_reason(cadena): Es el motivo por el que se dejó un mensaje de voz o"not_voicemail"cuando la llamada no se envió al buzón de voz. Los valores posibles son los siguientes:"not_voicemail","temporary_redirection","after_hour_deflection","over_capacity_deflection","no_input"y"no_agent".disconnected_by(cadena o nulo): Indica qué parte finalizó la llamada. Valores posibles:disconnected_by_unknown,disconnected_by_agent,disconnected_by_end_user,disconnected_by_virtual_agent,disconnected_by_system.fail_reason(cadena o nulo): Es el motivo por el que falló una llamada o"nothing"para las llamadas que no fallaron. Los valores posibles, agrupados por la parte o el subsistema al que se atribuye la falla, son los siguientes:Sin fallas:
nothingGeneral:
unknown,expired,transfer_expired,canceled_outside_fulfillment_hoursUsuario final:
eu_canceled,eu_rejected,eu_abandoned,eu_in_menu_abandoned,eu_repeated_voicemail,eu_repeated_callback,eu_dcr_abandoned_on_receiving,eu_busy,eu_wrong_number,eu_no_answer,eu_noti_failed,eu_phone_deniedAgente:
ag_canceled,ag_ignored,ag_declined,ag_mic_no_device,ag_mic_denied,ag_invalid_outbound_num,ag_called_blocked_numConexión:
conn_declineVoIP:
voip_twilio_error,voip_tokbox_error,voip_invalid_token,voip_conn_general,voip_conn_timeout,voip_conn_signal,voip_conn_codec,voip_nexmo_error,voip_telnyx_errorAudio:
audio_not_received_by_carrier,audio_device_unable_to_startEstado bloqueado o que no se puede resolver:
stuck_due_to_api_error,group_deleted_no_substitute,menu_deleted,direct_pstn_call_to_fallback_numberCampaña:
campaign_paused,campaign_queue_reassigned,campaign_no_incoming_contacts,campaign_call_canceledFinalización forzada:
force_ended,force_failed_call_stuck
fail_details(cadena o nulo): Es un detalle adicional legible por humanos que acompaña afail_reason, cuando está disponible.adapter_fail_code(número entero o nulo): Es el código numérico correspondiente afail_reasona nivel de la llamada. Es nulo cuando la llamada no falló. La misma enumeración se usa enadapter_fail_codepor participante en el artículo 17.adapter_fail_message(string o nulo): Es el mensaje legible por humanos que corresponde aadapter_fail_code. Es nulo cuando la llamada no falló.support_number(cadena o nulo): Es el número de teléfono que marcó el consumidor para comunicarse con el centro de contacto, en formato E.164. Se completa para las llamadas que se originan en la IVR; puede ser nulo para otros canales.queue_priority_level(número entero; solo está presente cuando la prioridad de la fila está habilitada en tu cuenta): Es la prioridad de la fila asignada a la llamada.
Información del agente y del agente virtual
En estas secciones, se explica quién o qué controló la llamada:
agent_info(objeto): Este campo puede contener información sobre un agente humano o un agente virtual. Usa la palabra claveoneOfpara especificar que puede ser uno de dos tipos.agent(objeto): Información sobre el agente humano:id(número entero): Es el ID único del agente.agent_number(cadena o nulo): Es un identificador asignado al agente.email(cadena, correo electrónico): Es la dirección de correo electrónico del agente.name(cadena): Es el nombre completo del agente.last_name(cadena): Es el apellido del agente.first_name(string): Es el nombre del agente.avatar_url(cadena, URI): Es la URL de la imagen del avatar del agente.
virtual_agent(objeto): Información sobre el agente virtual:id(número entero): Es el ID único del agente virtual.name(cadena): Es el nombre del agente virtual.avatar_url(cadena, URI o nulo): Es la URL de la imagen del avatar del agente virtual.va_alias(cadena o nulo): Es el alias visible del agente virtual, si estableces uno. Siempre está presente en la carga útil; es nulo cuando no se establece ningún alias.
Navegación del menú
selected_menu(objeto o nulo): Es la información sobre el menú que el consumidor seleccionó durante la llamada.id(número entero): Es el ID único del menú.name(cadena): Es el nombre del menú.parent_id(número entero o nulo): Es el ID del menú superior, si lo hay.position(número entero): Es la posición del menú en relación con otros menús del mismo nivel.deleted(booleano): Indica si se borró el menú.menu_type(cadena): Es el tipo de menú (comoivr_menuosms_menu).hidden(booleano): Indica si el menú está visible y disponible para su uso.
menu_path(objeto o nulo): Describe la ruta jerárquica de los menús por los que navegó el consumidor.items_count(número entero): Es la cantidad de menús en la ruta de acceso.name(cadena): Es una cadena de nombres de menú separados por barras (por ejemplo, "Asistencia/Facturación").materialized_path(cadena): Es una cadena de IDs de menú separados por barras.
automation_redirection(objeto; solo está presente cuando el primer registro de desvío de la llamada está asociado a un grupo de redireccionamiento): Son detalles sobre el redireccionamiento de la cola basado en porcentajes que afectó el enrutamiento de esta llamada.percent_redirection(booleano): Indica si habilitaste el redireccionamiento basado en porcentajes en el menú de origen.redirection_group(array): Es un array de un elemento que contiene los detalles del grupo de redireccionamiento:group_label(cadena): Es la etiqueta legible por humanos para el grupo de redireccionamiento (por ejemplo, "Grupo de redireccionamiento 1").destination(objeto o nulo): Es el destino de redireccionamiento que configuraste en el grupo.after_hours(booleano o nulo): Indica si habilitaste las opciones de desvío fuera de horario en el grupo.ah_destination(objeto o nulo): Es el destino de redireccionamiento fuera del horario de atención que configuraste en el grupo.
Detalles del usuario final
end_user(objeto o nulo): Es información sobre el consumidor:id(número entero o nulo): Es el ID interno del consumidor.identifier(cadena o nulo): Es un identificador externo para el consumidor.out_contact_id(cadena o nulo): Es el ID del consumidor en el CRM.
Datos personalizados y proporcionados por el SDK
customer_flag(objeto; solo está presente cuando el sitio web pasó datos de autenticación personalizados): Atributos de datos personalizados relacionados con la autenticación que la app o el sitio web del consumidor pasaron al comienzo de la sesión. La carga útil incluye solo el subconjunto que designas como parámetros de autenticación.api_dap_request(objeto; solo está presente cuando habilitas los parámetros de datos y los incluyes en los metadatos): Es una instantánea de los valores de los parámetros de datos de la llamada. Las claves y los tipos de valores dependen de la configuración de los parámetros de datos.form_responses(array; presente solo cuando el consumidor envió al menos una respuesta de formulario): Respuestas que recopilaron los formularios del SDK en la llamada durante la sesión. Cada entrada contiene lo siguiente:id(cadena o número entero): Es el identificador de la respuesta del formulario.title(cadena): Es el título del formulario que se muestra al consumidor.smart_action_id(número entero o nulo): Es el identificador de la acción inteligente que activó el formulario, si corresponde.questions(array): Son los pares de preguntas y respuestas recopilados.
Archivos adjuntos
photos(array): Son las fotos que subió el consumidor durante la llamada.id(número entero): Es el identificador único de la foto.photo_type(cadena): Es el tipo o la fuente de la foto (como "photo").url(cadena, URI): Es la URL de la foto almacenada.smart_action_type(cadena o nulo): Es la acción inteligente que produjo la foto, si la hay.transfer_id(número entero o nulo): Es el ID del evento de transferencia de la foto, si el consumidor la subió después de una transferencia.
videos(array): Son los videos que el consumidor subió durante la llamada.id(número entero): Es el identificador único del video.url(string, uri): Es la URL del video almacenado.smart_action_type(cadena o nulo): Es la acción inteligente que produjo el video, si la hay.transfer_id(número entero o nulo): Es el ID del evento de transferencia del video, si el consumidor lo subió después de una transferencia.
Desvío de llamadas
deflection(cadena): Indica si la llamada se desvió y cómo lo hizo (por ejemplo,"no_deflection","over_cap_phone"o"after_hours_voicemail").deflection_details(array): Proporciona un registro detallado de los desvíos durante la llamada. El campo de desvío dentro de cada entrada usa la enumeración definida en Definiciones: desvío. Cada entrada incluye lo siguiente:id(número entero): Es el identificador único del registro de desvío.call_id(número entero): Es el identificador único de la llamada.transfer_id(número entero o nulo): Es el identificador único de la transferencia asociada con el desvío, si corresponde.deflection(cadena; consulta Definiciones: desvío para conocer los valores permitidos): Es el tipo de desvío.created_at(cadena, fecha y hora): Es la marca de tiempo en la que se produjo el desvío.from_menu_path(objeto o nulo): Es la ruta de acceso del menú desde la que se inició el desvío.to_menu_path(objeto o nulo): Es la ruta de acceso del menú a la que CCAI Platform desvió la llamada.to_sip_uri(cadena; solo está presente cuando CCAI Platform desvió la llamada a un destino SIP): URI de SIP al que CCAI Platform desvió la llamada, si corresponde.to_sip_headers(objeto; solo está presente cuando CCAI Platform desvió la llamada a un destino SIP): Encabezados SIP con los que CCAI Platform desvió la llamada, si corresponde.
Transferencias
transfers(array): Es una entrada por evento de transferencia durante la llamada. Registra las transferencias directas y asistidas entre agentes, agentes virtuales y menús.id(número entero): Es el identificador único de la transferencia.status(cadena): Es el estado actual de la transferencia (por ejemplo, en transferencia, conectada o con errores).fail_reason(cadena): Es el motivo por el que falló la transferencia o "nothing" si no falló.created_at(cadena, fecha y hora): Es el momento en que comenzó la transferencia.assigned_at(cadena, fecha y hora, o nulo): Es el momento en que CCAI Platform asignó la transferencia al destinatario.connected_at(cadena, fecha y hora, o nulo): Es el momento en que se conectó la transferencia.updated_at(cadena, fecha y hora): Es la última vez que CCAI Platform actualizó el registro de transferencia.call_duration(número entero): Es la duración de la llamada del segmento transferido, en segundos.wait_duration(número entero): Es el tiempo que el consumidor esperó durante la transferencia, en segundos.deflection(string): Es el tipo de desvío asociado con la transferencia, si hay alguno.answer_type_path(cadena o nulo): Es la ruta que describe cómo se resolvió la llamada transferida.from_menu_path/to_menu_path(objeto o nulo): Es la ruta de acceso del menú antes y después de la transferencia; tiene la misma forma quemenu_pathen Definiciones.from_agent/to_agent(objeto o nulo): Es el agente humano en cada lado de la transferencia; tiene la misma forma que el objetoagenten Definiciones.from_virtual_agent/to_virtual_agent(objeto o nulo): Agente virtual en cada lado de la transferencia; tiene la misma forma que el objetovirtual_agenten Definiciones.from_queue_priority_level/to_queue_priority_level(número entero o nulo): Es la prioridad de la cola antes y después de la transferencia. Solo está presente cuando habilitas la prioridad de la cola en tu cuenta.
Duraciones de la administración de llamadas
handle_durations(array): Es un array de objetos, cada uno de los cuales representa un segmento de la llamada que controla un agente. Esto respalda el análisis del tiempo de atención del agente.id(número entero): Es el identificador único de la duración de la atención.agent_id(número entero): Es el ID del agente.acw_duration(número entero): Es la duración de las tareas después de la llamada.bcw_duration(número entero): Es la duración del trabajo previo a la llamada.call_duration(número entero): Es la duración de la llamada durante este segmento.menu_path_id(número entero o nulo): Es el ID de la ruta de acceso del menú.menu_path(cadena): Es el nombre de la ruta de acceso del menú.lang(cadena): Es el idioma que se usó.barged(booleano): Indica si el supervisor intervino en la llamada.transfer(booleano): Indica si se produjo una transferencia.transfer_id(número entero o nulo): Es el ID de la transferencia.transfer_cold(booleano o nulo): Indica si la transferencia fue directa.started_at(cadena, fecha y hora): Es la marca de tiempo de inicio.ended_at(cadena, fecha y hora, o nulo): Es la marca de tiempo de finalización.scheduled_at(cadena, fecha y hora, o nulo): Es la marca de tiempo programada.hold_duration(número entero o nulo): Es la duración de la retención durante este segmento.assigned_connection_duration(número entero): Es la duración que esperó el consumidor mientras el agente se conectaba durante esta fase.session_breakthrough(objeto; solo está presente cuando la llamada interrumpió el estado no disponible de un agente): Son los detalles de la asignación de la llamada que interrumpió el estado no disponible de un agente, si corresponde.
Duraciones de las colas
queue_durations(array): Es un array de objetos, cada uno de los cuales representa un segmento de la llamada en el que el consumidor estaba en una fila. Esto permite analizar los tiempos de espera y los niveles de servicio.id(número entero): Es el identificador único de la duración de la fila.agent_id(número entero): Es el ID del agente.ended_at(cadena, fecha y hora): Es la marca de tiempo de finalización.lang(cadena): Es el idioma que se usó.menu_path_id(número entero): Es el ID de la ruta de acceso del menú.menu_path(cadena): Es el nombre de la ruta de acceso del menú.queue_duration(número entero): Es la duración del segmento de la fila.started_at(cadena, fecha y hora): Es la marca de tiempo de inicio.transfer_cold(booleano): Indica si la llamada se transfirió directamente.transfer(booleano): Indica si se produjo una transferencia.transfer_id(número entero o nulo): Es el ID de la transferencia.service_level_abandon_time_threshold(número entero): Es el umbral de tiempo para el abandono del nivel de servicio.service_level_event(cadena): Es el estado del evento de nivel de servicio ("excluded", "in_sla", "not_in_sla").service_level_target_percent(número entero): Es el porcentaje objetivo para el cumplimiento del nivel de servicio.service_level_target_time(número entero): Es el tiempo objetivo para el cumplimiento del nivel de servicio.
Derivaciones de agentes virtuales a humanos
escalations(array): Cada entrada representa una derivación de un agente virtual a un agente humano.id(número entero): Es el identificador único de la derivación.status(string): Es el estado actual de la derivación. Los valores posibles sonescalating,"escalated","canceled","deflecting"y"deflected".reason(cadena): Es el motivo por el que se derivó la sesión.created_at(cadena, fecha y hora): Es el momento en que comenzó la derivación.escalated_at(cadena, fecha y hora, o nulo): Es el momento en que se completó la derivación.from_virtual_agent(objeto o nulo): Es el agente virtual que derivó la llamada. Tiene la misma forma que el objetovirtual_agenten Definitions.to_agent(objeto o nulo): Es el agente humano al que se derivó la llamada. Tiene la misma forma que el objetoagenten Definiciones.from_menu_path/to_menu_path(objeto o nulo): Es la ruta de acceso del menú antes y después del escalamiento.
Derivaciones desviadas por el agente virtual
virtual_agent_deflected_escalations(array): Son los detalles de las derivaciones desviadas de los agentes virtuales.id(número entero): Es el identificador único.deflection(cadena): Es el tipo de desvío registrado para la derivación desviada. Este es un vocabulario más pequeño que el campo de desvío a nivel de llamada descrito en Definiciones: desvío, ya que abarca solo los resultados que puede registrar una derivación de agente virtual. Valores posibles:Capacidad excesiva:
over_cap,over_cap_phone,over_cap_voicemail,over_cap_callback,over_cap_message,over_cap_queue,over_cap_sip,over_cap_extension,over_cap_phone_with_extensionFuera del horario de atención:
after_hours,after_hours_phone,after_hours_voicemail,after_hours_message,after_hours_message_only,after_hours_queue,after_hours_sip,after_hours_extension,after_hours_phone_with_extensionRedireccionamiento temporal:
temp_redirection,temp_redirection_phone,temp_redirection_voicemail,temp_redirection_message,temp_redirection_queue,temp_redirection_sip,temp_redirection_extension,temp_redirection_phone_with_extensionSesión previa de IVR:
ivr_presession_deflectionIniciada por el agente virtual:
va_redirection_phone,va_redirection_sip,va_third_party_phone,va_third_party_sip
Los valores
over_cap,after_hoursytemp_redirectionsin sufijo se registran cuando la llamada finalizó antes de que se alcanzara un resultado de desvío.escalation_id(número entero): Es el identificador del evento de elevación de privilegios.escalation_reason(cadena): Es el motivo de la derivación.escalated_at(cadena, fecha y hora): Es la marca de tiempo de la derivación.menu_path_id(número entero): Es el ID de la ruta de acceso del menú.menu_path(cadena): Es la ruta de acceso al menú.lang(cadena): Es el idioma.virtual_agent(objeto): Son los detalles del agente virtual. Consulta Definiciones.
Duraciones de la administración de agentes virtuales
virtual_agent_handle_durations(array): Son los segmentos de tiempo en los que un agente virtual controló la llamada.id(número entero): Es el identificador único.virtual_agent(objeto): Son los detalles del agente virtual. Consulta Definiciones.call_duration(número entero): Es la duración del segmento.escalation_reason(cadena): Es el motivo de la derivación.finish_reason(string): Es el motivo por el que finalizó la interacción.sentiment(número entero): Opinión del consumidor.response_count(número entero): Es el recuento de respuestas del agente virtual.fallback_response_count(número entero): Es el recuento de respuestas de resguardo.initiated_by(cadena): Indica cómo se inició la sesión del agente virtual.menu_path_id(número entero): Es el ID de la ruta de acceso del menú.menu_path(cadena): Es la ruta de acceso al menú.lang(cadena): Es el idioma.transfer(booleano): Indica si se transfirió la llamada.transfer_id(entero o nulo): Es el identificador del evento de transferencia.started_at(cadena, fecha y hora): Es la marca de tiempo de inicio.ended_at(cadena, fecha y hora, o nulo): Es la marca de tiempo de finalización.
Duración del procesamiento de los consumidores
consumer_handle_durations(array): Duraciones de las llamadas del consumidor.id(número entero): Es el identificador único.call_duration(número entero): Es la duración del segmento de consumidores.hold_duration(número entero o nulo): Es la duración de la retención del consumidor.started_at(cadena, fecha y hora): Es la marca de tiempo de inicio.ended_at(cadena, fecha y hora): Es la marca de tiempo de finalización.
Duraciones de los eventos de consumidores
consumer_event_durations(array): Son los detalles de los eventos de llamadas de consumidores (como CSAT o pago).id(número entero): Es el identificador único.duration(número entero): Es la duración del evento.type(cadena): Es el tipo de evento.event(string): Es el resultado del evento.menu_path_id(número entero): Es el ID de la ruta de acceso del menú.menu_path(cadena): Es la ruta de acceso al menú.lang(cadena): Es el idioma.started_at(cadena, fecha y hora): Es la marca de tiempo de inicio.ended_at(cadena, fecha y hora): Es la marca de tiempo de finalización.
Duración de la permanencia de los consumidores en el menú
consumer_in_menu_durations(array): Duraciones de las interacciones de los consumidores en los menús.id(número entero): Es el identificador único.duration(número entero): Es la duración dentro del menú.event(string): Es el resultado de la interacción con el menú.menu_path_id(número entero): Es el ID de la ruta de acceso del menú.menu_path(cadena): Es la ruta de acceso al menú.lang(cadena): Es el idioma.started_at(cadena, fecha y hora): Es la marca de tiempo de inicio.ended_at(cadena, fecha y hora): Es la marca de tiempo de finalización.
Participantes
participants(array): Información sobre cada participante de la llamada (por ejemplo, el consumidor, el agente o el agente virtual).id(número entero): Es el identificador único del participante.type(cadena): Es el tipo de participante ("end_user", "agent", "virtual_agent", etcétera).entry_type(cadena): Es la forma en que el participante ingresó a la llamada.user_id(número entero o nulo): Es el ID de usuario si el participante es un agente.end_user_id(número entero o nulo): Es el identificador del consumidor si el participante es el consumidor.virtual_agent_id(número entero o nulo): Es el ID del agente virtual si el participante es un agente virtual.virtual_agent_params(objeto; solo está presente cuando configuras metadatos personalizados del agente virtual para su inclusión): Son los metadatos personalizados que usa el agente virtual.status(cadena): Es el estado del participante ("waiting", "connected", "finished", etc.).fail_reason(string): Es el motivo de la falla, si lo hay.connected_at(cadena, fecha-hora o nulo): Es la marca de tiempo de cuando se conectó el participante.phone_number(cadena; solo presente en los participantes consumidores): Es el número de teléfono del participante.call_id(número entero): Es el identificador de la llamada.call_duration(entero o nulo): Es la duración de la llamada para el participante.hold_duration(número entero o nulo): Es la duración de la retención para el participante.ended_at(cadena, fecha y hora, o nulo): Es la marca de tiempo que indica cuándo finalizó la participación del participante.adapter_fail_code(número entero o nulo): Es el código numérico correspondiente al motivo del error.adapter_fail_message(cadena o nulo): Es la descripción legible por humanos defail_reason, si está presente.agent_assist(objeto; solo está presente en los participantes agentes cuando configuras Agent Assist): Es la configuración activa de Agent Assist para este participante.virtual_agent(objeto; solo presente en los participantes de agentes virtuales): Son los detalles del agente virtual que actúa como este participante, distinto delagent_infode nivel superior y devirtual_agent_params.caller_id(cadena; solo está presente cuando habilitas el identificador de llamadas del encabezado SIP en tu cuenta y solo en los participantes consumidores): Es el identificador de llamadas que CCAI Platform extrae de los encabezados SIP entrantes para este participante consumidor.sip_headers(objeto o nulo): Son los encabezados SIP asociados con este participante. Siempre está presente en la carga útil; es nulo cuando CCAI Platform no captura encabezados.location(cadena o nulo; solo presente en los participantes agentes): Es la ubicación del agente.location_id(número entero o nulo; solo está presente en los participantes del agente): Es el ID de ubicación.email(cadena, correo electrónico; solo presente en los participantes agentes): Es la dirección de correo electrónico del agente.first_name(cadena o nulo; solo presente en los participantes del agente): Es el nombre del agente.last_name(cadena o nulo; solo presente en los participantes agentes): Es el apellido del agente.middle_name(cadena o nulo; solo presente en los participantes agentes): Es el segundo nombre del agente.teams(array; presente solo en los participantes agentes): Es un array de objetos{ id, name }para los equipos del agente.
Grabaciones
recordings(array): Es la información sobre la grabación del audio de la llamada.id(número entero): Es el identificador único de la grabación.call_id(número entero): Es el identificador de la llamada.conference_sid(cadena o nulo): Es el identificador de llamada del proveedor de VoIP.duration(entero o nulo): Es la duración de la grabación.recording_type(cadena): Es el tipo de grabación.redaction_times(array): Son los segmentos de tiempo ocultados.start(cadena, fecha y hora): Indica cuándo comenzó el intervalo de ocultamiento.end(cadena, fecha y hora): Es el momento en que finalizó el intervalo de ocultamiento.duration(número entero): Es la duración de la ocultación, en segundos.start_agent_id(número entero o nulo): Es el agente que inició la redacción.end_agent_id(número entero o nulo): Es el agente que finalizó la ocultación.
started_at(cadena, fecha y hora): Es la marca de tiempo de inicio de la grabación.
post_processed_recordings(array; solo está presente cuando habilitas la grabación posprocesada en tu cuenta): Son las grabaciones de audio que produce el posprocesamiento (como la conversión de formato o la ocultación).id(número entero): Es el identificador único de la grabación procesada posteriormente.call_id(número entero): Es el identificador de la llamada.duration(número entero): Es la duración de la grabación, en segundos.started_at(cadena, fecha y hora): Es la marca de tiempo de inicio de la grabación.recording_file_name(cadena): Es el nombre de archivo del recurso de audio procesado.recording_url(string, uri): Es la URL del archivo de audio posprocesado.agent_id(número entero o cadena): Es el identificador del agente asociado con el segmento.virtual_agent_id(número entero o cadena): Es el identificador del agente virtual asociado con el segmento, si lo hay.conversation_id(cadena): Es el identificador que correlaciona esta grabación con su registro de conversación.
segments(array; presente solo cuando habilitas las grabaciones de estadísticas procesadas posteriormente en tu cuenta): Segmentos de audio por participante (y grabación de pantalla opcional) que el sistema produce para las canalizaciones de estadísticas downstream.id(número entero): Es el identificador único del segmento.call_id(número entero): Es el identificador de la llamada.duration(número entero): Es la duración del segmento, en segundos.started_at(cadena, fecha y hora): Es la marca de tiempo de inicio del segmento.audio_file_name(cadena): Es el nombre de archivo del recurso de audio del segmento.audio_url(cadena, URI): Es la URL del archivo de audio del segmento.agent_id(número entero o cadena): Es el identificador del agente asociado con el segmento.virtual_agent_id(número entero o cadena): Es el identificador del agente virtual asociado con el segmento, si lo hay.participant_id(número entero o cadena): Es el identificador del participante al que pertenece el segmento.conversation_id(cadena): Es el identificador que correlaciona este segmento con su registro de conversación.screen_recording_url(cadena, URI o nulo): Es la URL del recurso de grabación de pantalla coincidente. Solo está presente cuando habilitas la grabación de pantalla en tu cuenta.screen_recording_file_name(cadena o nulo): Es el nombre del archivo de la grabación de pantalla. Se presenta en la misma condición quescreen_recording_url.
Ofrece eventos
offer_type(cadena o nulo): Es la forma en que CCAI Platform ofreció la llamada al agente.offer_events(array): Eventos en los que CCAI Platform ofreció la llamada a los agentes.casting_time(cadena, fecha y hora): Es la hora en que CCAI Platform ofreció la llamada.group(cadena): Es el grupo al que CCAI Platform ofreció la llamada.
Otros detalles
answer_type(cadena o nulo): Indica cómo se resolvió la llamada ("manual" o "auto").outbound_number(cadena o nulo): Es el número de teléfono saliente que se usó.wait_time_sms(array; solo está presente cuando se produjeron interacciones por SMS de tiempo de espera en esta llamada): Interacciones por SMS que CCAI Platform envió al consumidor sobre el tiempo de espera previsto. Cada entrada contiene lo siguiente:transfer_id(número entero o nulo): Es el identificador del evento de transferencia, si está asociado con una transferencia.status(cadena): Es el estado del SMS. Valores posibles:not_triggered,triggered,triggered_allowed,triggered_denied,triggered_no_selection,triggered_sent,triggered_failed.received(booleano): Indica si el consumidor recibió el SMS.
in_call_sms(array; presente solo cuando se produjeron interacciones de SMS durante la llamada): Interacciones de SMS durante la llamada. Cada entrada contiene lo siguiente:transfer_id(número entero o nulo): Es el identificador del evento de transferencia, si está asociado con una transferencia.preset_sent(booleano): Indica si CCAI Platform envió un mensaje predeterminado.custom_sent(booleano): Indica si el agente envió un mensaje personalizado (texto libre).received(booleano): Indica si CCAI Platform recibió un SMS del consumidor.
dispositions(array; presente solo cuando habilitas los códigos o las notas de cierre en tu cuenta): Son los códigos y las notas de cierre que registraron los agentes. Cada entrada incluye campos renderizados de forma dinámica según tu configuración de cierre:user_id(número entero): Es el identificador del agente.transfer_id(número entero o nulo): Es el identificador del evento de transferencia, si se registra después de una transferencia.participant_id(número entero): Es el identificador del participante.note(cadena): Nota del agente en texto libre.original_note(cadena): Es la versión original (antes de la edición) de la nota.code(cadena): Es el nombre del código de disposición.ujet_code_id(número entero o cadena vacía): Es el ID de la plataforma de CCAI del código de disposición, una clave estable para el código (el nombre visible del código puede cambiar). Se muestra una cadena vacía cuando no está disponible.list(cadena): Es el nombre de la lista a la que pertenece el código.list_path(string): Es la ruta de acceso separada por barras de la lista de códigos.ujet_list_id(número entero o cadena vacía): Es el ID de CCAI Platform de la lista a la que pertenece el código de disposición, una clave estable para la lista. Cadena vacía cuando no está disponible.custom_list_id(cadena o número entero): Es el identificador de la lista definido por el cliente, si está asignado.custom_code_id(cadena o número entero): Es el identificador de código definido por el cliente, si está asignado.
email(cadena, correo electrónico o nulo): Es la dirección de correo electrónico del consumidor.feedback(cadena o nulo): Son los comentarios del consumidor.smart_action_text(cadena o nulo): Es el texto de cualquier acción inteligente que se haya realizado.custom_data_secured(objeto o nulo): Datos personalizados firmados de forma segura.custom_data_not_secured(objeto o nulo): Son datos personalizados que no se firmaron de forma segura.in_queue_wait_time_va(array; solo está presente cuando habilitas el seguimiento del tiempo de espera en la cola para los agentes virtuales en tu cuenta y solo cuando se produjo al menos un escalamiento de agente virtual conservado): Son los intervalos de tiempo en los que el consumidor esperó en la cola mientras CCAI Platform conservaba un agente virtual para él después del escalamiento. Cada entrada contiene lo siguiente:start(cadena, fecha y hora): Indica cuándo comenzó la espera en la fila.end(cadena, fecha y hora, o nulo): Es el momento en que finalizó la espera en la fila. Es nulo si no se completó.duration(número entero o nulo): Es la duración de la espera en segundos; es nulo cuandoendes nulo.
auto_session_summaries(array; solo está presente cuando habilitas el resumen de conversaciones en tu cuenta y CCAI Platform generó un resumen correctamente): Son los resúmenes de sesiones generados por IA que CCAI Platform guarda en el registro de CRM. Cada entrada contiene lo siguiente:user_id(número entero): Es el identificador del participante agente con el que se asocia el resumen.participant_id(número entero): Es el identificador del participante.session_summary(cadena): Es el texto de resumen.session_summary_sections(array u objeto): Es el resumen en secciones estructuradas, si está disponible.
sip_headers(objeto; solo está presente cuando habilitas la captura de encabezados SIP en tu cuenta y la configuras para que se incluya en los metadatos de la sesión): Encabezados SIP entrantes que CCAI Platform capturó para la llamada. Las claves y los valores reflejan los encabezados SIP recibidos del proveedor de telefonía upstream.
Definiciones
En esta sección, se define cada subesquema una vez. Los grupos de propiedades que hacen referencia a los subesquemas se vinculan a estas definiciones en lugar de redefinir sus formas en línea.
menu_path (objeto)
Describe una ruta de menú jerárquica que recorrió la llamada. Consulta Navegación por el menú para obtener la lista completa de sus campos.
Referencia de: el campo menu_path de nivel superior; cada transfers[].from_menu_path y transfers[].to_menu_path; cada escalations[].from_menu_path y escalations[].to_menu_path; cada deflection_details[].from_menu_path y deflection_details[].to_menu_path.
agent (objeto)
Describe un agente humano. Este objeto es una de las dos variantes del discriminador agent_info de nivel superior (consulta Raíz del esquema). Consulta Información sobre el agente y el agente virtual para obtener la lista completa de sus campos.
Referencia de: el campo agent_info cuando un agente humano manejó la llamada por última vez; cada transfers[].from_agent y transfers[].to_agent; cada escalations[].to_agent.
virtual_agent (objeto)
Describe un agente virtual. Este objeto es una de las dos variantes del discriminador agent_info de nivel superior (consulta Raíz del esquema). Consulta
Información del agente y del agente virtual para
obtener la lista completa de sus campos.
Referencia de: el campo agent_info cuando un agente virtual controló la llamada por última vez; cada transfers[].from_virtual_agent y transfers[].to_virtual_agent; cada escalations[].from_virtual_agent; cada virtual_agent_handle_durations[].virtual_agent; cada virtual_agent_deflected_escalations[].virtual_agent.
deflection (cadena, enum)
Es el estado de desvío de una llamada o un segmento de llamada. Los valores siguen un
patrón de nombres <trigger>_<destination>, en el que el prefijo
identifica la condición que activó el desvío (por ejemplo,
capacidad excesiva, fuera del horario de atención o redireccionamiento temporal) y el sufijo identifica
el destino o el tratamiento (por ejemplo, correo de voz, fila, teléfono o mensaje).
Sufijos de destino comunes:
_phone: Enruta la llamada a un número de teléfono externo._voicemail: Dirige la llamada al buzón de voz._message: Reproduce un mensaje informativo._message_only: Reproduce un mensaje y finaliza la llamada sin más enrutamiento._callback: Ofrece una devolución de llamada programada._wait: Mantiene a la persona que llama en espera._queue: Coloca la llamada en una cola diferente._sip: Enruta la llamada a un destino SIP._extension: Enruta la llamada a una extensión._phone_with_extension: Enruta la llamada a un destino telefónico con una extensión.
Valores permitidos, agrupados por familia de activadores:
Sin desvío:
no_deflection,deflecting.Capacidad excesiva: cuando la cola superó su umbral de capacidad:
over_cap_phone,over_cap_voicemail,over_cap_callback,over_cap_wait,over_cap_queue,over_cap_message,over_cap_ewt_only,over_cap_sip,over_cap_extension,over_cap_phone_with_extension.Desvío abandonado: cuando una transferencia o llamada concluyó antes de que se resolviera su desvío pendiente:
deflection_abandoned.Fuera del horario de atención: cuando la llamada llegó fuera del horario de atención configurado en el menú:
after_hours_voicemail,after_hours_phone,after_hours_message_only,after_hours_queue,after_hours_message,after_hours_sip,after_hours_extensionyafter_hours_phone_with_extension.Redireccionamiento temporal: Cuando configuras un redireccionamiento temporal en el menú:
temp_redirection_phone,temp_redirection_message,temp_redirection_voicemail,temp_redirection_queue,temp_redirection_sip,temp_redirection_extension,temp_redirection_phone_with_extension.Sesión previa de IVR:
ivr_presession_deflection.Iniciada por el agente virtual: cuando un agente virtual redireccionó o transfirió la llamada:
va_redirection_phone,va_redirection_sip,va_third_party_phone,va_third_party_sip.Llamada interna fuera del horario de atención:
internal_call_after_hours_message,internal_call_after_hours_queue,internal_call_after_hours_phone,internal_call_after_hours_extension,internal_call_after_hours_sip,internal_call_after_hours_voicemail.Exceso de capacidad de llamadas internas:
internal_call_over_capacity_message,internal_call_over_capacity_queue,internal_call_over_capacity_phone,internal_call_over_capacity_extension,internal_call_over_capacity_sip,internal_call_over_capacity_voicemail,internal_call_over_capacity_wait.Redireccionamiento automático de llamadas internas:
internal_call_automatic_redirection_message,internal_call_automatic_redirection_queue,internal_call_automatic_redirection_phone,internal_call_automatic_redirection_extension,internal_call_automatic_redirection_sip,internal_call_automatic_redirection_voicemail.Transferencia de llamadas fuera del horario de atención:
call_transfer_after_hours_message,call_transfer_after_hours_queue,call_transfer_after_hours_phone,call_transfer_after_hours_extension,call_transfer_after_hours_sip,call_transfer_after_hours_voicemail.Capacidad excesiva de transferencia de llamadas:
call_transfer_over_capacity_message,call_transfer_over_capacity_queue,call_transfer_over_capacity_phone,call_transfer_over_capacity_extension,call_transfer_over_capacity_sip,call_transfer_over_capacity_voicemail,call_transfer_over_capacity_wait.Redireccionamiento automático de transferencia de llamadas:
call_transfer_automatic_redirection_message,call_transfer_automatic_redirection_queue,call_transfer_automatic_redirection_phone,call_transfer_automatic_redirection_extension,call_transfer_automatic_redirection_sip,call_transfer_automatic_redirection_voicemail.Cierre de emergencia: Cuando un administrador activó un cierre de emergencia:
emergency_shutdown,emergency_shutdown_message,emergency_shutdown_after_hoursyemergency_shutdown_over_capacity.Enrutamiento dinámico de llamadas (DCR):
dcr_transferred,dcr_missed,dcr_redirected,dcr_finished.
Referenciado desde: cada deflection_details[].deflection, que usa este vocabulario en su totalidad. Otros dos campos se basan en un subconjunto de este:
El campo
deflectionde nivel superior usa todos los valores, exceptoover_cap_ewt_onlyytemp_redirection_url.Cada
transfers[].deflectionusa un subconjunto más pequeño con alcance de transferencia:no_deflection,deflecting,deflection_abandoned, los diez valores deover_cap_*, los ocho valores deafter_hours_*, los siete valores detemp_redirection_*que no seantemp_redirection_url,ivr_presession_deflection,va_redirection_phoneyva_redirection_sip. Las familiasinternal_call_*,call_transfer_*,emergency_shutdown_*,dcr_*yva_third_party_*nunca aparecen en una transferencia.
Control de versiones y bajas
El esquema de metadatos de la sesión de llamada admite la evolución retrocompatible. CCAI Platform puede agregar campos y arrays nuevos en cualquier momento. Las integraciones deben ignorar las claves no reconocidas para garantizar la funcionalidad continua. Los campos de esta sección están obsoletos, son heredados o se reemplazaron de forma parcial. Permanecen en la carga útil para la retrocompatibilidad, pero las integraciones nuevas deben seguir las instrucciones de cada campo.
Campos obsoletos
voip_provider(cadena): Obsoleto. Siempre devuelve la cadena literal "obsoleto". CCAI Platform ya no muestra información del proveedor a las integraciones a través de este documento. No hay un campo de reemplazo. Si tu integración necesita identificar al proveedor de telefonía ascendente, comunícate con tu equipo de cuentas.
Duplicados heredados
session_type(cadena): Es el alias heredado decall_type. Siempre devuelve el mismo valor quecall_typey usa el mismo vocabulario de enumeración heredado. CCAI Platform conserva este campo para mantener la retrocompatibilidad con las integraciones que se basan ensession_type. Las integraciones nuevas deben analizarcall_typedirectamente o, para distinciones entrantes más detalladas,session_type_v2(consulta Evolución del vocabulario a continuación).
Evolución del vocabulario
call_type y session_type_v2 describen el mismo tipo de llamada subyacente con
dos vocabularios diferentes. CCAI Platform emite ambos campos en cada registro; no son
duplicados entre sí:
call_typeusa el vocabulario de enumeración heredado. Los valores comoVoice Inbound (App)yVoice Inbound (IVR via App)abarcan todos los orígenes de SDK de dispositivos móviles y de apps entrantes en una sola etiqueta.call_typeno está obsoleto. CCAI Platform seguirá emitiendo este campo, pero su vocabulario no obtendrá nuevos valores detallados.session_type_v2usa el vocabulario de enumeración actual. Introduce distinciones de entrada más detalladas, por ejemplo,Voice Inbound (Mobile)yVoice Inbound (IVR via Mobile), para los tipos de llamadas que tienen valores específicos de la versión 2. Para los tipos de llamadas que no tienen un valor específico de v2,session_type_v2devuelve la misma cadena quecall_type.
Las integraciones nuevas deben analizar session_type_v2. Los valores de cada campo se
indican en Información básica.
Nomenclatura del campo de tiempo de espera
El documento de metadatos de la sesión de llamada informa el tiempo de espera en la cola en dos alcances, con dos nombres de campo:
Total de la llamada: El campo
wait_durationde nivel superior contiene el tiempo total que el consumidor pasó en la fila durante toda la llamada.Por segmento: Cada entrada en el array
queue_durationsde nivel superior (Duraciones de la fila) tiene su propio campoqueue_duration, que contiene el tiempo de espera para ese segmento de fila individual.
Ambos nombres se refieren al mismo tipo de medición, el tiempo que se pasa en la cola,
en diferentes alcances. El wait_duration de la llamada total refleja el
tiempo de espera general del consumidor, mientras que los valores de queue_duration por segmento
describen cada segmento de la cola. Este documento no emite un campo queue_duration de nivel superior independiente; los valores por segmento solo están disponibles dentro de queue_durations.