Do czego przydatna integracja własnego CRM/ERP/Desk z wirtualną centralą
Większość systemów automatyzacji biznesu (CRM/ERP/Desk itd.) zautomatyzuje komunikację z klientem lub partnerem. Gdy znaczna część komunikacji odbywa się przez telefon, system koniecznie powinien być zintegrowany z telefonią VoIP.
Z myślą o programistach systemów CRM/Desk oraz innych systemów automatyzacji, przedstawiamy instrukcję integracji własnego systemu i wirtualnej centrali Zadarma.
Korzyści z integracji z Zadarma:
- duża baza klientów Zadarma (ponad 1,6 mln) uzyska dostęp do Twoich usług;
- twoi klienci będą mogli zintegrować telefonię VoIP bezpłatnie (PBX, API, integracja - bezpłatnie);
- zasięg usług na całym świecie, Twoi klienci mogą być w dowolnej lokalizacji (5 języków, data center na trzech kontynentach, wirtualne numery w 100 krajach świata).
Ponadto, po realizacji integracji, jeśli ruch Twojej witryny przekroczy 30 000 użytkowników miesięcznie, jesteśmy gotowi przetestować Twoją integrację i umieścić instrukcje na naszej stronie głównej (co zapewni Ci darmowy ruch od jednego z najpopularniejszych operatorów VoIP w Europie i innych krajach).
Panelu klienta pod tym linkiem dostępne wszystkie bezpośrednie integrację (opracowane przez nas), można je sprawdzić również w zakładce Pomoc - Instrukcję konfiguracji usług, można znaleźć przykłady integracji z systemami innych producentów opracowanymi bez naszego udziału. Otwarte API pozwala na niezależne wdrożenie pełnej integracji z wirtualną centralą Zadarma, każdy programista może poradzić sobie z tym zadaniem ze względu na niski stopień zaawansowania. Dla wygody rozważymy, jako przykład integrację wirtualnej centrali Zadarma i CRM innej firmy.
Podstawowe funkcję:
- Wykonanie połączenia w CRM w jedno kliknięcie.
- Wyświetlające się powiadomienie przy połączeniach przychodzących i wychodzących z linkiem do karty klienta..
- Integracja statystyk połączeń i nagrywania rozmów..
- Automatyczne tworzenie kontaktów/leads/ofert przy połączeniu od nowego klienta.
- Automatyczne kierowanie połączenia od istniejącego klienta do odpowiedzialnego menedżera.
- Wyświetla nazwę klienta w telefonie IP podczas połączenia przychodzącego.
- Przypomnienia o nieodebranych połączeniach.
- Własna czarna lista w ramach centrali.
- Dodanie integracji w panelu klienta Zadarma.
Interakcja z API może być podzielona na dwie części:
1. Żądania (POST, GET) od strony CRM do API Zadarma
2. System powiadamiania o połączeniach (webhook), żądania POST z informacjami o połączeniu wysłane przez nasze API do CRM
Pełna dokumentacja API jest zlokalizowana tutaj
1. Konfiguracja integracji przez Zadarma
Warunki wymagane do rozpoczęcia konfiguracji integracji:
W Panelu klienta Zadarma:
1. Wygenerowane klucze API (Key i Secret)
2. Utworzona wirtualna centrala i zakończony Kreator konfiguracji (numery wewnętrzne z nagrywaniem rozmów odpowiadające liczbie pracowników, scenariusze połączeń przychodzących).
Mamy na przykład konto Zadarma i niektóre CRM, które powinny mieć adres URL do modułu telefonii:
https://mybestcrm.com/zadarma
lub
https://id12345678.mybestcrm.com/zadarma
Następny link zostanie użyty jako przykład https://mybestcrm.com/zadarma Musisz mieć link wskazujący na Twój system CRM.)
W panelu Zadarma w zakładce Ustawienia - Integracje i API trzeba kliknąć pod blok "Notifications" w kolumnie „Wydarzenia, dla których należy wysyłać dane:” należy włączyć wszystkie typy powiadomień. W sekcji „Powiadomienia o połączeniach w centrali telefonicznej” w polu „Link do Twojego źródła” wprowadź adres URL swojego CRM, a na ten adres zostaną wysłane powiadomienia o połączeniach.
Aby system zaakceptował link, musisz dodać kod weryfikacyjny na początku skryptu.
Przykład na PHP:
<?php if (isset($_GET['zd_echo'])) exit($_GET['zd_echo']); ?>
Link jest zatwierdzany po kliknięciu przycisku „Dodaj”, dowolny zestaw znaków jest wysyłany do linku, na przykład 1234567, zgodnie z powyższym kodem, link musi zwrócić wysłaną wartość, bez dodatkowych znaków, spacji, sekwencji BOM itp. Jeśli sprawdzanie poprawności linku nie powiodło się, sprawdź, jaką wartość zwraca link, wyślij żądanie curl do linku dodając do niego? Zd_echo = 1234567
curl https://mybestcrm.com/zadarma?zd_echo=1234567
W odpowiedzi powinna być zwrócona wartość 1234567
Jeśli jest tam pusto lub wyświetlona inna wartość niż 1234567 - walidacja nie przejdzie.
Aby zwiększyć bezpieczeństwo, zalecamy zezwolenie na dostęp do swojego łącza tylko z IP 185.45.152.42 Każde żądanie do Twojego linku otrzyma dodatkowy nagłówek „Signature”, dzięki któremu możesz również zweryfikować integralność i autentyczność danych. Czytaj więcej tutaj
2. Konfiguracja integracji przez CRM
W panelu klienta Zadarma link jaki został już potwierdzony, wskazuje, że CRM, do którego będą wysyłane powiadomienia o połączeniach, że zostały utworzone klucze autoryzacji, teraz te klucze muszą być zapisane w CRM. Po stronie CRM potrzebujesz strony do skonfigurowania integracji, nazwijmy ją „Ustawienia telefonii”, na tej stronie musisz mieć następujące podstawowe parametry:
- Pola do wprowadzania kluczy autoryzacji (Key i Secret).
- Link do modułu telefonicznego w CRM, który potwierdziliśmy wcześniej https://mybestcrm.com/zadarma.
- Lista użytkowników z możliwością przypisania każdemu własnego numeru wewnętrznego centrali.
Listę numerów wewnętrznych można otrzymać za pomocą GET /v1/pbx/internal/
Z otrzymanej listy numerów wewnętrznych tworzymy menu kontekstowe do przypisywania numeru wewnętrznego każdemu użytkownikowi CRM. Jeśli numer wewnętrzny jest już przypisany do jednego użytkownika, ten numer wewnętrzny nie powinien być już dostępny do wyboru i przypisania do innego użytkownika.
Zalecamy, aby jeden z użytkowników był wybrany jako domyślnie odpowiedzialny, tworząc odpowiednie pole wyboru na stronie ustawień telefonii. Odpowiedzialny domyślnie - to pracownik, który zostanie przypisany do wydarzenia, które nie będą mieli przypisanego pracownika. Na przykład: połączenie przychodzące od nowego klienta jest wysyłane jednocześnie do 5 numerów wewnętrznych (5 użytkowników CRM) i nikt nie odebrał telefonu, nikt nie chce stracić potencjalnego klienta. Aby tego uniknąć, można utworzyć zdarzenie, zadanie lub lead „Nieodebrane połączenie z numeru” oraz który z użytkowników jest przypisany, jeśli są przypisane wszyscy (pięć użytkowników), może zostać wywołane połączenie 5 razy, co nie będzie prawidłowe, w tym przypadku można przypisać zdarzenie/zadanie do domyślnie odpowiedzialnego pracownika (na przykład Kierownik działu sprzedaży). Jeśli masz pulę niesortowanych leadów w CRM oraz użytkownicy biorą stamtąd potencjalnych klientów lub są one sortowane automatycznie zgodnie z wewnętrznym algorytmem, domyślną opcję odpowiedzialnego można pominąć.
Ustawienia telefonii w CRM są zazwyczaj dostępne tylko dla użytkownika z uprawnieniami administratora/menedżera. W przypadku call center przydatne może być wyświetlenie salda z konta osobistego Zadarma na stronie ustawień CRM. Możesz uzyskać informację o saldzie za pomocą GET /v1/info/balance/
3. Połączenia wychodzące z interfejsu CRM ▾
3.1 Widget WebRTC do połączeń z przeglądarki.
Jeśli Twój CRM używa https, możesz zamieścić nasz widget połączeń bezpośrednio z przeglądarki. Uwaga: nie umieszczaj widgetu w domenie publicznej w sieci, w przeciwnym razie każdy będzie mógł dzwonić przez Twoje konto. Za każdym razem, gdy strona jest ładowana ze strony serwera, należy wygenerować klucze API do Webrtc, uzyskane metodą GET /v1/webrtc/get_key naszego API (Czas działania kluczy - 72 часа).
W Panelu klienta na stronie Ustawienia - Integracje i API w sekcji "Integracja widgetu WebRTC" musisz wejść do domeny swojego CRM i wybrać ustawienia wyglądu i lokalizacji widgetu. Następnie użyj otrzymanego kodu do integracji z CRM. Zastąp YOUR_KEY kluczem wygenerowanym przez API; zamień YOUR_SIP na swój login SIP lub pełny login numeru wewnętrznego centrali PBX, z którego będą wykonywane połączenia.
Przykład kodu:
<script src="https://my.zadarma.com/webphoneWebRTCWidget/v8/js/loader-phone-lib.js?v=17"></script>
<script src="https://my.zadarma.com/webphoneWebRTCWidget/v8/js/loader-phone-fn.js?v=17"></script>
<script>
if (window.addEventListener) {
window.addEventListener('load', function() {
zadarmaWidgetFn('YOUR_KEY', 'YOUR_SIP', 'square' /*square|rounded*/, 'en' /*ru, en, es, fr, de, pl, ua*/, true, "{right:'10px',bottom:'5px'}");
}, false);
} else if (window.attachEvent) {
window.attachEvent('onload', function(){
zadarmaWidgetFn('YOUR_KEY', 'YOUR_SIP', 'square' /*square|rounded*/, 'en' /*ru, en, es, fr, de, pl, ua*/, true, "{right:'10px',bottom:'5px'}");
});
}
</script>
Ukryty widget:

Rozszerzony widget:

3.2 Połączenia za pomocą połączenia zwrotnego (Callback)
W interfejsie CRM, obok każdego numeru telefonu dodaj ikonę/przycisk inicjujący połączenie na ten numer telefonu, zalecamy również zaimplementowanie telefonu internetowego z dialerem do dzwonienia na nowy numer, który nie był wcześniej zapisany w CRM. Połączenia wychodzące są realizowane na zasadzie Callback. Numer wewnętrzny wirtualnej centrali PBX musi być skonfigurowany za pomocą telefonu IP lub softphonu, aby odbierać i wykonywać połączenia. Użytkownik w CRM klika ikonę obok numeru telefonu lub przycisk połączenia w telefonie internetowym, CRM wysyła Callback.
Metoda GET /v1/request/callback/
Parametry:
- from – trzycyfrowy numer wewnętrzny podpięty do konkretnego użytkownika w PBX.
- to – numer telefonu, pod który chce zadzwonić użytkownik.
Użytkownik odbiera połączenie przychodzące na swoim softphonie i następnie czeka na połączenie z numerem, na który chce zadzwonić.
Przykład:

4. Powiadomienia o połączeniach w interfejsie CRM ▾
Gdy wewnętrzny numer centrali odbiera lub wykonuje połączenie, konieczne jest wyświetlenie odpowiedniego powiadomienia w CRM. Powiadomienie powinno być wyświetlane tylko dla użytkownika, który realizuje połączenie. W powiadomieniu o połączeniu można wyświetlić następujące informacje:
- Numer telefonu
- Nazwę użytkownika/firmy/lead jeśli numer był zapisany w CRM, nazwa jest linkiem prowadzącym bezpośrednio do kontaktu (kontakt/firma/lead)
- Jeśli połączenie od nowego klienta - przycisk utworzenia kontaktu/firmy/lead
- Nazwa odpowiedzialnego pracownika, jeśli połączenie pochodzi od istniejącego klienta
- Numer wirtualny, na który odebrano połączenie przychodzące (numer podłączony w Zadarma)
Wyzwalaczem dla wyświetlanego powiadomienia jest zdarzenie NOTIFY_INTERNAL (rozpoczęcie połączenia przychodzącego na wewnętrzny numer) lub zdarzenie NOTIFY_OUT_START (rozpoczęcie połączenia wychodzącego w centrali)
Po odpowiedzi i rozpoczęciu rozmowy zostanie wysłane powiadomienie do CRM NOTIFY_ANSWER (odpowiedź przy połączeniu na numer wewnętrzny lub podłączony) które z kolei jest wyzwalaczem dla wyświetlanego powiadomienia, przy otrzymaniu NOTIFY_ANSWER w powiadomieniu może zostać wyświetlony czas, który pokazuje czas trwania połączenia w czasie rzeczywistym, na przykład nagłówek powiadomienia „Połączenie od 442037691880” można zastąpić nagłówkiem „Rozmowa z 442037691880”
Kiedy połączenie jest zakończone, będzie wysłane powiadomienie NOTIFY_END (zakończenie połączenia przychodzącego na wewnętrzny numer) lub NOTIFY_OUT_END (zakończenie połączenia wychodzącego w centrali)
Po otrzymaniu NOTIFY_END lub NOTIFY_OUT_END wyświetlone powiadomienie powinno się zamknąć.
Przykład wdrożenia:

5. Nagrania rozmów i statystyki połączeń ▾
Aby pobrać nagrania audio z Zadarma do CRM, konieczne jest włączenie nagrywania rozmów w chmurze w ustawieniach numeru wewnętrznego centrali. Po zakończeniu połączenia, gdy nagranie audio jest gotowe do pobrania, powiadomienie zostanie wysłane do CRM NOTIFY_RECORD (nagranie jest dostępne do pobrania)
W parametrze call_id_with_rec zawiera identyfikator, za pomocą którego można uzyskać plik audio, do tego używamy metody GET /v1/pbx/record/request/. Odpowiedź będzie zawierała link do pliku z nagraniem, w przypadku jeśli Twój CRM ma własną chmurę do przechowywania plików, nagranie może zostać automatycznie pobrane do chmury CRM. Jeśli nie masz własnej chmury, możesz realizować przycisk odtwarzania audio, aby odtworzyć nagranie z otrzymanego linku. Przycisk odtwarzania nagrywania rozmów można umieścić obok informacji o połączeniu, na przykład w ogólnych statystykach połączeń lub kontaktach.
Aby utworzyć ogólną statystykę połączeń w CRM, należy użyć informacji o połączeniach uzyskanych z powiadomień NOTIFY_END и NOTIFY_OUT_END.
6. Automatyczne tworzenie kontaktów/potencjalnych klientów/ofert podczas połączenia od nowego klienta ▾
Automatyczne tworzenie podmiotów/kontaktów lub zdarzeń w CRM dla połączeń przychodzących z nie zapisanych numerów lub połączeń wychodzących na nieznane numery. Po odebraniu połączenia lub zainicjowaniu połączenia wychodzącego, numer telefonu jest sprawdzany w bazie danych z CRM i jeśli numer nie zostanie znaleziony, możesz utworzyć nowy kontakt/potencjalnego klienta/ofertę i przypisać to zadanie do użytkownika, który wykonał połączenie. Zalecamy tworzyć oddzielne opcje automatycznego tworzenia zdarzeń dla połączeń przychodzących i wychodzących. W przypadku połączenia wychodzącego można utworzyć kontakt: po zainicjowaniu połączenia (powiadomienie NOTIFY_OUT_START), kiedy połączenie odebrane (powiadomienie NOTIFY_ANSWER), po zakończeniu rozmowy (powiadomienie NOTIFY_OUT_END). Numer telefonu na który jest wywołane połączenie przekazywany jest w parametrze destination
W przypadku połączenia przychodzącego można utworzyć podmiot/kontakt, gdy połączenie zostanie odebrane na wewnętrznym numerze użytkownika CRM (powiadomienie NOTIFY_INTERNAL, numer osoby dzwoniącej przekazywany w caller_id) aby podczas rozmowy użytkownik mógł już otworzyć nowo utworzoną kartę klienta dzwoniącego, edytować ją, robić notatki itp. Po zakończeniu przychodzącej rozmowy będzie wysłane powiadomienie NOTIFY_END w którym w parametrze internal będzie wyświetlony wewnętrzny numer centrali, który odebrał to połączenie, przy czym CRM dopasowując ten numer do listy użytkowników zrozumie jakiego użytkownika podpiąć odpowiedzialnym. Lub można utworzyć kontakt po zakończeniu rozmowy przychodzącej po otrzymaniu NOTIFY_END. Niektóre systemy CRM w ogóle nie używają automatycznego tworzenia kontaktów, co pozwala menedżerowi, który odebrał połączenie, na określenie czy to jest połączenie docelowe lub nie i później ręcznie utworzyć kontakt/zadanie.
7. Automatyczne kierowanie przychodzącego połączenia do odpowiedzialnego pracownika ▾
Gdy jest kierowane połączenie przychodzące od istniejącego klienta (jego numer telefonu jest już zapisany w CRM), połączenie jest automatycznie przekierowane do użytkownika odpowiedzialnego, rozmówca nie słucha powitania głosowego podczas każdego połączenia, a następnie nie prosi o przekierowanie do konkretnego pracownika, z którym rozmawiał minutę temu. Jego połączenie zostanie automatycznie przekierowane na numer wewnętrzny użytkownika CRM. Wdrożone przez powiadomienie NOTIFY_START
W parametrze caller_id przekazywany numer dzwoniącego, jeśli ten numer jest zapisany w CRM, na przykład jako numer kontaktowy jednego z klientów i do tego klienta jest podpięty odpowiedzialny pracownik, można przekierować połączenie przychodzące na numer wewnętrzny. Możesz również określić czas przekierowania połączenia dla osoby odpowiedzialnej, na przykład 15 sekund, jeśli osoba odpowiedzialna nie jest dostępna lub nie może rozmawiać, po 15 sekundach połączenie przychodzące od jego klienta zostanie zwrócone do powitania głosowego, a następnie połączenie będzie przekierowane zgodnie ze scenariuszem centrali. Wdrożone przez odpowiedź na żądanie POST NOTIFY_START
{
"redirect": “101”,
"return_timeout": “15”
}
gdzie,
- redirect - numer wewnętrzny centrali (trzycyfrowy numer).
- return_timeout - wartość w sekundach >= 3 - czas przekierowania rozmowy na numer wewnętrzny, przed tym jak rozmowa wróci na powitanie głosowe, proponowana wartość 15 lub 20 sek.
8. Wyświetlanie nazwy klienta na telefonie IP/aplikacji ▾
Opcja pozwala na wyświetlenie nazwy klienta z CRM na telefon IP lub aplikację użytkownika, w której jest odbierane połączenie przychodzące. Wdrożone przez powiadomienie NOTIFY_START w odpowiedzi, jest przekazywany caller_id numer osoby dzwoniącej, jeśli numer już jest zapisany w CRM lub podpięty do kontaktu/lead/firmy, w odpowiedzi na NOTIFY_START można przekazać w znakach lacińskich:
{
"caller_name": "IBM"
}
gdzie,
- caller_name - imię kontaktu/firmy z CRM.
9. Przypomnienia o nieodebranych połączeniach ▾
Gdy połączenie przychodzące jest odbierane od klienta po otrzymaniu powiadomienia NOTIFY_END z parametru caller_id można otrzymać numer i wyszukać kontakt/lead/firmę z tym numerem oraz odpowiedzialnego pracownika podpiętego do tego klienta. Jeśli połączenie nie było odebrane, status nie będzie answered w parametrze disposition, można utworzyć zadanie/przypomnienie o nieodebranym połączeniu dla odpowiedzialnego pracownika.
10. Czarna lista w CRM ▾
Możesz utworzyć listę numerów, z których połączenia będą odrzucane, możesz dodawać numery do listy w panelu klienta lub utworzyć przycisk dla każdego użytkownika, aby dodać numer do czarnej listy. Jest on również wdrożony na podstawie powiadomienia NOTIFY_START i odpowiedzi na niego, jeśli numer dzwoniącego z parametru caller_id znajduje się na czarnej liście CRM w odpowiedzi na NOTIFY_START, przekazujemy:
{
"redirect": "blacklist"
}
Zaleca się, aby funkcjonalność punktów 6-10 stała się opcjonalna, aby użytkownik końcowy mógł włączyć / wyłączyć funkcje, których potrzebuje na stronie „Ustawienia telefonii” w CRM.