Istnieją różne opcje integracji IP-PBX Asterisk i CRM Bitrix24 w sieci, ale mimo to zdecydowaliśmy się napisać własną.
Pod względem funkcjonalności wszystko jest standardowe:
Klikając w link z numerem telefonu klienta w Bitrix24, Asterisk łączy numer wewnętrzny użytkownika, w imieniu którego dokonano kliknięcia, z numerem telefonu klienta. W Bitrix24 nagrywany jest zapis rozmowy, a po zakończeniu połączenia pobierane jest nagranie rozmowy.
Asterisk odbiera połączenie z zewnątrz - w interfejsie Bitrix24 pokazujemy kartę klienta pracownikowi, na numer, na który przyszło to połączenie.
Jeżeli nie ma takiego klienta, otworzymy kartę do utworzenia nowego leada.
Gdy tylko połączenie zostanie zakończone, odzwierciedlamy to na karcie i wyświetlamy nagranie rozmowy.
Poniżej opowiem Wam jak wszystko skonfigurować i podam link do githuba - tak, tak, weźcie i używajcie!
Ogólny opis
Naszą integrację nazwaliśmy CallMe. CallMe to niewielka aplikacja internetowa napisana w języku PHP.
Analizę konfiguracji, kwestie bezpieczeństwa, uzyskanie certyfikatu, a nawet wybór serwera WWW pozostawię poza zakresem artykułu - wiele na ten temat napisano. Aplikacja nie ma żadnych ograniczeń, działa zarówno poprzez protokół http, jak i https.
Używamy https, szyfrujmy certyfikat.
Jeśli wszystko zrobiłeś poprawnie, to po kliknięciu linku powinieneś zobaczyć coś takiego
Konfigurowanie Bitrix24
Stwórzmy dwa webhooki.
Przychodzący webhook.
Pod kontem administratora (o identyfikatorze 1) podążaj ścieżką: Aplikacje -> Webhooks -> Dodaj webhook -> Przychodzący webhook
Wypełnij parametry przychodzącego webhooka jak na zrzutach ekranu:
I kliknij Zapisz.
Po zapisaniu Bitrix24 poda adres URL przychodzącego webhooka, na przykład:
Zapisz swoją wersję adresu URL bez końcowego /profilu/ - będzie on używany w aplikacji do obsługi połączeń przychodzących.
Mam to https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/
Mam to xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. Musisz go także skopiować dla siebie; potrzebujesz go do wykonywania połączeń wychodzących.
Ważne!
Na serwerze Bitrix24 należy skonfigurować certyfikat SSL (możesz użyć letsencrypt), w przeciwnym razie api Bitrix nie będzie działać. Jeśli masz wersję w chmurze, nie martw się – ma ona już protokół SSL.
Ważne!
Pole „Adres procesora” musi zawierać adres dostępny z Internetu!
Na koniec zainstalujmy CallMeOut jako aplikację do wykonywania połączeń (aby po kliknięciu numeru w centrali PBX polecenie rozpoczęcia połączenia wyleciało).
W menu wybierz: Więcej -> Telefonia -> Więcej -> Ustawienia, ustaw w „Domyślny numer połączenia wychodzącego” Aplikacja: CallMeOut i kliknij „Zapisz”
Ustawianie gwiazdki
Aby interakcja między Asterisk i Bitrix24 przebiegła pomyślnie, musimy dodać wywołanie użytkownika AMI do pliku manager.conf:
wyłącz wpis do tabeli CDR dla tego numeru wewnętrznego (nie jest tam potrzebny), ustaw godzinę zakończenia połączenia, oblicz czas trwania połączenia, jeśli wynik połączenia nie jest znany - ustaw (zmienną CallMeDISPOSITION) i w ostatnim kroku wyślij wszystko do Bitrix za pośrednictwem systemowego curl.
I jeszcze trochę magii – połączenie przychodzące:
888999 => {
&recording(${CALLERID(number)},${EXTEN});
Answer();
ExecIF(${CallMeCallerIDName}?Set(CALLERID(name)=${CallMeCallerIDName}):NoOp()); // выставляем CallerID если узнали его у Битрикс24
Set(CallStart=${STRFTIME(epoch,,%s)}); // начинаем отсчет времени звонка
Queue(Q1,tT);
Set(CallMeDISPOSITION=${CDR(disposition)});
Hangup();
}
Mówi centrali PBX, aby ją zainstalowała ID rozmówcy (nazwa) równy zmiennej Nazwa CallMeCallerIDName.
Z kolei sama zmienna CallMeCallerIDName ustawiana jest przez aplikację CallMe (jeśli Bitrix24 ma pełną nazwę numeru osoby dzwoniącej, ustaw ją jako ID rozmówcy (nazwa), nie – nic nie zrobimy).
Zadzwoń do mnieDEBUG — jeśli 1, to wszystkie zdarzenia przetworzone przez aplikację zostaną zapisane do pliku logu, 0 — nic nie zapiszemy
tech -SIP/PJSIP/IAX/itp
token autoryzacji — Token autoryzacyjny Bitrix24, wychodzący kod autoryzacyjny webhooka
bitrixApiUrl — Adres URL przychodzącego webhooka, bez profilu/
rozszerzenia — lista numerów zewnętrznych
kontekst — kontekst inicjowania połączenia
limit czasu_słuchacza — szybkość przetwarzania zdarzeń od gwiazdki
gwiazdka — tablica z ustawieniami podłączenia do gwiazdki:
gospodarz — adres IP lub nazwa hosta serwera z gwiazdką
schemat — schemat połączeń (tcp://, tls://)
Port - Port
nazwa użytkownika - Nazwa użytkownika
tajemnica - hasło
limit_czasu połączenia - czas połączenia minął
limit czasu odczytu - przeczytaj limit czasu
przykładowy plik ustawień:
<?php
return array(
'CallMeDEBUG' => 1, // дебаг сообщения в логе: 1 - пишем, 0 - не пишем
'tech' => 'SIP',
'authToken' => 'xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6', //токен авторизации битрикса
'bitrixApiUrl' => 'https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/', //url к api битрикса (входящий вебхук)
'extentions' => array('888999'), // список внешних номеров, через запятую
'context' => 'dial_out', //исходящий контекст для оригинации звонка
'asterisk' => array( // настройки для подключения к астериску
'host' => '10.100.111.249',
'scheme' => 'tcp://',
'port' => 5038,
'username' => 'callme',
'secret' => 'JD3clEB8_f23r-3ry84gJ',
'connect_timeout' => 10000,
'read_timeout' => 10000
),
'listener_timeout' => 300, //скорость обработки событий от asterisk
);
Konfiguracja nadzorcy
Supervisor służy do uruchamiania procesu obsługi zdarzeń z Asterisk CallMeIn.php, który monitoruje połączenia przychodzące i współdziała z Bitrix24 (pokaż kartę, ukryj kartę itp.).
Pytania, sugestie – prosimy o pozostawienie ich w komentarzach. Także jeśli ciekawi Cię jak przebiegał rozwój tej integracji napisz, a w kolejnym artykule postaram się ujawnić wszystko bardziej szczegółowo.