Integra Webex Contact Center con ServiceNow (versione 1—Legacy)
Prerequisiti
La dimensione minima supportata per l'interfaccia softphone è di 500 px. Qualsiasi valore inferiore a 500 px può causare problemi di visualizzazione o funzionalità.
Prima di integrare Webex Contact Center con la console ServiceNow CRM, si assicuri di disporre di quanto segue:
-
Accesso al Webex Contact Center.
-
Accesso dell'amministratore al Control Hub all'indirizzo https://admin.webex.com e al Webex Contact Center. Management Portal Gli URL per Management Portal sono specifici per la sua regione.
-
Un agente con accesso al desktop. L'URL per il desktop è specifico per la sua regione.
-
Accesso dell'agente al seguente dominio aggiunto nell'elenco consentito delle politiche di sicurezza dei contenuti:
-
*.service-now.com
Per ulteriori informazioni su come definire l'elenco consentito, vedere l'articolo Impostazioni di sicurezza per Webex Contact Center.
-
-
Un account sul portale per sviluppatori ServiceNow. Per creare un account, acceda al portale per sviluppatori ServiceNow all'indirizzo https://developer.servicenow.com/dev.do e faccia clic su Registrati e inizia a creare.
-
Accesso ai seguenti file all'indirizzo https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow:
-
Set di aggiornamenti ServiceNow (XML)
-
Layout del desktop del centro di contatto ServiceNow (JSON)
-
- Le edizioni ServiceNow supportate da Webex Contact Center sono Vancouver, Utah, Tokya, Washington e Xanadu. Per ulteriori informazioni, vedere Webex Contact Center Integration con ServiceNow.
Segua uno dei due metodi seguenti:
- Per le istanze per sviluppatori, consigliamo di seguire i passaggi indicati nella guida alle istanze per sviluppatori.
- Se possiede un'istanza con licenza aziendale, segua le linee guida per le istanze con licenza aziendale.
Non è consigliabile combinare l'app con licenza aziendale con le istanze sandbox per sviluppatori.
I canali digitali come chat ed email non sono supportati dai connettori CRM. Questo vale per tutte le integrazioni CRM che utilizzano questi connettori. Pianifichi di conseguenza i flussi di lavoro di implementazione e coinvolgimento dei clienti.
Le sezioni seguenti descrivono i passaggi per installare il connettore ServiceNow per le istanze di sviluppo.
| 1 |
Accedi al suo account del portale per sviluppatori ServiceNow e apra la Console di amministrazione. |
| 2 |
Dall'area La mia istanza del menu Account, faccia clic su Inizia a creare.
|
| 3 |
Nella sua istanza di sviluppatore, dal campo Filter Navigator in alto a sinistra della finestra, acceda a Plugin.
|
| 4 |
Cerca il plugin Openframe con il titolo Openframe. Potrebbe essere necessario scorrere l'elenco.
|
| 5 |
Faccia clic su Installa per installare il plugin Openframe. |
| 6 |
Nella finestra di dialogo Attiva plugin, faccia clic su Attiva.
|
| 7 |
Una volta completata l'attivazione del plug-in, faccia clic su Chiudi e ricarica il modulo nella finestra di dialogo Attivazione del plug-in.
|
| 8 |
Per verificare l'attivazione del plugin, dal campo Filter Navigator in alto a sinistra della finestra, acceda a OpenFrame. |
| 9 |
Faccia clic su Configurazioni e si assicuri che il plug-in OpenFrame sia visualizzato nell'elenco delle configurazioni OpenFrame.
|
| 1 |
Nome del file: WebexCC-ServiceNow-Update-setv (X) .xml
|
| 2 |
Nella sua istanza ServiceNow, dal campo Filter Navigator in alto a sinistra della finestra, acceda a .
|
| 3 |
Faccia clic sul link Importa set di aggiornamento da XML.
|
| 4 |
Faccia clic su Scegli file, selezioni il file XML del System Update Set, quindi faccia clic su Carica.
Il set di aggiornamento appare nell'elenco dei set di aggiornamento recuperati ed è nello stato Caricato.
|
| 5 |
Dall'elenco dei set di aggiornamenti recuperati, faccia clic sul nome del file del set di aggiornamenti (link) per aprire il set di aggiornamenti.
|
| 6 |
In alto a destra della finestra, faccia clic su Anteprima del set di aggiornamenti per verificare la presenza di problemi nel set di aggiornamenti.
|
| 7 |
Fai clic su Chiudi nella finestra di dialogo Anteprima del set di aggiornamento una volta completata l'anteprima.
|
| 8 |
Fai clic su Conferma set di aggiornamento.
|
| 9 |
Fai clic su Chiudi nella finestra di dialogo Update Set Commit una volta completato il commit di Update Set.
|
| 1 |
Nel campo del navigatore Filtri in alto a sinistra della finestra, digita
|
| 2 |
Nella pagina Proprietà del sistema, ordina le proprietà per data di aggiornamento. Si assicuri di poter visualizzare le seguenti proprietà del Webex Contact Center:
|
| 3 |
Fare clic agentdesktop_urlper aprire la agentdesktop_url pagina delle proprietà del sistema. |
| 4 |
Nel campo Valore, inserire l'URL del Webex Contact Center Desktop in base alla regione operativa.
|
| 5 |
Fai clic su Aggiorna per salvare le modifiche. |
| 6 |
(Facoltativo) Per cambiare il nome della tabella delle attività, modifica le proprietà webexccactivitytable come richiesto. Nella pagina delle proprietà del sistema, faccia clic su webexccactivitytable. Modifichi il campo Valore come richiesto.
|
| 7 |
(Facoltativo) Aggiungere gruppi di utenti nei seguenti modi:
|
| 1 |
Dal campo del , acceda a OpenFrame > Configurazioni.
|
| 2 |
Faccia clic su Nuovo.
|
| 3 |
Inserisca le seguenti proprietà per l'URL:
|
| 4 |
A destra del campo URL, faccia clic sul pulsante Blocca e aggiunga
|
| 5 |
(Facoltativo) Seleziona il/i gruppo/i di utente/agente a cui assegnare la configurazione.
|
| 6 |
Faccia clic su Invia. L'URL appare come link.
|
| 7 |
Prima di provare a utilizzare il telefono OpenFrame, si assicuri di caricare il file JSON personalizzato ServiceNow Desktop Layout nel Webex Contact Center. Management Portal Per ulteriori informazioni, vedere Configurare il layout desktop ServiceNow su Webex Contact Center. |
| 1 |
|
| 2 |
Aggiornare le proprietà nel file di layout del desktop, se necessario. |
| 3 |
Vai al Webex Contact Center. Management Portal |
| 4 |
Dalla barra di Management Portal navigazione, scelga .
|
| 5 |
Faccia clic su Nuovo layout e inserisca i dettagli per il layout del desktop. |
| 6 |
Carichi il file JSON di ServiceNow Desktop Layout. |
| 7 |
Faccia clic su Salva per salvare la configurazione. Ora può avviare il Webex Contact Center Desktop nella console ServiceNow. |
| 8 |
Dal campo Navigator Filter, acceda a .
|
Le sezioni seguenti descrivono i passaggi per installare il connettore ServiceNow per le istanze aziendali con licenza.
| 1 |
Accedi al suo account del portale per sviluppatori ServiceNow e apra la Console di amministrazione. |
| 2 |
Dall'area La mia istanza del menu Account, faccia clic su Inizia a creare.
|
| 3 |
Nella sua istanza di sviluppatore, dal campo Filter Navigator in alto a sinistra della finestra, acceda a Plugin.
|
| 4 |
Cerca il plugin Openframe con il titolo Openframe. Potrebbe essere necessario scorrere l'elenco.
|
| 5 |
Faccia clic su Installa per installare il plugin Openframe. |
| 6 |
Nella finestra di dialogo Attiva plugin, faccia clic su Attiva.
|
| 7 |
Una volta completata l'attivazione del plug-in, faccia clic su Chiudi e ricarica il modulo nella finestra di dialogo Attivazione del plug-in.
|
| 8 |
Per verificare l'attivazione del plugin, dal campo Filter Navigator in alto a sinistra della finestra, acceda a OpenFrame. |
| 9 |
Faccia clic su Configurazioni e si assicuri che il plug-in OpenFrame sia visualizzato nell'elenco delle configurazioni OpenFrame.
|
Le istanze con licenze aziendali possono installare l'applicazione Webex Contact Center direttamente dal ServiceNow Store.
|
|
| 1 |
Nel campo del navigatore Filtri in alto a sinistra della finestra, inserisca
|
| 2 |
Nella pagina Proprietà del sistema, ordina le proprietà per data di aggiornamento. Si assicuri di poter visualizzare le seguenti proprietà del Webex Contact Center:
|
| 3 |
Fare clic agentdesktop_urlper aprire la agentdesktop_url pagina delle proprietà del sistema. |
| 4 |
Nel campo Valore, inserire l'URL del Webex Contact Center Desktop in base alla regione operativa.
|
| 5 |
Fai clic su Aggiorna per salvare le modifiche. |
| 6 |
(Facoltativo) Per cambiare il nome della tabella delle attività, modifica le proprietà x_caci_webexcc.webexccactivitytable come richiesto.
|
| 7 |
(Facoltativo) Aggiungere gruppi di utenti nei seguenti modi:
|
| 1 |
Dal campo del , acceda a OpenFrame > Configurazioni.
|
| 2 |
Faccia clic su Nuovo.
|
| 3 |
Inserisca le seguenti proprietà per l'URL:
|
| 4 |
A destra del campo URL, faccia clic sul pulsante Blocca e aggiunga
|
| 5 |
(Facoltativo) Seleziona il/i gruppo/i di utente/agente a cui assegnare la configurazione.
|
| 6 |
Faccia clic su Invia. L'URL appare come link.
|
| 7 |
Dal campo Navigator Filter, acceda a .
|
| 8 |
(Facoltativo) Nell'elenco dei gruppi di utenti, sposta i gruppi di utenti che possono accedere al desktop di Webex Contact Center da Disponibile a Selezionato. |
| 9 |
Prima di provare a utilizzare il telefono OpenFrame, si assicuri di caricare il file JSON personalizzato ServiceNow Desktop Layout nel Webex Contact Center. Management Portal Per ulteriori informazioni, vedere Configurare il layout desktop ServiceNow su Webex Contact Center. |
| 1 |
|
| 2 |
Aggiornare le proprietà nel file di layout del desktop, se necessario. |
| 3 |
Vai al Webex Contact Center. Management Portal |
| 4 |
Dalla barra di Management Portal navigazione, scelga .
|
| 5 |
Faccia clic su Nuovo layout e inserisca i dettagli per il layout del desktop. |
| 6 |
Carichi il file JSON di ServiceNow Desktop Layout. |
| 7 |
Faccia clic su Salva per salvare la configurazione. Ora può avviare il Webex Contact Center Desktop nella console ServiceNow. |
| 8 |
Dal campo Navigator Filter, acceda a .
|
| 1 |
Dal campo del navigatore Filtro, acceda a Incidenti > Apri incidente. |
| 2 |
Fare clic con il pulsante destro del mouse sul campo chiamante e fare clic su Configura dizionario.
|
| 3 |
Aggiungere attributi separati da virgole
Ora può iniziare a utilizzare il Webex Contact Center Desktop nella console ServiceNow. |
| 4 |
Dal campo Navigator Filter, acceda a .
|
- Supportiamo l'accesso Agent Desktop tramite WebRTC solo per i connettori Salesforce (SFDC) e Microsoft Dynamics (MS Dynamics).
- Attualmente, questa funzione è applicabile solo agli agenti.
Agent Desktopnella console ServiceNow
Prima di effettuare chiamate esterne, si assicuri di fare quanto segue:
-
Crei il punto di ingresso esterno e definisca una strategia per i punti di ingresso esterni.
-
Abilita l'ANI esterno per il profilo dell'agente.
-
Imposta l'ANI esterno su una mappatura dal numero di chiamata al punto di ingresso.
Per ulteriori informazioni, vedere il capitolo Provisioning della Guida all'Cisco Webex Contact Centerinstallazione e all'amministrazione.
Dal campo Navigator Filter, acceda a .
Per informazioni su come utilizzare Desktop, vedere la scheda Agente nella guida del Webex Contact Center.
Panoramica
Questo articolo illustra diversi modi per personalizzare le sue regole aziendali per il connettore ServiceNow CRM. Descrive in dettaglio come personalizzare i casi d'uso in base a regole aziendali specifiche di ServiceNow.
Il cliente deve gestire autonomamente questi casi d'uso su ServiceNow. La configurazione è specifica per ServiceNow e non per il software o l'esperienza di Webex Contact Center.
Questa è una documentazione di riferimento per agevolare la modifica delle regole aziendali. Gli sviluppatori di ServiceNow creeranno e gestiranno le regole aziendali e forniranno supporto.
Cisco fornisce solo esempi di documentazione.
Le seguenti sezioni forniscono dettagli su come configurare, abilitare e gestire il widget Azioni per le istanze di sviluppo e aziendali.
Confermi il widget Update Set for Actions
Per configurare il widget Azioni per le istanze degli sviluppatori, scarichi l'ultimo file XML del System Update Set disponibile nel repository github a questo indirizzo: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow/ActionsWidget. Il nome del file è webexcc-servicenow-update-setv7-1-ActionsWidget.xml. Per confermare il set di aggiornamenti per il widget Azioni, vedere i passaggi da 2 a 9 in Confermare il set di aggiornamenti.
Abilita il widget delle azioni
Usa la proprietà IsWidgetDisplayEnabled per abilitare il widget Azioni. Non deve modificare il valore di questa proprietà nella sezione headless del layout desktop personalizzato. La proprietà è sempre impostata su false nella sezione headless del layout desktop personalizzato. Deve aggiornare il valore della proprietà solo nella sezione del pannello del layout desktop personalizzato.
Dopo aver abilitato il widget Azioni nel layout desktop personalizzato, può eseguire le seguenti azioni:
- Gestire i record delle attività: fare clic su Visualizza/Modifica record di attività per visualizzare l'elenco dei record delle attività associati al chiamante.
- Associare oggetti CRM: fare clic su Associa ai record delle attività per aggiungere oggetti CRM come il tipo di chiamata (in entrata o in uscita), l'oggetto della chiamata, le note sulle chiamate e così via al record delle attività.
- Gestisci incidenti: faccia clic su Crea incidente. Viene creato un nuovo incidente con i dati del chiamante precompilati. Può apportare gli aggiornamenti richiesti all'incidente. Può scegliere di modificare il tipo di record da incidente a caso, modulo HR e così via in base alle sue esigenze. Per cambiare il tipo di record, modifichi il valore della proprietà TypeOfRecord nella configurazione del widget Azioni. Ad esempio:
{ "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" } } ] } - Aggiungere note sulle chiamate in tempo reale: può acquisire ulteriori informazioni sulla chiamata nell'area di testo e concludere la chiamata. Può vedere queste note aggiunte come note di chiamata nel registro delle attività.
Modifica del codice su ServiceNow
Lo script include modifiche-
Vai al navigatore di filtri e cerca gli
script inclusi
.Seleziona lo script include nell'interfaccia utente di sistema.
-
Filtra il nome e cerca
PropUtils
. -
Modificare il metodo
UserGetSysId nello script
.Corrente:
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; },Nuovo codice di esempio per l'incidente:
UserGetSysId : function () { var opened_for; //Incident related changes 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='phone'; inc.short_description='Call Received From '+ 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); },
-
Vada al navigatore di filtri e cerchi
UI page.Seleziona le pagine dell'interfaccia utente in Interfaccia utente di sistema.
-
Filtra il nome e cerca
agentdesktop
. -
Cambia la funzione
screenpop
nello script Client.Funzione attuale:
// 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 });Codice di esempio per l'incidente:
// 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' }); } }
Se le informazioni sul chiamante sono presenti nel CRM e c'è già un nuovo incidente aperto con questo contatto, l'applicazione apre l'incidente in corso
Se le informazioni sul chiamante non esistono nel CRM, l'applicazione apre un nuovo incidente
Se le informazioni sul chiamante sono presenti nel CRM, l'applicazione apre un nuovo incidente con dettagli precompilati
Panoramica
Questo caso d'uso descrive in dettaglio il processo per aggiungere una colonna aggiuntiva alla tabella ServiceNow webexcc_imp_activity e crearla sn_openframe_phone_log al momento dell'installazione del connettore Webex CC for ServiceNow CRM.
Per impostazione predefinita, la tabella contiene determinati campi e valori di sistema predefiniti.
Può creare altre variabili aziendali specifiche (variabili CAD) all'interno del designer di WebExcc Flow e aggiungere le variabili CAD all'interno del registro delle attività post-chiamata di ServiceNow, nonché mantenerle nei dati della tabella delle attività dopo la chiamata.
Questa è solo una documentazione di riferimento e mostra come farlo per una variabile CAD di esempio chiamata Nome cliente che memorizza il nome del cliente all'interno dell'IVR e lo invia a ServiceNow.
Si prevede che gli sviluppatori del partner+Customer ServiceNow configurino e gestiscano questa configurazione in quanto si tratta di una personalizzazione del connettore esistente.
Cisco fornisce solo le tecniche su come personalizzare ed estendere il connettore.
A partire da questo articolo, il team Cisco ha convalidato il supporto per l'aggiunta della variabile CAD al registro delle attività e alla tabella delle attività utilizzando la tecnica descritta di seguito:
Aggiungi colonna all'attività IMP di WebExcc
-
Modifica la tabella nella versione per sviluppatori di ServiceNow.

-
Vada al navigatore dei filtri e cerchi studio.

Seleziona
Webex Contact Center

o



-
Seleziona la tabella delle
attività IMP di WebEXCC

-
Aggiungere una nuova colonna, ad esempio
CustomerName


Aggiungere una colonna alla rubrica telefonica
-
Modifichi la tabella del registro telefonico.


-
Aggiungere una nuova colonna, ad esempio
CustomerName
.

Mappa di trasformazione delle attività WebExcc

Aggiungere una nuova colonna, ad esempio, la mappatura dei campi CustomerName
.


Personalizza le colonne dell'elenco

Come consigliato da Service Now, modifichi l'azione Scelta da crea a ignora.


Configurare l'elenco delle registrazioni telefoniche

Vai a Script Include
Aggiunga solo una riga webexcc. u_customername=actInfo.customerName
a PropUtils.



Vedi la riga: webexcc. u_customername=actInfo.customerName; con un commento di supporto.
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('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;
// This line is Added - to capture it in the Activity Log
webexcc.u_customername=actInfo.CustomerName;
sys_id=webexcc.insert();
//Activities on 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();
}
}
}
return sys_id;
},
type: 'propUtils'
});
Creare una variabile CAD in Flow designer

Aggiungere la variabile CAD al layout del desktop
Esempio
"CadName1:SnowField1,CadName2:SnowField2"
CadName1 is CustomerName
SnowField1 is also used as CustomerName which is part of sample scirpt showen above "actInfo.CustomerName".

Schermate dimostrative
Visualizza la variabile CAD appena aggiunta nella tabella delle attività di WebExcc.



Creare una variabile CAD per Flow Designer
Urgenza dell'incidente
Impatto dell'incidente

Aggiornamento dello script Service Now
Gli aggiornamenti allo script includono
-
Vada al navigatore dei filtri e cerchi
script includesSeleziona l'opzione Script Includes nell'interfaccia utente di sistema.

-
Filtrare il nome con
propUtils.
-
Modificare il metodo
UserGetSysId nel campo Script.

Sceneggiatura attuale:
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; },Nuovo codice di esempio per l'incidente:
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='phone'; inc.urgency=this.getParameter('IncUrgency'); inc.impact=this.getParameter('Impact'); inc.short_description='Call Received From '+ 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; },
-
Vada al navigatore dei filtri e cerchi
UI pages.Seleziona l'opzione Pagine dell'interfaccia utente in Interfaccia utente di sistema.

-
Filtra le pagine dell'interfaccia utente con nome e cerca
agentdesktop.
-
Cambia la funzione
screenpop
nel campo dello script.
Funzione attuale:
// 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 }); }Codice di esempio per l'incidente:
// 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)); }
Se le informazioni sul chiamante sono presenti nel CRM e non ci sono incidenti nuovi o in corso, l'applicazione apre un nuovo incidente


Modificare il codice su ServiceNow
Aggiungere nuove colonne alla tabella delle attività IMP di WebExcc
Aprire la tabella delle attività IMP di WebEXCC





Faccia clic su Aggiorna.


Aggiungere nuove colonne alla tabella Registro telefonico
Aprire la tabella del registro telefonico





Mappa di trasformazione delle attività WebExcc
Aprire la mappa di trasformazione
dal navigatore dei filtri


Fare clic su WebExcc Activity TransformMap




Faccia clic su Aggiorna.

Le modifiche allo script includono
-
Vada al navigatore di filtri e cerchi «lo script include».
Seleziona lo script include nell'interfaccia utente di sistema.

-
Filtrare il nome con
PropUtils
.
-
Modificare il metodo
setWebExcctable
.
Nuovo codice di esempio per Incident:
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']; delete 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(); } return sys_id; },
Modifiche al metodo nelle pagine dell'interfaccia utente
-
Vai al navigatore di filtri e cerca le pagine
dell'interfaccia utente
Seleziona l'opzione Pagine dell'interfaccia utente in Interfaccia utente di sistema.

-
Filtra le pagine dell'interfaccia utente con nome e cerca
agentdesktop.
-
Modifichi la funzione
NowActivities e screenpop
nello script.
Funzione attuale:
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); }Codice di esempio per l'incidente:
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)); }
Risultati dopo l'aggiornamento

Le seguenti personalizzazioni si applicano alle versioni 1.0.5 e successive. Per le personalizzazioni per le versioni più recenti 1.0.7 e successive, segua i passaggi precedenti.
Personalizzazione n. 1 - Aggiungere regole aziendali personalizzate per i casi d'uso del flusso di chiamate
Crea un nuovo record di incidenti per ogni chiamataPer ogni nuova chiamata al connettore WebExcc CRM in ServiceNow, crei un nuovo record di incidenti.
Cerca le regole aziendali nel navigatore Filtri

Faccia clic su Nuovo.

Codice di riferimento di esempio:
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", name); } 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; return 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; }Esempio di configurazione della regola aziendale

Abilita Client richiamabile

Computer Telephony Integration (CTI) Processing For Incident è contrassegnato come True.


Il sysparm_cti_rule=name dove 'name' è il nome di una funzione deve essere invocato per CTI Processing anziché utilizzare lo script predefinito.
Definire la funzione in una sys_scriptvoce contrassegnata come cliente richiamabile.
Se deve inserire, aggiornare o eliminare uno o più GlideRecord nella funzione, chiami una funzione separata non richiamabile dal client per eseguire gli aggiornamenti.
Per rendere uno script richiamabile dal client, deve selezionare la casella di controllo richiamabile dal client nel modulo visualizzato quando viene visualizzata la voce. sys_script
La casella di controllo richiamabile dal cliente non viene visualizzata per impostazione predefinita. Per visualizzarli, deve modificare i campi visualizzati nel modulo utilizzando l'icona a forma di ingranaggio e il meccanismo slush bucket.
Personalizzazione n. 2 - Aggiungere una variabile CAD nella tabella delle attività di Webex Contact Center
PanoramicaQuesto articolo descrive in dettaglio il processo per aggiungere una colonna aggiuntiva alla tabella ServiceNow, creata durante l'installazione del connettore Webex CC for ServiceNow CRM. webexcc_activity
Per impostazione predefinita, la tabella contiene campi e valori di sistema predefiniti.
Può potenzialmente creare più variabili specifiche dell'azienda (variabili CAD) all'interno del designer di WebExcc Flow e aggiungere tali variabili CAD nel registro delle attività post-chiamata di ServiceNow e renderle permanenti nei dati della tabella delle attività dopo la chiamata.
-
Questa è solo la documentazione di riferimento e mostra come eseguire questa operazione per una variabile CAD di esempio denominata Nome cliente che memorizza il nome del cliente all'interno dell'IVR e lo invia a ServiceNow.
-
Gli sviluppatori del partner+customer ServiceNow configureranno e gestiranno questa configurazione in quanto si tratta di una personalizzazione del connettore esistente.
-
Cisco fornirà solo le tecniche su come personalizzare ed estendere il connettore.
-
A partire da questo articolo, il team di Cisco ha convalidato il supporto per l'aggiunta della variabile CAD al registro delle attività e alla tabella delle attività utilizzando la tecnica descritta di seguito.
Modifica la tabella nella versione per sviluppatori di ServiceNow.

Vai a .



Seleziona la tabella delle attività di WebEXCC.

Ad esempio, CustomerName.


Seleziona il layout dell'elenco per l'attività WebExcc.

Questo passaggio non è richiesto se utilizza l'Update Set XML - È necessaria solo una riga per aggiungere "webexcc. u_customername=actInfo.customerName "a PropUtils.



Script di esempio
Vedi la riga con: webexcc. u_customername=actInfo.customerName; con un commento di supporto.
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;
// This line is Added - to capture it in the Activity Log
webexcc.u_customername=actInfo.CustomerName;
sys_id=webexcc.insert();
// Activities on 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(acting string),null,2);
inc.comments =jsonPretty;
inc.update();
}
}
}
return sys_id;
},
type: 'propUtils2'
});
Modificare la pagina dell'interfaccia utente con un nuovo nome di script
Creare una variabile CAD in Flow designer
Aggiungere la variabile CAD al layout del desktop
Schermate dimostrative
Visualizza la variabile CAD appena aggiunta nella tabella delle attività di WebExcc.

Il connettore CRM funziona in base alla versione del widget specificata nel layout desktop JSON. È estremamente importante assicurarsi che la versione del widget all'interno del layout del desktop sia mantenuta aggiornata.
Gli amministratori devono garantire che tutti i layout desktop per questo connettore CRM utilizzino questa versione del widget. If the layout is not updated to use the latest version, functionality will no longer be supported and may cease to work correctly.
- Ultimo aggiornamento di ServiceNow: .1.0_v5.0.3.json. ServiceNow_Desktop_0 A marzo 2024, la versione del pacchetto è 1.0.9
- Ultimo aggiornamento XML: Webexcc-ServiceNow-Update-SetV7-1-Actionswidget.xml, giugno 2024











































