Integracja enova z centralką telefoniczną 1
Transkrypt
Integracja enova z centralką telefoniczną 1
Integracja enova z centralką
telefoniczną (cti2enova).
Dokumentacja techniczna + Instrukcja użytkownika
DRIT
1
Opis ogólny
Dodatek cti2enova jest rozszerzeniem systemu ERP enova dedykowanym dla firm chcących podnieść
standard obsługi na polu zarządzania relacjami z klientem (CRM). Jest przeznaczony dla tych
przedsiębiorców i instytucji dla których wydajność i szybkość działania a przy tym również
optymalizacja interakcji użytkownika z programem (np. powiadomienie o przychodzącej rozmowie i
podniesienie kartoteki kontrahenta) zwiększa nie tylko prostotę użytkowania systemu, ale dzięki temu
daje możliwość lepszej merytorycznie obsługi klienta, zwalniając operatora z konieczności zbędnego
wyszukiwania danych, pamiętania o zapisaniu zdarzenia, ustawienia przypomnienia etc.
Dodatek jest zalecany dla każdej firmy która szuka nowych narzędzi usprawniających procesy CRM, w
tym zarówno małe i średnie przedsiębiorstwa, jak i duże call center.
Instalacja i konfiguracja
Wymagania techniczne:
cecha
System enova w wersji 9.6 wzwyż
Framework .NET 4.0/4.5
Centrala telefoniczna Slican
Infrastruktura techniczna
uwagi
Dodatek korzysta z funkcjonalności nowych
formularzy (w standardzie od wersji 10.x.x) stąd nie
będzie współpracował poprawnie z wersjami
starszymi jak 8.x.x/9.x.x wcześniejsze niż 9.6
Dodatek zapewnia wsparcie dla wszystkich centralek
SLICAN współpracujących z protokołem CTI i
wyposażonych w moduł LAN tj. IPL-256, CCT1688.EU etc.
(UWAGA: Od wersji 8 protokołu wymagane
jest włączenie znacznika CTI=1 w arkuszu
abonenckim konfiguracji bazy danych centrali CCA i
NCT)
Aparaty telefoniczne zapewniające poprawną
współpracę z centralką, tzn. reagujące na sygnały
sterujące przychodzące / generujące poprawne
sygnały wychodzące np. podniesienie mikrotelefonu.
W tym większość znanych obecnie na rynku
telefonów zarówno analogowych jak i cyfrowych w
tym z implementacją obsługi VoIP.
Instalacja:
Instalacja dodatku ogranicza się do wgrania biblioteki dll do odpowiedniego katalogu Assemblies (w
zależności od uruchamianej wersji enova).
- dla wersji x64 – Soneta.Explorer.exe: C:\Program Files\Common Files\Soneta\Assemblies
- dla wersji x86 – Soneta.Explorer32.exe: C:\Program Files (x86)\Common Files\Soneta\Assemblies
DRIT
2
Konfiguracja
Podstawowa konfiguracja dodatku obejmuje:
- Konfigurację globalną: z poziomu Narzędzia / Opcje / CTI / Ogólne
- Konfigurację abonenta: w kontekście operatora (zakładka CTI)
Konfiguracja globalna.
Podstawowe dane (sekcja ogólne):
- Protokół CTI włączony:
uruchamia lub dezaktywuje globalnie obsługę CTI w enova
- Adres serwera CTI:
adres IP bądź nazwa hostname wskazująca lokalizację serwera
centralki LAN\WAN
-Długość numeru wew.: długość numerów wewnętrznych obowiązujących
korporacji/organizacji. Wartość nie może przekraczać 4 znaków (ograniczenie centralki)
w
danej
- Prefix linii zew.:
Określa prefiks wyjścia na linię zewnętrzną (wyjście na miasto) z sieci
wewnętrznej. Domyślna wartość w większość przypadków – 0.
Konfiguracja abonenta:
W ramach konfiguracji pojedynczego operatora do pracy z dodatkiem, najważniejszym są ustawienia
w sekcji „Ustawienia abonenta”. Reszta ustawień jest opcjonalna i domyślnie ustawiona.
DRIT
3
Pola i ich znaczenie:
- Abonent CTI:
uruchamia lub dezaktywuje obsługę CTI dla danego operatora enova
- Dostęp do panelu WebCTI: informuje czy użytkownik ma widzieć panel rozszerzony, więcej w
rozdziale następnym
- Numer katalogowy:
numer telefonu w sieci korporacyjnej (max cztery znaki)
- Klucz dostępu:
hasło dostępu do usługi CTI
Testowanie usługi:
Test #1 – logowanie i komunikacja enova z centralką
W celu przetestowania poprawności konfiguracji po zapisaniu wszystkich niezbędnych danych, należy
zamknąć enova i uruchomić ponownie logując się na konto operatora który został wskazany jako
abonent.
Widok okna enova po poprawnym zalogowaniu do centralki:
DRIT
4
Okno logów powinno rozszerzyć się o zakładkę CTI, która z kolei powinna wypełnić się danymi
dotyczącymi procesu logowania. Jeśli konfiguracja zarówno po stronie enova jak i centralki była
poprawna, powinnyśmy ujrzeć komunikat: OK + nazwa/model/typ centralki (+ dane dodatkowe
związane z konkretnym abonentem):
Przykład poprawnej odpowiedzi z centralki.
Test #2. – reakcja na sygnały sterujące z telefonu
Test ogranicza się do podniesienia mikrotelefonu (słuchawka) bądź wyboru opcji gotowości do
nadawania numeru (zielona słuchawka). Poprawna reakcja systemu powinna być taka jak poniżej:
Test #3 - Pierwszy telefon:
Dodatek działa w kontekście obiektów enova implementujących interfejs IAdresHost, w tym min:
Kontrahent, KontaktOsoba (osoba kontaktowa), Lokalizacja, Zadanie CRM (zadanie, spotkanie,
zdarzenie, notatka etc.).
Nawiązanie połączenia wywoływane jest przez worker (czynność: Zadzwoń…) zarówno z poziomu listy
jak i formularza dla każdego w.w. obiektu biznesowego.
Domyślnie w ramach formularza, na obiektach mogących zawierać więcej niż jeden numer telefonu
(np. Kontrahent) wywoływane jest okno parametrów z wyborem numeru na który chcemy wykonać
połączenie.
DRIT
5
Na listach natomiast domyślnie wybierany jest numer główny. Jeśli taki nie został oznaczony w
kartotece np. kontrahenta, wówczas system sam wymusi podniesienie okna parametrów z listą
wyboru. Można też wymusić taką funkcjonalność opcjonalnie zmieniając odpowiednie ustawienie w
konfiguracji abonenta (sekcja Telefon):
Inne ustawienie to sposób wybierania numeru.
- opcja „Czekaj na podniesienie mikrotelefonu” czyli ta która jest wybrana domyślnie, sprawdza się w
większości telefonów zarówno analogowych jak i cyfrowych. Jej działanie polega na oczekiwaniu na
przejście w stan gotowości do nadawania tonowego numeru, czyli na podniesienie mikrotelefonu lub
wybranie znaku gotowości (tzw. zielona słuchawka).
W tym trybie system podejmuje też próbę wysłania do końcówki informacji o żądaniu podniesienia
mikrotelefonu (PICK UP). Jeśli jednak aparat nie obsługuje takiej funkcjonalności, w logu pojawi się
odpowiedni komunikat + numer błędu (NA)
Po czym automatycznie przejdzie w stan oczekiwania.
Podniesienie mikrotelefonu zakończy czas oczekiwania i system rozpocznie wybieranie numeru i
nawiązania połączenia.
DRIT
6
- opcja „Inicjuj połączenie” wymusza reakcję zwrotną. Do centralki wysłany jest specjalny sygnał który
w odpowiedzi nawiązuje kontakt z mikrotelefonem tak jak podczas połączenia przychodzącego.
Operator widzi na wyświetlaczy (tryb CLIP) numer wybierany tak jakby to on inicjował połączenie.
Odbiór telefonu, powoduje przejście w stan nadawania, i cała dalsza procedura jest analogiczna do
punktu wcześniejszego.
Algorytm
Doświadczenie we wdrożeniach systemów IT uczy, że nie ma dwóch identycznych
sparametryzowanych środowisk. Każdy klient ma pewien zestaw wytycznych oraz wymagań co do
działania oprogramowania. Częstokroć wynika to z faktu migracji na inny system, szukając bardziej
wydajnych rozwiązań, ale zachowując przy tym zbliżoną organizację pracy (mniejszy nakład na koszty
szkoleń pracowników do pracy z nowym systemem). Inna kwestia wynika ze specyfiki branży lub
ograniczeń bądź założeń co do infrastruktury zarówno technicznej jak i logicznej. Stąd skalowalność
jest obecnie bardzo pożądaną cechą i dlatego dodano możliwość implementowania własnych
algorytmów na zdarzenia centralki, np. zakończenie rozmowy, połączenie przychodzące etc.
To właśnie te algorytmy przypominające swą koncepcją wbudowane makra pakietu Office, są
odpowiedzialne za np. podnoszenie formatki kontrahenta czy zapisywanie zdarzeń CRM z automatu, o
których w punktach powyżej. Zaletą tej funkcjonalności jest to, że można dopasowywać i
rozbudowywać funkcjonalność obsługi połączeń i tego jak ma reagować na nie system (nie ograniczając
przy tym zakresu na sztywno tylko do modułu CRM) we własnym zakresie, bez potrzeby rekompilacji
dodatku.
Algorytm modyfikuje się w zakładce konfiguracji globalnej.
Włączenie tej opcji domyślnie zainicjuje edytor pustymi wzorcami wymaganych metod.
Edytor zawiera intellisense wspomagający pisanie algorytmów implementujących poszczególne
funkcjonalności oraz weryfikator kodu (wewnętrzny kompilator enova).
DRIT
7
Zestaw dostępnych metod i właściwości:
Nazwa
OnLogin()
OnUnlogin()
BeforeDial()
OnDial()
BeforeRinging()
OnRinging()
Opis implementacji
Implementuje algorytm na moment logowania do
centralki CTI
Implementuje algorytm na zdarzenie wylogowania z
centralki CTI (wołane przed zamknięciem połączenia)
Implementuje algorytm na czas podniesienia
mikrotelefonu, jeszcze przed rozpoczęciem
nadawania tonowego numeru do centralki
Implementuje algorytm na moment wybierania
numeru
Implementuje algorytm na akcję połączenia
przychodzącego, ale jeszcze przed wyszukaniem
obiektu (Row jest puste)
Implementuje algorytm już na samo połączenie
przychodzące w momencie kiedy jest już logowane
przez enova
DRIT
8
OnRelease()
Implementuje algorytm na zdarzenie zakończenia
rozmowy/ odłożenia słuchawki/ wysłania sygnału
zajętości
Jako właściwości przekazane do algorytmu możemy rozróżnić:
Nazwa
Row
Context
Session
Numer
Opis
IAdresHost - Obiekt dla którego generowane jest
zdarzenie, np. Kontrahent, KontaktOsoba etc.
Zwraca aktualny kontekst programu
Zwraca aktualną sesję programu
Daje dostęp z akcesorem na GET i SET do numeru
telefonu aktualnie w kontekście (string)
W kodzie możemy również dodawać własne klasy (w tym również statyczne), metody, enumeratory
etc. Poniżej kilka przykładów dodających właściwe funkcjonalności (dostępne również jako StarterKit do zaimportowania przez XML bezpośrednio w systemie).
Algorytm
public enum TypFormatki
{
Kontrahent = 1,
Zdarzenie = 2
}
(…)
public override void OnRinging()
{
// Tutaj umieść kod na zdarzenie połączenia przychodzącego
if (Row.GetType() == typeof(Kontrahent))
{
Kontrahent _kontrahent = (Kontrahent)Row;
Soneta.Business.View _zadania = _kontrahent.Zadania.CreateView();
_zadania.Condition &= new FieldCondition.Equal("Rodzaj", RodzajZadania.Zdarzenie);
_zadania.Condition &= new FieldCondition.Equal("Aktywny", true);
if (_zadania.Count == 0)
{
if (System.Windows.Forms.MessageBox.Show
(new System.Windows.Forms.Form() { TopMost = true },
String.Format("Dzwoni: {0}. \r\n Czy otworzyć kartotekę kontrahenta?", Row), "enova",
System.Windows.Forms.MessageBoxButtons.YesNo,
System.Windows.Forms.MessageBoxIcon.Question)
== System.Windows.Forms.DialogResult.Yes)
{
Otworz(TypFormatki.Kontrahent);
}
else return;
}
else
{
if (System.Windows.Forms.MessageBox.Show
(new System.Windows.Forms.Form() { TopMost = true },
String.Format("Dzwoni: {0}. \r\n Czy otworzyć aktywne zdarzenie?", Row), "enova",
System.Windows.Forms.MessageBoxButtons.YesNo,
System.Windows.Forms.MessageBoxIcon.Question)
== System.Windows.Forms.DialogResult.Yes)
{
Otworz(TypFormatki.Zdarzenie);
}
else return;
}
}
}
DRIT
9
Algorytm c.d.
public void Otworz(TypFormatki typ)
{
if (Row.GetType() == typeof(Kontrahent) && typ == TypFormatki.Kontrahent)
{
Kontrahent kontr = (Kontrahent)Row;
Context context = Context.Empty.Clone(kontr.Session);
Soneta.Business.Forms.ObjectNavigator on =
new Soneta.Business.Forms.ObjectNavigator(kontr, kontr.Session, context);
Soneta.Business.Forms.FormManager.OpenForm(on, false);
}
if (Row.GetType() == typeof(Kontrahent) && typ == TypFormatki.Zdarzenie)
{
Kontrahent kontr = (Kontrahent)Row;
Soneta.Business.View _zadania = kontr.Zadania.CreateView();
_zadania.Condition &= new FieldCondition.Equal("Rodzaj", RodzajZadania.Zdarzenie);
_zadania.Condition &= new FieldCondition.Equal("Aktywny", true);
Zadanie _zdarzenie = (Zadanie)_zadania.GetFirst();
Context context = Context.Empty.Clone(_zdarzenie.Session);
new
Soneta.Business.Forms.ObjectNavigator on =
Soneta.Business.Forms.ObjectNavigator(_zdarzenie, _zdarzenie.Session, context);
Soneta.Business.Forms.FormManager.OpenForm(on, false);
}
}
Podnosimy odpowiednią formatkę w reakcji na połączenie przychodzące:
DRIT
10
Efekt na zdarzeniu przychodzącym. Jeśli numer zostanie rozpoznany jako przynależący do kartoteki
kontrahenta, to sprawdzony zostanie warunek czy z danym podmiotem prowadzone są aktualnie jakieś
aktywne kontakty (np. otwarta szansa sprzedaży). Jeśli tak, to zostanie zgłoszony monit o otwarciu
aktywnego zdarzenia CRM, w przeciwnym wypadku kartoteki kontrahenta.
Zarówno sam monit jak i okno odpowiedniej formatki zostanie otwarte niezależnie od aktualnie
załadowanego kontekstu w programie enova (przykład: screen powyżej).
Oczywiście skalowalność którą uzyskujemy dzięki implementacji wewnętrznego algorytmu najbardziej
potwierdza się w przypadku bardzo zaawansowanych konfiguracji, np. logowanie do różnych
providerów obsługujących konkretne połączenia dla wybranych krajów (w zależności od kodu kraju
kontrahenta), ale doskonale sprawdza się również w przypadku prostszych instalacji, gdzie wymagania
co do komunikacji z centralką i obsługi połączeń z poziomu CRM są dosyć standardowe. Jeśli chcemy
np. zapisywać nieodebrane połączenia do asystenta, jako zadania systemowe (taski) z możliwością
uruchomienia powiadomienia, to wszystko jest możliwe właśnie dzięki zastosowaniu algorytmów
wewnętrznych, konfigurację zaś upraszczając tym samym do niezbędnego minimum.
Panel WebCTI.
Panel WebCTI jest rozszerzeniem CTI, zapewniającym każdemu abonentowi dostęp do podstawowych
ustawień (np. przekierowanie połączeń (FWD), dostęp do wewnętrznej książki adresowej i możliwość
nawiązania połączenia jednym kliknięciem myszki, odsłuchiwanie nagrań z rozmów telefonicznych etc.)
Oczywiście zakres funkcjonalności zależny jest od aktualnie nadanych praw na centralce.
DRIT
11
UWAGA: Panel WebCTI jest uruchamiany bezpośrednio w systemie enova za pomocą wbudowanego
silnika IE. W celu poprawienia kompozycji wizualnych oraz kompatybilności ze standardem
HTML5/JavaScript, dodatek przy pierwszym uruchomieniu wymusza załadowanie najnowszej
możliwej wersji Internet Explorer, ale w tym celu wymagane jest jednorazowe uruchomienie enova
z załadowaną biblioteką cti2enova, na uprawnieniach administratora.
DRIT
12