Se crea un objeto de llamada para cada llamada que se realiza hacia o desde Contact Center AI Platform (CCAI Platform). Consulta el siguiente modelo para determinar qué campos podrían contener PII.
[
{
"id": 0,
"parent_id": 0,
"lang": "en",
"call_type": "Voice Inbound (App)",
"status": "scheduled",
"sub_status": "Scheduled: Disconnected by unknown",
"created_at": "2018-06-07T19:49:52.896Z",
"queued_at": "2018-06-07T19:49:52.896Z",
"assigned_at": "2018-06-07T19:49:52.896Z",
"connected_at": "2018-06-07T19:49:52.896Z",
"ends_at": "2018-06-07T19:49:52.896Z",
"scheduled_at": "2018-06-07T19:49:52.896Z",
"updated_at": "2018-06-07T19:49:52.896Z",
"wait_duration": 0, //Deprecated, use queue_duration instead
"queue_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": 0,
"has_feedback": true,
"voip_provider": "voip_provider_twilio",
"out_ticket_id": "string",
"out_ticket_url": "string",
"verified": true,
"recording_url": "string",
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"finish_reason": "no_reason",
"fail_details": "string",
"fail_reason": "nothing",
"adapter_fail_code": null,
"adapter_fail_message": null,
"support_number": "string",
"selected_menu": {
"id": 0,
"name": "string",
"parent_id": 0,
"position": 0,
"deleted": true,
"hidden": "string",
"menu_type": "ivr_menu",
"output_msg": "string"
},
"menu_path": {
"items_count": 0,
"name": "string",
"materialized_path": "string"
},
"agent_info": {
"id": 0,
"name": "string", //This may be considered PII
"last_name": "string", //This may be considered PII
"first_name": "string", //This may be considered PII
"agent_number": "string",
"avatar_url": "string"
},
"end_user": {
"id": 0, //This may be considered PII
"identifier": "string", //This may be considered PII
"out_contact_id": "string" //This may be considered PII
},
"photos": [
{
"id": 0, //This may be considered PII
"photo_type": "photo", //This may be considered PII
"url": "string" //This may be considered PII
}
],
"videos": [
{
"id": 0, //This may be considered PII
"url": "string" //This may be considered PII
}
],
"transfers": [
{
"id": 0,
"status": "transferring",
"fail_reason": "nothing",
"created_at": "2018-06-07T19:49:52.896Z",
"call_duration": 300,
"wait_duration": 40,
"assigned_at": "2018-06-07T19:50:32.896Z",
"connected_at": "2018-06-07T19:50:35.896Z",
"updated_at": "2018-06-07T19:55:35.896Z",
"deflection": 0,
"from_menu": {
"items_count": 0,
"name": "string",
"materialized_path": "string"
},
"to_menu": {
"items_count": 0,
"name": "string",
"materialized_path": "string"
},
"from_agent": {
"id": 0,
"name": "string", //This may be considered PII
"last_name": "string", //This may be considered PII
"first_name": "string", //This may be considered PII
"agent_number": "string",
"avatar_url": "string"
},
"to_agent": {
"id": 0,
"name": "string", //This may be considered PII
"last_name": "string", //This may be considered PII
"first_name": "string", //This may be considered PII
"agent_number": "string",
"avatar_url": "string"
}
}
],
"handle_durations": [
{
"agent_id": 0,
"acw_duration": 0,
"call_duration" 0,
"menu_path_id": 0,
"wait_duration": 0,
"lang": "en",
"transfer": false,
"started_at": "2019-07-17T07:27:14.000Z",
"ended_at": "2019-07-17T07:27:20.000Z",
"event": "call_finished"
}
],
"queue_durations": [
{
"agent_id": 0,
"queue_duration" 0,
"menu_path_id": 0,
"lang": "en",
"transfer": false,
"started_at": "2019-07-17T07:27:14.000Z",
"ended_at": "2019-07-17T07:27:20.000Z",
"service_level_abandon_time_threshold": 10,
"service_level_event": "not_in_sla",
"service_level_target_percent": 90,
"service_level_target_time": 60,
"event": "answered"
}
]
"participants": [
{
"id": 0,
"type": "end_user",
"status": "waiting",
"call_id": 0,
"user_id": 0, //This may be considered PII
"end_user_id": 0, //This may be considered PII
"call_duration": 0,
"hold_duration": 0,
"connected_at": "2018-06-07T19:49:52.896Z",
"ended_at": "2018-06-07T19:49:52.896Z",
"fail_reason": "nothing",
"adapter_fail_code": null,
"adapter_fail_message": null
},
"offer_type": null,
"offer_events": [],
"answer_type": "manual",
"outbound_number": null,
"wait_time_sms": [],
"in_call_sms": []
]
}
]
El campo de estado puede estar en cualquiera de los siguientes estados:
| Estado de la llamada | Descripción |
|---|---|
| Seleccionando | Estado que se produce cuando un usuario final llama al centro de contacto, pero aún navega por las opciones del menú antes de solicitar la llamada desde un nodo hoja. |
| En cola | Es el estado que se produce después de que el usuario final selecciona un nodo de menú hoja y solicita una llamada para que se transmita a un agente por transmisión única o múltiple. |
| Asignado | Estado que se produce cuando se selecciona un agente para recibir la llamada del usuario final. Esto ocurre cuando un agente atiende una llamada. |
| Conectando | Es el estado que se produce después de que se asigna un agente y se espera a que se establezca una conexión entre el usuario final y el agente. |
| Conectado | Estado que se produce cuando la llamada estableció una conexión y el agente y el usuario final están en una llamada. |
| Finalizado | Estado que se produce cuando la conversación entre un agente y un usuario final finaliza una llamada sin errores. |
| Con errores | Estado que se produce cuando una llamada finaliza debido a un error. Cuando se renderice este estado, también se proporcionará un motivo de falla para brindar más contexto. |
| Cambiando | Estado que se produce cuando falla una llamada mientras se intenta conectar y la Plataforma de CCAI intenta conectar la llamada con un proveedor de VoIP diferente. |
| Recuperada | Es el estado que se produce cuando se devuelve una llamada fallida. Esta nueva llamada es secundaria de la llamada original. Notas recuperadas que indican que la devolución de llamada finalizó sin errores. |
| Programado | Estado que se produce cuando un usuario final elige que se lo llame en el futuro como parte de una opción de desvío o selecciona que se lo llame en el futuro a través de In-Web o In-App. |
| Solo de acción | Es el estado que se produce cuando una llamada que controla el proveedor de telefonía del cliente se conecta a nuestro SDK para iOS o Android. |
| Solo acción finalizada | Estado que se produce cuando una llamada que controla el proveedor de telefonía de nuestro cliente se conecta a nuestro SDK para iOS o Android y finaliza |
| Se desvió la pelota | Estado que se produce según la configuración de las colas por capacidad excedida o las llamadas fuera de horario. Entre las opciones de desvío, se incluyen el buzón de voz y la programación de llamadas, entre otras. La derivación variará según el canal (en la app, IVR y en la Web). |
| Mensaje de voz | Estado que se produce cuando se desvía a un usuario final a una opción de mensaje de voz y este decide dejar un mensaje de voz para escucharlo más tarde. Este estado está presente cuando el usuario final está dejando el mensaje de voz. |
| Mensaje de voz recibido | Estado que se produce después de que un usuario final deja un mensaje de voz y un agente no lo escucha |
| Lectura de mensajes de voz | Estado que se produce cuando un agente abrió el mensaje de voz para escucharlo. |
El campo call_type solo puede tener uno de los siguientes valores
| Tipo de llamada | Descripción |
|---|---|
| Llamadas entrantes de voz (IVR) | Llamada entrante de la PSTN desde el teléfono de un usuario final. |
| Llamada entrante de voz (app) | Llamada entrante realizada desde una aplicación para iOS o Android que usa nuestro SDK para dispositivos móviles. |
| Devolución de llamada de voz (Web) | Solicitud de llamada entrante realizada desde nuestro SDK web |
| Programación por voz (app) | Llamada realizada por un agente a un usuario final que se programó previamente con la función de programación del SDK para dispositivos móviles. |
| Voz programada (Web) | Llamada realizada por un agente a un usuario final que se programó previamente con nuestra capacidad de programación del SDK web |
| Llamadas salientes de voz | Llamada realizada por un agente a un usuario final que se marcó con el teclado de marcado o con otro método para llamar a una línea telefónica externa. |
El campo service_level_event solo puede tener uno de los siguientes valores:
| Evento de nivel de servicio | Descripción |
|---|---|
| in_sla | Se respondió la llamada dentro del ANS |
| not_in_sla | No se respondió la llamada dentro del ANS definido |
| excluidos | La llamada no se incluyó en el cálculo del ANS (p. ej., si se abandonó la llamada). |
Los campos adapter_fail_code y adapter_fail_message solo pueden tener uno de los siguientes valores si no son nulos:
| Código de falla del adaptador | Mensaje de falla del adaptador |
|---|---|
| 10001 | Esta llamada detectó un error inesperado. |
| 11001 | Esta llamada venció mientras esperaba en la fila. |
| 20001 | El cliente canceló esta llamada. |
| 20002 | El cliente rechazó esta llamada. |
| 20003 | El cliente abandonó esta llamada. |
| 20004 | El cliente abandonó esta llamada durante la selección del menú. |
| 21001 | No se pudo conectar la llamada porque la línea del cliente está ocupada. |
| 21002 | El número de teléfono marcado no es válido. |
| 21003 | El cliente no contestó esta llamada. |
| 22001 | No se pudo enviar la notificación push para iniciar esta llamada. |
| 30001 | Se canceló esta llamada. |
| 30002 | No se atendió esta llamada vencida. |
| 31001 | No se pudo detectar el micrófono. Verifica la configuración de tu dispositivo y vuelve a intentarlo. |
| 31002 | No se puede acceder al micrófono. Verifica los permisos de tu dispositivo y vuelve a intentarlo. |
| 32001 | El número de salida seleccionado no es válido. |
| 32002 | No se puede conectar la llamada al número de teléfono marcado. |
| 41001 | Se produjo un error inesperado con la conexión de la llamada. |
| 42001 | Se produjo un error inesperado con la conexión de la llamada. |
| 43001 | Se produjo un error inesperado en esta llamada. |
| 44001 | Se produjo un error inesperado en esta llamada. |
| 44002 | Se finalizó esta llamada porque se agotó el tiempo de espera de la conexión. |
| 44003 | Se produjo un error inesperado en esta llamada. |
| 90001 | Esta llamada finalizó porque no se detectó audio. |
| 90002 | No se pudo iniciar el dispositivo de audio. Revisa los permisos de tu dispositivo de audio y vuelve a intentarlo. |
Llamadas
| Parámetro | Obligatorio | Tipo de datos | Definición |
|---|---|---|---|
| connected_at[from] | FALSO | Hora en UTC | Crea un límite inferior del campo connected_at. Todos los registros devueltos serán anteriores al valor ingresado. |
| connected_at[to] | FALSO | Hora en UTC | Crea un límite superior del campo connected_at. Todos los registros devueltos serán anteriores al valor ingresado. |
| updated_at[from] | FALSO | Hora en UTC | Crea un límite inferior del campo updated_at. Todos los registros devueltos serán posteriores al valor ingresado. |
| updated_at[to] | FALSO | Hora en UTC | Crea un límite superior del campo connected_at. Todos los registros devueltos serán anteriores al valor ingresado. |
| queued_at[from] | FALSO | Hora en UTC | Crea un límite inferior del campo queued at. Todos los registros devueltos serán posteriores al valor ingresado. |
| queued_at[to] | FALSO | Hora en UTC | Crea un límite superior del campo queued at. Todos los registros devueltos serán anteriores al valor ingresado. |
| rating[from] | FALSO | Número del 1 al 5 o valor nulo | Crea un límite inferior del campo de calificación. Todos los registros devueltos serán posteriores al valor ingresado. |
| rating[to] | FALSO | Número del 1 al 5 o valor nulo | Crea un límite superior del campo de calificación. Todos los registros devueltos serán anteriores al valor ingresado. |
| call_duration[from] | FALSO | Número | Crea un límite inferior del campo de duración de la llamada. Todos los registros devueltos serán posteriores al valor ingresado. |
| call_duration[to] | FALSO | Número | Crea un límite superior del campo de duración de la llamada. Todos los registros devueltos serán anteriores al valor ingresado. |
| hold_duration[from] | FALSO | Número | Crea un límite inferior del campo de duración de la retención. Todos los registros devueltos serán posteriores al valor ingresado. |
| hold_duration[to] | FALSO | Número | Crea un límite superior del campo de duración de la retención. Todos los registros devueltos serán anteriores al valor ingresado. |
| id[] | FALSO | Array[String] | Arreglo de strings. Es el ID de los registros que se buscarán y devolverán. |
| agent_id[] | FALSO | Array[String] | Filtra la respuesta por ID de agente. |
| end_user_id[] | FALSO | Array[String] | Filtra la respuesta según el ID del usuario final. |
| call_status[] | FALSO | Array[String] | Devuelve registros de un estado determinado en el ciclo de vida de la llamada. Los valores posibles son: scheduled, queued, assigned, connecting, switching, connected, finished, failed, recovered, deflected, selecting, action_only, action_only_finished, voicemail, voicemail_received, voicemail_read |
| call_fail_reason[] | FALSO | Array[String] | Devuelve los registros que fallaron de una manera determinada. Los valores posibles son: nothing, unknown, expired, eu_canceled, eu_rejected, eu_abandoned, eu_in_menu_abandoned, eu_busy, eu_wrong_number, eu_no_answer, eu_noti_failed, ag_canceled, ag_ignored, ag_mic_no_device, ag_mic_denied, voip_twilio_error, voip_tokbox_error, voip_invalid_token, voip_conn_general, voip_conn_timeout, voip_conn_signal |
| verified[] | FALSO | Booleano | Devuelve registros que se verificaron (verdadero) o no se verificaron (falso). |
| call_type[] | FALSO | Array[String] | Devuelve registros de un tipo de llamada determinado. Los valores posibles son: IncomingCallApp, ScheduledCallApp, OutboundCall, AgentScheduledCall, IvrCall, IncomingCallWeb, ScheduledCallWeb, ActionOnlyCall |
| support_number[] | FALSO | Array[String] | Filtra por el número de teléfono que usó el usuario final para comunicarse (solo para llamadas de IVR) |
Endpoint:
Method: GET
Type:
URL: https://{{subdomain}}.{{domain}}/manager/api/v1/calls
Encabezados:
| Clave | Valor | Descripción |
|---|---|---|
| Content-Type | application/json |
Más ejemplos de solicitudes y respuestas:
Ejemplo de solicitud: Calls
Cuerpo: Ninguno
Ejemplo de respuesta: Llamadas
[
{
"id": 1,
"lang": "en",
"call_type": "Voice Inbound (App)",
"status": "finished",
"created_at": "2016-02-19T18:53:56.000Z",
"queued_at": "2016-02-19T18:53:57.000Z",
"assigned_at": "2016-02-19T18:53:58.000Z",
"connected_at": "2016-02-19T18:54:18.000Z",
"ends_at": "2016-02-19T18:54:39.000Z",
"updated_at": "2016-02-19T18:54:39.000Z",
"scheduled_at": null,
"queue_duration": 22,
"wait_duration": 22,
"call_duration": 21,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"voip_provider": "voip_provider_twilio",
"out_ticket_id": null,
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"recordings": [
{
"id": 7,
"call_id": 1,
"conference_sid": "CF50ec183fafcff801226b6fc332EC02ba7c4",
"duration": 20,
"recording_type": "default",
"redaction_times": [
{
"start": "2016-02-19T18:54:23.000Z",
"end": "2016-02-19T18:54:25.000Z",
"duration": 2.000,
"start_agent_id": 2,
"end_agent_id": 2
}
],
"started_at": "2016-02-19T18:54:18.000Z"
}
],
"support_number": "+12128675309",
"selected_menu": {
"id": 11,
"name": "Carpentry",
"parent_id": 1,
"position": 1,
"deleted": false,
"hidden": false,
"menu_type": "ivr_menu",
"output_msg": "Thanks for calling Death Star Carpentry"
},
"menu_path": {
"items_count": 1,
"name": "Carpentry",
"materialized_path": "Death Star/Carpentry"
},
"queue_priority_level": 0,
"end_user": {
"id": 3,
"identifier": "Death Star Carpentry Union",
"out_contact_id": "363876643527"
},
"photos": [{
"id": 0,
"photo_type": "photo",
"url": "www.photolocation.co/photo/123456868686"
}],
"videos": [{
"id": 0,
"url": "www.videolocation.co/video/123456868686"
}],
"transfers": [{
"id": 11,
"status": "transferring",
"fail_reason": "nothing",
"created_at": "2016-02-19T18:58:18.000Z",
"from_menu": {
"items_count": 2,
"name": "Cabinetry",
"materialized_path": "Death Star/Cabinetry"
},
"to_menu": {
"items_count": 2,
"name": "Carpentry",
"materialized_path": "Death Star/Carpentry"
},
"from_agent": {
"id": 2,
"name": "San Holo",
"last_name": "San",
"first_name": "Holo",
"agent_number": "6",
"avatar_url": "www.avatarurl.co/avatar/1234543"
},
"to_agent": {
"id": 0,
"name": "Farrison Hord",
"last_name": "Farrison",
"first_name": "Hord",
"agent_number": "12",
"avatar_url": "www.avatarurl.co/avatar/1234545"
}
}],
"participants": [
{
"id": 5,
"type": "end_user",
"status": "finished",
"call_id": 3,
"user_id": null,
"end_user_id": 3,
"call_duration": 21,
"hold_duration": null,
"connected_at": "2016-02-19T18:54:18.000Z",
"ended_at": "2016-02-19T18:54:39.000Z",
"fail_reason": "nothing"
},
{
"id": 3,
"type": "agent",
"status": "finished",
"call_id": 3,
"user_id": 5,
"end_user_id": null,
"call_duration": 21,
"hold_duration": null,
"connected_at": "2016-02-19T18:54:18.000Z",
"ended_at": "2016-02-19T18:54:39.000Z",
"fail_reason": "nothing"
},
{
"id": 6,
"type": "agent",
"status": "finished",
"call_id": 3,
"user_id": 12,
"end_user_id": null,
"call_duration": 21,
"hold_duration": null,
"connected_at": "2016-02-19T18:54:18.000Z",
"ended_at": "2016-02-19T18:54:39.000Z",
"fail_reason": "nothing"
}
],
"offer_type": "cascade",
"offer_events": [
{
"casting_time": "2018-11-12T15:52:38.000Z",
"group": "Group 1"
}
],
"answer_type": "manual",
"outbound_number": null,
"dispositions": [
{
"user_id": 3,
"participant_id": 225,
"code": "Product question"
},
{
"user_id": 3,
"transfer_id": 1,
"participant_id": 226,
"code": "Requires follow up"
}
],
"consumer_handle_durations": [
{
"id": 100,
"call_duration": 314,
"hold_duration": 3,
"started_at": "2016-02-19T18:50:08.000Z",
"ended_at": "2016-02-19T18:55:22.000Z"
}
],
"consumer_in_menu_durations": [
{
"id": 100,
"event": "finished",
"duration": 238,
"menu_path_id": 11,
"menu_path": "Deathstar/Shipping",
"lang": "en",
"started_at": "2016-02-19T18:50:08.000Z",
"ended_at": "2016-02-19T18:54:06.000Z"
}
],
"consumer_event_durations": [
{
"id": 10,
"type": "payment",
"event": "finished",
"duration": 20,
"menu_path_id": 11,
"menu_path": "Deathstar/Shipping",
"lang": "en",
"started_at": "2016-02-19T18:54:38.000Z",
"ended_at": "2016-02-19T18:54:58.000Z"
},
{
"id": 11,
"type": "csat",
"event": "abandoned",
"duration": 4,
"menu_path_id": 11,
"menu_path": "Deathstar/Shipping",
"lang": "en",
"started_at": "2016-02-19T18:54:39.000Z",
"ended_at": "2016-02-19T18:54:43.000Z"
}
],
"handle_durations": [
{
"id": 10001,
"agent_id": 5,
"acw_duration": 0,
"bcw_duration": 0,
"call_duration": 21,
"assigned_connection_duration": 10,
"hold_duration": 3,
"menu_path_id": 11,
"menu_path": "Deathstar/Shipping",
"lang": "en",
"barged": 0,
"transfer": 0,
"transfer_id": null,
"transfer_cold": 0,
"started_at": "2016-02-19T18:54:18.000Z",
"ended_at": "2016-02-19T18:54:39.000Z",
"scheduled_at": null
},
{
"id": 10002,
"agent_id": 5,
"acw_duration": 25,
"bcw_duration": 0,
"call_duration": 0,
"assigned_connection_duration": 0,
"hold_duration": 0,
"menu_path_id": 11,
"menu_path": "Deathstar/Shipping",
"lang": "en",
"barged": 0,
"transfer": 0,
"transfer_id": null,
"transfer_cold": 0,
"started_at": "2016-02-19T18:54:39.000Z",
"ended_at": "2016-02-19T18:55:04.000Z",
"scheduled_at": null
},
{
"id": 10003,
"agent_id": 12,
"acw_duration": 1,
"bcw_duration": 0,
"call_duration": 21,
"assigned_connection_duration": 5,
"hold_duration": 0,
"menu_path_id": 4,
"menu_path": "Deathstar/Returns",
"lang": "en",
"barged": 0,
"transfer": 1,
"transfer_id": 11,
"transfer_cold": 0,
"started_at": "2016-02-19T18:54:18.000Z",
"ended_at": "2016-02-19T18:54:39.000Z",
"scheduled_at": null
}
],
"queue_durations": [
{
"id": 20011,
"agent_id": 5,
"queue_duration": 12,
"menu_path_id": 11,
"menu_path": "Deathstar/Shipping",
"lang": "en",
"transfer": 0,
"transfer_id": null,
"transfer_cold": 0,
"started_at": "2016-02-19T18:54:06.000Z",
"ended_at": "2016-02-19T18:54:18.000Z",
"service_level_abandon_time_threshold": 10,
"service_level_event": "in_sla",
"service_level_target_percent": 90,
"service_level_target_time": 60
},
{
"id": 20012,
"agent_id": 12,
"queue_duration": 10,
"menu_path_id": 21,
"menu_path": "Deathstar/Returns",
"lang": "en",
"transfer": 1,
"transfer_id": 11,
"transfer_cold": 0,
"started_at": "2016-02-19T18:54:08.000Z",
"ended_at": "2016-02-19T18:54:18.000Z",
"service_level_abandon_time_threshold": 10,
"service_level_event": "not_in_sla",
"service_level_target_percent": 90,
"service_level_target_time": 60
}
],
"virtual_agent": {
"id": 10,
"name": "D2-R2"
},
"virtual_agent_deflected_escalations": [
{
"id": 1,
"deflection": "after_hours",
"escalation_id": 1,
"escalation_reason": "by_end_user_message",
"escalated_at": "2016-02-19T18:54:06.000Z",
"menu_path_id": 11,
"menu_path": "Deathstar/Shipping",
"lang": "en",
"virtual_agent": {
"id": 10,
"name": "D2-R2"
}
}
],
"virtual_agent_handle_durations": [
{
"id": 1,
"virtual_agent": {
"id": 10,
"name": "D2-R2"
},
"call_duration": 11,
"escalation_reason": "by_end_user_message",
"sentiment": 85,
"response_count": 11,
"fallback_response_count": 1,
"initiated_by": "end_user",
"menu_path_id": 11,
"menu_path": "Deathstar/Shipping",
"lang": "en",
"transfer": false,
"transfer_id": null,
"started_at": "2016-02-19T18:52:36.000Z",
"ended_at": "2016-02-19T18:54:06.000Z"
}
]
}
]
Código de estado: 200