Integrate Webex Contact Center with ServiceNow (Version 1—Legacy)
Wymagania wstępne
Łącznik CRM działa w oparciu o wersję widżetu określoną w układzie pulpitu JSON. Niezwykle ważne jest, aby wersja widżetu w układzie pulpitu była aktualizowana. Od listopada 2025 r. najnowsza wersja widżetu to 5.0.0 (V5).
Oczekuje się, że administratorzy upewnią się, że wszystkie układy pulpitu dla tego łącznika CRM używają tej wersji widżetu. Jeśli układ nie zostanie zaktualizowany w celu korzystania z najnowszej wersji, funkcje nie będą już obsługiwane i mogą przestać działać poprawnie.
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 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 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
|
| 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 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.
|
Instancje, które mają licencje dla przedsiębiorstw, mogą zainstalować 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 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 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
|
| 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 .
|
| 8 |
(Opcjonalnie) Na liście Grupa użytkowników przenieś grupy użytkowników, które mają dostęp do pulpitu Webex Contact Center, z 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 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 .
|
| 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
Możesz teraz rozpocząć korzystanie z pulpitu Webex Contact Center w konsoli ServiceNow. |
| 4 |
W polu Nawigator filtrów przejdź do .
|
- Obsługujemy logowanie do Agent Desktop przy użyciu łączników WebRTC dla Salesforce (SFDC) i Microsoft Dynamics (MS Dynamics).
- Obecnie ta funkcja ma zastosowanie tylko do agentów.
Agent Desktop w konsoli ServiceNow
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 Provisioning (Inicjowanie obsługi) w Podręczniku instalacji i administracji Cisco Webex Contact Center.
W polu Nawigator filtrów przejdź do .
Aby uzyskać informacje na temat korzystania z pulpitu, zobacz Agent Tab w pomocy Webex Contact Center.
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 Contact Center oprogramowania lub wiedzy.
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.
Cisco zawiera tylko przykładową dokumentację.
Poniższe sekcje zawierają szczegółowe informacje na temat konfigurowania, włączania i zarządzania widżetem Akcje dla wystąpień deweloperskich i korporacyjnych.
Zatwierdź widżet Aktualizacja zestawu czynności
W przypadku licencjonowanych wystąpień przedsiębiorstwa zainstaluj najnowszą aplikację Webex Contact Center ze sklepu ServiceNow.For the licensed enterprise instances, install the latest # app from theServiceNow store.
Aby skonfigurować widżet Akcje dla wystąpień deweloperskich, pobierz najnowszy plik zestawu aktualizacji systemu XML dostępny w repozytorium github pod tą lokalizacją: 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, zobacz kroki od 2 do 9 w temacie Zatwierdź zestaw aktualizacji.
Włącz widżet Czynności
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 bez głowy niestandardowego układu pulpitu. Właściwość jest zawsze ustawiona na false w sekcji bez głowy niestandardowego układu pulpitu. Wartość właściwości należy aktualizować 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.
- Skojarz obiekty CRM — kliknij opcję Skojarz z rekordami działań, aby dodać do rekordu działania obiekty CRM, takie jak typ połączenia (przychodzące lub wychodzące), obiekt połączenia, notatki dotyczące połączeń itp.
- Zarządzaj zdarzeniami — kliknij Utwórz zdarzenie. Zostanie utworzone nowe zdarzenie ze wstępnie wypełnionymi szczegółami osoby dzwoniącej. Możesz wprowadzić wymagane aktualizacje zdarzenia. Typ rekordu można modyfikować z incydentu na przypadek, moduł HR itd. zgodnie z własnymi wymaganiami. Aby zmienić typ rekordu, zmodyfikuj wartość właściwości typeOfRecord 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" : "Create Incident" }, "wrapper": { "title": "SNOW Actions !", "maximizeAreaName": "app-maximize-area" } } ] } - Dodaj notatki z połączenia na żywo — możesz przechwycić dodatkowe informacje o połączeniu w obszarze tekstowym i podsumować połączenie. Te notatki można zobaczyć jako notatki połączenia w rekordzie aktywności.
Zmiana kodu w ServiceNow
Skrypt zawiera zmiany-
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('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; //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ń
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.
W projektancie WebexCC Flow można utworzyć więcej zmiennych specyficznych dla biznesu (zmiennych CAD) i dodać zmienne CAD do dziennika aktywności połączeń ServiceNow POST, a także zapisać to w 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 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.
Cisco zawiera tylko techniki dostosowywania i rozszerzania łącznika.
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:
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 ikonę
Aktywność WebexCC IMP
stół
-
Dodaj nową kolumnę, na przykład
nazwa_klienta


Dodaj kolumnę do dziennika telefonu
-
Edytuj tabelę dziennika telefonu.


-
Dodaj nową kolumnę, na przykład
nazwa_klienta
.

Mapa przekształcania aktywności WebexCC

Dodaj nową kolumnę, na przykład nazwa_klienta
Mapowanie pól.


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
Dodawanie tylko jednego wiersza 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
Pilność incydentu
Wpływ incydentu

Aktualizacja skryptu usługi Teraz
Aktualizacje skryptu obejmują:
-
Przejdź do nawigatora filtrów i wyszukaj
dołączenia skryptuWybierz 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
stronyinterfejsu 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 incydentu (Computer Telephony Integration, CTI) 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.












































