FreePBX
FreePBX to darmowe oprogramowanie telephone system umożliwiające zarządzanie połączeniami w firmie.
Funkcje
- Połączenia telefonii internetowej: wykorzystuje technologię VoIP, pozwalając na rozmowy przez internet zamiast tradycyjnej sieci telefonicznej.
- Automatyczna dystrybucja połączeń: pomaga automatycznie kierować przychodzące połączenia na odpowiednie numery lub działy w firmie.
- Interaktywne menu głosowe (IVR): można skonfigurować interaktywne menu głosowe, aby dzwoniący wybierał odpowiedni dział naciskając klawisze.
- Poczta głosowa: jeśli nikt nie odbierze połączenia, FreePBX może nagrać wiadomość głosową do późniejszego odsłuchu.
- Konferencje: można organizować konferencje, aby wiele osób mogło uczestniczyć jednocześnie.
- Nagrywanie rozmów: możliwe jest nagrywanie rozmów telefonicznych do późniejszego odsłuchu lub analizy.
- Integracja z innymi systemami: FreePBX można integrować z różnymi CRM-ami, w tym z Planfix.
Połączenie
FreePBX z Planfix można połączyć na dwa sposoby:
Zwróć uwagę, że zespół Planfix nie konfiguruje Asterisk po stronie klienta i nie udziela konsultacji w tych sprawach.
API Planfix dla telefonii
- Przy użyciu tej metody można jedynie odbierać zdarzenia połączeń w Planfix, tzn. gdy nastąpi połączenie, w aktywnej zakładce Planfix pojawi się karta połączenia.
- Nie można wykonywać połączeń z poziomu Planfix.
- Aby uzyskać nagrania połączeń, dodatkowo trzeba skonfigurować apache/nginx (krok 5).
Krok 1
Na serwerze edytuj /etc/asterisk/extensions_override_freepbx.conf (example file) tak, aby zawierał następujące 3 konteksty:
- [macro-dialout-one-predial-hook]
- [macro-dialout-trunk-predial-hook]
- [macro-hangupcall]
Dla [macro-hangupcall] dokładna forma nie musi odpowiadać przykładowej.
Znajdź kontekst [macro-hangupcall] w extensions_additional.conf — skopiuj go — i dodaj następującą linię na samym początku:
exten => s,1,Macro(hangupcall-send-post)
Krok 2
Skopiuj wszystkie konteksty z example do extension_custom.conf. Można to także zrobić przez interfejs FreePBX.
Krok 3
Dodaj 3 linie do globals_custom.conf i zamień {…} na odpowiednie wartości:
- PBX_URL = {…} — URL twojej centrali PBX
- PF_URL = {…} — adres do odbierania żądań
- PF_KEY = {…} — token autoryzacyjny Planfix
Krok 4
- W Planfix przejdź do Account management — Integrations — Virtual PBXs — Planfix API for telephony.
- Wypełnij adres PBX, aby Planfix wiedział, że ma akceptować zdarzenia pochodzące z tej strony lub adresu.
Krok 5
Aby uzyskać nagrania, musisz udostępnić je zewnętrznie przez serwer WWW. Aby to zrobić przy użyciu Apache dołączonego do FreePBX, dodaj link do folderu z nagraniami. Folder musi mieć poprawnego właściciela, grupę i uprawnienia — 775.
- Utwórz link:
ln -s /var/spool/asterisk/monitor /var/www/html/monitor
- Ustaw uprawnienia i właściciela:
chmod -R 775 /var/www/html/monitor/chown -R asterisk:asterisk /var/www/html/monitor/
Jeśli używasz wersji bez Apache — skonfiguruj podobnie serwer WWW, którego używasz.
Integracja FreePBX
(FreePBX 16+ / Asterisk 18+)
Przed rozpoczęciem wstaw do pliku z ustawieniami niestandardowymi 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()
Krok 1
Otwórz FreePBX i dodaj użytkownika: Settings — Asterisk REST Interface Users — Add User.
Wypełnij następujące pola:
- REST Interface User Name: nazwa użytkownika
- REST Interface User Password: hasło
- Password Type: Plain Text
- Read Only: No
Skopiuj (potrzebne w kroku 4) i zapisz.
Krok 2
Dodaj managera: Settings — Asterisk Manager Users — Add Manager:
- Name: nazwa
- Secret: pozostaw domyślne lub ustaw własne
- Najlepiej nie zmieniać pozostałych ustawień.
Skopiuj (potrzebne w krokach 4 i 6) i zapisz.
Krok 3
Zapisz ustawienia, klikając Apply Config w prawym górnym rogu.
Krok 4
W Planfix przejdź do Primary Account Admin — Integrations — Virtual PBXs — FreePBX.
Wypełnij:
- PBX address: URL twojej centrali PBX (łącznie z protokołem i portem, gdzie dostępne jest ARI)
- ARI User Name: Nazwa z kroku 1
- ARI User Password: Hasło z kroku 1
Skopiuj URL skryptu odbierającego i zapisz integrację.
Krok 5
Na serwerze:
- W /var/spool/asterisk/ utwórz symlink o nazwie recording wskazujący na folder monitor (w tym samym katalogu). Polecenie:
ln –s /var/spool/asterisk/monitor /var/spool/asterisk/recording
Krok 6
- Przejdź do /etc/asterisk/
- Utwórz folder scripts, jeśli jeszcze nie istnieje
- W folderze scripts utwórz plik ami_listener.py
Krok 7
Wypełnij ami_listener.py zgodnie z przykładem [1], zastępując:
- Your_user_name: nazwą z kroku 2
- Your_user_password: Secret z kroku 2
- Your_planfix_endpoint_url: URL skryptu odbierającego z kroku 4
Krok 8
Uczyń plik wykonywalnym:
chmod +x /etc/asterisk/scripts/ami_listener.py
Krok 9
- Przejdź do /lib/systemd/system/
- Utwórz plik crm-asterisk-listener.service
- Wypełnij crm-asterisk-listener.service zgodnie z przykładem [2]
Krok 10
Dodaj plik do autostartu i uruchom usługę poleceniami:
sudo systemctl enable crm-asterisk-listener
sudo systemctl start crm-asterisk-listener
Praca ze starszymi wersjami Asterisk
Dla Asterisk 13+ trzeba dodać dodatkowe właściwości do plików konfiguracyjnych.
Dla /etc/asterisk/cdr.conf
[general] enable = yes batch = no unanswered = yes
Dla /etc/asterisk/cdr_manager.conf
[general] enable = yes unanswered = yes
Zwróć uwagę, że pobieranie nagrań połączeń będzie działać tylko dla Asterisk 14+.
Dodatkowe metody
Można wywoływać te metody samodzielnie z dialplanu.
Uzyskiwanie informacji o osobach odpowiedzialnych (supervisors)
Możesz wysłać żądanie POST na URL podany w integracji zawierające:
Content-type: application/json
Otrzymasz w odpowiedzi:
LUB
Jeśli dla kontaktu:
- nie ma osób odpowiedzialnych
- nie przypisano krótkich numerów
- osobą odpowiedzialną jest pracownik, którego numer został wywołany ("short_PBX_extension")
Wówczas odpowiedź będzie zawierać:
Powiadomienie o nieodebranym połączeniu
- Aby korzystać z tej metody, w ustawieniach integracji wybierz — „Record missed calls only by a separate special request”:
Możesz wysłać żądanie POST na URL podany w integracji zawierające:
Content-type: application/json
{"event": "callMissedNotify", "uniqueId": "unique_call_id", "intNum": "short_PBX_extension_to_receive_missed_call_notification", "extNum": "external_subscriber_number"}
Jeżeli istnieje pracownik z tym krótkim numerem, otrzyma powiadomienie o nieodebranym połączeniu.
Odpowiedź na żądanie POST będzie pusta.
Uwagi dotyczące działania
- Upewnij się, że biblioteka "panoramisk" jest zainstalowana, aby skrypt działał. Można ją zainstalować poleceniem 'pip install panoramisk'.
- Jeśli skrypt nie uruchamia się od razu lub wprowadziłeś zmiany w ami_listener po uruchomieniu poleceń, może pomóc:
sudo systemctl daemon-reloadsudo systemctl restart crm-asterisk-listener
- Aby wyłączyć integrację, wykonaj:
sudo systemctl stop crm-asterisk-listenersudo systemctl disable crm-asterisk-listener
- We wszystkich metodach połączenia musisz skonfigurować:
- wewnętrzne rozszerzenia (Extensions)
- trasowanie przychodzące i wychodzące (Inbound/Outbound Routes)