Integracja Webex Contact Center z ServiceNow (wersja 1 — starsze wersje)
Wymagania wstępne
Obecnie ta funkcja dotyczy tylko agentów.
Przed zintegrowaniem Webex Contact Center z konsolą ServiceNow CRM upewnij się, że masz następujące elementy:
-
Dostęp do Webex Contact Center.
-
Administrator ma dostęp do Control Hub pod adresem https://admin.webex.com oraz do portalu zarządzania Webex Contact Center. 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
-
Singapur: https://portal-v2.wxcc-sg1.cisco.com
-
-
Agent z dostępem do pulpitu . Adres URL pulpitu jest specyficzny dla Twojego regionu.
-
Ameryka Północna: https://desktop.wxcc-us1.cisco.com
-
Wielka Brytania: https://desktop.wxcc-eu1.cisco.com
-
Japonia: https://desktop.wxcc-jp1.cisco.com
-
Singapur: https://desktop.wxcc-sg1.cisco.com
-
-
Dostęp agenta do następującej domeny dodanej do listy dozwolonych zasad zabezpieczeń zawartości:
-
*.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. Aby utworzyć konto, przejdź do portalu deweloperów ServiceNow pod adresem https://developer.servicenow.com/dev.do i kliknij zarejestruj się i rozpocznij budowanie.
-
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)
-
- Edycje ServiceNow obsługiwane przez Webex Contact Center to Vancouver, Utah, Tokya, Waszyngton i Xanadu. Aby uzyskać więcej informacji, zobacz Integracja Webex Contact Center z ServiceNow.
Wykonaj jedną z dwóch poniższych metod:
W przypadku wystąpień deweloperów zalecamy wykonanie czynności opisanych w przewodniku wystąpienia dewelopera.
Jeśli jesteś właścicielem wystąpienia z licencją korporacyjną, postępuj zgodnie z wytycznymi dotyczącymi wystąpień z licencją korporacyjną.
Nie zalecamy mieszania aplikacji licencjonowanej w przedsiębiorstwie z wystąpieniami sandbox dla programistów.
W poniższych sekcjach opisano kroki instalowania łącznika ServiceNow dla wystąpień programistów.
1 |
Zaloguj się na konto portalu programisty ServiceNow i otwórz konsolę Administracja . |
2 |
W obszarze Moje wystąpienie menu Konto kliknij polecenie Rozpocznij budowanie. |
3 |
W wystąpieniu programisty z pola Nawigator filtrów w lewym górnym rogu okna przejdź do sekcji Wtyczki. |
4 |
Wyszukaj wtyczkę Openframe o tytule Openframe. Może być konieczne przewinięcie listy. |
5 |
Kliknij przycisk Zainstaluj , aby zainstalować wtyczkę Openframe. |
6 |
W oknie dialogowym Aktywuj wtyczkę kliknij przycisk Aktywuj. |
7 |
Po zakończeniu aktywacji wtyczek kliknij opcję Zamknij i ponownie załaduj formularz w oknie dialogowym Aktywacja wtyczek . |
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 XML System Update Set dostępny w repo github pod tym adresem: 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 wybierz kolejno pozycje . |
3 |
Kliknij łącze Importuj zestaw aktualizacji z XML . |
4 |
Kliknij przycisk Wybierz plik, wybierz plik XML z ustawieniami aktualizacji systemu, a następnie kliknij przycisk Prześlij.
Zestaw aktualizacji pojawi się na liście Pobrane zestawy aktualizacji i jest w stanie Załadowane .
|
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 podgląd zestawu aktualizacji, aby sprawdzić zestaw aktualizacji pod kątem problemów. |
7 |
Po zakończeniu podglądu kliknij przycisk Zamknij w oknie dialogowym Aktualizuj podgląd zestawu. |
8 |
Kliknij przycisk Zatwierdź zestawaktualizacji. |
9 |
Po zakończeniu zatwierdzania zestawu aktualizacji kliknij przycisk Zamknij w oknie dialogowym Aktualizacja 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 agentdesktop_url , aby otworzyć stronę Właściwość agentdesktop_url systemu. |
4 |
W polu Wartość wprowadź adres URL Webex Contact Center Desktop zgodnie z regionem działania.
|
5 |
Kliknij przycisk Aktualizuj , aby zapisać zmiany. |
6 |
(Opcjonalnie) Aby zmienić nazwę tabeli Aktywność, edytuj właściwości webexexactivitytable zgodnie z wymaganiami. Na stronie Właściwości systemu kliknij 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 adresu URL kliknij przycisk Zablokuj i jako adres URL dodaj adres |
5 |
(Opcjonalnie) Wybierz użytkowników / grupy agentów, których chcesz przypisać konfigurację. |
6 |
Kliknij przycisk Przekaż. Adres URL pojawi się jako link. |
7 |
Przed próbą użycia telefonu OpenFrame należy przesłać 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 usługi 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 Management Portal wybierz kolejno opcje |
5 |
Kliknij przycisk Nowy układ i wprowadź szczegóły układu pulpitu. |
6 |
Prześlij plik JSON układu pulpitu ServiceNow. |
7 |
Kliknij przycisk Zapisz , aby zapisać konfigurację. Teraz można uruchomić pulpit Centrum kontaktowego Webex w konsoli ServiceNow. |
8 |
W polu Nawigator filtrów przejdź do pozycji . |
W poniższych sekcjach opisano kroki instalowania łącznika ServiceNow dla licencjonowanych wystąpień przedsiębiorstwa.
1 |
Zaloguj się na konto portalu programisty ServiceNow i otwórz konsolę Administracja . |
2 |
W obszarze Moje wystąpienie menu Konto kliknij polecenie Rozpocznij budowanie. |
3 |
W wystąpieniu programisty z pola Nawigator filtrów w lewym górnym rogu okna przejdź do sekcji Wtyczki. |
4 |
Wyszukaj wtyczkę Openframe o tytule Openframe. Może być konieczne przewinięcie listy. |
5 |
Kliknij przycisk Zainstaluj , aby zainstalować wtyczkę Openframe. |
6 |
W oknie dialogowym Aktywuj wtyczkę kliknij przycisk Aktywuj. |
7 |
Po zakończeniu aktywacji wtyczek kliknij opcję Zamknij i ponownie załaduj formularz w oknie dialogowym Aktywacja wtyczek . |
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 |
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ść agentdesktop_url systemu. |
4 |
W polu Wartość wprowadź adres URL Webex Contact Center Desktop zgodnie z regionem działania.
|
5 |
Kliknij przycisk Aktualizuj , aby zapisać zmiany. |
6 |
(Opcjonalnie) Aby zmienić nazwę tabeli aktywności, zmodyfikuj właściwości 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 adres |
5 |
(Opcjonalnie) Wybierz użytkowników / grupy agentów, których chcesz przypisać konfigurację. |
6 |
Kliknij przycisk Przekaż. Adres URL pojawi się jako link. |
7 |
W polu Nawigator filtrów przejdź do pozycji . |
8 |
(Opcjonalnie) Na liście Grupa użytkowników przenieś grupy użytkowników, które mogą uzyskać dostęp do Webex Contact Center Desktop, z dostępnych do wybranych. |
9 |
Przed próbą użycia telefonu OpenFrame należy przesłać 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 usługi 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 Management Portal wybierz kolejno opcje |
5 |
Kliknij przycisk Nowy układ i wprowadź szczegóły układu pulpitu. |
6 |
Prześlij plik JSON układu pulpitu ServiceNow. |
7 |
Kliknij przycisk Zapisz , aby zapisać konfigurację. Teraz można uruchomić pulpit Centrum kontaktowego Webex w konsoli ServiceNow. |
8 |
W polu Nawigator filtrów przejdź do pozycji . |
1 |
W polu Nawigator filtrów przejdź do pozycji Zdarzenia > Otwarte zdarzenie. |
2 |
Kliknij prawym przyciskiem myszy pole nawiązującego połączenie i kliknij opcję Konfiguruj słownik. |
3 |
Dodaj atrybuty rozdzielone przecinkami Teraz można zacząć korzystać z pulpitu centrum kontaktu Webex w konsoli ServiceNow. |
4 |
W polu Nawigator filtrów przejdź do pozycji . |
Obecnie nie jest obsługiwane logowanie do programu Agent Desktop za pomocą opcji Desktop (WebRTC).
Agent Desktop w konsoli ServiceNow
Przed wykonaniem połączeń z numerem outdial upewnij się, że wykonano następujące czynności:
-
Utwórz punkt wejścia na zewnątrz i skonfiguruj strategię wychodzącego punktu wejścia.
-
Włącz rozszerzenie ani dla profilu agenta.
-
Ustaw numer wyjściowy ANI na mapowanie numeru wybierania numeru do punktu wejścia.
Aby uzyskać więcej informacji, zobacz rozdział Obsługa administracyjna w podręczniku konfiguracji i administratora Cisco Webex Contact Center.
W polu Nawigator filtrów przejdź do pozycji .
Informacje na temat korzystania z pulpitu można znaleźć na karcie Agent w pomocy Webex Contact Center.
Przegląd
Ten artykuł obejmuje kilka sposobów na dostosowanie reguł biznesowych dla łącznika ServiceNow CRM. Szczegółowo opisano, w jaki sposób można dostosować przypadki użycia w oparciu o reguły biznesowe specyficzne dla usługi ServiceNow.
Klient musi samodzielnie zarządzać tymi przypadkami użycia w ServiceNow. Konfiguracja jest specyficzna dla usługi ServiceNow, a nie oprogramowania ani wiedzy fachowej Webex Contact Center.
Jest to dokumentacja referencyjna ułatwiająca modyfikację zasad biznesowych. Programiści ServiceNow będą tworzyć reguły biznesowe i zarządzać nimi oraz zapewniać wsparcie.
Firma Cisco udostępnia tylko przykładową dokumentację.
Poniższe sekcje zawierają szczegółowe informacje na temat konfigurowania i włączania widżetu czynności dla wystąpień programistów i przedsiębiorstw oraz zarządzania nimi.
Zatwierdź zestaw aktualizacji widgetu czynności
W przypadku licencjonowanych wystąpień przedsiębiorstwa zainstaluj najnowszą aplikację Webex Contact Center ze sklepu ServiceNow.
Aby skonfigurować widżet Czynności dla wystąpień programistów, pobierz najnowszy plik XML z aktualizacją systemu dostępny w repo github pod adresem: 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 Czynności, zobacz kroki od 2 do 9 w artykule Zatwierdź zestaw aktualizacji.
Włącz widget czynności
Użyj właściwości isWidgetDisplayEnabled , aby włączyć widget Czynności. Nie można modyfikować wartości tej właściwości w sekcji bez łba w niestandardowym układzie pulpitu. W sekcji bez łba niestandardowego układu pulpitu zawsze ustawiona jest wartość false. Wartość właściwości należy zaktualizować tylko w sekcji panelu niestandardowego układu pulpitu.
Po włączeniu widżetu Czynności w niestandardowym układzie pulpitu można wykonać następujące czynności:
- Zarządzanie rekordami aktywności — kliknij opcję Wyświetl/Edytuj rekord aktywności , aby wyświetlić listę rekordów aktywności powiązanych z dzwoniącym.
- Powiąż obiekty CRM — kliknij opcję Powiąż z rekordami aktywności , aby dodać do rekordu aktywności obiekty CRM, takie jak typ połączenia (przychodzące lub wychodzące), obiekt połączenia, notatki połączeń itd.
- Zarządzanie zdarzeniami — kliknij opcję Utwórz zdarzenie. Zostanie utworzony nowy incydent z wstępnie wypełnionymi szczegółami dzwoniącego. Można dokonać wymaganych aktualizacji zdarzenia. Można zmodyfikować typ rekordu od zdarzenia do przypadku, modułu HR itd. w zależności od wymagań. Aby zmienić typ rekordu, zmodyfikuj wartość właściwości typeOfRecord w konfiguracji widżetu Czynności. Na przykład:
{ "comp": "md-tab-panel", "atrybuty": { "slot": "panel", "class": "widget-pane" }, "dzieci": [ { "comp": "agentx-custom-desktop", "skrypt": "https://cx-crmconnector.ciscoccservice.com/servicenow/v5/dist/index.js", "właściwości": { "isWidgetDisplayEnabled": true, "typeOfRecord" : "Create Incident" }, "wrapper": { "title": "SNOW Actions !", "maximizeAreaName": "app-maximize-area" } } ] }
- Dodawanie notatek o połączeniach na żywo — można przechwytywać dodatkowe informacje o połączeniu w obszarze tekstowym i podsumować połączenie. Możesz zobaczyć te notatki dodane jako notatki do połączenia w rekordzie aktywności.
Zmiana kodu w ServiceNow
Skrypt Zawiera zmiany-
Przejdź do filtrowania nawigatora i wyszukaj
skrypt zawiera
.Wybierz pozycję Skrypt obejmuje w obszarze Interfejs użytkownika systemu.
-
Odfiltruj nazwę i wyszukaj
propUtils
. -
Zmień metodę
UserGetSysId
w skrypcie.Kurent:
Identyfikator użytkownikaGetSysId: 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=użytkownik.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:
Identyfikator użytkownikaGetSysId: funkcja () { var opened_for; //zmiany związane ze zdarzeniem var sysidlist = {}; var user = nowy GlideRecordSecure ("sys_user"); user.addQuery(this.getParameter('pole'),this.getParameter('wartość')); user.query(); if(user.next()) { opened_for= użytkownik.sys_id;//powrót użytkownika.sys_id; var inc = nowy 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='phone'; inc.short_description= 'Połączenie odebrane z '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist); },
-
Przejdź do filtrowania aplikacji Navigator i wyszukaj
stronę interfejsu użytkownika
.Wybierz strony interfejsu użytkownika w obszarze Interfejs użytkownika systemu.
-
Odfiltruj nazwę i wyszukaj
agentdesktop
. -
Zmień funkcję
screenpop
w skrypcie klienta.Bieżąca funkcja:
// funkcja ekranu pop screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('pole', 'telefon'); gaout.addParam('value', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: „interakcja”, zapytanie: 'sys_id='+sysid });
Przykładowy kod zdarzenia:
// funkcja ekranu pop 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(); // Dla zmiany związanej ze zdarzeniem var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: „zdarzenie”, zapytanie: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm ({ entity: „zdarzenie”, zapytanie: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }); } }
Jeśli w CRM istnieją informacje o rozmówcy, a z tym kontaktem zostało już otwarte nowe zdarzenie, aplikacja otwiera trwające zdarzenie
Jeśli informacje o rozmówcy nie istnieją w CRM, aplikacja otwiera nowe zdarzenie
Jeśli informacje o rozmówcy istnieją w CRM, aplikacja otwiera nowy incydent z wstępnie wypełnionymi szczegółami
Przegląd
W tym przypadku użycia opisano proces dodania dodatkowej kolumny do tabeli ServiceNow - webexcc_imp_activity i utworzenia sn_openframe_phone_log podczas instalacji łącznika Webex CC for ServiceNow CRM.
Domyślnie tabela zawiera pewne pola i wartości spoza pola systemowego.
Możesz tworzyć więcej zmiennych specyficznych dla biznesu (zmienne CAD) w projektancie przepływów WebexCC i dodać zmienne CAD do dziennika aktywności po połączeniu ServiceNow, a także utrwalić je 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 Customer Name, która przechowuje nazwę klienta w systemie IVR i publikuje ją na stronie ServiceNow.
Oczekuje się, że deweloperzy partner + klient ServiceNow skonfigurują tę konfigurację i nią zarządzają, ponieważ jest to dostosowanie do istniejącego łącznika.
Firma Cisco udostępnia tylko techniki dotyczące sposobu dostosowywania i przedłużania łącznika.
Zgodnie z tym artykułem zespół Cisco zatwierdził obsługę dodawania zmiennej CAD do dziennika aktywności i tabeli aktywności za pomocą opisanej poniżej techniki:
Dodaj kolumnę do aktywności WebexCC IMP
-
Edytuj tabelę w wersji dla programistów ServiceNow.
-
Przejdź do filtru Navigator i wyszukaj studio.
Wybierz
Centrum kontaktowe Webex
lub
-
Wybierz tabelę
Aktywność WebexCC IMP
-
Dodaj nową kolumnę, na przykład
CustomerName
Dodaj kolumnę do dziennika telefonu
-
Edytuj tabelę dzienników telefonu.
-
Dodaj nową kolumnę, na przykład
CustomerName
.
Mapa przekształcenia aktywności WebexCC
Dodaj nową kolumnę, na przykład mapowanie pól CustomerName
.
Spersonalizuj kolumny listy
Zgodnie z zaleceniem usługi Teraz zmień akcję Wybór z utwórz na zignoruj.
Konfigurowanie listy dzienników telefonu
Przejdź do uwzględniania skryptu
Dodaj tylko jedną linię webexcc.u_customername=actInfo.CustomerName
do propUtils.
Przykładowy skrypt
Zobacz wiersz: 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=użytkownik.sys_id;//powrót użytkownika.sys_id; // else // zwrot null; 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; }, setWebexcctable : funkcja () { 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.⦅_ph_37⦆ =actInfo.queuename; webexcc.queuename =actInfo.queuename; webexcc.wrapuptime =actInfo.wrapuptime; webexcc.callduration =actInfo.CallTime; webexcc.activitydate =actInfo.CallObject; webexcc.calltype =actInfo.CallType; webexcc.calldisposition=actInfo.CallDisposition; // Ta linia jest Dodana — aby przechwycić ją w dzienniku aktywności webexcc.u_customername=actInfo.nazwa_klienta; sys_id=webexcc.insert(); //Activities in Incident record; 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(); } } } zwrot sys_id; }, typ: 'propUtils' });
Tworzenie zmiennej CAD w Projektancie przepływów
Dodaj zmienną CAD do układu pulpitu
Przykład
"CadName1:SnowField1,CadName2:SnowField2" CadName1 jest CustomerName SnowField1 jest również używany jako CustomerName, który jest częścią przykładowego showen scirpt powyżej "actInfo.CustomerName".
Zrzuty ekranu demonstracyjnego
Wyświetl nowo dodaną zmienną CAD w tabeli aktywności WebexCC.
Utwórz zmienną CAD dla Projektanta przepływów
Pilny charakter zdarzeniaWpływ zdarzenia
Aktualizacja skryptu Usługa teraz
Aktualizacje skryptu obejmują
-
Przejdź do nawigatora filtrów i wyszukaj
skrypt zawiera
Wybierz opcję Skrypt zawiera w obszarze Interfejs użytkownika systemu.
-
Filtruj Nazwę za pomocą
propUtils
. -
Zmień metodę
UserGetSysId
w polu Script .Bieżący skrypt:
Identyfikator użytkownikaGetSysId: 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=użytkownik.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:
Identyfikator użytkownikaGetSysId: funkcja () { var opened_for; var sysidlist = {}; var user = nowy GlideRecordSecure ("sys_user"); user.addQuery(this.getParameter('pole'),this.getParameter('wartość')); user.query(); if(user.next()) { opened_for= użytkownik.sys_id;//powrót użytkownika.sys_id; var inc = nowy 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='phone'; 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('interaction'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist);//sysid; },
-
Przejdź do aplikacji Filter Navigator i wyszukaj
strony interfejsu użytkownika
.Wybierz opcję Strony interfejsu użytkownika w obszarze Interfejs użytkownika systemu.
-
Odfiltruj strony interfejsu użytkownika za pomocą nazwy i wyszukaj
agentdesktop
. -
Zmień funkcję
ekranu
w polu skryptu.Bieżąca funkcja:
// funkcja ekranu pop screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('pole', 'telefon'); gaout.addParam('value', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: „interakcja”, zapytanie: '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 != undefined) { IncUrgency=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', 'telefon'); 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: „zdarzenie”, zapytanie: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm ({ entity: „zdarzenie”, zapytanie: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }
Jeśli informacje o rozmówcy istnieją w CRM i nie ma nowego lub trwającego zdarzenia, aplikacja otwiera nowe zdarzenie
Zmień kod w ServiceNow
Dodaj nowe kolumny do tabeli Aktywność WebexCC IMP
Otwórz tabelę Aktywność WebexCC IMPDodaj nową kolumnę - InteractionsNumber Dodaj nową kolumnę - IncidentNumber
Kliknij Aktualizuj.
Dodaj nowe kolumny do tabeli Dziennik telefonu
Otwórz tabelę Dziennik telefonu
Mapa przekształcenia aktywności WebexCC
Otwórz mapę przekształceń
z poziomu nawigatora filtrów
Kliknij WebexCC Activity TransformMap
Kliknij opcję Aktualizuj.
Zmiany w skrypcie obejmują
-
Przejdź do filtrowania nawigatora i wyszukaj „skrypt zawiera”.
Wybierz pozycję Skrypt obejmuje w obszarze Interfejs użytkownika systemu.
-
Filtruj Nazwę za pomocą
propUtils
. -
Zmień metodę
setWebexcctable
.Nowy przykładowy kod zdarzenia:
setWebexcctable: funkcja () { 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 in Incident record; //var actInfoString =this.getParameter('actInfo'); var incsysid=actInfo.incident_sys_id; var interactionsysid=actInfo.interaction_sys_id; var incnum=""; var intenum=""; usuń 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','Zamknięte'); inte.work_notes='Aktualizuj stan na zamknięty.'; 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.-webexcc.u_queuename =actInfo.kolejka; 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=inicjacja; webexcc.u_interactionsnumber=intenum; sys_id=webexcc.insert(); } powrót sys_id; },
Zmiany metody na stronach interfejsu użytkownika
-
Przejdź do filtrowania Navigator i wyszukaj
strony interfejsu użytkownika
Wybierz opcję Strony interfejsu użytkownika w obszarze Interfejs użytkownika systemu.
-
Odfiltruj strony interfejsu użytkownika za pomocą
nazwy
i wyszukaj agentdesktop. -
Zmień funkcję
nowActivities i screenpop
w skrypcie.Bieżąca 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 sysObjson=JSON.parse(sysObjstr); actInfo.interaction_sys_id=sysObjjson.sysid; actInfo.incident_sys_id=sysObjjson.incsysid; } var gaout = nowy 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('pole', 'telefon'); gaout.addParam('value', callerani); gaout.getXMLWait(); // var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: „zdarzenie”, zapytanie: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm ({ entity: „zdarzenie”, zapytanie: '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 poniżej. Aby uzyskać dostosowania do nowszych wersji 1.0.7 i nowszych, wykonaj powyższe kroki.
Personalizacja nr 1 – Dodaj niestandardowe reguły biznesowe dla przypadków użycia przepływu połączeń
Tworzenie nowego rekordu incydentów dla każdego połączeniaDla każdego nowego połączenia z łącznikiem WebexCC CRM w ServiceNow utwórz nowy rekord incydentów.
Wyszukaj reguły biznesowe w nawigatorze filtrów
Kliknij przycisk Nowy.
Przykładowy kod odniesienia:
function customcti() { var url = null; nazwa var = 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; jeśli (widok == null || view == '') view = "itil"; var userID = null; if (eid != null && eid != '') { userID = UserGetSysId("employee_number",eid); } if (userID == null && nazwa != null && nazwa != '') { userID = UserGetSysId("name", nazwa); } 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; } odpowiedź = url; return url; } funkcja UserGetSysId(field, value) { var user = new GlideRecord("sys_user"); user.addQuery(pole, wartość); user.query(); if (user.next()) zwróci użytkownika.sys_id; else zwróć null; }
Przykładowa konfiguracja reguły biznesowej
Włącz dzwonienie Klienta
Przetwarzanie integracji telefonii komputerowej (CTI) w przypadku incydentu jest oznaczone jako Prawda.
Zaktualizuj adres URL screenpop przy użyciu niestandardowej reguły CTI " cti.do?sysparm_cti_rule=createIncident&sysparm_caller_phone="
Nazwa sysparm_cti_rule=nazwa , gdzie 'nazwa' to nazwa funkcji ma być wywoływana dla przetwarzania CTI zamiast używać skryptu domyślnego.
Zdefiniuj funkcję w sys_script pozycji oznaczonej jako klient dzwoniący.
Jeśli musisz wstawić, zaktualizować lub usunąć jakiekolwiek rekordy GlideRecord(y) w tej funkcji, zadzwoń do osobnej funkcji z połączeniem nieklienckim, aby wykonać aktualizacje.
Aby skrypt mógł być wywoływany przez klienta, należy zaznaczyć pole wyboru z możliwością wywołania przez klienta w formularzu wyświetlanym po sys_script wyświetleniu wpisu.
Pole wyboru, z którym można nawiązać połączenie przez klienta, domyślnie nie jest wyświetlane. Aby wyświetlić, należy zmodyfikować pola wyświetlane w formularzu za pomocą ikony koła zębatego i mechanizmu wiadra szlamowego.
Personalizacja nr 2 – Dodaj zmienną CAD w tabeli aktywności Webex Contact Center
PrzeglądW tym artykule opisano proces dodawania dodatkowej kolumny do tabeli ServiceNow - webexcc_activity która jest tworzona podczas instalacji Webex CC for ServiceNow CRM Connector.
Domyślnie tabela zawiera pola i wartości systemowe znajdujące się poza ramką.
Możesz potencjalnie utworzyć więcej zmiennych specyficznych dla biznesu (zmiennych CAD) w projektancie przepływów WebexCC i dodać te zmienne CAD do dziennika aktywności po połączeniuServiceNow i zachować je 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 Customer Name, która przechowuje nazwę klienta w systemie IVR i publikuje ją na stronie ServiceNow.
-
Deweloperzy partnera + klienta ServiceNow skonfigurują tę konfigurację i będą nią zarządzać, ponieważ jest to dostosowanie do istniejącego łącznika.
-
Firma Cisco udostępni tylko techniki dotyczące dostosowywania i rozszerzania łącznika.
-
Począwszy od tego artykułu zespół firmy Cisco zatwierdził obsługę dodawania zmiennej CAD do dziennika aktywności i tabeli aktywności za pomocą opisanej poniżej techniki.
Edytuj tabelę w wersji dla programistów ServiceNow.
Przejdź do
.Wybierz tabelę Aktywność WebexCC .
Na przykład CustomerName.
Wybierz układ listy dla aktywności WebexCC.
Ten krok nie jest wymagany, jeśli używasz kodu XML Update Set — do wartości propUtils należy dodać tylko jedną linię „webexcc.u_customername=actInfo.CustomerName”.
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 : funkcja () { 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.⦅_ph_37⦆ =actInfo.queuename; webexcc.queuename =actInfo.queuename; webexcc.wrapuptime =actInfo.wrapuptime; webexcc.callduration =actInfo.CallTime; webexcc.activitydate =actInfo.CallObject; webexcc.calltype =actInfo.CallType; webexcc.calldisposition=actInfo.CallDisposition; // Ta linia jest Dodana — aby przechwycić ją w dzienniku aktywności webexcc.u_customername=actInfo.nazwa_klienta; sys_id=webexcc.insert(); // Czynności dotyczące rekordu zdarzenia; 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(ciąg aktorski), null, 2); inc.comments =jsonPretty; inc.update(); } } } zwrot sys_id; }, typ: 'propUtils2' });
Edytuj stronę interfejsu użytkownika przy użyciu nowej nazwy skryptuTworzenie zmiennej CAD w Projektancie przepływów
Dodaj zmienną CAD do układu pulpitu
Zrzuty ekranu demonstracyjnego
Wyświetl nowo dodaną zmienną CAD w tabeli aktywności WebexCC.