FreePBX
FreePBX este un sistem telefonic gratuit care îți permite să gestionezi apelurile într-o companie.
Funcționalități
- Apeluri telefonice prin internet: folosește tehnologia VoIP, permițând apeluri prin internet în locul rețelei telefonice obișnuite.
- Distribuție automată a apelurilor: ajută la rutarea automată a apelurilor primite către numerele sau departamentele corecte din companie.
- Meniuri vocale interactive (IVR): poți configura meniuri vocale interactive astfel încât apelantul să poată alege departamentul potrivit apăsând taste.
- Mesagerie vocală (voicemail): dacă nimeni nu poate răspunde la un apel, FreePBX poate înregistra un mesaj vocal care poate fi redat ulterior.
- Conferințe telefonice: poți organiza conferințe astfel încât mai multe persoane să participe simultan.
- Înregistrare apeluri: poți înregistra conversațiile telefonice pentru redare sau analiză ulterioară.
- Integrare cu alte sisteme: FreePBX poate fi integrat cu diverse CRM-uri, inclusiv Planfix.
Conectare
Poți conecta FreePBX la Planfix în două moduri:
Reține că echipa Planfix nu configurează Asterisk la client și nu oferă consultanță pentru astfel de amenajări.
Planfix API pentru telefonie
- Prin această metodă poți doar primi evenimente de apel în Planfix, adică atunci când are loc un apel, va apărea o fișă de apel în fila activă Planfix.
- Nu poți iniția apeluri din Planfix.
- Pentru a obține înregistrările apelurilor este necesar să configurezi suplimentar apache/nginx (pasul 5).
Pasul 1
Pe server, editează /etc/asterisk/extensions_override_freepbx.conf (fișier exemplu) astfel încât să conțină următoarele 3 contexte:
- [macro-dialout-one-predial-hook]
- [macro-dialout-trunk-predial-hook]
- [macro-hangupcall]
Pentru [macro-hangupcall], forma exactă nu este obligatorie ca în exemplu.
Găsește contextul [macro-hangupcall] în extensions_additional.conf — copiază-l — și adaugă următoarea linie la foarte început:
exten => s,1,Macro(hangupcall-send-post)
Pasul 2
Copiază toate contexte din exemplu în extension_custom.conf. Acest lucru poate fi făcut și prin interfața FreePBX.
Pasul 3
Adaugă 3 linii în globals_custom.conf și înlocuiește {…} cu valorile corespunzătoare:
- PBX_URL = {…} — URL-ul PBX-ului tău
- PF_URL = {…} — adresa pentru a primi cererile
- PF_KEY = {…} — tokenul de autorizare Planfix
Pasul 4
- În Planfix, mergi la Account management — Integrations — Virtual PBXs — Planfix API for telephony.
- Completează adresa PBX astfel încât Planfix să știe să accepte evenimente provenite de la acel site sau adresă.
Pasul 5
Pentru a obține înregistrările trebuie să le faci accesibile extern printr-un server web. Pentru aceasta, folosind Apache inclus în FreePBX, adaugă un link către folderul cu înregistrări. Folderul trebuie să aibă owner, group și permisiunile corecte — 775.
- Crează linkul:
ln -s /var/spool/asterisk/monitor /var/www/html/monitor
- Editează permisiunile și owner-ul:
chmod -R 775 /var/www/html/monitor/chown -R asterisk:asterisk /var/www/html/monitor/
Dacă folosești o distribuție fără Apache — configurează un setup similar pentru serverul tău web.
Integrare FreePBX
(FreePBX 16+ / Asterisk 18+)
Înainte de a începe, inserează următoarele în fișierul tău de setări personalizate 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()
Pasul 1
Deschide FreePBX și adaugă un utilizator: Settings — Asterisk REST Interface Users — Add User.
Completează următoarele câmpuri:
- REST Interface User Name: nume utilizator
- REST Interface User Password: parolă
- Password Type: Plain Text
- Read Only: No
Copiază (va fi necesar la pasul 4) și salvează.
Pasul 2
Adaugă un manager: Settings — Asterisk Manager Users — Add Manager:
- Name: nume
- Secret: lasă implicit sau setează propriul secret
- Este recomandat să nu modifici celelalte setări.
Copiază (va fi necesar la pașii 4 și 6) și salvează.
Pasul 3
Salvează setările apăsând Apply Config în colțul din dreapta sus.
Pasul 4
În Planfix, mergi la Primary Account Admin — Integrations — Virtual PBXs — FreePBX.
Completează:
- PBX address: URL-ul PBX-ului tău (inclusiv protocolul și portul unde este disponibil ARI)
- ARI User Name: Name de la pasul 1
- ARI User Password: Password de la pasul 1
Copiază URL-ul scriptului de recepție și salvează integrarea.
Pasul 5
Pe server:
- În /var/spool/asterisk/ creează un symlink numit recording către folderul monitor (în același director). Comandă:
ln –s /var/spool/asterisk/monitor /var/spool/asterisk/recording
Pasul 6
- Mergi în /etc/asterisk/
- Crează un folder scripts dacă nu există deja
- În folderul scripts creează un fișier ami_listener.py
Pasul 7
Completează ami_listener.py conform exemplului, înlocuind:
- Your_user_name: cu Name de la pasul 2
- Your_user_password: cu Secret de la pasul 2
- Your_planfix_endpoint_url: cu URL-ul scriptului de recepție de la pasul 4
Pasul 8
Fă fișierul executabil cu:
chmod +x /etc/asterisk/scripts/ami_listener.py
Pasul 9
- Mergi în /lib/systemd/system/
- Crează un fișier crm-asterisk-listener.service
- Completează crm-asterisk-listener.service conform exemplului
Pasul 10
Adaugă fișierul la autostart și pornește serviciul cu următoarele comenzi:
sudo systemctl enable crm-asterisk-listener
sudo systemctl start crm-asterisk-listener
Lucrul cu versiuni mai vechi de Asterisk
Pentru Asterisk 13+ trebuie să adaugi proprietăți suplimentare în fișierele de configurare.
Pentru /etc/asterisk/cdr.conf
[general] enable = yes batch = no unanswered = yes
Pentru /etc/asterisk/cdr_manager.conf
[general] enable = yes unanswered = yes
Reține că extragerea înregistrărilor apelurilor va funcționa doar pentru Asterisk 14+.
Metode adiționale
Poți apela aceste metode tu însuți din dialplan.
Obținerea informațiilor despre supervizori
Poți trimite o cerere POST către URL-ul specificat în integrare conținând:
Content-type: application/json
Vei primi ca răspuns:
SAU
Dacă pentru contact:
- nu există supervizori
- nu sunt atribuite numere scurte
- supervizorul este angajatul a cărui extensie a fost apelată ("short_PBX_extension")
Atunci răspunsul va conține:
Notificare apel ratat
- Pentru a folosi această metodă, în setările integrării selectează — „Record missed calls only by a separate special request”:
Poți trimite o cerere POST către URL-ul specificat în integrare conținând:
Content-type: application/json
{"event": "callMissedNotify", "uniqueId": "unique_call_id", "intNum": "short_PBX_extension_to_receive_missed_call_notification", "extNum": "external_subscriber_number"}
Dacă există un angajat cu acel număr scurt, acesta va primi o notificare de apel ratat.
Răspunsul la cererea POST va fi gol.
Note de funcționare
- Asigură-te că biblioteca "panoramisk" este instalată pentru ca scriptul să funcționeze. Poate fi instalată cu 'pip install panoramisk'.
- Dacă scriptul nu pornește imediat sau ai făcut modificări la ami_listener după rularea comenzilor, următoarele comenzi pot ajuta:
sudo systemctl daemon-reloadsudo systemctl restart crm-asterisk-listener
- Pentru a dezactiva integrarea, rulează:
sudo systemctl stop crm-asterisk-listenersudo systemctl disable crm-asterisk-listener
- În toate metodele de conectare trebuie să ai configurate:
- internal extensions (Extensions)
- inbound and outbound routing (Inbound/Outbound Routes)