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:
selectioncomvaluee destino; - opção inválida:
invalid_input, seguido eventualmente deretrycomreason: "invalid_input"; - nenhuma entrada:
no_input, seguido eventualmente deretrycomreason: "no_input"; - fallback:
redirectcomreason: "fallback",trigger(no_inputouinvalid_input) e destino, quando o novo histórico comprovar esses dados; - fora de serviço:
playback,hangupouredirectcom os camposoutOfService/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.