Integrate Webex Contact Center with ServiceNow (Version 1—Legacy)
Wymagania wstępne
Obecnie ta funkcja ma zastosowanie tylko do agentów.
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 i portalu zarządzania Webex Contact Center. Adresy URL portalu zarządzania są specyficzne dla danego regionu.
-
Agent z dostępem do pulpitu. Adres URL pulpitu jest specyficzny dla danego regionu.
-
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)
-
- Wersje ServiceNow obsługiwane przez Webex Contact Center to Vancouver, Utah, Tokya, Washington i Xanadu. Aby uzyskać więcej informacji, zobacz Webex Contact Center Integracja z usługą ServiceNow.
Wykonaj 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ębiorstwa.
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 zestawu aktualizacji systemu XML dostępny w repozytorium github w tej lokalizacji: 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 |
3 |
Kliknij łącze Importuj zestaw aktualizacji z XML . |
4 |
Kliknij przycisk Wybierz plik, wybierz plik Zestaw aktualizacji systemu XML, a następnie kliknij przycisk Przekaż.
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 |
2 |
Na stronie Właściwości systemu posortuj właściwości według daty aktualizacji. Upewnij się, że widzisz następujące właściwości Webex Contact Center: |
3 |
Kliknij przycisk agentdesktop_url , aby otworzyć stronę agentdesktop_url Właściwości systemu. |
4 |
W polu Wartość wprowadź adres URL pulpitu Webex Contact Center 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 |
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 Webex Contact Center. Aby uzyskać więcej informacji, zobacz Konfigurowanie układu pulpitu ServiceNow na 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 portalu zarządzania Webex Contact Center. |
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ę. Możesz teraz uruchomić pulpit Webex Contact Center w konsoli ServiceNow. |
8 |
W polu Nawigator filtrów przejdź do . |
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 instancji deweloperskiej z pola Nawigator filtrów w lewym górnym rogu okna przejdź do Wtyczek. |
4 |
Wyszukaj wtyczkę Openframe, która ma tytuł Openframe. Może być konieczne przewinięcie listy. |
5 |
Kliknij Zainstaluj , aby zainstalować wtyczkę Openframe. |
6 |
W oknie dialogowym Aktywuj wtyczkę kliknij Aktywuj. |
7 |
Po zakończeniu aktywacji wtyczki kliknij opcję Zamknij i ponownie wczytaj formularz w oknie dialogowym Aktywacja wtyczki . |
8 |
Aby sprawdzić aktywację wtyczki, w polu Nawigator filtrów znajdującym się 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 . |
W przypadku instancji z licencją Enterprise aplikacja Webex Contact Center może zostać zainstalowana bezpośrednio ze sklepu ServiceNow Store.
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 wprowadź |
2 |
Na stronie Właściwości systemu posortuj właściwości według daty aktualizacji. Upewnij się, że widzisz następujące właściwości Webex Contact Center: |
3 |
Kliknij agentdesktop_url , aby otworzyć stronę Właściwości systemowe agentdesktop_url . |
4 |
W polu Wartość wprowadź adres URL pulpitu Webex Contact Center zgodnie z regionem, w którym działasz.
|
5 |
Kliknij Aktualizuj , aby zapisać zmiany. |
6 |
(Opcjonalnie) Aby zmienić nazwę tabeli aktywności, edytuj właściwości x_caci_webexcc.webexccactivitytable w razie potrzeby.
|
7 |
(Opcjonalnie) Dodaj grupy użytkowników w następujący sposób:
|
1 |
Z pola 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 URL kliknij przycisk Zablokuj i dodaj |
5 |
(Opcjonalnie) Wybierz grupy użytkowników/agentów, którym chcesz przypisać konfigurację. |
6 |
Kliknij przycisk Wyślij. Adres URL jest wyświetlany jako link. |
7 |
Z Nawigator filtrów pole, przejdź do . |
8 |
(Opcjonalnie) W Grupa użytkowników lista, przenieś grupy użytkowników, które mogą uzyskać dostęp do pulpitu Webex Contact Center z Dostępny Do Wybrany. |
9 |
Przed przystąpieniem do korzystania z telefonu OpenFrame należy przesłać plik JSON niestandardowego układu pulpitu ServiceNow do portalu zarządzania Webex Contact Center. Aby uzyskać więcej informacji, zobacz Konfigurowanie układu pulpitu ServiceNow na Webex Contact Center. |
1 |
Pobierz układ pulpitu dla ServiceNow ze strony 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 portalu zarządzania Webex Contact Center. |
4 |
Na pasku nawigacyjnym Portalu zarządzania wybierz opcję . |
5 |
Kliknij Nowy układ i wprowadź szczegóły układu pulpitu. |
6 |
Prześlij plik JSON układu pulpitu ServiceNow. |
7 |
Kliknij Zapisz , aby zapisać konfigurację. Teraz możesz uruchomić pulpit Webex Contact Center w konsoli ServiceNow. |
8 |
Z pola Nawigator filtrów przejdź do . |
1 |
Z pola Nawigator filtrów przejdź do Incydenty > Otwórz incydent. |
2 |
Kliknij prawym przyciskiem myszy pole dzwoniącego i kliknij Konfiguruj słownik. |
3 |
Dodaj atrybuty rozdzielone przecinkami Teraz możesz zacząć używać pulpitu Webex Contact Center w konsoli ServiceNow. |
4 |
Z pola Nawigator filtrów przejdź do . |
Logowanie do Agent Desktop za pomocą WebRTC obsługujemy wyłącznie w przypadku łączników Salesforce (SFDC) i Microsoft Dynamics (MS Dynamics).
Agent Desktop w konsoli ServiceNow
Przed wykonaniem połączenia wychodzącego upewnij się, że wykonałeś następujące czynności:
-
Utwórz punkt wejścia wychodzącego i skonfiguruj strategię punktu wejścia wychodzącego.
-
Włącz outdial ANI dla profilu agenta.
-
Ustaw outdial ANI na mapowanie numeru wybierania na punkt wejścia.
Aby uzyskać więcej informacji, zapoznaj się z rozdziałem Provisioning w Podręczniku konfiguracji i administracji Cisco Webex Contact Center.
Z pola Nawigator filtrów przejdź do .
Informacje na temat korzystania z pulpitu można znaleźć w Agencie Tab w pomocy Webex Contact Center.
Omówienie
W tym artykule opisano kilka sposobów dostosowywania reguł biznesowych dla łącznika ServiceNow CRM. W dokumencie szczegółowo opisano, w jaki sposób można dostosowywać przypadki użycia na podstawie reguł biznesowych specyficznych dla ServiceNow.
Klient musi samodzielnie zarządzać tymi przypadkami użycia w ramach ServiceNow. Konfiguracja jest specyficzna dla ServiceNow i nie wymaga oprogramowania ani wiedzy specjalistycznej Webex Contact Center.
Jest to dokumentacja referencyjna mająca pomóc w modyfikowaniu reguł biznesowych. Deweloperzy ServiceNow będą tworzyć i zarządzać zasadami biznesowymi oraz zapewniać wsparcie.
Cisco udostępnia jedynie przykładową dokumentację.
W poniższych sekcjach opisano szczegółowo sposób konfigurowania, włączania i zarządzania widżetem Akcje dla wystąpień deweloperskich i korporacyjnych.
Zatwierdź zestaw aktualizacji dla widżetu Akcje
W przypadku licencjonowanych instancji korporacyjnych zainstaluj najnowszą wersję aplikacji Webex Contact Center ze sklepu ServiceNow.
Aby skonfigurować widżet Akcje dla wystąpień programistycznych, pobierz najnowszy plik zestawu aktualizacji systemu XML dostępny w repozytorium github w tej lokalizacji: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow/ActionsWidget. Nazwa pliku to webexcc-servicenow-update-setv7-1-ActionsWidget.XML. Aby zatwierdzić zestaw aktualizacji dla widżetu Akcje, zapoznaj się z krokami od 2 do 9 w sekcji Zatwierdzanie zestawu aktualizacji.
Włącz widżet Akcje
Użyj właściwości isWidgetDisplayEnabled , aby włączyć widżet Akcje. Nie wolno modyfikować wartości tej właściwości w sekcji headless niestandardowego układu pulpitu. Właściwość ta jest zawsze ustawiona na false w sekcji headless niestandardowego układu pulpitu. Wartość właściwości należy aktualizować wyłącznie w sekcji panelu niestandardowego układu pulpitu.
Po włączeniu widżetu Akcje w niestandardowym układzie pulpitu możesz wykonywać następujące czynności:
- Zarządzaj rekordami aktywności — kliknij Wyświetl/edytuj rekord aktywności , aby wyświetlić listę rekordów aktywności powiązanych z osobą dzwoniącą.
- Kojarzenie obiektów CRM — kliknij Kojarzenie z rekordami aktywności , aby dodać obiekty CRM, takie jak typ połączenia (przychodzące lub wychodzące), obiekt połączenia, notatki dotyczące połączenia itd. do rekordu aktywności.
- Zarządzaj incydentami — kliknij Utwórz incydent. Tworzony jest nowy incydent z wstępnie wypełnionymi danymi osoby dzwoniącej. Możesz wprowadzić wymagane aktualizacje do incydentu. Możesz zmienić typ rekordu z incydentu na sprawę, moduł HR itd., zależnie od swoich potrzeb. Aby zmienić typ rekordu, zmodyfikuj wartość typRekordu właściwość w konfiguracji widżetu Akcje. Na przykład:
{ "comp": "md-tab-panel", "attributes": { "slot": "panel", "class": "widget-pane" }, "children": [ { "comp": "agentx-custom-desktop", "script": "https://cx-crmconnector.ciscoccservice.com/servicenow/v5/dist/index.js", "properties": { "isWidgetDisplayEnabled": true, "typeOfRecord" : "Utwórz incydent" }, "wrapper": { "title": "Akcje SNOW!", "maximizeAreaName": "app-maximize-area" } } ] }
- Dodawaj notatki do trwających rozmów — możesz zapisać dodatkowe informacje o rozmowie w polu tekstowym i podsumować rozmowę. Notatki te można zobaczyć jako notatki dodane do rejestru aktywności.
Zmiana kodu w ServiceNow
Skrypt zawiera zmiany-
Przejdź do nawigatora filtrów i wyszukaj
Skrypt zawiera
.Wybierz opcję Skrypt zawiera w interfejsie użytkownika systemu.
-
Filtruj Nazwę i wyszukaj
propUtils
. -
Zmień metodę
UżytkownikGetSysId
w Skrypcie.Aktualne:
UserGetSysId: function () { var opened_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('pole'),this.getParameter('wartość')); 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 dla incydentu:
UserGetSysId: function () { var opened_for; //Zmiany związane z incydentem 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;//zwróć 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='Otrzymano połączenie z '+ this.getParameter('wartość'); 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 Interfejsie użytkownika systemu.
-
Filtruj Nazwę i wyszukaj
agentdesktop
. -
Zmień
ekranizacja
Funkcja w Skrypcie klienta.Obecna funkcja:
// funkcja wyskakującego ekranu 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 dla incydentu:
// funkcja wyskakującego ekranu 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(); // W przypadku zmiany związanej z incydentem var sysObj = JSON.parse(gaout.getAnswer()); jeśli(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ jednostka: 'incydent', zapytanie: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }inaczej{ openFrameAPI.openServiceNowForm({ jednostka: 'incydent', zapytanie: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }); } }
Jeśli informacje o dzwoniącym znajdują się w systemie CRM i istnieje już otwarty nowy incydent z tym kontaktem, aplikacja otwiera incydent w toku
Jeżeli w systemie CRM nie ma informacji o dzwoniącym, aplikacja otwiera nowe zdarzenie
Jeżeli informacje o dzwoniącym znajdują się w systemie CRM, aplikacja otwiera nowy incydent z wstępnie wypełnionymi szczegółami
Omówienie
W tym przypadku użycia szczegółowo opisano proces dodawania dodatkowej kolumny do tabeli ServiceNow - webexcc_imp_activity i tworzenia sn_openframe_phone_log po zainstalowaniu łącznika Webex CC dla ServiceNow CRM.
Domyślnie tabela zawiera pewne gotowe pola i wartości systemowe.
Możesz utworzyć więcej zmiennych specyficznych dla firmy (zmienne CAD) w projektancie WebexCC Flow i dodać zmienne CAD w dzienniku aktywności wywołań POST usługi ServiceNow, a także zapisać je w danych tabeli aktywności wywołań POST.
Jest to jedynie dokumentacja referencyjna, która pokazuje, jak to zrobić dla przykładowej zmiennej CAD o nazwie Nazwa klienta, która przechowuje nazwę klienta wewnątrz IVR i przesyła tę nazwę do ServiceNow.
Oczekuje się, że programiści partnera+klienta ServiceNow skonfigurują i będą zarządzać tą konfiguracją, ponieważ stanowi ona dostosowanie do istniejącego łącznika.
Cisco przedstawia wyłącznie techniki dostosowywania i rozszerzania łącznika.
W momencie publikacji tego artykułu zespół Cisco zweryfikował możliwość dodania zmiennej CAD do dziennika aktywności i tabeli aktywności za pomocą 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
Aktywność WebexCC IMP
tabela -
Dodaj nową kolumnę, na przykład,
NazwaKlienta
Dodaj kolumnę do dziennika telefonicznego
-
Edytuj tabelę rejestru połączeń telefonicznych.
-
Dodaj nową kolumnę, na przykład,
NazwaKlienta
.
Mapa transformacji aktywności WebexCC
Dodaj nową kolumnę, na przykład, NazwaKlienta
Mapowanie terenowe.
Personalizuj kolumny listy
Zgodnie z zaleceniami Service Now należy zmienić akcję wyboru z „utwórz” na „ignoruj”.
Konfiguruj listę dzienników telefonicznych
Przejdź do skryptu Dołącz
Dodaj tylko jedną linię webexcc.u_customername=actInfo.NazwaKlienta
Do propUtils.
Zobacz linię: webexcc.u_customername=actInfo.CustomerName; z komentarzem pomocniczym.
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
Pilność incydentuWpływ incydentu
Aktualizacja skryptu usługi Teraz
Aktualizacje skryptu obejmują:
-
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('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; 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ń
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 Aktywność WebexCC IMP
stół
Otwórz okno Aktywność WebexCC IMPstół
Kliknij Aktualizuj .
Dodaj nowe kolumny do Dziennik telefonu
stół
Otwórz okno Dziennik telefonu
stół
Mapa przekształcania aktywności WebexCC
Otwórz Przekształć mapę
Z nawigatora filtrów
Kliknij na WebexCC Activity TransformMap
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.
-
Filtruj 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ń
nowDziałania 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ń
Tworzenie nowego rekordu zdarzenia dla każdego połączeniaDla 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 (Computer Telephony Integration) dla zdarzenia jest oznaczone jako Prawda.
Zaktualizuj adres URL screenpop za pomocą 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 przetwarzania , a nie przy użyciu domyślnego skryptu.
Zdefiniuj funkcję w sys_script wpisie oznaczonym jako wywoływany przezklienta.
Jeśli musisz Insert, 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 - Dodaj zmienną CAD w tabeli aktywności Webex Contact Center
OmówienieTen artykuł zawiera szczegółowe informacje na temat procesu dodawania dodatkowej kolumny do tabeli ServiceNow — webexcc_activity tworzonej podczas instalacji łącznika programu CRM Webex CC for ServiceNow.
Domyślnie tabela zawiera gotowe pola systemowe i wartości.
Potencjalnie można utworzyć więcej zmiennych biznesowych (zmiennych CAD) wewnątrz projektanta WebexCC Flow i dodać te zmienne CAD w dzienniku aktywności połączeń ServiceNowPOST i zachować to do danych tabeli aktywności połączeń POST.
-
Jest to tylko dokumentacja referencyjna - i pokazuje, jak to zrobić dla przykładowej zmiennej CAD o nazwie Nazwa klienta, która przechowuje nazwę klienta wewnątrz IVR i publikuje to w ServiceNow.
-
Programiści partner + klient ServiceNow skonfigurują tę konfigurację i będą nią zarządzać, ponieważ jest to dostosowanie do istniejącego łącznika.
-
Cisco dostarczy tylko techniki dostosowywania i rozszerzania złącza.
-
W tym artykule zespół Cisco potwierdził obsługę dodawania zmiennej CAD do dziennika aktywności i tabeli aktywności przy użyciu techniki opisanej poniżej.
Edytuj tabelę w wersji deweloperskiej ServiceNow.
Przejdź do strony
.Wybierz tabelę aktywności WebexCC.
Na przykład CustomerName.
Wybierz Układ listy dla aktywności WebexCC.
Ten krok nie jest wymagany, jeśli używasz zestawu aktualizacji XML — tylko jeden wiersz jest wymagany do dodania "webexcc.u_customername=actInfo.CustomerName" do propUtils.

Przykładowy skrypt
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 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(acting string),null,2); inc.comments =jsonPretty; inc.update(); } } } powrót sys_id; }, wpisz: 'propUtils2' });
Edytowanie strony interfejsu użytkownika przy użyciu nowej nazwy skryptu
Tworzenie zmiennej CAD w projektancie Flow
Dodawanie zmiennej CAD do układu pulpitu
Zrzuty ekranu demonstracyjne
Wyświetl nowo dodaną zmienną CAD w tabeli Aktywność WebexCC.
