Passa al contenuto principale

Appunti

Per interagire con il centralino tramite API bisogna interagire con Asterisk che è un modulo disponibile in PBX. Ci sono due modalità di comunicazione con Asterisk:

  • Da gestionale verso asterisk: si utilizza ARI (Asterisk Rest Interface)
  • Da Asterisk verso gestionale bisogna appoggiarsi ad AMI (Asterisk Manager Interface). Abbiamo sviluppato uno script python che si collega ad AMI, si connette all'evento dello squillo del telefono e al momento dello squillo invia tramite post i dati della telefonata al gestionale.

Configurazioni ARI:

  • Abilitare l' IP che può fare le chiamate API

da SSH lanciare il comando: "nano /etc/asterisk/ari.conf" per aprire e modificare il file: ari.config

image.png

2. Se il file è diverso, modificalo e ricarica, da SSH lanciare i comandi i modo separato:

  • nano /etc/asterisk/ari.conf
  • asterisk -rx "module reload res_ari.so"

3. Per fare una chiamata ARI c'è bisogno dell'utente abilitato:

  • Modulo "Utenti Asterisk Rest Interface"

image.png

CONFIGURAZIONE AMI:

Connessione ssh a PBX

image.png

Esempio dati al momento della ricezione della chiamata:

image.png

File Phyton in Background in ascolto di AMI (Asterisk Manager Interface):
nano /usr/local/bin/ami_webhook.py

Per Attivarlo in BackGround:
nohup /usr/local/bin/ami_webhook.py &

Per svuotare i servizi in background:
rm nohup.out

FILE DI CONFIGURAZIONE AMI

sudo nano /etc/asterisk/manager.conf

[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0 ==> aperto a tutti (SOLO PER PROVE)
displayconnects=no ;only effects 1.6+


[bNW7t3zJv2kO] ==> NOME UTENTE DA METTERE NELLO SCRIPT PYTHON
secret = 08rcxfNjS8hI ==> PASSWORD DA METTERE NELLO SCRIPT PYTHON
deny = 0.0.0.0/0.0.0.0 ==> aperto a tutti (solo per prove)
permit = 0.0.0.0/0.0.0.0 ==> aperto a tutti (solo per prove)
read = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate,message
write = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate,message
writetimeout = 5000