→ O que é CDR?
Registro de Detalhes da Chamada ou Call Detail Record (CDR) é o log produzido por uma conexão telefônica contendo detalhes da chamada.
→ Qual a utilidade do CDR?
O CDR contém informações, organizadas em forma de dicionário (“chaves” que possuem “valores”), que descrevem os processamentos realizados por aquela chamada e seus resultados.
Serve basicamente para analisar o percurso realizado pela ligação, debugar problemas e extrair informações não disponíveis na interface.
→ CDRs no Studio
As CDRs do Studio são utilizadas para analisar o fluxo da chamada na URA.
Exemplo: Identificar um cliente, verificar quantas vezes a URA solicitou o CPF ao cliente e/ou qual o retorno da requisição de consulta.
As CDRs no Studio podem ser acessadas através do caminho:
Tela Inicial → Studio → Relatórios → Histórico de Chamadas
Após acessar o caminho, realize a busca com base nos parâmetros desejados, clique no botão “Gerar”, selecione a chamada que deseja analisar, clique em e clique no botão “Olhar Jornada”, escolha qual fluxo deseja analisar e clique em "Mostrar CDR”
Info |
---|
Para uma melhor visualização da CDR no Studio, é recomendado instalar a extensão JSON Formatter, que pode ser obtida através desse link. |
Descrições das chaves que compõe o CDR do Studio:
🌎 Informações globais sobre a chamada dentro do fluxo:
{
"source": Módulo de origem (ex: Studio),
"hostname": IP Interno,
"sequence": Posição deste fluxo dentro da jornada,
"call_uuid": ID único da chamada,
"project_id": Número do Projeto no banco de dados,
"who_hangup": Quem desligou a chamada (caller, system ou null),
"exit_reason": Razão do término do fluxo (transfer ou hangup),
"call_flow_id": Número do Fluxo no banco de dados,
"incoming_did": DDR pelo qual a chamada chegou,
"project_name": Nome do Projeto,
"session_uuid": ID único da sessão,
"exported_vars": Variáveis setadas com o recurso de Vincular Variáveis de Chamada ,
"tenant_domain": Nome do tenant,
"call_flow_name": Nome do Fluxo,
"caller_id_name": Número/Nome de quem está ligando,
"executed_tasks": Tarefas (componentes) executados,
"studio_version": Versão do Evolux Studio,
"exit_time_epoch": Horário (em epoch) do fim do fluxo,
"caller_id_number": Número de quem está ligando,
"enter_time_epoch": Horário (em epoch) do início do fluxo,
"call_flow_version": Versão do fluxo,
"destination_number": Número discado pelo originador,
"system_hangup_reason": Razão do desligamento quando este é feito pelo sistema,
"hangup_classification": Em caso de desligamento pelo originador, se foi sucesso ou fracasso,
"exit_transfer_destination": Número do destino da chamada ao finalizar o fluxo,
"exit_transfer_destination_id": ID do destino da chamada no banco de dados
}
⚒️ Informações dos componentes:
{
"task_id": ID único daquela caixinha de componente,
"task_name": Nome do tipo de Componente,
"end_time_epoch": Horário (em epoch) do fim da execução do componente,
"task_raw_params": Configurações inseridas na caixinha (personalizado por componente),
"start_time_epoch": Horário (em epoch) do início da execução do componente,
"task_description": Descrição livre inserida na caixinha,
"task_execution_info": Resultados da execução do componente (aqui ficam os retornos)
}
Exemplos de configuração e execução de alguns componentes:
⁉️ Roteador (router)
{
"task_raw_params":{
"routes":[
{
"match": Se é necessário dar match com qualquer condição ou com todas as condições (“any” ou “all”),
"conditions":[
{
"operator": Lógica aplicada (igual, maior que, tamanho, começa com , etc”,
"left_value": Valor inserido no campo da esquerda, normalmente a variável,
"right_value": Valor inserido no campo da direita, para comparar com a esquerda.
},
{
"operator":"length",
"left_value":"cpf_cnpj",
"right_value":"14"
}
],
"description": Descrição livre daquela rota,
"next_task_id": ID único da caixinha para onde essa rota leva
}]},
"task_execution_info":{
"matched_route":Descrição de qual rota foi escolhida para direcionar a chamada,
"evaluated_routes":[
{
"match":"any",
"result":true, (Saiu por alguma rota == true / Saiu pela rota padrão == false)
"conditions":[
{
"result":true, (Rota deu match == true / Não deu match == false)
"condition":"11111111111 length 11",
"error_msg":null
},
{
"result":false,
"condition":"11111111111 length 14",
"error_msg":null
}
],
"description":"Documento tem 11 ou 14 digitos?"
}
],
"matched_route_order": Número da condição escolhida dentro da rota
}
},
📨 HTTP:
{
"task_raw_params":{
"url": Endpoint informado na caixinha,
"auth": Tipo de autorização utilizada,
"data": Corpo da requisição em JSON (pode ser substituído por Form-data)
"{
""cpfcnpj"" : "{{"cpf_cnpj"}}"
}",
"method": Método da requisição (GET, POST, PUT, etc),
"params": Parâmetros que serão passados junto à URL,
"verify": Verificação SSL (true ou false),
"headers": Cabeçalhos
{
"IntegrationSecret":"*********"
},
"timeout": Tempo limite de execução,
"data_type": Tipo da requisição (JSON ou Form-Data),
"variable_name": Nome da variável onde o retorno será guardado,
"sensitive_return_keys": Palavras que serão buscadas em todas as chaves do retorno para marcá-las como sensíveis e terem seus valores substituídos por "*********" no CDR.
[
"email",
"cpfcnpj",
"logradouro",
"bairro",
"telefone",
"nomeassinante"
],
"sensitive_request_keys": Palavras que serão buscadas em todas as chaves da requisição para marcá-las como sensíveis e terem seus valores substituídos por "*********" no CDR.
[
"IntegrationSecret",
"cpf_cnpj",
"cpfcnpj"
],
"return_contains_sensitive_info": Chave para habilitar o conteúdo seguro descrito acima
},
"task_execution_info": Aqui fica exposto, em formato JSON, todo o retorno que o endpoint requisitado forneceu.
{
"status": Mensagem de resultado (http_success ou http_error),
"error_msg": Mensagem do erro, caso tenha havido,
"http_status": Código HTTP retornado (200, 404, 500, etc), Caso seja da classe 2XX é considerado sucesso, todos os outros são considerados fracassos pela caixinha.
"request_data": Aqui estará todo o corpo da resposta, com os dados requisitados, etc.
},
Exemplo de fluxo sendo executado:
Confira o CDR dessa ligação abaixo:
Expand | |||||
---|---|---|---|---|---|
| |||||
|