FreePBX
FreePBX è un centralino telefonico software gratuito che consente di gestire le chiamate in azienda.
Funzionalità
- Chiamate tramite Internet: utilizza la tecnologia VoIP, permettendo le chiamate via internet invece della rete telefonica tradizionale.
- Distribuzione automatica delle chiamate: aiuta a instradare automaticamente le chiamate in arrivo ai numeri o ai reparti corretti all'interno dell'azienda.
- Menu vocali interattivi (IVR): è possibile impostare menu vocali interattivi in modo che il chiamante selezioni il reparto appropriato premendo i tasti.
- Segreteria telefonica: se nessuno può rispondere a una chiamata, FreePBX può registrare un messaggio di segreteria che potrà essere ascoltato in seguito.
- Conferenze telefoniche: è possibile organizzare conferenze telefoniche in cui più persone partecipano contemporaneamente.
- Registrazione delle chiamate: è possibile registrare le conversazioni telefoniche per ascoltarle o analizzarle successivamente.
- Integrazione con altri sistemi: FreePBX può essere integrato con vari CRM, incluso Planfix.
Connessione
Puoi collegare FreePBX a Planfix in due modi:
Nota che il team Planfix non configura Asterisk sul lato cliente e non fornisce consulenze su tali aspetti.
Planfix API per la telefonia
- Con questo metodo è possibile solo ricevere eventi di chiamata in Planfix, cioè quando si verifica una chiamata verrà creata una scheda chiamata nella scheda attiva di Planfix.
- Non è possibile effettuare chiamate da Planfix.
- Per ottenere le registrazioni delle chiamate è inoltre necessario configurare apache/nginx (passo 5).
Passo 1
Sul server, modifica /etc/asterisk/extensions_override_freepbx.conf (file di esempio) in modo che contenga i seguenti 3 context:
- [macro-dialout-one-predial-hook]
- [macro-dialout-trunk-predial-hook]
- [macro-hangupcall]
Per [macro-hangupcall], la forma esatta non è obbligatoria come nell'esempio.
Trova il context [macro-hangupcall] in extensions_additional.conf — copialo — e aggiungi la seguente riga all'inizio:
exten => s,1,Macro(hangupcall-send-post)
Passo 2
Copia tutti i context dall'esempio in extension_custom.conf. Questo può essere fatto anche tramite l'interfaccia di FreePBX.
Passo 3
Aggiungi 3 righe in globals_custom.conf e sostituisci {…} con i valori appropriati:
- PBX_URL = {…} — URL del tuo PBX
- PF_URL = {…} — indirizzo per ricevere le richieste
- PF_KEY = {…} — token di autorizzazione Planfix
Passo 4
- In Planfix, vai su Account management — Integrations — Virtual PBXs — Planfix API for telephony.
- Compila l'indirizzo del PBX in modo che Planfix sappia accettare eventi provenienti da quel sito o indirizzo.
Passo 5
Per ottenere le registrazioni è necessario renderle accessibili esternamente tramite un web server. Per farlo usando Apache incluso in FreePBX, aggiungi un collegamento alla cartella delle registrazioni. La cartella deve avere proprietario, gruppo e permessi corretti — 775.
- Crea il link:
ln -s /var/spool/asterisk/monitor /var/www/html/monitor
- Modifica permessi e proprietario:
chmod -R 775 /var/www/html/monitor/chown -R asterisk:asterisk /var/www/html/monitor/
Se usi una build senza Apache — configura un setup analogo per il tuo web server.
Integrazione FreePBX
(FreePBX 16+ / Asterisk 18+)
Prima di iniziare, inserisci quanto segue nel tuo file di impostazioni personalizzate extensions_override_freepbx.conf:
[macro-dialout-trunk-predial-hook]
exten => s,1,Gosub(planfix-mark-outbound,s,1)
same => n,MacroExit()
[planfix-mark-outbound]
exten => s,1,NoOp(Outgoing call from ${CALLERID(all)} to ${EXTEN})
same => n,Set(__CRM_DIRECTION=OUTBOUND)
same => n,NoOp(Setting CRM_DIRECTION=${CRM_DIRECTION})
same => n,Return()
[macro-dialout-one-predial-hook]
exten => s,1,Gosub(planfix-mark-inbound,s,1)
same => n,MacroExit()
[macro-dial-ringall-predial-hook]
exten => s,1,Gosub(planfix-mark-inbound,s,1)
same => n,MacroExit()
[planfix-mark-inbound]
exten => s,1,NoOp(Incoming call to ${EXTEN} from ${CALLERID(all)})
same => n,Set(__CRM_DIRECTION=INBOUND)
same => n,NoOp(Setting CRM_DIRECTION=${CRM_DIRECTION})
same => n,Return()
Passo 1
Apri FreePBX e aggiungi un utente: Settings — Asterisk REST Interface Users — Add User.
Compila i seguenti campi:
- REST Interface User Name: nome utente
- REST Interface User Password: password
- Password Type: Plain Text
- Read Only: No
Copia (necessario al passo 4) e salva.
Passo 2
Aggiungi un manager: Settings — Asterisk Manager Users — Add Manager:
- Name: nome
- Secret: lascia il valore di default o imposta il tuo
- È consigliabile non modificare le altre impostazioni.
Copia (necessario ai passi 4 e 6) e salva.
Passo 3
Salva le impostazioni cliccando Apply Config in alto a destra.
Passo 4
Vai in Planfix su Primary Account Admin — Integrations — Virtual PBXs — FreePBX.
Compila:
- PBX address: l'URL del tuo PBX (inclusi protocollo e porta dove ARI è disponibile)
- ARI User Name: Nome dal passo 1
- ARI User Password: Password dal passo 1
Copia l'URL dello script di ricezione e salva l'integrazione.
Passo 5
Sul server:
- In /var/spool/asterisk/ crea un symlink chiamato recording alla cartella monitor (nella stessa directory). Comando:
ln –s /var/spool/asterisk/monitor /var/spool/asterisk/recording
Passo 6
- Vai in /etc/asterisk/
- Crea una cartella scripts se non è già presente
- Nella cartella scripts crea un file ami_listener.py
Passo 7
Compila ami_listener.py seguendo l'esempio, sostituendo:
- Your_user_name: con il Name dal passo 2
- Your_user_password: con il Secret dal passo 2
- Your_planfix_endpoint_url: con l'URL dello script di ricezione dal passo 4
Passo 8
Rendi il file eseguibile con:
chmod +x /etc/asterisk/scripts/ami_listener.py
Passo 9
- Vai in /lib/systemd/system/
- Crea un file crm-asterisk-listener.service
- Compila crm-asterisk-listener.service seguendo l'esempio
Passo 10
Aggiungi il file all'avvio automatico e avvia il servizio con i seguenti comandi:
sudo systemctl enable crm-asterisk-listener
sudo systemctl start crm-asterisk-listener
Lavorare con versioni precedenti di Asterisk
Per Asterisk 13+ è necessario aggiungere proprietà aggiuntive ai file di configurazione.
Per /etc/asterisk/cdr.conf
[general] enable = yes batch = no unanswered = yes
Per /etc/asterisk/cdr_manager.conf
[general] enable = yes unanswered = yes
Nota che il recupero delle registrazioni delle chiamate funzionerà solo per Asterisk 14+.
Metodi aggiuntivi
Puoi chiamare questi metodi direttamente dal dialplan.
Ottenere informazioni sui supervisori
Puoi inviare una richiesta POST all'URL specificato nell'integrazione contenente:
Content-type: application/json
Riceverai in risposta:
OPPURE
Se per il contatto:
- non ci sono supervisori
- non sono assegnati numeri brevi
- il supervisore è il dipendente il cui numero è stato chiamato ("short_PBX_extension")
Allora la risposta conterrà:
Notifica per chiamata persa
- Per usare questo metodo, nelle impostazioni dell'integrazione seleziona — “Record missed calls only by a separate special request”:
Puoi inviare una richiesta POST all'URL specificato nell'integrazione contenente:
Content-type: application/json
{"event": "callMissedNotify", "uniqueId": "unique_call_id", "intNum": "short_PBX_extension_to_receive_missed_call_notification", "extNum": "external_subscriber_number"}
Se esiste un dipendente con quel numero breve, riceverà una notifica di chiamata persa.
La risposta alla richiesta POST sarà vuota.
Note di funzionamento
- Assicurati che la libreria "panoramisk" sia installata perché lo script funzioni. Può essere installata con 'pip install panoramisk'.
- Se lo script non si avvia immediatamente o hai apportato modifiche a ami_listener dopo aver eseguito i comandi, può essere utile:
sudo systemctl daemon-reloadsudo systemctl restart crm-asterisk-listener
- Per disabilitare l'integrazione, esegui:
sudo systemctl stop crm-asterisk-listenersudo systemctl disable crm-asterisk-listener
- In tutti i metodi di connessione è necessario aver configurato:
- internal extensions (Extensions)
- inbound and outbound routing (Inbound/Outbound Routes)