Não, o Asterisk reconhece perfeitamente o bina (caller ID). O que talvez falhe é a forma como você tenta usá-lo. Aqui entra o Protocolo Kemper pra resolver o problema e mostrar como filtrar chamadas, redirecionar contatos VIPs e desligar na cara de quem merece.
Identificando quem está ligando
Pra capturar o número de quem está ligando, use:
exten => s,1,NoOp(Chamada recebida de ${CALLERID(num)})
Isso já joga o número no log do Asterisk. Simples, direto e essencial pra debug.
Redirecionamento por número
Se quiser tratar certos números como VIP e mandar pra um fluxo especial:
exten => s,1,GotoIf($["${CALLERID(num)}" = "47991748806"]?vip,1)
exten => s,n,Goto(normal,1)
exten => vip,1,Playback(bem-vindo-vip)
exten => vip,2,Dial(SIP/atendente)
exten => normal,1,Playback(nao-e-vip)
exten => normal,2,Hangup()
Lista negra (desliga na cara)
Tá recebendo ligação chata? Cria um GotoIf()
que bloqueia esse número:
exten => s,1,GotoIf($["${CALLERID(num)}" = "01140404040"]?bloqueado,1)
exten => s,n,Playback(seja-bem-vindo)
exten => s,n,Dial(SIP/atendente)
exten => bloqueado,1,Playback(acesso-negado)
exten => bloqueado,2,Hangup()
Registrar chamadas recebidas
Quer deixar um log persistente dos números que ligam? Joga num CSV:
exten => s,n,System(echo "${CALLERID(num)},${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)}" >> /var/log/asterisk/chamadas.csv)
O Protocolo Kemper em ação
Se quiser uma URA com um toque de personalidade (e utilidade), pode fazer algo assim:
exten => s,1,Answer()
same => n,Playback(bem-vindo-protocolo-kemper)
same => n,Playback(para-continuar-pressione-1)
exten => 1,1,Playback(estabelecendo-contato)
same => n,Dial(SIP/991748806@outbound)
same => n,Hangup()
Conclusão
O Asterisk reconhece o bina. Cabe a você decidir o que fazer com essa informação:
- Tratar com carinho,
- Ignorar com educação,
- Ou desligar com gosto.
O resto é só lógica. E claro, um pouco de zoeira com responsabilidade — do jeitinho que o Protocolo Kemper manda.