Integrando Asterisk com XMPP: Notificações por mensagem com o número de quem está ligando

Quando se trata de monitoramento de chamadas em tempo real, nada melhor do que ser notificado automaticamente sobre quem está tentando te contatar. Neste post, você verá como integrar o Asterisk com o Openfire (XMPP) para enviar uma mensagem automática via terminal toda vez que alguém ligar, informando o número de origem.


Objetivo

Enviar uma mensagem XMPP automaticamente ao receber uma chamada no Asterisk, contendo o número de telefone de quem está ligando.


Tecnologias utilizadas

  • Asterisk (PBX de código aberto)
  • Openfire (servidor XMPP)
  • sendxmpp (cliente XMPP em linha de comando)
  • Shell Script

Pré-requisitos

  • Openfire instalado e funcionando
  • Um usuário XMPP para envio de mensagens (ex: [email protected])
  • sendxmpp instalado no servidor do Asterisk
  • Asterisk funcional com chamadas sendo recebidas

Passo 1: Instalar o sendxmpp

sudo apt update
sudo apt install sendxmpp

Passo 2: Configurar o .sendxmpprc do usuário asterisk

sudo -u asterisk nano /var/lib/asterisk/.sendxmpprc

Conteúdo:

[email protected]
senha_do_bot

Ajuste as permissões:

sudo chmod 600 /var/lib/asterisk/.sendxmpprc

Passo 3: Criar o script de envio

Crie um script simples para enviar mensagens com o número da chamada:

/usr/local/bin/enviar-xmpp.sh

#!/bin/bash

NUMERO="$1"
DESTINATARIO="[email protected]"
DOMINIO="dominio.local"

echo "Chamada recebida de $NUMERO" | sendxmpp -t -j "$DOMINIO" "$DESTINATARIO"

Permissões:

chmod +x /usr/local/bin/enviar-xmpp.sh
chown asterisk:asterisk /usr/local/bin/enviar-xmpp.sh

Passo 4: Alterar o extensions.conf

Abra seu extensions.conf e insira a chamada ao script onde desejar:

[default]
exten => _X.,1,NoOp(Chamada de ${CALLERID(num)})
 same => n,System(/usr/local/bin/enviar-xmpp.sh ${CALLERID(num)})
 same => n,Dial(SIP/ramal1)

Resultado

Ao receber uma ligação, o Asterisk irá:

  1. Obter o número de quem está ligando via ${CALLERID(num)}
  2. Executar um script shell
  3. O script enviará uma mensagem XMPP para o destino configurado

Exemplo de mensagem recebida no XMPP

Chamada recebida de 48999999999

Possíveis usos

  • Envio para equipe de suporte
  • Integração com bots de atendimento
  • URA com notificação pro admin
  • Alertas discretos de chamadas urgentes

Considerações

  • O usuário Asterisk (asterisk) deve ser capaz de usar o sendxmpp, com .sendxmpprc configurado corretamente.
  • O Openfire deve estar com autenticação e TLS funcionando. Se estiver usando certificado self-signed, talvez você precise configurar tls_verify=no.
  • O envio de mensagens deve ser testado manualmente antes da integração com o Asterisk.

Conclusão

Com uma integração simples entre o Asterisk e o XMPP via linha de comando, você pode adicionar notificações em tempo real com total controle local. Isso elimina a dependência de APIs externas, mantendo a arquitetura enxuta e eficiente — do jeito que a DevData gosta.

Rolar para cima