Integrare Webex Contact Center cu ServiceNow (Versiunea 1—Moștenire)
Condiţii prealabile
În prezent, această caracteristică este aplicabilă numai agenților.
Înainte de a integra Webex Contact Center cu consola ServiceNow CRM, asigurați-vă că aveți următoarele:
-
Acces la Webex Contact Center.
-
Acces administrator la Control Hub la https://admin.webex.com și la Webex Contact Center Management Portal. URL-urile pentru Portalul de management sunt specifice regiunii dvs.
-
Un agent cu acces la Desktop. URL-ul pentru desktop este specific regiunii dvs.
-
Accesul agentului la următorul domeniu, care este adăugat în Lista permisă a politicii de securitate a conținutului:
-
*.service-now.com
Pentru mai multe informații despre cum se definește lista permisă, consultați articolul Setări de securitate pentru Webex Contact Center.
-
-
Un cont portal pentru dezvoltatori ServiceNow. Pentru a crea un cont, accesați portalul pentru dezvoltatori ServiceNow la https://developer.servicenow.com/dev.do și faceți clic pe Înregistrare și începeți să construiți.
-
Acces la următoarele fișiere la https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow:
-
Set de actualizări ServiceNow (XML)
-
Aspect desktop ServiceNow Contact Center (JSON)
-
- Edițiile ServiceNow pe care Webex Contact Center le acceptă sunt Vancouver, Utah, Tokya, Washington și Xanadu. Pentru mai multe informații, consultați Webex Contact Center Integrarea cu ServiceNow.
Urmați una dintre cele două metode de mai jos:
Pentru instanțele dezvoltatorilor, vă recomandăm să urmați pașii din ghidul instanțelor pentru dezvoltatori.
Dacă dețineți o instanță licențiată de întreprindere, urmați instrucțiunile pentru instanțele licențiate de întreprindere.
Nu vă recomandăm să combinați aplicația licențiată pentru întreprinderi cu instanțele sandbox pentru dezvoltatori.
Următoarele secțiuni descriu pașii pentru instalarea conectorului ServiceNow pentru instanțele dezvoltatorilor.
1 |
conectați-vă la contul portalului pentru dezvoltatori ServiceNow și deschideți consola de administrare . |
2 |
Din zona Instanța mea din meniul Cont , faceți clic pe Începere construire . |
3 |
În instanța de dezvoltator, din câmpul Navigator de filtre din partea stângă sus a ferestrei, navigați la Pluginuri. |
4 |
Căutați pluginul Openframe care are titlul Openframe. Poate fi necesar să parcurgeți lista. |
5 |
Faceți clic pe Instalare pentru a instala pluginul Openframe. |
6 |
În caseta de dialog Activare plugin , faceți clic pe Activare. |
7 |
Când activarea modulului este finalizată, faceți clic pe Închidere și reîncărcare formular în caseta de dialog Activare plugin. |
8 |
Pentru a verifica activarea modulului, din câmpul Filtru navigator din partea stângă sus a ferestrei, navigați la OpenFrame. |
9 |
Faceți clic pe Configurații și asigurați-vă că pluginul OpenFrame apare în lista Configurații OpenFrame. |
1 |
Descărcați cel mai recent fișier System Update Set XML disponibil pe depozitul github din această locație: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. Nume fișier: webexcc-servicenow-update-setV(X).XML |
2 |
În instanța ServiceNow, din câmpul Navigator de filtrare din partea stângă sus a ferestrei, navigați la Seturi de actualizări> |
3 |
Faceți clic pe linkul Import set de actualizări din XML . |
4 |
Faceți clic pe Alegere fișier, selectați fișierul System Update Set XML, apoi faceți clic pe Încărcare.
Setul de actualizări apare în lista Seturi de actualizări preluate și este în starea Încărcat .
|
5 |
Din lista Seturi de actualizări recuperate, faceți clic pe linkul Actualizare nume fișier set (link) pentru a deschide setul de actualizări. |
6 |
În partea din dreapta sus a ferestrei, faceți clic pe Previzualizare set actualizare pentru a verifica dacă există probleme în setul de actualizări. |
7 |
Faceți clic pe Închidere în caseta de dialog Actualizare previzualizare set după finalizarea examinării. |
8 |
Faceți clic pe Confirmare set de actualizări. |
9 |
Faceți clic pe Închidere în caseta de dialog Actualizare set comitere după finalizarea comiterii setului de actualizări. |
1 |
În câmpul Navigator filtre din partea stângă sus a ferestrei, tastați |
2 |
Pe pagina Proprietăți sistem, sortați proprietățile după data actualizării. Asigurați-vă că puteți vedea următoarele proprietăți Webex Contact Center: |
3 |
Faceți clic pe agentdesktop_url pentru a deschide pagina System Property agentdesktop_url . |
4 |
În câmpul Valoare , introduceți adresa URL pentru Webex Contact Center Desktop în funcție de regiunea de operare.
|
5 |
Faceți clic pe Actualizare pentru a salva modificările. |
6 |
(Opțional) Pentru a modifica numele tabelului de activități, editați proprietățile webexccactivitytable după cum este necesar. Pe pagina Proprietăți sistem, faceți clic pe webexccactivitytable. Modificați câmpul Valoare după cum este necesar. |
7 |
(Opțional) Adăugați grupuri de utilizatori în următoarele moduri:
|
1 |
Din câmpul Navigator filtru, navigați la . |
2 |
Faceţi clic pe Nou. |
3 |
Introduceți următoarele proprietăți pentru URL:
|
4 |
În dreapta câmpului URL , faceți clic pe butonul Blocare și adăugați |
5 |
(Opțional) Selectați grupurile de utilizatori / agenți pentru a atribui configurația. |
6 |
Faceţi clic pe Submit (Trimitere). URL-ul apare ca un link. |
7 |
Înainte de a încerca să utilizați telefonul OpenFrame, asigurați-vă că încărcați fișierul JSON particularizat ServiceNow Desktop Layout în Webex Contact Center Management Portal. Pentru mai multe informații, consultați Configurarea aspectului desktopului ServiceNow pe Webex Contact Center. |
1 |
Descărcați aspectul Desktop pentru ServiceNow de la https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
Actualizați proprietățile din fișierul Aspect desktop, dacă este necesar. |
3 |
Accesați portalul de management Webex Contact Center. |
4 |
Din bara de navigare Portal de management, selectați desktop. |
5 |
Faceți clic pe Aspect nou și introduceți detaliile pentru aspectul desktop. |
6 |
Încărcați fișierul JSON ServiceNow Desktop Layout. |
7 |
Faceți clic pe Salvare pentru a salva configurația. Acum puteți porni Webex Contact Center Desktop în consola ServiceNow. |
8 |
Din câmpul Filtru navigator , navigați la spațiul de . |
Următoarele secțiuni descriu pașii pentru instalarea conectorului ServiceNow pentru instanțele de întreprindere licențiate.
1 |
conectați-vă la contul portalului pentru dezvoltatori ServiceNow și deschideți consola de administrare . |
2 |
Din zona Instanța mea din meniul Cont , faceți clic pe Începere construire . |
3 |
În instanța de dezvoltator, din câmpul Navigator de filtre din partea stângă sus a ferestrei, navigați la Pluginuri. |
4 |
Căutați pluginul Openframe care are titlul Openframe. Poate fi necesar să parcurgeți lista. |
5 |
Faceți clic pe Instalare pentru a instala pluginul Openframe. |
6 |
În caseta de dialog Activare plugin , faceți clic pe Activare. |
7 |
Când activarea modulului este finalizată, faceți clic pe Închidere și reîncărcare formular în caseta de dialog Activare plugin. |
8 |
Pentru a verifica activarea modulului, din câmpul Filtru navigator din partea stângă sus a ferestrei, navigați la OpenFrame. |
9 |
Faceți clic pe Configurații și asigurați-vă că pluginul OpenFrame apare în lista Configurații OpenFrame. |
Instanțele care au licențe de întreprindere pot instala aplicația Webex Contact Center direct din ServiceNow Store.
Descărcați și instalați pachetul Webex Contact Center din magazinul ServiceNow: https://store.servicenow.com/sn_appstore_store.do#!/store/application/6c8e2a4edbc73410e1c75e25ca961947. |
1 |
În câmpul Navigator filtru din partea stângă sus a ferestrei, introduceți |
2 |
Pe pagina Proprietăți sistem, sortați proprietățile după data actualizării. Asigurați-vă că puteți vedea următoarele proprietăți Webex Contact Center: |
3 |
Faceți clic pe agentdesktop_url pentru a deschide pagina System Property agentdesktop_url . |
4 |
În câmpul Valoare , introduceți adresa URL pentru Webex Contact Center Desktop în funcție de regiunea de operare.
|
5 |
Faceți clic pe Actualizare pentru a salva modificările. |
6 |
(Opțional) Pentru a modifica numele tabelului de activități, editați proprietățile tabelului x__webexcc.webexccactivitytable , după cum este necesar.
|
7 |
(Opțional) Adăugați grupuri de utilizatori în următoarele moduri:
|
1 |
Din câmpul Navigator filtru, navigați la . |
2 |
Faceţi clic pe Nou. |
3 |
Introduceți următoarele proprietăți pentru URL:
|
4 |
În dreapta câmpului URL , faceți clic pe butonul Blocare și adăugați |
5 |
(Opțional) Selectați grupurile de utilizatori / agenți pentru a atribui configurația. |
6 |
Faceţi clic pe Submit (Trimitere). URL-ul apare ca un link. |
7 |
Din câmpul Filtru navigator , navigați la spațiul de . |
8 |
(Opțional) În lista Grup de utilizatori , mutați grupurile de utilizatori care pot accesa desktopul Webex Contact Center de la Disponibil la Selectat. |
9 |
Înainte de a încerca să utilizați telefonul OpenFrame, asigurați-vă că încărcați fișierul JSON particularizat ServiceNow Desktop Layout în Webex Contact Center Management Portal. Pentru mai multe informații, consultați Configurarea aspectului desktopului ServiceNow pe Webex Contact Center. |
1 |
Descărcați aspectul Desktop pentru ServiceNow de la https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
Actualizați proprietățile din fișierul Aspect desktop, dacă este necesar. |
3 |
Accesați portalul de management Webex Contact Center. |
4 |
Din bara de navigare Portal de management, selectați desktop. |
5 |
Faceți clic pe Aspect nou și introduceți detaliile pentru aspectul desktop. |
6 |
Încărcați fișierul JSON ServiceNow Desktop Layout. |
7 |
Faceți clic pe Salvare pentru a salva configurația. Acum puteți porni desktopul Webex Contact Center în consola ServiceNow. |
8 |
Din câmpul Filtru navigator , navigați la spațiul de . |
1 |
Din câmpul Filtru navigator , navigați la Incidente> Incident deschis. |
2 |
Faceți clic dreapta pe câmpul apelantului și faceți clic pe Configurare dicționar. |
3 |
Adăugați atribute separate prin virgulă Acum puteți începe să utilizați Webex Contact Center Desktop din consola ServiceNow. |
4 |
Din câmpul Filtru navigator , navigați la spațiul de . |
Acceptăm conectarea la Agent Desktop folosind doar conectorii WebRTC for Salesforce (SFDC) și Microsoft Dynamics (MS Dynamics).
Agent Desktop în consola ServiceNow
Înainte de a efectua apeluri de apelare, asigurați-vă că efectuați următoarele:
-
Creați punctul de intrare pentru apelare și configurați o strategie pentru punctul de intrare pentru apelare.
-
Activați ANI de apelare pentru Profilul agentului.
-
Setați ANI apelare la o mapare de la numărul de apelare la punctul de intrare.
Pentru mai multe informații, consultați capitolul Asigurarea accesului din Cisco Webex Contact Center Ghid de configurare și administrare.
Din câmpul Filtru navigator , navigați la spațiul de .
Pentru informații despre modul de utilizare a desktopului, consultați Agentul Tab din ajutorul Webex Contact Center.
Prezentare generală
Acest articol prezintă mai multe moduri de a vă particulariza regulile de afaceri pentru conectorul ServiceNow CRM. Acesta detaliază modul în care puteți personaliza cazurile de utilizare pe baza regulilor de afaceri specifice ServiceNow.
Clientul trebuie să gestioneze singur aceste cazuri de utilizare pe ServiceNow. Configurația este specifică ServiceNow și nu software-ului sau expertizei Webex Contact Center.
Aceasta este o documentație de referință pentru a ajuta la modificarea regulilor de afaceri. Dezvoltatorii ServiceNow vor crea și gestiona regulile de afaceri și vor oferi asistență.
Cisco oferă doar exemple de documentație.
Următoarele secțiuni oferă detalii despre configurarea, activarea și gestionarea widgetului Acțiuni pentru instanțele dezvoltatorilor și întreprinderilor.
Confirmarea setului de actualizare pentru widgetul Acțiuni
Pentru instanțele de întreprindere licențiate, instalați cea mai recentă aplicație Webex Contact Center din magazinul ServiceNow.
Pentru a configura widgetul Acțiuni pentru instanțele dezvoltatorilor, descărcați cel mai recent fișier System Update Set XML disponibil în depozitul github din această locație: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow/ActionsWidget. Numele fișierului este webexcc-servicenow-update-setv7-1-ActionsWidget.XML. Pentru a confirma setul de actualizare pentru widgetul Acțiuni, consultați pașii 2-9 din Confirmarea setului de actualizări.
Widget Activare acțiuni
Utilizați proprietatea isWidgetDisplayEnabled pentru a activa widgetul Acțiuni. Nu trebuie să modificați valoarea acestei proprietăți în secțiunea headless a aspectului desktop personalizat. Proprietatea este întotdeauna setată la false în secțiunea headless a aspectului desktop particularizat. Ar trebui să actualizați valoarea proprietății numai în secțiunea panou a aspectului desktop personalizat.
După ce activați widgetul Acțiuni în aspectul desktop particularizat, puteți efectua următoarele acțiuni:
- Gestionare înregistrări activitate — Faceți clic pe Vizualizare/editare înregistrare activitate pentru a vizualiza lista înregistrărilor de activitate asociate apelantului.
- Asociere obiecte CRM — Faceți clic pe Asociere la înregistrările de activitate pentru a adăuga obiecte CRM, cum ar fi tipul apelului (de intrare sau de ieșire), obiectul de apel, notele de apel etc. la înregistrarea activității.
- Gestionați incidentele - Faceți clic pe Creare incident. Se creează un incident nou cu detaliile apelantului prepopulate. Puteți face actualizările necesare ale incidentului. Puteți alege să modificați tipul de înregistrare de la incident la caz, modul HR și așa mai departe în funcție de cerințele dvs. Pentru a modifica tipul de înregistrare, modificați valoarea proprietății typeOfRecord în configurația widgetului Acțiuni. De exemplu:
{ "comp": "md-tab-panel", "atribute": { "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" } } ] }
- Adăugați note de apel în direct - Puteți să capturați informații suplimentare despre apel în zona de text și să încheiați apelul. Puteți vedea aceste note adăugate ca note de apel în înregistrarea activității.
Schimbare de cod pe ServiceNow
Scriptul include modificări-
Accesați navigatorul de filtre și căutați
Scenariul include
.Selectați Include scriptul sub Interfață utilizator sistem.
-
Filtrați Nume și căutați
propUtils
. -
Schimbați metoda
UserGetSysId
în Script.Curent:
UserGetSysId: function () { var deschis_pentru; var utilizator = new GlideRecord("sys_user"); utilizator.addQuery(this.getParameter('câmp'),this.getParameter('valoare')); utilizator.query(); if (utilizator.next()) deschis_pentru=utilizator.sys_id; var grInt = new GlideRecord('interacțiune'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefon'; grInt.abiert_pentru= deschis_pentru; var sysid=grInt.Insert(); returnează sysid; },
Cod exemplu nou pentru incident:
UserGetSysId: function () { var deschis_for; //Modificări legate de incident var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { deschis_for=user.sys_id;//return user.sys_id; var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', deschis_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='Apel primit de la '+ 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); },
-
Accesați navigatorul de filtre și căutați
pagină UI
.Selectați Pagini UI sub Interfață sistem.
-
Filtrați Numele și căutați
agentdesktop
. -
Schimbați
Captură de ecran
Funcție în Scriptul client.Funcția curentă:
// funcție de afișare a ecranului screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gauut = 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 });
Exemplu de cod pentru incident:
// funcție de afișare a ecranului screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gauut = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('field', 'phone'); gaout.addParam('value', callerani); gaout.getXMLWait(); // Pentru modificări legate de incident var sysObj = JSON.parse(gaout.getAnswer()); dacă(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entitate: 'incident', interogare: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); } altfel{ openFrameAPI.openServiceNowForm({ entitate: 'incident', interogare: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }); } }
Dacă informațiile apelantului există în CRM și există deja un incident nou deschis cu acest contact, aplicația deschide incidentul în curs.
Dacă informațiile apelantului nu există în CRM, aplicația deschide un nou incident.
Dacă informațiile apelantului există în CRM, aplicația deschide un incident nou cu detalii precompletate.
Prezentare generală
Acest caz de utilizare detaliază procesul de adăugare a unei coloane suplimentare la tabelul ServiceNow - webexcc_imp_activity - și crearea fișierului sn_openframe_phone_log la instalarea conectorului Webex CC pentru ServiceNow CRM.
În mod implicit, tabelul conține anumite câmpuri și valori de sistem predefinite.
Puteți crea mai multe variabile specifice afacerii (variabile CAD) în cadrul designerului WebexCC Flow și puteți adăuga variabilele CAD în jurnalul de activitate a apelurilor ServiceNow POST, precum și le puteți păstra în datele tabelului de activitate a apelurilor POST.
Aceasta este doar o documentație de referință - și arată cum se face acest lucru pentru o variabilă CAD exemplu numită Nume client care stochează numele clientului în interiorul IVR și postează acest lucru în ServiceNow.
Se așteaptă ca dezvoltatorii ServiceNow parteneri+clienți să configureze și să gestioneze această configurație, deoarece este o personalizare a conectorului existent.
Cisco oferă doar tehnici despre cum se poate personaliza și extinde conectorul.
Începând cu acest articol, echipa Cisco a validat suportul pentru adăugarea variabilei CAD în Jurnalul de activități și în Tabelul de activități folosind tehnica descrisă mai jos:
Adăugați o coloană la activitatea WebexCC IMP
-
Editați tabelul în versiunea pentru dezvoltatori a ServiceNow.
-
Accesați navigatorul de filtre și căutați „studio”.
Select.
Webex Contact Center
sau
-
Selectați
Activitatea IMP a WebexCC
masă -
Adăugați o coloană nouă, de exemplu,
Nume client
Adăugați o coloană în jurnalul telefonic
-
Editați tabelul jurnalului telefonic.
-
Adăugați o coloană nouă, de exemplu,
Nume client
.
Harta de transformare a activității WebexCC
Adăugați o coloană nouă, de exemplu, Nume client
Cartografierea câmpului.
Personalizați coloanele listei
Așa cum recomandă Service Now, schimbați acțiunea Alegere de la creare la ignorare.
Configurați lista de jurnale telefonice
Accesați secțiunea Include script
Adăugați o singură linie webexcc.u_numeclient=actInfo.NumeClient
Către propUtils.
Vezi linia: webexcc.u_numeclient=actInfo.NumeClient; cu un comentariu însoțitor.
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 deschis_pentru; var utilizator = new GlideRecord("sys_user"); utilizator.addQuery(this.getParameter('field'),this.getParameter('value')); utilizator.query(); if (utilizator.next()) deschis_pentru=utilizator.sys_id;//return user.sys_id; // altfel // returnează 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: 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; // Această linie este adăugată - pentru a fi capturată în Jurnalul de activități webexcc.u_customername=actInfo.CustomerName; sys_id=webexcc.Insert(); //Activități din înregistrarea incidentului; 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(); } } } return sys_id; }, type: 'propUtils' });
Creați o variabilă CAD în Flow Designer
Adăugați variabila CAD la aspectul desktopului
Exemplu
„CadName1:SnowField1,CadName2:SnowField2” CadName1 este CustomerName. SnowField1 este folosit și ca CustomerName, care face parte din scriptul exemplu prezentat mai sus „actInfo.CustomerName”.
Capturi de ecran demonstrative
Vizualizați variabila CAD nou adăugată în tabelul de activități WebexCC.
Creați o variabilă CAD pentru Flow Designer
Urgența incidentuluiImpactul incidentului
Actualizare script Service Now
Actualizări ale scriptului: Include
-
Accesați navigatorul de filtre și căutați
scenariul include
Selectați Scriptul include opțiunea de sub Interfață de sistem.
-
Filtrați Nume cu
propUtils
. -
Schimbați metoda
UserGetSysId
în Script domeniu.Scriptul curent:
UserGetSysId: function () { var deschis_pentru; var utilizator = new GlideRecord("sys_user"); utilizator.addQuery(this.getParameter('câmp'),this.getParameter('valoare')); utilizator.query(); if (utilizator.next()) deschis_pentru=utilizator.sys_id; var grInt = new GlideRecord('interacțiune'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefon'; grInt.abiert_pentru= deschis_pentru; var sysid=grInt.Insert(); returnează sysid; },
Cod exemplu nou pentru incident:
UserGetSysId: function () { var deschis_pentru; var sysidlist = {}; var utilizator = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('câmp'),this.getParameter('valoare')); user.query(); if(utilizator.next()) { deschis_pentru=utilizator.sys_id;//return user.sys_id; var inc = new GlideRecordSecure('incident'); inc.addQuery('caller_id', deschis_pentru); inc.addQuery('stare','IN','1,2'); inc.orderByDesc('sys_created_on'); inc.query(); if (inc.next()) { sysidlist.incsysid=inc.getUniqueValue(); }else{ inc.initialize(); inc.caller_id=deschis_pentru; inc.contact_type='telefon'; inc.urgency=this.getParameter('IncUrgency'); inc.impact=this.getParameter('Impact'); inc.short_description='Apel primit de la '+ this.getParameter('value'); sysidlist.incsysid=inc.Insert(); } } var grInt = new GlideRecordSecure('interaction'); 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; },
-
Accesați navigatorul de filtre și căutați
Pagini de interfață utilizator
.Selectați Pagini cu interfață utilizator opțiunea de sub Interfață de sistem.
-
Filtrați Pagini cu interfață utilizator cu Nume și căutați
agentdesktop
. -
Schimbați
Captură de ecran
Funcție în câmpul scriptului.Funcția curentă:
// funcție de afișare a ecranului screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gauut = 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 }); }
Exemplu de cod pentru incident:
// funcție pop-up de ecran 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'); gauut.addParam('sysparm_name', 'UserGetSysId'); gauut.addParam('field', 'phone'); gauut.addParam('value', callerani); gauut.addParam('IncUrgency', IncUrgency); gauut.addParam('Impact', Impact); gauut.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)); }
Dacă informațiile apelantului există în CRM și nu există niciun incident nou sau în desfășurare, atunci aplicația deschide un nou incident
Schimbați codul pe ServiceNow
Adăugați coloane noi la Activitatea WebexCC IMP
masă
Deschideți butonul Activitatea WebexCC IMPmasă
Faceți clic pe Actualizare.
Adăugați coloane noi la Jurnal telefon
masă
Deschideți butonul Jurnal telefon
masă
Harta de transformare a activității WebexCC
Deschidere Transformați harta
Din navigatorul de filtre
Faceți clic pe WebexCC Activitatea TransformMap
Faceți clic pe Actualizare.
Modificările aduse scriptului includ
-
Accesați navigatorul de filtre și căutați "scriptul include".
Selectați scriptul include sub UI sistem.
-
Filtrați numele cu
propUtils
. -
Schimbați metoda
setWebexcctable
.Exemplu nou de cod pentru Incident:
setWebexcctable: funcție () { var sys_id=0; var actInfo = JSON.parse(this.getParameter('actInfo')); var webexcc = nou 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=""; șterge actInfo['interaction_sys_id']; eliminarea actInfo['incident_sys_id']; if( interactionsysid!= null && interactionsysid != nedefinit){ 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='Actualizare stare la inchis."; 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.numecoadă; 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(); } întoarcere sys_id; },
Modificări ale metodei în paginile UI
-
Accesați navigatorul de filtre și căutați
Pagini UI
Selectați opțiunea Pagini UI sub UI sistem.
-
Filtrați paginile UI cu Nume și căutați agentdesktop
.
-
Modificați pictograma
nowActivities și screenpop
Funcție în script.Funcția curentă:
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); }
Exemplu de cod pentru incident:
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); } funcția 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('valoare', callerani); gaout.getXMLWait(); // var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity: 'incident', interogare: 'sys_id='+sysObj.incsysid, "interaction_sys_id": sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: 'incident', interogare: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }
Rezultate după actualizare
Următoarele particularizări se aplică versiunilor 1.0.5 și anterioare. Pentru particularizările pentru versiunile mai noi 1.0.7 și ulterioare, urmați pașii de mai sus.
Personalizare # 1 - Adăugați reguli de afaceri personalizate pentru cazurile de utilizare a fluxului de apeluri
Creați o nouă înregistrare a incidentelor pentru fiecare apelPentru fiecare apel nou în conectorul WebexCC CRM din ServiceNow, creați o nouă înregistrare a incidentelor.
Căutarea regulilor comerciale în navigatorul de filtre
Faceți clic pe Nou.
Exemplu de cod pentru referință:
funcția 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", nume); } dacă (userID == null &&; phone != null && phone != '') { userID = UserGetSysId ("telefon", telefon); } dacă (userID != null) { if (fQuery.length > 0) fQuery += "^"; fQuery += "caller_id=" + userID; } dacă (url == null) { url = "incident.do?sys_id=-1"; dacă (fQuery != null) url += "&sysparm_query=" + fQuery; } answer = url; URL de retur; } (funcția }) UserGetSysId(câmp, valoare) { var user = new GlideRecord("sys_user"); user.addQuery(câmp, valoare); user.query(); dacă (user.next()) returnează user.sys_id; altfel returnează null; }
Exemplu de configurare a regulii de afaceri
Activare apelabil Client
Procesarea integrării telefoniei computerizate (CTI) pentru incidente este marcată ca adevărată.
Actualizați adresa URL a ecranului pop-up cu regula CTI personalizată" cti.do?sysparm_cti_rule=createIncident&sysparm_caller_phone="
sysparm_cti_rule =nume unde 'name' este numele unei funcții trebuie invocat pentru CTI Processing în loc să se utilizeze scriptul implicit.
Definiți funcția într-o intrare de sys_script marcată client apelabil.
Dacă trebuie să Insert, să actualizați sau să ștergeți orice GlideRecords din funcție, apelați o funcție apelabilă separată nonclient pentru a efectua actualizările.
Pentru ca un script să poată fi apelat de client, trebuie să bifați caseta de selectare apelabil client din formularul care se afișează la afișarea intrării de sys_script.
Caseta de selectare apelabil prin client nu se afișează în mod implicit. Pentru vizualizare, trebuie să modificați câmpurile care se afișează în formular utilizând pictograma roată și mecanismul cupei.
Personalizare # 2 - Adăugați variabilă CAD în tabelul de activități Webex Contact Center
Prezentare generalăAcest articol detaliază procesul de adăugare a unei coloane suplimentare la tabelul ServiceNow - webexcc_activity care este creat la instalarea conectorului CRM Webex CC for ServiceNow.
În mod implicit, tabelul conține câmpuri și valori predefinite ale sistemului.
Puteți crea mai multe variabile specifice afacerii (variabile CAD) în cadrul proiectantului de flux WebexCC și puteți adăuga acele variabile CAD în jurnalul de activități de apel ServiceNowPOST și puteți persista acest lucru în datele tabelului de activități de apelare POST.
-
Aceasta este doar documentație de referință - și arată cum se face acest lucru pentru un exemplu de variabilă CAD numită Nume client care stochează numele clientului în IVR și postează acest lucru la ServiceNow.
-
Dezvoltatorii ServiceNow partener+client vor configura și gestiona această configurație, deoarece este o particularizare a conectorului existent.
-
Cisco va oferi doar tehnicile de personalizare și extindere a conectorului.
-
Începând cu acest articol, echipa Cisco a validat suportul pentru adăugarea variabilei CAD în jurnalul de activități și tabelul de activități utilizând tehnica descrisă mai jos.
Editați tabelul în versiunea pentru dezvoltatori a ServiceNow.
Mergi la Studio
.Selectați tabelul Activitate WebexCC.
De exemplu, NumeClient.
Selectați Aspect listă pentru activitatea WebexCC.
Acest pas nu este necesar dacă utilizați Update Set XML - Doar o singură linie este necesară pentru a fi adăugată "webexcc.u_customername=actInfo.CustomerName" la propUtils.

Exemplu de script
Consultați linia cu:webexcc.u_customername=actInfo.CustomerName; cu un comentariu de susținere.
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__webexcc.agentdesktop_url'); webexccprop.popupurl=gs.getProperty('x__webexcc.screenpop_url'); returnează JSON.stringify(webexccprop); }, setWebexcctable: function () { var sys_id=0; var actInfo = JSON.parse(this.getParameter('actInfo')); var webexcc = new GlideRecordSecure(gs.getProperty('x__ 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; // Această linie este adăugată - pentru a o captura în jurnalul de activități webexcc. u_customername=actInfo.CustomerName; sys_id=webexcc.Insert(); Activități privind înregistrarea incidentelor; var actInfoString =this.getParameter('actInfo'); var suser = nou GlideRecordSecure("sys_user"); suser.addQuery("telefon", this.getParameter('ani')); suser.query(); if(suser.next()) { var inc = nou 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(); } } } returnarea sys_id; }, tip: 'propUtils2' });
Editați pagina UI cu un nume nou de script
Crearea unei variabile CAD în Designerul de flux
Adăugarea variabilei CAD la Aspect desktop
Capturi de ecran demonstrative
Vizualizați variabila CAD nou adăugată în tabelul Activitate WebexCC.
