Um objeto de chamada é criado para cada ligação feita ou recebida pela Contact Center AI Platform (CCAI Platform). Consulte o modelo a seguir para determinar quais campos podem conter 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": []
]
}
]
O campo de status pode estar em um dos seguintes estados:
| Status da chamada | Descrição |
|---|---|
| Selecionando | Estado que ocorre quando um usuário final ligou para a central de atendimento, mas ainda está navegando pelas opções do menu antes de solicitar uma ligação de um nó folha. |
| Na fila | Estado que ocorre depois que o usuário final seleciona um nó de menu folha e inicia uma solicitação de chamada para ser transmitida ou multicast para um agente. |
| Atribuído | Estado que ocorre quando um agente é selecionado para receber a ligação do usuário final. Isso acontece quando um atendente atende uma ligação. |
| Conectando | Estado que ocorre depois que um agente é atribuído e está aguardando o estabelecimento de uma conexão entre o usuário final e o agente. |
| Conectado | Estado que ocorre quando a chamada estabeleceu uma conexão e o agente e o usuário final estão em uma ligação. |
| Concluído | Estado que ocorre quando uma conversa entre um agente e um usuário final termina uma chamada sem erros. |
| Falha | Estado que ocorre quando uma chamada é encerrada devido a um erro. Quando esse status é renderizado, um motivo de falha também é fornecido para mais contexto. |
| Alternando | Estado que ocorre quando uma chamada falha ao tentar se conectar e a plataforma CCAI tenta conectar a chamada com um provedor de VoIP diferente. |
| Recuperado | Estado que ocorre quando uma chamada com falha é retornada. Essa nova chamada é filha da original. Recuperou observações de que o retorno de chamada foi concluído sem erros. |
| Programado | Estado que ocorre quando um usuário final escolhe receber uma ligação no futuro como parte de uma opção de desvio ou seleciona receber uma ligação no futuro usando o In-Web ou no app. |
| Apenas ação | Estado que ocorre quando uma chamada processada pelo provedor de telefonia do cliente é conectada ao nosso SDK do iOS ou SDK do Android. |
| Ação concluída | Estado que ocorre quando uma chamada processada pelo provedor de telefonia do cliente é conectada ao nosso SDK do Android para iOS ou Android e termina. |
| Desviada | Estado que ocorre com base na configuração de filas de excesso de capacidade ou chamadas fora do horário comercial. As opções de rejeição incluem correio de voz, agendar ligação e outras. A redução varia de acordo com o canal (no app, URA, na Web). |
| Correio de voz | Estado que ocorre quando um usuário final é redirecionado para uma opção de correio de voz e escolhe deixar uma mensagem para ouvir depois. Esse estado está presente quando o usuário final está saindo da caixa de correio de voz. |
| Correio de voz recebido | Estado que ocorre depois que um usuário final deixa um correio de voz e um agente não ouve a mensagem. |
| Correio de voz lido | Estado que ocorre quando um agente abre o correio de voz para ouvir. |
O campo "call_type" só pode ter um dos seguintes valores:
| Tipo de chamada | Descrição |
|---|---|
| Entrada de texto por voz (IVR) | Chamada PSTN recebida do telefone de um usuário final. |
| Entrada de voz (app) | Ligação recebida feita em um app iOS ou app Android que usa nosso SDK para dispositivos móveis. |
| Retornar ligação (Web) | Solicitação de chamada recebida feita no nosso SDK da Web |
| Agendado por voz (app) | Chamada feita de um agente para um usuário final que foi pré-agendada usando o recurso de agendamento do SDK para dispositivos móveis. |
| Voice Scheduled (Web) | Chamada feita de um agente para um usuário final que foi pré-agendada usando o recurso de agendamento do SDK da Web |
| Voice Outbound | Chamada feita por um agente para um usuário final discada usando o teclado de discagem ou outro método para ligar para uma linha telefônica externa. |
O campo service_level_event pode ter apenas um dos seguintes valores:
| Evento de nível de serviço | Descrição |
|---|---|
| in_sla | A chamada foi atendida dentro do SLA |
| not_in_sla | A chamada não foi atendida dentro do SLA definido |
| excluído | A chamada não foi incluída no cálculo do SLA (por exemplo, se ela foi abandonada). |
Os campos adapter_fail_code e adapter_fail_message só podem ter um dos seguintes valores se não forem nulos:
| Código de falha do adaptador | Mensagem de falha do adaptador |
|---|---|
| 10001 | Esta chamada encontrou um erro inesperado. |
| 11001 | Esta chamada expirou enquanto aguardava na fila. |
| 20001 | A chamada foi cancelada pelo cliente. |
| 20002 | A chamada foi rejeitada pelo cliente. |
| 20003 | Essa chamada foi abandonada pelo cliente. |
| 20004 | A chamada foi abandonada pelo cliente durante a seleção do menu. |
| 21001 | Não foi possível conectar a chamada porque a linha do cliente está ocupada. |
| 21002 | O número de telefone discado é inválido. |
| 21003 | O cliente não atendeu a esta chamada. |
| 22001 | Não foi possível enviar a notificação push para iniciar a chamada. |
| 30001 | Esta chamada foi cancelada. |
| 30002 | Essa chamada expirada não foi atendida. |
| 31001 | Não foi possível detectar o microfone. Confira as configurações do dispositivo e tente de novo. |
| 31002 | Não foi possível acessar o microfone. Confira as permissões do dispositivo e tente de novo. |
| 32001 | O número de saída selecionado é inválido. |
| 32002 | Não é possível conectar a chamada ao número de telefone discado. |
| 41001 | Ocorreu um erro inesperado na conexão da chamada. |
| 42001 | Ocorreu um erro inesperado na conexão da chamada. |
| 43001 | Esta chamada encontrou um erro inesperado. |
| 44001 | Esta chamada encontrou um erro inesperado. |
| 44002 | A chamada foi encerrada porque a conexão expirou. |
| 44003 | Esta chamada encontrou um erro inesperado. |
| 90001 | Esta chamada foi encerrada porque nenhum áudio foi detectado. |
| 90002 | Não foi possível iniciar o dispositivo de áudio. Confira as permissões do dispositivo de áudio e tente de novo. |
Chamadas
| Parâmetro | Obrigatório | Tipo de dados | Definição |
|---|---|---|---|
| connected_at[from] | FALSO | Horário em UTC | cria um limite inferior do campo "Conectado em". Todos os registros retornados serão anteriores ao valor inserido. |
| connected_at[to] | FALSO | Horário em UTC | cria um limite superior do campo "connected_at". Todos os registros retornados serão anteriores ao valor inserido. |
| updated_at[from] | FALSO | Horário em UTC | cria um limite inferior do campo "updated at". Todos os registros retornados serão posteriores ao valor inserido. |
| updated_at[to] | FALSO | Horário em UTC | cria um limite superior do campo "connected_at". Todos os registros retornados serão anteriores ao valor inserido. |
| queued_at[from] | FALSO | Horário em UTC | cria um limite inferior do campo "queued at". Todos os registros retornados serão posteriores ao valor inserido. |
| queued_at[to] | FALSO | Horário em UTC | cria um limite superior do campo "queued at". Todos os registros retornados serão anteriores ao valor inserido. |
| rating[from] | FALSO | Número de 1 a 5 ou nulo | cria um limite inferior do campo de classificação. Todos os registros retornados serão posteriores ao valor inserido. |
| rating[to] | FALSO | Número de 1 a 5 ou nulo | cria um limite superior do campo de classificação. Todos os registros retornados serão anteriores ao valor inserido. |
| call_duration[from] | FALSO | Número | cria um limite inferior do campo de duração da chamada. Todos os registros retornados serão posteriores ao valor inserido. |
| call_duration[to] | FALSO | Número | cria um limite superior para o campo de duração da chamada. Todos os registros retornados serão anteriores ao valor inserido. |
| hold_duration[from] | FALSO | Número | cria um limite inferior do campo de duração da retenção. Todos os registros retornados serão posteriores ao valor inserido. |
| hold_duration[to] | FALSO | Número | cria um limite superior para o campo de duração da retenção. Todos os registros retornados serão anteriores ao valor inserido. |
| id[] | FALSO | Array[String] | Matriz de strings. ID dos registros a serem pesquisados e retornados. |
| agent_id[] | FALSO | Array[String] | Filtra a resposta por ID do agente |
| end_user_id[] | FALSO | Array[String] | Filtra a resposta com base no ID do usuário final. |
| call_status[] | FALSO | Array[String] | Retorna registros de um determinado estado no ciclo de vida da chamada. Os valores possíveis são: 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] | Retorna registros que falharam de alguma forma. Os valores possíveis são: 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 | Retorna registros que foram verificados (True) ou não (False) |
| call_type[] | FALSO | Array[String] | Retorna registros de um determinado tipo de chamada. Os valores possíveis são: IncomingCallApp, ScheduledCallApp, OutboundCall, AgentScheduledCall, IvrCall, IncomingCallWeb, ScheduledCallWeb, ActionOnlyCall |
| support_number[] | FALSO | Array[String] | Filtre pelo número de telefone usado pelo usuário final para entrar em contato (somente para chamadas de URA) |
Endpoint
Method: GET
Type:
URL: https://{{subdomain}}.{{domain}}/manager/api/v1/calls
Cabeçalhos:
| Chave | Valor | Descrição |
|---|---|---|
| Content-Type | application/json |
Mais exemplos de solicitações/respostas:
Exemplo de solicitação: chamadas
Corpo: nenhum
Exemplo de resposta: Chamadas
[
{
"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 status:200