Relatório de Erros de Chamada (CDR Error)

Relatório de Erros de Chamada (CDR Error)

 

Esta documentação descreve o endpoint /api/cdrError/{id}, responsável por fornecer o Relatório de Registro de Detalhes de Chamadas (CDR) com foco exclusivo nas ligações que falharam ou geraram erros de entrega.

O endpoint fornece uma listagem detalhada de cada tentativa de chamada frustrada, além de um bloco contendo os totais agregados (estatísticas) do período consultado.

🔐 Autenticação e Visibilidade

  • Autenticação Obrigatória: A requisição será recusada (NO_AUTH) se não houver um token/sessão válida.

  • Controle de Acesso Hierárquico: O banco de dados filtra automaticamente os registros com base no nível do usuário que faz a chamada:

    • Nível 4 (Assinante): Só tem acesso às suas próprias ligações com erro.

    • Nível 2 (Revenda): Acesso a todos os clientes vinculados à sua revenda. Pode filtrar por um cliente específico.

    • Nível 1 (Master/Admin): Acesso total. Pode filtrar por qualquer cliente ou provedor (rota).

📍 Endpoint

Método

Rota

Descrição

GET

/api/cdrError/{id}

Retorna as estatísticas e listagem de chamadas com erro.

(Nota: O parâmetro {id} na URL refere-se ao ID do Cliente que se deseja filtrar).

📥 Parâmetros da Requisição

Os parâmetros de filtro são enviados através da Query String (URL) ou Path. Caso as datas não sejam informadas, a API assumirá, por padrão, as chamadas do dia de hoje (de 00:00:00 a 23:59:59).

Parâmetros de Rota (Path)

Campo

Tipo

Descrição

id

Inteiro

ID do Cliente (Assinante). Envie 0 para buscar todos os clientes permitidos no seu nível, ou o ID específico para filtrar. (Ignorado para Nível 4).

Parâmetros de Filtro (Query String)

Campo

Tipo

Padrão

Descrição

id_provider

Inteiro

0

Filtra por ID do Provedor (Rota). Disponível apenas para Nível 1 (Master).

date_ini

String

Data de hoje

Data inicial da busca no formato YYYY-MM-DD.

date_end

String

Data de hoje

Data final da busca no formato YYYY-MM-DD.

time_ini

String

00:00:00

Hora inicial da busca no formato HH:MM:SS.

time_end

String

23:59:59

Hora final da busca no formato HH:MM:SS.

limit

Inteiro

Padrão da API

Limite de registros a serem retornados na paginação.

offset

Inteiro

0

Ponto de partida para a paginação (salto de registros).

📤 Estrutura de Resposta (Response)

O retorno, em formato JSON, é dividido em duas partes principais:

  1. totals: Um bloco estatístico do período consultado.

  2. data: O array contendo a lista dos registros com suas respectivas causas de desconexão.

Exemplo de Resposta (Sucesso - HTTP 200)

{ "error": 0, "reason": "OK", "limit": 100, "offset": 0, "records": 2, "totals": { "total_records": 150, "total_404": 12, "total_noanswer": 45, "total_busy": 60, "total_cancel": 13, "total_congestion": 20 }, "data": [ { "id": 84592, "customer_id": 15, "provider_id": 3, "calldate": "2023-10-25 14:32:01", "callerid": "1001", "source": "1001", "destination": "5511999999999", "city": "SÃO PAULO", "type": "Movel Local", "disposition": "BUSY", "hangup_desc": "User busy", "is_404": 0, "ip_address": "192.168.1.50", "useragent": "Grandstream GXP1625" }, { "id": 84593, "customer_id": 15, "provider_id": 3, "calldate": "2023-10-25 14:45:10", "callerid": "1002", "source": "1002", "destination": "5511000000000", "city": "SÃO PAULO", "type": "Fixo Local", "disposition": "404 NOT FOUND", "hangup_desc": "Unallocated (unassigned) number", "is_404": 1, "ip_address": "192.168.1.51", "useragent": "Zoiper" } ] }

📋 Dicionário de Dados do Retorno

Bloco totals (Estatísticas do Período)

Representa a soma agregada de todos os erros que ocorreram no período filtrado, independentemente da paginação.

  • total_records: Quantidade total de chamadas com erro.

  • total_404: Soma de chamadas não encontradas / número inexistente (Erro 404).

  • total_noanswer: Soma de chamadas não atendidas.

  • total_busy: Soma de chamadas onde o destino estava ocupado.

  • total_cancel: Soma de chamadas canceladas pelo originador antes do atendimento.

  • total_congestion: Soma de chamadas perdidas por problemas de rota, falha de infraestrutura ou congestionamento.

Bloco data (Detalhes da Chamada)

  • id (int): ID único do registro de erro.

  • customer_id (int): ID do cliente/assinante associado à chamada.

  • provider_id (int): ID da rota/provedor utilizada (se aplicável).

  • calldate (string): Data e hora da ocorrência (YYYY-MM-DD HH:MM:SS).

  • callerid (string): Bina / Nome de quem originou a chamada (codificado em HTML entities).

  • source (string): Número ou ramal de origem.

  • destination (string): Número de destino (limpo, sem formatações).

  • city (string): Cidade do destino da chamada.

  • type (string): Tipo de tarifação identificada (Ex: Fixo Local, Movel LDN).

  • disposition (string): Status SIP macro. Se a flag is_404 for verdadeira, a API força o valor "404 NOT FOUND", caso contrário exibe o status bruto (ex: "BUSY", "NOANSWER", "CANCEL").

  • hangup_desc (string): Motivo textual detalhado do desligamento / Código Q.850 de ISDN.

  • is_404 (int): Retorna 1 caso seja um número não alocado/inexistente, e 0 para outros motivos.

  • ip_address (string): Endereço IP público do equipamento que gerou a ligação.

  • useragent (string): Identificação do equipamento ou softphone utilizado.