FreePBX

Z Planfix
Skocz do: nawigacja, szukaj

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

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

Otrzymasz w odpowiedzi:

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

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

{"error":"no persons responsible"}


Powiadomienie o nieodebranym połączeniu

  • Aby korzystać z tej metody, w ustawieniach integracji wybierz — „Record missed calls only by a separate special request”:

7TWeHF.png


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


  • Aby wyłączyć integrację, wykonaj:
sudo systemctl stop crm-asterisk-listener
sudo 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)


Przejdź do