Ir para o conteúdo

Roteamento

routing.steps é a jornada ordenada quando o histórico canônico está disponível. Cada item representa uma ocorrência real; a mesma entidade pode aparecer mais de uma vez.

Estrutura

Campo Presença Descrição
routing.initialDestination condicional Destino lógico inicial, ou PSTN remoto em outbound.
routing.steps condicional Etapas canônicas, ordenadas por sequence.
routing.transfers sempre no objeto routing Transferências históricas, possivelmente vazias.
routing.voicemail sempre no objeto routing Caixa postal alcançada, ou null.
routing.ivrs, routing.queue, routing.huntGroup legado/condicional Resumos usados quando não há steps canônicos.

Os tipos públicos atuais de routing.steps[].type são ivr (URA), queue (Fila), hunt_group (Grupo de Atendimento) e endpoint (Ramal). O destino PSTN aparece como pstn em initialDestination e em to, não como etapa interna.

Cada step pode conter sequence, type, number, name, action, result, reason, destination e, em URA, events. Campos sem evidência histórica são omitidos; nomes podem ser null ou ausentes.

URA

{
  "type": "ivr",
  "ivrType": "menu",
  "number": "401",
  "name": "URA Comercial",
  "action": "entered",
  "events": [
    { "type": "selection", "value": "1", "destination": { "type": "queue", "number": "710", "name": "Financeiro" } }
  ]
}

type: "ivr" é a categoria estável. ivrType aparece somente quando a ocorrência histórica comprova a modalidade: menu (URA Menu) ou direct_dial (URA Ramal). Registros antigos sem essa evidência não recebem subtipo fabricado.

Os eventos públicos atualmente emitidos em steps[].events são:

type Campos Significado
selection value, destination Opção válida selecionada; o destino contém o snapshot histórico quando disponível.
invalid_input value Entrada inválida.
no_input Nenhum dígito foi informado no intervalo esperado.
retry reason Nova tentativa, normalmente com reason: "no_input" ou reason: "invalid_input".
redirect reason, trigger, destination Encaminhamento ocorrido; em fallback novo, reason: "fallback" e trigger identifica a causa comprovada.
option sequence, value, result, outOfService, outOfServiceReason, overflow, destination Formato legado de tentativas quando não há eventos estruturados.
playback result, outOfService, outOfServiceReason Reprodução de áudio, inclusive fora de serviço.
hangup result, outOfService, outOfServiceReason Encerramento pela URA.

outOfServiceReason pode ser weekday, saturday, sunday ou holiday, conforme a regra histórica registrada. Em eventos legados, result pode ser selected, invalid, playsound, hangup ou overflow; overflow não deve ser reinterpretado como no_input sem evidência.

Destinos

Quando presente, destination descreve o destino resolvido naquele momento, com type (extension, queue, hunt_group ou ivr), number e name quando disponíveis. A ausência de nome não é preenchida consultando a configuração atual.

URA Menu

  • opção válida: selection com value e destino;
  • opção inválida: invalid_input, seguido eventualmente de retry com reason: "invalid_input";
  • nenhuma entrada: no_input, seguido eventualmente de retry com reason: "no_input";
  • fallback: redirect com reason: "fallback", trigger (no_input ou invalid_input) e destino, quando o novo histórico comprovar esses dados;
  • fora de serviço: playback, hangup ou redirect com os campos outOfService/outOfServiceReason.

URA Ramal (direct_dial)

O chamador informa diretamente um número/destino. Uma entrada válida é registrada como selection, preservando o valor digitado e o destino histórico. Entradas inválidas, ausência de entrada, novas tentativas e fallback usam os mesmos eventos públicos acima.

Exemplo: URA Ramal 402 → dígito 710 → Fila 710 → Ramal 100:

{
  "type": "ivr", "ivrType": "direct_dial", "number": "402", "name": "URA Ramal Principal", "action": "entered",
  "events": [
    { "type": "no_input" },
    { "type": "retry", "reason": "no_input" },
    { "type": "invalid_input", "value": "0" },
    { "type": "no_input" },
    { "type": "retry", "reason": "no_input" },
    { "type": "selection", "value": "710", "destination": { "type": "queue", "number": "710", "name": "Financeiro" } }
  ]
}

Transferências, Fila e Grupo de Atendimento

routing.transfers contém transferências com sequence, occurredAt, type, from, to, tempos e status (completed ou failed). Uma Fila ou Grupo de Atendimento é uma etapa própria; answeredBy continua sendo exclusivamente o Ramal humano que atendeu.

O contrato não publica métricas de queue_log como SLA, posição ou abandono detalhado.