Po zintegrowaniu Webex Contact Center z konsolą programu CRM ServiceNow można uruchomić Webex programu Contact Center Desktop z poziomu programu ServiceNow.
Przed zintegrowaniem Webex Contact Center z konsolą programu CRM ServiceNow upewnij się, że masz następujące elementy:
-
Dostęp do Webex Contact Center.
-
Dostęp administratora do Centrum sterowania pod adresem https://admin.webex.com oraz Webex Contact Center Management Portal. Adresy URL portalu zarządzania są specyficzne dla danego regionu.
-
Ameryka Północna: https://portal.wxcc-us1.cisco.com
-
Wielka Brytania: https://portal.wxcc-eu1.cisco.com
-
Japonia: https://portal-v2.wxcc-jp1.cisco.com
-
-
Agent z dostępem do pulpitu . Adres URL pulpitu jest specyficzny dla danego regionu.
-
Ameryka Północna: https://desktop.wxcc-us1.cisco.com
-
Wielka Brytania: https://desktop.wxcc-eu1.cisco.com
-
-
Dostęp agenta do następującej domeny dodanej do listy dozwolonych zasad zabezpieczeń:
-
*.service-now.com
Aby uzyskać więcej informacji na temat definiowania listy dozwolonych, zobacz artykuł Ustawienia zabezpieczeń dla Webex Contact Center.
-
-
Konto portalu deweloperów ServiceNow.A ServiceNow developer portal account. Aby utworzyć konto, przejdź do portalu deweloperów ServiceNow pod adresem https://developer.servicenow.com/dev.do i kliknij pozycję Zarejestruj się i rozpocznij tworzenie.
-
Dostęp do następujących plików pod adresem https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow:
-
Zestaw aktualizacji ServiceNow (XML)
-
ServiceNow Contact Center Desktop Layout (JSON)
-
Postępuj zgodnie z jedną z dwóch poniższych metod: W przypadku wystąpień deweloperskich zalecamy wykonanie kroków opisanych w przewodniku po wystąpieniach dla programistów. Jeśli posiadasz instancję licencjonowaną dla przedsiębiorstwa, postępuj zgodnie ze wskazówkami dotyczącymi instancji licencjonowanych dla przedsiębiorstw. Nie zalecamy mieszania aplikacji licencjonowanej dla przedsiębiorstwa z wystąpieniami piaskownicy deweloperów. |
W poniższych sekcjach opisano kroki, aby zainstalować łącznik ServiceNow dla wystąpień deweloperów.
1 |
Zaloguj się do konta portalu deweloperów ServiceNow i otwórz konsolę administracyjną. |
2 |
W obszarze Moje wystąpienie menu Konto kliknij polecenie Rozpocznij budowanie. |
3 |
W wystąpieniu programisty w polu Nawigator filtrów w lewym górnym rogu okna przejdź do pozycji Wtyczki . |
4 |
Wyszukaj wtyczkę Openframe o nazwie Openframe. Może być konieczne przewinięcie listy. |
5 |
Kliknij przycisk Instaluj , aby zainstalować wtyczkę Openframe. |
6 |
W oknie dialogowym Aktywuj wtyczkę kliknij przycisk Aktywuj. |
7 |
Po zakończeniu aktywacji wtyczki kliknij przycisk Zamknij i odśwież formularz w oknie dialogowym Aktywacja wtyczki . |
8 |
Aby zweryfikować aktywację wtyczki, w polu Nawigator filtrów w lewym górnym rogu okna przejdź do OpenFrame . |
9 |
Kliknij Konfiguracje i upewnij się, że wtyczka OpenFrame pojawia się na liście Konfiguracje OpenFrame. |
1 |
Pobierz najnowszy plik System Update Set XML dostępny w repozytorium github pod tą lokalizacją:https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. Nazwa Pliku: webexcc-servicenow-update-setV(X).xml |
2 |
W wystąpieniu usługi ServiceNow w polu Nawigator filtrów w lewym górnym rogu okna przejdź do pozycji Zestawy aktualizacji systemu> |
3 |
Kliknij łącze Importuj zestaw aktualizacji z XML . |
4 |
Kliknij przycisk Wybierz plik, wybierz plik zestawu aktualizacji systemu XML, a następnie kliknij przycisk Prześlij. Zestaw aktualizacji pojawi się na liście Pobrane zestawy aktualizacji i będzie w stanie Załadowano .
|
5 |
Na liście Pobrane zestawy aktualizacji kliknij nazwę pliku zestawu aktualizacji (łącze), aby otworzyć zestaw aktualizacji. |
6 |
W prawym górnym rogu okna kliknij przycisk Podgląd zestawu aktualizacji, aby sprawdzić, czy zestaw aktualizacji nie występuje. |
7 |
Kliknij przycisk Zamknij w oknie dialogowym Podgląd zestawu aktualizacji po zakończeniu podglądu. |
8 |
Kliknij przycisk Zatwierdź zestaw aktualizacji. |
9 |
Kliknij przycisk Zamknij w oknie dialogowym Zatwierdzenie zestawu aktualizacji po zakończeniu zatwierdzania zestawu aktualizacji. |
1 |
W polu Nawigator filtrów w lewym górnym rogu okna wpisz sys_properties.list i naciśnij enter. |
2 |
Na stronie Właściwości systemu posortuj właściwości według daty aktualizacji. Upewnij się, że są widoczne następujące informacje Webex Właściwości Contact Center : |
3 |
Kliknij przycisk agentdesktop_url , aby otworzyć stronę agentdesktop_url Właściwości systemu. |
4 |
W polu Wartość wprowadź adres URL Webex programu Contact Center Desktop zgodnie z regionem działania.
|
5 |
Kliknij przycisk Aktualizuj , aby zapisać zmiany. |
6 |
(Opcjonalnie) Aby zmienić nazwę tabeli aktywności, edytuj właściwości webexccactivitytable zgodnie z wymaganiami. Na stronie Właściwości systemu kliknij pozycję webexccactivitytable. Zmień pole Wartość zgodnie z wymaganiami. |
7 |
(Opcjonalnie) Dodaj grupy użytkowników w następujący sposób:
|
1 |
W polu Nawigator filtrów przejdź do . |
2 |
Kliknij przycisk Nowy. |
3 |
Wprowadź następujące właściwości adresu URL:
|
4 |
Po prawej stronie pola Adres URL kliknij przycisk Zablokuj i dodaj agentdesktop.do |
5 |
(Opcjonalnie) Wybierz grupy użytkowników/agentów, do których ma zostać przypisana konfiguracja. |
6 |
Kliknij przycisk Wyślij. Adres URL zostanie wyświetlony jako łącze. |
7 |
Przed próbą użycia telefonu OpenFrame upewnij się, że przesłałeś plik JSON niestandardowego układu pulpitu ServiceNow do portalu zarządzania centrum kontaktowego Webex. Aby uzyskać więcej informacji, zobacz Konfigurowanie układu pulpitu ServiceNow w Webex Contact Center. |
1 |
Pobierz układ pulpitu dla ServiceNow z https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
W razie potrzeby zaktualizuj właściwości w pliku układu pulpitu. |
3 |
Przejdź do Webex Contact Center Management Portal. |
4 |
Na pasku nawigacyjnym portalu zarządzania wybierz . |
5 |
Kliknij przycisk Nowy układ i wprowadź szczegóły układu pulpitu. |
6 |
Przekaż plik JSON układu pulpitu ServiceNow. |
7 |
Kliknij przycisk Zapisz , aby zapisać konfigurację. Teraz można uruchomić Webex Contact Center Desktop w konsoli ServiceNow. |
8 |
W polu Nawigator filtrów przejdź do obszaru roboczego agenta. Kliknij lewą dolną ikonę telefonu. |
W poniższych sekcjach opisano kroki, aby zainstalować łącznik ServiceNow dla licencjonowanych wystąpień przedsiębiorstwa.
1 |
Zaloguj się do konta portalu deweloperów ServiceNow i otwórz konsolę administracyjną. |
2 |
W obszarze Moje wystąpienie menu Konto kliknij polecenie Rozpocznij budowanie. |
3 |
W wystąpieniu programisty w polu Nawigator filtrów w lewym górnym rogu okna przejdź do pozycji Wtyczki . |
4 |
Wyszukaj wtyczkę Openframe o nazwie Openframe. Może być konieczne przewinięcie listy. |
5 |
Kliknij przycisk Instaluj , aby zainstalować wtyczkę Openframe. |
6 |
W oknie dialogowym Aktywuj wtyczkę kliknij przycisk Aktywuj. |
7 |
Po zakończeniu aktywacji wtyczki kliknij przycisk Zamknij i odśwież formularz w oknie dialogowym Aktywacja wtyczki . |
8 |
Aby zweryfikować aktywację wtyczki, w polu Nawigator filtrów w lewym górnym rogu okna przejdź do OpenFrame . |
9 |
Kliknij Konfiguracje i upewnij się, że wtyczka OpenFrame pojawia się na liście Konfiguracje OpenFrame. |
Wystąpienia z licencjami korporacyjnymi mogą instalować aplikację Webex Contact Center bezpośrednio ze sklepu ServiceNow.
Pobierz i zainstaluj pakiet Webex Contact Center ze sklepu ServiceNow: https://store.servicenow.com/sn_appstore_store.do#!/store/application/6c8e2a4edbc73410e1c75e25ca961947. |
1 |
W polu Nawigator filtrów w lewym górnym rogu okna wpisz sys_properties.list. |
2 |
Na stronie Właściwości systemu posortuj właściwości według daty aktualizacji. Upewnij się, że są widoczne następujące informacje Webex Właściwości Contact Center : |
3 |
Kliknij przycisk agentdesktop_url , aby otworzyć stronę agentdesktop_url Właściwości systemu. |
4 |
W polu Wartość wprowadź adres URL Webex programu Contact Center Desktop zgodnie z regionem działania.
|
5 |
Kliknij przycisk Aktualizuj , aby zapisać zmiany. |
6 |
(Opcjonalnie) Aby zmienić nazwę tabeli aktywności, edytuj właściwości tabeli x_caci_webexcc.webexccactivitytable zgodnie z wymaganiami.
|
7 |
(Opcjonalnie) Dodaj grupy użytkowników w następujący sposób:
|
1 |
W polu Nawigator filtrów przejdź do . |
2 |
Kliknij przycisk Nowy. |
3 |
Wprowadź następujące właściwości adresu URL:
|
4 |
Po prawej stronie pola adresu URL kliknij przycisk Zablokuj i dodaj jako adres URL |
5 |
(Opcjonalnie) Wybierz grupy użytkowników/agentów, do których ma zostać przypisana konfiguracja. |
6 |
Kliknij przycisk Wyślij. Adres URL zostanie wyświetlony jako łącze. |
7 |
W polu Nawigator filtrów przejdź do obszaru roboczego agenta. Kliknij lewą dolną ikonę telefonu. |
8 |
(Opcjonalnie) Na liście Grupa użytkowników przenieś grupy użytkowników, które mają dostęp do programu Webex Contact Center Desktop z pozycji Dostępne na Wybrane. |
9 |
Przed próbą użycia telefonu OpenFrame upewnij się, że przesłałeś plik JSON niestandardowego układu pulpitu ServiceNow do portalu zarządzania centrum kontaktowego Webex. Aby uzyskać więcej informacji, zobacz Konfigurowanie układu pulpitu ServiceNow w Webex Contact Center. |
1 |
Pobierz układ pulpitu dla ServiceNow z https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
W razie potrzeby zaktualizuj właściwości w pliku układu pulpitu. |
3 |
Przejdź do Webex Contact Center Management Portal. |
4 |
Na pasku nawigacyjnym portalu zarządzania wybierz . |
5 |
Kliknij przycisk Nowy układ i wprowadź szczegóły układu pulpitu. |
6 |
Przekaż plik JSON układu pulpitu ServiceNow. |
7 |
Kliknij przycisk Zapisz , aby zapisać konfigurację. Teraz można uruchomić Webex Contact Center Desktop w konsoli ServiceNow. |
8 |
W polu Nawigator filtrów przejdź do obszaru roboczego agenta. Kliknij lewą dolną ikonę telefonu. |
1 |
W polu Nawigator filtrów przejdź do pozycji Zdarzenia> Otwórz zdarzenie. |
2 |
Kliknij prawym przyciskiem myszy pole dzwoniącego i kliknij Konfiguruj słownik. |
3 |
Dodaj atrybuty Teraz można rozpocząć korzystanie z programu Webex Contact Center Desktop w konsoli ServiceNow. |
4 |
W polu Nawigator filtrów przejdź do . Kliknij lewą dolną ikonę telefonu. |
Przed nawiązaniem połączenia wychodzącego upewnij się, że zostały wykonane następujące czynności:
-
Utwórz punkt wejścia wybierania wychodzącego i skonfiguruj strategię punktu wejścia wybierania wychodzącego.
-
Włącz funkcję ANI wybierania wychodzącego dla profilu agenta.
-
Ustaw ANI wybierania na mapowanie numeru wybierania do punktu wejścia.
Więcej informacji można znaleźć w rozdziale Inicjowanie obsługi administracyjnej Cisco Webex Contact Center Podręczniku konfiguracji i administracji.
W polu Nawigator filtrów przejdź do obszaru roboczego agenta.
Kliknij lewą dolną ikonę telefonu.
Informacje na temat korzystania z pulpitu można znaleźć w Cisco Webex Contact Center Agent Desktop Podręczniku użytkownika.
Partycjonowanie pamięci masowej innych firm
Możliwy problem z ostatnią aktualizacją przeglądarki Google Chrome i przeglądarki Edge 116 lub nowszej może zakłócić logowanie do łączników CRM w Webex Contact Center. Ten problem dotyczy logowania na pulpicie w konsoli programu CRM ServiceNow.
Aby rozwiązać ten problem w przeglądarce Google Chrome:
-
Otwórz przeglądarkę Google Chrome i wpisz chrome://flags/#third-party-storage-partitioning w pasku adresu.
-
Wyłącz flagę Experimental third-party storage partitioning (Eksperymentalne partycje pamięci masowej innej firmy).
-
Zamknij i uruchom ponownie Chrome.
-
Zaloguj się ponownie do pulpitu w konsoli programu CRM ServiceNow.
Aby rozwiązać ten problem w przeglądarce Edge:
-
Otwórz przeglądarkę i wpisz edge://flags/#third-party-storage-partitioning w pasku adresu.
-
Wyłącz flagę Experimental third-party storage partitioning (Eksperymentalne partycje pamięci masowej innej firmy).
-
Zapisz zmiany i uruchom ponownie przeglądarkę.
-
Zaloguj się ponownie do pulpitu w konsoli programu CRM ServiceNow.
Omówienie
W tym artykule omówiono kilka sposobów dostosowywania reguł biznesowych dla łącznika programu CRM ServiceNow.This article covers several ways to customize your business rules for the ServiceNow CRM connector. Zawiera szczegółowe informacje, w jaki sposób można dostosować przypadki użycia na podstawie reguł biznesowych, które są specyficzne dla ServiceNow.
Klient musi samodzielnie zarządzać tymi przypadkami użycia w usłudze ServiceNow.The customer must self manage these use cases on ServiceNow. Konfiguracja jest specyficzna dla ServiceNow, a nie Webex oprogramowania lub wiedzy Contact Center.
Jest to dokumentacja referencyjna ułatwiająca modyfikację reguł biznesowych. Programiści ServiceNow będą tworzyć reguły biznesowe i zarządzać nimi oraz zapewniać wsparcie. Firma Cisco udostępnia jedynie przykładową dokumentację. |
Zmiana kodu w ServiceNow
-
Przejdź do nawigatora filtrów i wyszukaj "skrypt zawiera".
Wybierz dołączone skrypty w obszarze Interfejs użytkownika systemu.
-
Przefiltruj nazwę i wyszukaj "propUtils".
-
Zmień metodę "UserGetSysId" w skrypcie.
Aktualne:
UserGetSysId: function () { var opened_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if (user.next()) opened_for=user.sys_id; var grInt = new GlideRecord('interakcja'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefon'; grInt.opened_for= opened_for; var sysid=grInt.insert(); return sysid; },
Nowy przykładowy kod zdarzenia:
UserGetSysId: function () { var opened_for; //Zmiany związane z incydentami var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { opened_for=user.sys_id;//return user.sys_id; var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', opened_for); inc.addQuery('state','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { sysidlist.incsysid=inc.getUniqueValue(); }else{ inc.initialize(); inc.caller_id=opened_for; inc.contact_type='telefon'; inc.short_description='Połączenie odebrane z '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interakcja'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefon'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist); },
-
Przejdź do nawigatora filtrów i wyszukaj stronę interfejsu użytkownika.
Wybierz strony interfejsu użytkownika w obszarze Interfejs użytkownika systemu.
-
Przefiltruj nazwę i wyszukaj "agentdesktop".
-
Zmień funkcję "screenpop" w skrypcie klienta.
Aktualna funkcja:
screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: 'interaction', query: 'sys_id='+sysid });
Przykładowy kod zdarzenia:
screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); // For Incident-related change var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_ id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }); } }
Jeśli informacje o dzwoniącym znajdują się w programie CRM i z tym kontaktem otwarto już nowe zdarzenie, aplikacja otworzy zdarzenie w toku
Jeśli informacje o dzwoniącym nie istnieją w programie CRM, aplikacja otworzy nowe zdarzenie
Jeśli informacje o dzwoniącym istnieją w programie CRM, aplikacja otworzy nowe zdarzenie ze wstępnie wypełnionymi szczegółami
Omówienie
Ten przypadek użycia opisuje szczegółowo proces dodawania dodatkowej kolumny do tabeli ServiceNow — webexcc_imp_activity i tworzenia sn_openframe_phone_log po zainstalowaniu łącznika programu CRM Webex CC for ServiceNow.
Domyślnie tabela zawiera pewne gotowe pola i wartości systemowe.
Można utworzyć więcej zmiennych specyficznych dla biznesu (zmiennych CAD) wewnątrz projektanta WebexCC Flow i dodać zmienne CAD w dzienniku aktywności po połączeniu ServiceNow, a także utrwalić to w danych tabeli aktywności po połączeniu.
Jest to tylko dokumentacja referencyjna - i pokazuje, jak to zrobić dla przykładowej zmiennej CAD o nazwie Nazwa klienta, która przechowuje nazwę klienta w IVR i publikuje ją w ServiceNow. Oczekuje się, że deweloperzy partner + klient ServiceNow skonfigurują tę konfigurację i będą nią zarządzać, ponieważ jest to dostosowanie do istniejącego łącznika. Firma Cisco udostępnia jedynie techniki dostosowywania i rozszerzania złącza. W tym artykule zespół firmy Cisco potwierdził obsługę dodawania zmiennych CAD do dziennika aktywności i tabeli aktywności przy użyciu techniki opisanej poniżej: |
Dodaj kolumnę do aktywności WebexCC IMP
-
Edytuj tabelę w wersji deweloperskiej ServiceNow.
-
Przejdź do nawigatora filtrów i wyszukaj studio.
Wybierz "Webex Contact Center"
lub
-
Wybierz tabelę "WebexCC IMP Activity"
-
Dodaj nową kolumnę, na przykład "CustomerName"
Dodaj kolumnę do dziennika telefonu
-
Edytuj tabelę dziennika telefonu.
-
Dodaj nową kolumnę, na przykład "CustomerName".
Mapa przekształcania aktywności WebexCC
Dodaj nową kolumnę, na przykład mapowanie pól "CustomerName".
Personalizowanie kolumn listy
Zgodnie z zaleceniami usługi zmień akcję Wybór z utwórz na ignoruj.
Konfigurowanie listy dzienników telefonu
Przejdź do Dołącz skrypt
Dodaj tylko jeden wiersz "webexcc.u_customername=actInfo.CustomerName" do propUtils. |
Zobacz linię: webexcc.u_customername=actInfo.CustomerName; z komentarzem wspierającym.
var propUtils = Class.create(); propUtils.prototype = Object.extendsObject(global. AbstractAjaxProcessor,{ getWebexccProp: function () { var webexccprop = {}; webexccprop.instanceurl= 'https://'+gs.getProperty('instance_name')+'.service-now.com/'; webexccprop.url=gs.getProperty('x_caci_webexcc.agentdesktop_url'); // webexccprop.popupurl=gs.getProperty('x_caci_webexcc.screenpop_url'); return JSON.stringify(webexccprop); }, UserGetSysId: function () { var opened_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if (user.next()) opened_for=user.sys_id;//return user.sys_id; else // return null; var grInt = new GlideRecord('interakcja'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefon'; grInt.opened_for= opened_for; var sysid=grInt.insert(); powrót sysid; }, setWebexcctable: function () { var sys_id=0; var actInfo = JSON.parse(this.getParameter('actInfo')); var webexcc = new GlideRecordSecure(gs.getProperty('x_caci_webexcc.webexccactivitytable')); webexcc.addQuery("callobject", actInfo.CallObject); webexcc.query(); if(!webexcc.next()) { webexcc.ani = actInfo.ani; webexcc.dnis =actInfo.dnis; webexcc.queuename =actInfo.queuename; webexcc.wrapuptime =actInfo.wrapuptime; webexcc.callduration =actInfo.CallDurationInSeconds; webexcc.ringingtime =actInfo.ringingtime; webexcc.activitydate =actInfo.ActivityDate; webexcc.callobject =actInfo.CallObject; webexcc.calltype =actInfo.CallType; webexcc.calldisposition=actInfo.CallDisposition; Ten wiersz jest dodawany, aby przechwycić go w dzienniku aktywności webexcc.u_customername=actInfo.CustomerName; sys_id=webexcc.insert(); Działania w rejestrze incydentów; var actInfoString =this.getParameter('actInfo'); var suser = new GlideRecordSecure("sys_user"); suser.addQuery("phone", this.getParameter('ani')); suser.query(); if(suser.next()) { var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', suser.sys_id); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { var jsonPretty = JSON.stringify(JSON.parse(actInfoString),null,2); inc.comments =jsonPretty; inc.update(); } } } powrót sys_id; }, wpisz: 'propUtils' });
Tworzenie zmiennej CAD w projektancie Flow
Dodawanie zmiennej CAD do układu pulpitu
Przykład.
"CadName1:SnowField1,CadName2:SnowField2" CadName1 to CustomerName SnowField1 jest również używany jako CustomerName, który jest częścią przykładowego scirpt pokazanego powyżej "actInfo.CustomerName".
Zrzuty ekranu demonstracyjne
Wyświetl nowo dodaną zmienną CAD w tabeli Aktywność WebexCC.
Tworzenie zmiennej CAD dla programu Flow Designer
Aktualizacja skryptu usługi Teraz
-
Przejdź do nawigatora filtrów i wyszukaj dołączenia skryptu
Wybierz opcję Dołącza skrypt w obszarze Interfejs użytkownika systemu.
-
Przefiltruj nazwę za pomocą propUtils.
-
Zmień metodę "UserGetSysId" w polu Skrypt .
Aktualny skrypt:
UserGetSysId: function () { var opened_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if (user.next()) opened_for=user.sys_id; var grInt = new GlideRecord('interakcja'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefon'; grInt.opened_for= opened_for; var sysid=grInt.insert(); return sysid; },
Nowy przykładowy kod zdarzenia:
UserGetSysId: function () { var opened_for; var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { opened_for=user.sys_id;//return user.sys_id; var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', opened_for); inc.addQuery('state','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { sysidlist.incsysid=inc.getUniqueValue(); } else{ inc.initialize(); inc.caller_id=opened_for; inc.contact_type='telefon'; inc.urgency=this.getParameter('IncUrgency'); inc.impact=this.getParameter('Impact'); inc.short_description='Połączenie odebrane z '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interakcja'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefon'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist);//sysid; },
-
Przejdź do nawigatora filtrów i wyszukaj strony interfejsu użytkownika.
Wybierz opcję Strony interfejsu użytkownika w obszarze Interfejs użytkownika systemu.
-
Przefiltruj strony interfejsu użytkownika za pomocą nazwy i wyszukaj agentdesktop .
-
Zmień funkcję "screenpop" w polu skryptu.
Aktualna funkcja:
screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: 'interaction', query: 'sys_id='+sysid }); }
Przykładowy kod zdarzenia:
screen pop function screenpop(callerani,callSessionInfo) { var Impact=3; if(callSessionInfo.callAssociatedData.Impact != null && callSessionInfo.callAssociatedData.Impact != undefined) { Impact=callSessionInfo.callAssociatedData.Impact.value; } var IncUrgency=3; if(callSessionInfo.callAssociatedData.Urgency != null && callSessionInfo.callAssociatedData.Urgency != undefined) { IncUrgency=callSessionInfo.callAssociatedData.Urgency.value; } if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.addParam('IncUrgency', IncUrgency); gaout.addParam('Impact', Impact); gaout.getXMLWait(); var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); } else{ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }
Jeśli informacje o dzwoniącym istnieją w programie CRM i nie ma nowego ani nietrwającego zdarzenia, aplikacja otworzy nowe zdarzenie
Zmień kod na ServiceNow
Dodaj nowe kolumny do tabeli "WebexCC IMP Activity"
Kliknij Aktualizuj .
Dodaj nowe kolumny do tabeli "Dziennik telefonu"
Mapa przekształcania aktywności WebexCC
Kliknij przycisk Aktualizuj.
Zmiany w skrypcie obejmują:
-
Przejdź do nawigatora filtrów i wyszukaj "skrypt zawiera".
Wybierz dołączone skrypty w obszarze Interfejs użytkownika systemu.
-
Przefiltruj nazwę za pomocą "propUtils".
-
Zmień metodę "setWebexcctable".
Nowy przykładowy kod dla zdarzenia:
setWebexcctable: function () { var sys_id=0; var actInfo = JSON.parse(this.getParameter('actInfo')); var webexcc = new GlideRecordSecure(gs.getProperty('webexccactivitytable')); webexcc.addQuery("u_callobject", actInfo.CallObject); webexcc.query(); if(!webexcc.next()) { //Activities on Incident record; //var actInfoString =this.getParameter('actInfo'); var incsysid=actInfo.incident_sys_id; var interactionsysid=actInfo.interaction_sys_id; var incnum=""; var intenum=""; delete actInfo['interaction_sys_id']; usuń actInfo['incident_sys_id']; if( interactionsysid!= null && interactionsysid != undefined){ var inte = new GlideRecordSecure('interaction'); //inte.get('sys_id', interactionsysid ); inte.addQuery('sys_id', interactionsysid ); inte.query(); if (inte.next()) { intenum=inte.number; // inte.setValue('state','Closed Complete'); inte.work_notes='Update State to closed.'; inte.update(); } } if( incsysid!= null && incsysid != undefined){ var inci = new GlideRecordSecure('incident'); inci.addQuery('sys_id', incsysid ); inci.query(); if (inci.next()) { incnum=inci.number; var jsonPretty = JSON.stringify(actInfo,null,2); //JSON.stringify(JSON.parse(actInfoString),null,2); inci.comments =jsonPretty; inci.update(); } } else{ var suser = new GlideRecordSecure("sys_user"); suser.addQuery("phone", this.getParameter('ani')); suser.query(); if(suser.next()) { var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', suser.sys_id); inc.addQuery('state','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { var jsonPretty = JSON.stringify(actInfo,null,2); inc.comments =jsonPretty; inc.update(); } } } webexcc.u_ani = actInfo.ani; webexcc.u_dnis =actInfo.dnis; webexcc.u_queuename =actInfo.queuename; webexcc.u_wrapuptime =actInfo.wrapuptime; webexcc.u_callduration =actInfo.CallDurationInSeconds; webexcc.u_ringingtime =actInfo.ringingtime; webexcc.u_activitydate =actInfo.ActivityDate; webexcc.u_callobject =actInfo.CallObject; webexcc.u_calltype =actInfo.CallType; webexcc.u_calldisposition=actInfo.CallDisposition; webexcc.u_incidentnumber=incnum; webexcc.u_interactionsnumber=intenum; sys_id=webexcc.insert(); } powrót sys_id; },
Zmiany metod na stronach interfejsu użytkownika
-
Przejdź do nawigatora filtrów i wyszukaj "Strony interfejsu użytkownika"
Wybierz opcję Strony interfejsu użytkownika w obszarze Interfejs użytkownika systemu.
-
Przefiltruj strony interfejsu użytkownika za pomocą nazwy i wyszukaj agentdesktop .
-
Zmień funkcję "nowActivities i screenpop" w skrypcie.
Aktualna funkcja:
function nowActivities(actInfo, ani) { var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'setWebexcctable'); gaout.addParam('actInfo', JSON.stringify(actInfo)); gaout.addParam('ani', stripPrefixes(ani)); gaout.getXML(SetCCsysId); }
Przykładowy kod zdarzenia:
function nowActivities(actInfo, ani) { var sysObjstr = window.localStorage.getItem("screenpopinteraction"); if(sysObjstr != null && sysObjstr != undefined) { var sysObjjson=JSON.parse(sysObjstr); actInfo.interaction_sys_id=sysObjjson.sysid; actInfo.incident_sys_id=sysObjjson.incsysid; } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'setWebexcctable'); gaout.addParam('actInfo', JSON.stringify(actInfo)); gaout.addParam('ani', stripPrefixes(ani)); gaout.getXML(SetCCsysId); } function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); // var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: 'incident', query: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }
Wyniki po aktualizacji
Poniższe dostosowania dotyczą wersji 1.0.5 i starszych. Aby uzyskać informacje na temat dostosowań dla nowszych wersji 1.0.7 i nowszych, wykonaj powyższe kroki. |
Dostosowywanie # 1 - Dodawanie niestandardowych reguł biznesowych dla przypadków użycia przepływu połączeń
Dla każdego nowego połączenia do łącznika WebexCC CRM w ServiceNow utwórz nowy rekord zdarzenia.
-
Wyszukiwanie reguł biznesowych w nawigatorze filtrów
-
Kliknij przycisk Nowy.
Przykładowy kod w celach informacyjnych:
function customcti() { var url = null; var name = sysparm_caller_name; eid = sysparm_caller_id; var phone = sysparm_caller_phone; var taskID = sysparm_task_id; var fQuery = sysparm_query; if (fQuery == null) fQuery = ''; var view = sysparm_view; if (view == null || view == '') view = "itil"; var userID = null; if (eid != null & eid != '') { userID = UserGetSysId("employee_number",eid); } if (userID == null && name != null && name != '') { userID = UserGetSysId("name", imię i nazwisko); } if (userID == null && phone != null && phone != '') { userID = UserGetSysId("phone", phone); } if (userID != null) { if (fQuery.length > 0) fQuery += "ˆ"; fQuery += "caller_id=" + userID; } if (url == null) { url = "incident.do?sys_id=-1"; if (fQuery != null) url += "&sysparm_query=" + fQuery; } answer = url; zwrotny adres URL; } function UserGetSysId(field, value) { var user = new GlideRecord("sys_user"); user.addQuery(field, value); user.query(); if (user.next()) return user.sys_id; else return null; }
Przykładowa konfiguracja reguły biznesowej
-
Włącz wywoływanie klienta
Przetwarzanie CTI (Computer Telephony Integration) dla incydentu jest oznaczone jako Prawda.
-
Zaktualizuj adres URL ekranu przy użyciu niestandardowej reguły CTI"cti.do?sysparm_cti_rule=createIncident&sysparm_caller_phone="
sysparm_cti_rule =nazwa , gdzie 'name' jest nazwą funkcji , ma być wywoływana dla CTI Przetwarzanie , a nie używanie skryptu domyślnego.
Zdefiniuj funkcję w sys_script wpisie oznaczonym jako wywoływany przezklienta.
Jeśli musisz wstawić, zaktualizować lub usunąć jakiekolwiek GlideRecords w funkcji, wywołaj oddzielną niekliencką funkcję wywoływania, aby wykonać aktualizacje.
Aby umożliwić wywoływanie skryptu przez klienta, należy zaznaczyć pole wyboru client-callable w formularzu wyświetlanym po wyświetleniu wpisu sys_script. Pole wyboru klient-callable nie jest domyślnie wyświetlane. Aby wyświetlić, należy zmodyfikować pola wyświetlane w formularzu za pomocą ikony koła zębatego i mechanizmu wiadra błota pośniegowego. |
Dostosowywanie # 2 - Dodawanie zmiennej CAD w tabeli aktywności centrum kontaktowego Webex
Ten artykuł zawiera szczegółowe informacje na temat procesu dodawania dodatkowej kolumny do tabeli ServiceNow — webexcc_activity, która jest tworzona po zainstalowaniu łącznika programu CRM Webex CC for ServiceNow.
Domyślnie tabela zawiera gotowe pola systemowe i wartości.
Można potencjalnie utworzyć więcej zmiennych specyficznych dla biznesu (zmiennych CAD) wewnątrz projektanta WebexCC Flow i dodać te zmienne CAD w dzienniku aktywności po wywołaniu ServiceNowi utrwalić to w danych tabeli aktywności po połączeniu.
|
-
Edytuj tabelę w wersji deweloperskiej ServiceNow.
-
Przejdź do Centrum
Webex. -
Wybierz tabelę aktywności WebexCC.
-
Na przykład CustomerName.
-
Wybierz Układ listy dla aktywności WebexCC.
Ten krok nie jest wymagany w przypadku korzystania z zestawu aktualizacji XML — do propUtils należy dodać tylko jeden wiersz "webexcc.u_customername=actInfo.CustomerName". |



Zobacz wiersz z:webexcc.u_customername=actInfo.CustomerName; z komentarzem wspierającym.
var propUtils2 = Class.create(); propUtils2.prototype = Object.extendsObject(global. AbstractAjaxProcessor,{ getWebexccProp: function () { var webexccprop = {}; webexccprop.instanceurl= 'https://'+gs.getProperty('instance_name')+'.service-now.com/'; webexccprop.url=gs.getProperty('x_caci_webexcc.agentdesktop_url'); webexccprop.popupurl=gs.getProperty('x_caci_webexcc.screenpop_url'); return JSON.stringify(webexccprop); }, setWebexcctable: function () { var sys_id=0; var actInfo = JSON.parse(this.getParameter('actInfo')); var webexcc = new GlideRecordSecure(gs.getProperty('x_caci_ webexcc.webexccactivitytable')); webexcc.addQuery("callobject", actInfo.CallObject); webexcc.query(); if(!webexcc.next()) { webexcc.ani = actInfo.ani; webexcc.dnis =actInfo.dnis; webexcc.queuename =actInfo.queuename; webexcc.wrapuptime =actInfo.wrapuptime; webexcc.callduration =actInfo.CallDurationInSeconds; webexcc.ringingtime =actInfo.ringingtime; webexcc.activitydate =actInfo.ActivityDate; webexcc.callobject =actInfo.CallObject; webexcc.calltype =actInfo.CallType; webexcc.calldisposition=actInfo.CallDisposition; // Ten wiersz jest dodawany - aby zapisać go w dzienniku aktywności webexcc. u_customername=actInfo.CustomerName; sys_id=webexcc.insert(); Działania w rejestrze incydentów; var actInfoString =this.getParameter('actInfo'); var suser = new GlideRecordSecure("sys_user"); suser.addQuery("phone", this.getParameter('ani')); suser.query(); if(suser.next()) { var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', suser.sys_id); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { var jsonPretty = JSON.stringify(JSON.parse(acting string),null,2); inc.comments =jsonPretty; inc.update(); } } } powrót sys_id; }, wpisz: 'propUtils2' });



Wyświetl nowo dodaną zmienną CAD w tabeli Aktywność WebexCC.

