Skip to content

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

{"event": "callInfoRespNum", "uniqueId": "unique_call_id", "intNum": "short_PBX_extension", "extNum": "external_subscriber_number"}

Riceverai in risposta:

{"responsibleNumbers":["short_number_of_responsible","short_number_of_second_responsible(if_any)"]}

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à:

{"error":"no persons responsible"}


Notifica per chiamata persa

  • Per usare questo metodo, nelle impostazioni dell'integrazione seleziona — “Record missed calls only by a separate special request”:

7TWeHF.png


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-reload
sudo systemctl restart crm-asterisk-listener


  • Per disabilitare l'integrazione, esegui:
sudo systemctl stop crm-asterisk-listener
sudo systemctl disable crm-asterisk-listener


  • In tutti i metodi di connessione è necessario aver configurato:
    • internal extensions (Extensions)
    • inbound and outbound routing (Inbound/Outbound Routes)


Vai a