# 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](https://manuale.soluziona.cloud/uploads/images/gallery/2026-03/scaled-1680-/LTGbBRhhuENTMbYQ-image.png)](https://manuale.soluziona.cloud/uploads/images/gallery/2026-03/LTGbBRhhuENTMbYQ-image.png)

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

- <span class="token token">nano</span> /etc/asterisk/ari.conf
- asterisk -rx <span class="token token">"module reload res\_ari.so"</span>

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

- Modulo "Utenti Asterisk Rest Interface"

[![image.png](https://manuale.soluziona.cloud/uploads/images/gallery/2026-03/scaled-1680-/EB5A3Fbz82Uit4Hl-image.png)](https://manuale.soluziona.cloud/uploads/images/gallery/2026-03/EB5A3Fbz82Uit4Hl-image.png)

CONFIGURAZIONE AMI:

Connessione ssh a PBX

[![image.png](https://manuale.soluziona.cloud/uploads/images/gallery/2026-03/scaled-1680-/krD1LmNrfPrAIZC5-image.png)](https://manuale.soluziona.cloud/uploads/images/gallery/2026-03/krD1LmNrfPrAIZC5-image.png)

Esempio dati al momento della ricezione della chiamata:

[![image.png](https://manuale.soluziona.cloud/uploads/images/gallery/2026-03/scaled-1680-/wRAphd8s3z3c0fiq-image.png)](https://manuale.soluziona.cloud/uploads/images/gallery/2026-03/wRAphd8s3z3c0fiq-image.png)

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

Per Attivarlo in BackGround:  
**<span data-teams="true">nohup /usr/local/bin/ami\_webhook.py &amp;</span>**

Per svuotare i servizi in background bisogna KILLARE i processi in esecuzione  
**<span class="ͼd">ps</span>** <span class="ͼf">**-ef** (serve per veder</span><span class="ͼf">e tutto l'elenco dei processi)  
</span><span class="ͼf">**<span class="ͼd">ps</span> -ef | <span class="ͼd">grep</span> webhook** (serve per vedere tutto l'elenco dei processi filtrati x nome file *webhook* .\*)</span>

**<span class="ͼd">kill</span> <span class="ͼf">-9</span> PID** (dove `PID` è l’ID del processo ottenuto dai comandi precedenti.

[![image.png](https://manuale.soluziona.cloud/uploads/images/gallery/2026-03/scaled-1680-/S3kXcbGpL8IYhrrP-image.png)](https://manuale.soluziona.cloud/uploads/images/gallery/2026-03/S3kXcbGpL8IYhrrP-image.png)

<span data-teams="true">FILE DI CONFIGURAZIONE AMI</span>

**<span data-teams="true">sudo nano /etc/asterisk/manager.conf</span>**

`<span data-teams="true">[general]<br></br>enabled = yes<br></br>port = 5038<br></br>bindaddr = 0.0.0.0 ==> aperto a tutti (SOLO PER PROVE)<br></br>displayconnects=no ;only effects 1.6+</span>`

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

<div drawio-diagram="142"><img src="https://manuale.soluziona.cloud/uploads/images/drawio/2026-03/lN9x5pKaYWYvVJce-drawing-3-1772524973.png" alt=""/></div>