Chamadas de entrada não identificam DID e caem na rota geral (Tronco PJSIP - Vono)

Olá pessoal,

Estou com dificuldade para rotear chamadas de entrada no FreePBX usando um Tronco PJSIP da operadora Vono. Mesmo criando rotas de entrada específicas para cada número (DID), todas as chamadas acabam caindo na rota padrão ‘Any/Any’ ou dão erro de número inexistente.

Detalhes do Cenário:

  • Tipo de Tronco: PJSIP.

  • Operadora: Vono.

  • O Problema: No sngrep, percebi que a operadora envia o nome de usuário do tronco (user_teste) na linha de requisição (Request-Line) em vez do número discado (DID).

  • O que já tentei:

    1. Alterei o contexto do tronco para from-pstn-toheader para tentar ler o cabeçalho ‘To:’.

    2. Configurei o Contact User nas configurações avançadas do PJSIP com o número principal (ex: 922180XXXX).

    3. Criei rotas com o número completo, apenas os últimos dígitos e padrões como _X.1084.

    4. Ativei a opção CID Priority Route na rota de entrada.

Análise do Log: O INVITE mostra o destino como [email protected]. O FreePBX não parece estar extraindo o DID do cabeçalho ‘To:’, mesmo com o contexto de header ativo.

Como posso forçar o sistema a separar as chamadas dos meus dois números (DIDs finais 1084 e 1085) se eles chegam com o mesmo ID de usuário no sinal SIP? Alguém tem um contexto customizado ou ajuste de PJSIP que resolva isso especificamente para a Vono?"

With the Context set to from-pstn-toheader, make a test call in and look at the CDRs to see whether the called number appears and if so, the format to use.

If it doesn’t appear, report the format Vono is using for the To header.

Olá Stewart1, obrigado pelo retorno!

Consegui resolver o problema e gostaria de compartilhar a solução técnica para ajudar outros usuários da Vono.

O diagnóstico: Mesmo usando from-pstn-toheader, o FreePBX continuava não identificando o DID corretamente porque a Vono não estava enviando o número discado nem na Request-Line nem no cabeçalho To: de forma padronizada. Analisando o sngrep detalhadamente, descobri que a operadora envia o número discado em um cabeçalho SIP personalizado chamado X-DID.

A Solução: Como o contexto padrão não lê esse cabeçalho específico, criei um contexto customizado no extensions_custom.conf para extrair essa informação:

Snippet de código

[from-vono-xdid]
exten => _.,1,NoOp(VONO - Extraindo DID do cabeçalho X-DID)
 same => n,Set(RAW_DID=${PJSIP_HEADER(read,X-DID)})
 ; Limpeza e extração dos últimos 4 dígitos para match na Inbound Route
 same => n,Set(NUM_DID=${FILTER(0-9,${RAW_DID})})
 same => n,Set(DID_FINAL=${NUM_DID:-4}) 
 same => n,Goto(from-pstn,${DID_FINAL},1)

Configurações finais:

  1. No Tronco PJSIP, alterei o Context para from-vono-xdid.

  2. Nas Inbound Routes, passei a usar apenas os últimos 4 dígitos como DID (ex: xxxx-1234).

Agora o roteamento funciona perfeitamente para múltiplos números no mesmo tronco."

1 Like