Integrare Webex Contact Center con ServiceNow (Versione 1—Legacy)
Prerequisiti
Attualmente, questa funzione è applicabile solo agli agenti.
Prima di integrare Webex Contact Center con la console CRM ServiceNow, assicurati di disporre di quanto segue:
-
Accesso a Webex Contact Center.
-
Accesso da amministratore a Control Hub all'indirizzo https://admin.webex.com e al portale di gestione Webex Contact Center. Gli URL del portale di gestione sono specifici per la propria regione.
-
Un agente con accesso al desktop. L'URL del desktop è specifico per la propria regione.
-
Accesso agente al seguente dominio aggiunto nell'elenco dei criteri di sicurezza del contenuto consentiti:
-
*.service-now.com
Per ulteriori informazioni su come definire l'elenco consentito, vedere l'articolo Impostazioni di sicurezza per Webex Contact Center.
-
-
Un account del portale per sviluppatori ServiceNow. Per creare un account, vai al portale per sviluppatori ServiceNow all'indirizzo https://developer.servicenow.com/dev.do e fai clic su Iscriviti e inizia a costruire.
-
Accesso ai seguenti file all'indirizzo https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow:
-
Set di aggiornamenti ServiceNow (XML)
-
Layout desktop contact center ServiceNow (JSON)
-
- Le edizioni ServiceNow supportate da Webex Contact Center sono Vancouver, Utah, Tokya, Washington e Xanadu. Per ulteriori informazioni, vedere Webex Contact Center Integrazione con ServiceNow.
Seguire uno dei due metodi seguenti:
Per le istanze per sviluppatori, ti consigliamo di seguire i passaggi nella guida all'istanza per sviluppatori.
Se possiedi un'istanza con licenza aziendale, segui le linee guida per le istanze con licenza aziendale.
Non è consigliabile combinare l'app con licenza aziendale con istanze sandbox per sviluppatori.
Nelle sezioni seguenti vengono descritti i passaggi per installare il connettore ServiceNow per le istanze sviluppatore.
1 |
Accedere all'account del portale per sviluppatori ServiceNow e aprire la console di amministrazione . |
2 |
Dall'area Istanza personale del menu Account , fare clic su Inizia a creare . |
3 |
Nell'istanza sviluppatore, dal campo Filter navigator nella parte superiore sinistra della finestra, vai a Plugin. |
4 |
Cerca il plugin Openframe che ha il titolo Openframe. Potrebbe essere necessario scorrere l'elenco. |
5 |
Fare clic su Installa per installare il plug-in Openframe. |
6 |
Nella finestra di dialogo Attiva plug-in, fare clic su Attiva. |
7 |
Una volta completata l'attivazione del plug-in, fare clic su Chiudi e ricarica modulo nella finestra di dialogo Attivazione plug-in. |
8 |
Per verificare l'attivazione del plugin, dal campo Filter navigator in alto a sinistra della finestra, passare a OpenFrame. |
9 |
Fare clic su Configurazioni e assicurarsi che il plug-in OpenFrame sia visualizzato nell'elenco Configurazioni OpenFrame . |
1 |
Scarica l'ultimo file System Update Set XML disponibile sul repository github a questa posizione: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. Nome file: webexcc-servicenow-update-setV(X).XML |
2 |
Nell'istanza di ServiceNow, dal campo Filter navigator nella parte superiore sinistra della finestra, passare a . |
3 |
Fare clic sul collegamento Importa set di aggiornamenti da XML . |
4 |
Fare clic su Scegli file, selezionare il file System Update Set XML e quindi fare clic su Carica.
Il set di aggiornamenti viene visualizzato nell'elenco Set di aggiornamenti recuperati ed è nello stato Caricato .
|
5 |
Dall'elenco Set di aggiornamenti recuperati, fare clic sul collegamento Nome file set di aggiornamenti (collegamento) per aprire il set di aggiornamenti. |
6 |
Nella parte superiore destra della finestra, fare clic su Anteprima set di aggiornamenti per verificare la presenza di problemi relativi al set di aggiornamenti. |
7 |
Fare clic su Chiudi nella finestra di dialogo Aggiorna anteprima set una volta completata l'anteprima. |
8 |
Fare clic su Commit Update Set. |
9 |
Fare clic su Chiudi nella finestra di dialogo Commit set di aggiornamenti una volta completato il commit del set di aggiornamenti. |
1 |
Nel campo Filter navigator nella parte superiore sinistra della finestra, digitare |
2 |
Nella pagina Proprietà del sistema, ordinare le proprietà in base alla data di aggiornamento. Assicurati di poter vedere le seguenti proprietà Webex Contact Center: |
3 |
Fare clic su agentdesktop_url per aprire la pagina agentdesktop_url Proprietà di sistema. |
4 |
Nel campo Valore , immettere l'URL del desktop Webex Contact Center in base all'area di operazione.
|
5 |
Fare clic su Aggiorna per salvare le modifiche. |
6 |
(Opzionale) Per modificare il nome della tabella Attività, modificare le proprietà webexccactivitytable come richiesto. Nella pagina Proprietà del sistema, fare clic su webexccactivitytable. Modificare il campo Valore come richiesto. |
7 |
(Opzionale) Aggiungere gruppi di utenti nei seguenti modi:
|
1 |
Dal campo Filter navigator , passare a . |
2 |
Fare clic su Nuovo. |
3 |
Immettere le seguenti proprietà per l'URL:
|
4 |
A destra del campo URL , fai clic sul pulsante Blocca e aggiungi |
5 |
(Opzionale) Selezionare i gruppi di utenti/agenti per assegnare la configurazione. |
6 |
Fare clic su Submit. L'URL viene visualizzato come collegamento. |
7 |
Prima di tentare di utilizzare il telefono OpenFrame, assicurarsi di caricare il file JSON ServiceNow personalizzato Desktop Layout nel portale di gestione Webex Contact Center. Per ulteriori informazioni, vedere Impostazione del layout del desktop ServiceNow su Webex Contact Center. |
1 |
Scarica il layout desktop per ServiceNow da https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
Aggiornare le proprietà nel file di layout desktop, se necessario. |
3 |
Vai al portale di gestione Webex Contact Center. |
4 |
Dalla barra di spostamento del portale di gestione scegliere . |
5 |
Fare clic su Nuovo layout e immettere i dettagli per il layout del desktop. |
6 |
Caricare il file JSON ServiceNow Desktop Layout. |
7 |
Fare clic su Salva per salvare la configurazione. Ora è possibile avviare Webex Contact Center Desktop all'interno della console ServiceNow. |
8 |
Dal campo Filter navigator , passare a . |
Nelle sezioni seguenti vengono descritti i passaggi per installare il connettore ServiceNow per le istanze aziendali con licenza.
1 |
Accedere all'account del portale per sviluppatori ServiceNow e aprire la console di amministrazione . |
2 |
Dall'area Istanza personale del menu Account , fare clic su Inizia a creare . |
3 |
Nell'istanza sviluppatore, dal campo Filter navigator nella parte superiore sinistra della finestra, vai a Plugin. |
4 |
Cerca il plugin Openframe che ha il titolo Openframe. Potrebbe essere necessario scorrere l'elenco. |
5 |
Fare clic su Installa per installare il plug-in Openframe. |
6 |
Nella finestra di dialogo Attiva plug-in, fare clic su Attiva. |
7 |
Una volta completata l'attivazione del plug-in, fare clic su Chiudi e ricarica modulo nella finestra di dialogo Attivazione plug-in. |
8 |
Per verificare l'attivazione del plugin, dal campo Filter navigator in alto a sinistra della finestra, passare a OpenFrame. |
9 |
Fare clic su Configurazioni e assicurarsi che il plug-in OpenFrame sia visualizzato nell'elenco Configurazioni OpenFrame . |
Le istanze che dispongono di licenze Enterprise possono installare l'applicazione Webex Contact Center direttamente dal ServiceNow Store.
Scaricare e installare il pacchetto Webex Contact Center dallo store ServiceNow: https://store.servicenow.com/sn_appstore_store.do#!/store/application/6c8e2a4edbc73410e1c75e25ca961947. |
1 |
Nel campo Filter navigator nella parte superiore sinistra della finestra, immettere |
2 |
Nella pagina Proprietà del sistema, ordinare le proprietà in base alla data di aggiornamento. Assicurati di poter visualizzare le seguenti proprietà Webex Contact Center: |
3 |
Fare clic su agentdesktop_url per aprire la pagina agentdesktop_url Proprietà di sistema. |
4 |
Nel campo Valore , immettere l'URL per Webex Contact Center Desktop in base all'area di operazione.
|
5 |
Fare clic su Aggiorna per salvare le modifiche. |
6 |
(Opzionale) Per modificare il nome della tabella Attività, modificare le proprietà x_caci_webexcc.webexccactivitytable in base alle esigenze.
|
7 |
(Opzionale) Aggiungere gruppi di utenti nei seguenti modi:
|
1 |
Dal campo Filter navigator , passare a . |
2 |
Fare clic su Nuovo. |
3 |
Immettere le seguenti proprietà per l'URL:
|
4 |
A destra del campo URL , fai clic sul pulsante Blocca e aggiungi |
5 |
(Opzionale) Selezionare i gruppi di utenti/agenti per assegnare la configurazione. |
6 |
Fare clic su Submit. L'URL viene visualizzato come collegamento. |
7 |
Dal campo Filter navigator , passare a . |
8 |
(Opzionale) Nell'elenco Gruppo di utenti, spostare i gruppi di utenti che possono accedere al desktop Webex Contact Center da Disponibile a Selezionato. |
9 |
Prima di tentare di utilizzare il telefono OpenFrame, assicurarsi di caricare il file JSON di layout desktop personalizzato ServiceNow nel portale di gestione Webex Contact Center. Per ulteriori informazioni, vedere Impostazione del layout del desktop ServiceNow su Webex Contact Center. |
1 |
Scarica il layout desktop per ServiceNow da https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
Aggiornare le proprietà nel file di layout desktop, se necessario. |
3 |
Vai al portale di gestione Webex Contact Center. |
4 |
Dalla barra di spostamento del portale di gestione scegliere . |
5 |
Fare clic su Nuovo layout e immettere i dettagli per il layout del desktop. |
6 |
Caricare il file JSON ServiceNow Desktop Layout. |
7 |
Fare clic su Salva per salvare la configurazione. Ora è possibile avviare Webex Contact Center Desktop all'interno della console ServiceNow. |
8 |
Dal campo Filter navigator , passare a . |
1 |
Dal campo Filter navigator , passare a Incidenti> Apri incidente . |
2 |
Fare clic con il pulsante destro del mouse sul campo del chiamante e fare clic su Configura dizionario. |
3 |
Aggiungere attributi Ora puoi iniziare a utilizzare Webex Contact Center Desktop all'interno della console ServiceNow. |
4 |
Dal campo Filter navigator , passare a . |
È supportato l'accesso a Agent Desktop utilizzando solo i connettori WebRTC for Salesforce (SFDC) e Microsoft Dynamics (MS Dynamics).
Agent Desktop nella console ServiceNow
Prima di effettuare chiamate in uscita, assicurarsi di effettuare le seguenti operazioni:
-
Creare il punto di ingresso in uscita e impostare una strategia per il punto di ingresso in uscita.
-
Abilitare l'ANI di composizione esterna per il profilo agente.
-
Impostare l'ANI di composizione su una mappatura Dial Number-to-Entry Point.
Per ulteriori informazioni, vedere il capitolo Provisioning della Cisco Webex Contact Center Guida all'installazione e all'amministrazione.
Dal campo Filter navigator , passare a .
Per informazioni sull'utilizzo di Desktop, vedere Agent Tab nella guida Webex Contact Center.
Panoramica
In questo articolo vengono illustrati diversi modi per personalizzare le regole aziendali per il connettore ServiceNow CRM. Descrive in dettaglio come personalizzare i casi d'uso in base alle regole aziendali specifiche di ServiceNow.
Il cliente deve gestire autonomamente questi casi d'uso su ServiceNow. La configurazione è specifica di ServiceNow e non Webex Contact Center software o competenza.
Questa è una documentazione di riferimento per facilitare la modifica delle regole aziendali. Gli sviluppatori di ServiceNow creeranno e gestiranno le regole aziendali e forniranno supporto.
Cisco fornisce solo documentazione di esempio.
Nelle sezioni seguenti vengono fornite informazioni dettagliate su come impostare, abilitare e gestire il widget Azioni per le istanze per sviluppatori e aziende.
Eseguire il commit del widget Aggiorna set per azioni
Per le istanze aziendali con licenza, installa l'app Webex Contact Center più recente dallo store ServiceNow.
Per configurare il widget Azioni per le istanze degli sviluppatori, scarica l'ultimo file System Update Set XML disponibile nel repository github a questa posizione: 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 eseguire il commit del set di aggiornamenti per il widget Azioni, vedere i passaggi da 2 a 9 in Eseguire il commit del set di aggiornamenti.
Widget Abilita azioni
Utilizzare la proprietà isWidgetDisplayEnabled per abilitare il widget Azioni. Non è necessario 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. È necessario aggiornare il valore della proprietà solo nella sezione del pannello del layout desktop personalizzato.
Una volta abilitato il widget Azioni nel layout desktop personalizzato, è possibile eseguire le seguenti azioni:
- Gestisci record attività: fai clic su Visualizza/Modifica record attività per visualizzare l'elenco dei record di attività associati al chiamante.
- Associa oggetti CRM: fare clic su Associa a record attività per aggiungere al record attività oggetti CRM quali tipo di chiamata (in entrata o in uscita), oggetto chiamata, note chiamata e così via.
- Gestisci incidenti: fai clic su Crea incidente. Viene creato un nuovo incidente con i dettagli del chiamante precompilati. È possibile apportare gli aggiornamenti necessari all'incidente. È possibile scegliere di modificare il tipo di record da incidente a caso, modulo HR e così via in base alle proprie esigenze. Per cambiare il tipo di record, modificare 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" } } ] }
- Aggiungi note di chiamata in tempo reale: è possibile acquisire ulteriori informazioni sulla chiamata nell'area di testo e concludere la chiamata. È possibile visualizzare queste note aggiunte come note di chiamata nel record attività.
Modifica del codice su ServiceNow
Lo script include modifiche-
Vai al navigatore dei filtri e cerca
Lo script include
.Selezionare Script inclusi in Interfaccia utente di sistema.
-
Filtra il Nome e cerca
propUtils
. -
Cambia il metodo
UserGetSysId
nello Script.Corrente:
UserGetSysId: funzione () { var opened_for; var utente = new GlideRecord("sys_user"); utente.addQuery(this.getParameter('campo'),this.getParameter('valore')); utente.query(); se (utente.next()) opened_for=utente.sys_id; var grInt = new GlideRecord('interazione'); grInt.initialize(); grInt.assegnato_a= gs.getUserID(); grInt.tipo= 'telefono'; grInt.opened_for= opened_for; var sysid=grInt.Insert(); restituisci sysid; },
Nuovo codice di esempio per l'incidente:
UserGetSysId: function () { var opened_for; //Modifiche relative all'incidente 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; //restituisci 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='telefono'; inc.short_description='Chiamata ricevuta da'+ this.getParameter('valore'); sysidlist.incsysid=inc.Insert(); } } var grInt = new GlideRecordSecure('interazione'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefono'; grInt.opened_for= opened_for; var sysid=grInt.Insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist); },
-
Vai al navigatore dei filtri e cerca
pagina UI
.Selezionare Pagine dell'interfaccia utente in Interfaccia utente di sistema.
-
Filtra il Nome e cerca
agentedesktop
. -
Cambia il
screenpop
Funzione nello script client.Funzione attuale:
// funzione di comparsa dello schermo screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('campo', 'telefono'); gaout.addParam('valore', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: 'interaction', query: 'sys_id='+sysid });
Codice di esempio per l'incidente:
// funzione di comparsa dello schermo screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('campo', 'telefono'); gaout.addParam('valore', callerani); gaout.getXMLWait(); // Per la modifica correlata all'incidente var sysObj = JSON.parse(gaout.getAnswer()); se(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entità: 'incidente', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }altrimenti{ openFrameAPI.openServiceNowForm({ entità: 'incidente', query: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }); } }
Se le informazioni del chiamante sono presenti nel CRM ed è già stato aperto un nuovo incidente con questo contatto, l'applicazione apre l'incidente in corso
Se le informazioni del chiamante non esistono nel CRM, l'applicazione apre un nuovo incidente
Se le informazioni del chiamante sono presenti nel CRM, l'applicazione apre un nuovo incidente con i dettagli precompilati
Panoramica
Questo caso d'uso descrive in dettaglio il processo per aggiungere una colonna extra alla tabella ServiceNow, webexcc_imp_activity, e creare sn_openframe_phone_log durante l'installazione del CC Webex per ServiceNow CRM Connector.
Per impostazione predefinita, la tabella contiene alcuni campi e valori di sistema predefiniti.
È possibile creare più variabili specifiche dell'azienda (variabili CAD) all'interno del progettista di flussi WebexCC e aggiungere le variabili CAD all'interno del registro delle attività delle chiamate ServiceNow POST, nonché renderle persistenti nei dati della tabella delle attività delle chiamate POST.
Questa è solo una 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 di IVR e lo invia a ServiceNow.
Si prevede che gli sviluppatori ServiceNow del partner+cliente configurino e gestiscano questa configurazione poiché si tratta di una personalizzazione del connettore esistente.
Cisco fornisce solo le tecniche su come personalizzare ed estendere il connettore.
Al momento della stesura di questo articolo, il team Cisco ha convalidato il supporto per l'aggiunta della variabile CAD al registro attività e alla tabella attività utilizzando la tecnica descritta di seguito:
Aggiungi colonna all'attività IMP di WebexCC
-
Modificare la tabella nella versione per sviluppatori di ServiceNow.
-
Vai al navigatore dei filtri e cerca studio.
Seleziona
Webex Contact Center
o
-
Selezionare il
Attività IMP WebexCC
tavolo -
Aggiungi una nuova colonna, ad esempio,
Nome del cliente
Aggiungi colonna al registro telefonico
-
Modifica la tabella del registro telefonico.
-
Aggiungi una nuova colonna, ad esempio,
Nome del cliente
.
Mappa di trasformazione delle attività WebexCC
Aggiungi una nuova colonna, ad esempio, Nome del cliente
Mappatura del campo.
Personalizza le colonne dell'elenco
Come consigliato da Service Now, modificare l'azione Scelta da Crea a Ignora.
Configura l'elenco dei registri telefonici
Vai a Includi script
Aggiungi solo una riga webexcc.u_customername=actInfo.NomeCliente
A propUtils.
Guarda la riga: webexcc.u_customername=actInfo.NomeCliente; 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('campo'),this.getParameter('valore')); user.query(); if (user.next()) opened_for=user.sys_id; //restituisci user.sys_id; // altrimenti // restituisci null; var grInt = new GlideRecord('interazione'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefono'; grInt.opened_for= opened_for; var sysid=grInt.Insert(); restituisci 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; // Questa riga è stata aggiunta per acquisirla nel registro attività webexcc.u_customername=actInfo.CustomerName; sys_id=webexcc.Insert(); //Attività sul record Incidente; var actInfoString =this.getParameter('actInfo'); var suser = new GlideRecordSecure("sys_user"); suser.addQuery("telefono", 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; }, tipo: 'propUtils' });
Creare una variabile CAD in Flow Designer
Aggiungere la variabile CAD al layout del desktop
Esempio
"CadName1:SnowField1,CadName2:SnowField2" CadName1 è CustomerName. SnowField1 è anche utilizzato come CustomerName, che fa parte dello script di esempio mostrato sopra "actInfo.CustomerName".
Screenshot dimostrativi
Visualizza la variabile CAD appena aggiunta nella tabella Attività WebexCC.
Crea variabile CAD per Flow Designer
Urgenza dell'incidenteImpatto dell'incidente
Aggiornamento dello script Service Now
Aggiornamenti allo script include
-
Vai al navigatore dei filtri e cerca
lo script include
Selezionare il Lo script include opzione sotto Interfaccia utente di sistema.
-
Filtra il Nome con
propUtils
. -
Cambia il metodo
UserGetSysId
nel Sceneggiatura campo.Script attuale:
UserGetSysId: funzione () { var opened_for; var utente = new GlideRecord("sys_user"); utente.addQuery(this.getParameter('campo'),this.getParameter('valore')); utente.query(); se (utente.next()) opened_for=utente.sys_id; var grInt = new GlideRecord('interazione'); grInt.initialize(); grInt.assegnato_a= gs.getUserID(); grInt.tipo= 'telefono'; grInt.opened_for= opened_for; var sysid=grInt.Insert(); restituisci sysid; },
Nuovo codice di esempio per l'incidente:
UserGetSysId: funzione () { var opened_for; var sysidlist = {}; var utente = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('campo'),this.getParameter('valore')); user.query(); if(user.next()) { opened_for=user.sys_id;//ritorna user.sys_id; var inc = new GlideRecordSecure('incidente'); inc.addQuery('id chiamante', opened_for); inc.addQuery('stato','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='telefono'; inc.urgency=this.getParameter('IncUrgency'); inc.impact=this.getParameter('Impatto'); inc.short_description='Chiamata ricevuta da'+ this.getParameter('valore'); sysidlist.incsysid=inc.Insert(); } } var grInt = new GlideRecordSecure('interazione'); grInt.initialize(); grInt.assigned_to= gs.getUserID(); grInt.type= 'telefono'; grInt.opened_for= opened_for; var sysid=grInt.Insert(); sysidlist.sysid=sysid; return JSON.stringify(sysidlist);//sysid; },
-
Vai al navigatore dei filtri e cerca
Pagine dell'interfaccia utente
.Selezionare il Pagine dell'interfaccia utente opzione sotto Interfaccia utente di sistema.
-
Filtra il Pagine dell'interfaccia utente con Nome e cercare
agentedesktop
. -
Cambia il
screenpop
Funzione nel campo script.Funzione attuale:
// funzione di comparsa dello schermo screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani); } var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'UserGetSysId'); gaout.addParam('campo', 'telefono'); gaout.addParam('valore', callerani); gaout.getXMLWait(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: 'interaction', query: 'sys_id='+sysid }); }
Codice di esempio per l'incidente:
// funzione di comparsa dello schermo 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('nome_sysparm', 'UserGetSysId'); gaout.addParam('campo', 'telefono'); gaout.addParam('valore', chiamanti); gaout.addParam('IncUrgency', IncUrgency); gaout.addParam('Impatto', Impatto); gaout.getXMLWait(); // var sysid = gaout.getAnswer(); var sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entità: 'incidente', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entità: 'incidente', query: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }
Se le informazioni del chiamante sono presenti in CRM e non vi è alcun incidente nuovo o in corso, l'applicazione apre un nuovo incidente
Modificare il codice su ServiceNow
Aggiungere nuove colonne all'elenco Attività WebexCC IMP
tavolo
Aprire l'icona Attività WebexCC IMPtavolo
Fare clic su Aggiorna.
Aggiungere nuove colonne all'elenco Registro telefonico
tavolo
Aprire l'icona Registro telefonico
tavolo
Mappa di trasformazione dell'attività WebexCC
Aperta Trasforma mappa
Dal navigatore filtri
Clicca su Attività WebexCC TransformMap
Fare clic su Aggiorna.
Le modifiche apportate agli script includono
-
Vai a filter navigator e cerca "script include".
Selezionare lo script include in Interfaccia utente del sistema.
-
Filtra 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']; cancellare 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(); } restituire sys_id; },
Modifiche ai metodi nelle pagine dell'interfaccia utente
-
Vai a filter navigator e cerca
Pagine dell'interfaccia utente
Selezionare l'opzione Pagine interfaccia utente in Interfaccia utente di sistema.
-
Filtra le pagine dell'interfaccia utente con Nome e cerca
agentdesktop
. -
Modificare il
nowAttività e screenpop
Funzione nello script.Funzione corrente:
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 precedenti. Per le personalizzazioni per le versioni più recenti 1.0.7 e successive, attenersi alla procedura precedente.
Personalizzazione # 1 - Aggiungi regole aziendali personalizzate per i casi d'uso del flusso di chiamata
Creare un nuovo record di incidente per ogni chiamataPer ogni nuova chiamata al connettore WebexCC CRM in ServiceNow, creare un nuovo record incidente.
Cercare regole di business nel navigatore filtri
Fare clic su Nuovo.
Codice di esempio per riferimento:
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", nome); } 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; URL di ritorno; } 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; }
Configurazione di esempio della regola di business
Abilita Client richiamabile
L'elaborazione dell'integrazione di telefonia (CTI) per incidente è contrassegnata come True.
Aggiornare l'URL screenpop con la regola CTI personalizzata" cti.do?sysparm_cti_rule=createIncident&sysparm_caller_phone="
Il sysparm_cti_rule=name dove 'name' è il nome di una funzione deve essere invocato per CTI Processing piuttosto che utilizzare lo script predefinito.
Definire la funzione in una voce di sys_script contrassegnata come client richiamabile.
Se è necessario Insert, aggiornare o eliminare qualsiasi GlideRecords nella funzione, chiamare una funzione non client richiamabile separata per eseguire gli aggiornamenti.
Per rendere uno script richiamabile dal client, è necessario selezionare la casella di controllo client-callable nel modulo visualizzato quando viene visualizzata la voce sys_script.
La casella di controllo richiamabile dal client non viene visualizzata per impostazione predefinita. Per visualizzare, è necessario modificare i campi visualizzati sul modulo utilizzando l'icona a forma di ingranaggio e il meccanismo della benna granita.
Personalizzazione # 2 - Aggiungi variabile CAD nella tabella delle attività Webex Contact Center
PanoramicaQuesto articolo descrive in dettaglio il processo per aggiungere un'ulteriore colonna alla tabella ServiceNow, webexcc_activity creata dopo l'installazione del connettore Webex CC for ServiceNow CRM.
Per impostazione predefinita, la tabella contiene campi e valori di sistema predefiniti.
È possibile creare più variabili specifiche dell'azienda (variabili CAD) all'interno di WebexCC Flow Designer e aggiungere tali variabili CAD all'interno del registro attività di chiamata ServiceNowPOST e mantenerle nei dati della tabella delle attività di chiamata POST.
-
Questa è solo 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 del IVR e lo invia a ServiceNow.
-
Gli sviluppatori partner+clienti 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 Cisco ha convalidato il supporto per l'aggiunta di variabili CAD al registro attività e alla tabella delle attività utilizzando la tecnica descritta di seguito.
Modifica la tabella nella versione per sviluppatori di ServiceNow.
Vai allo
.Selezionare Tabella attività WebexCC.
Ad esempio, CustomerName.
Selezionare Layout elenco per Attività WebexCC.
Questo passaggio non è necessario se si utilizza il set di aggiornamenti XML - È necessario aggiungere solo una riga "webexcc.u_customername=actInfo.CustomerName" a propUtils.

Script di esempio
Vedere 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; // Questa riga è aggiunta - per catturarla nel webexcc del registro attività. u_customername=actInfo.CustomerName; sys_id=webexcc.Insert(); Attività sulla registrazione degli incidenti; 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(); } } } ritorno sys_id; }, tipo: 'propUtils2' });
Modificare la pagina dell'interfaccia utente con un nuovo nome di script
Creare una variabile CAD in Flow Designer
Aggiunta della variabile CAD al layout del desktop
Screenshot demo
Visualizzare la variabile CAD appena aggiunta nella tabella Attività WebexCC.
