Integra Webex Contact Center con ServiceNow
Quando integri Webex Contact Center con la console CRM ServiceNow, puoi avviare Webex Contact Center Desktop da ServiceNow.
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 al Webex Contact Center.
-
Accesso dell'amministratore a Control Hub at https://admin.webex.com e al portale di gestione del contact center Webex. Gli URL del portale di gestione sono specifici per la propria regione.
-
Nord America: https://portal.wxcc-us1.cisco.com
-
Regno Unito: https://portal.wxcc-eu1.cisco.com
-
Giappone: https://portal-v2.wxcc-jp1.cisco.com
-
Singapore: https://portal-v2.wxcc-sg1.cisco.com
-
-
Un agente con accesso al desktop. L'URL del desktop è specifico per la propria regione.
-
Nord America: https://desktop.wxcc-us1.cisco.com
-
Regno Unito: https://desktop.wxcc-eu1.cisco.com
-
Giappone: https://desktop.wxcc-jp1.cisco.com
-
Singapore: https://desktop.wxcc-sg1.cisco.com
-
-
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 aggiornamento 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 Integrazione di contact center 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 di XML System Update Set 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 XML Set di aggiornamenti di sistema, 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. Assicurarsi 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 del desktop Webex Contact Center in base all'area di intervento.
|
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 di layout desktop personalizzato ServiceNow nel portale di gestione di 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 |
Accedere al portale di gestione del contact center Webex. |
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 il desktop Webex Contact Center 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 da 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. Assicurarsi 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 del desktop Webex Contact Center in base all'area di intervento.
|
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 di 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 |
Accedere al portale di gestione del contact center Webex. |
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 il desktop Webex Contact Center 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 il desktop Webex Contact Center all'interno della console ServiceNow. |
4 |
Dal campo Filter navigator , passare a . |
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 Guida all'installazione e all'amministrazione Cisco Webex Contact Center.
Dal campo Filter navigator , passare a .
Per informazioni su come utilizzare Desktop, vedere la scheda Agente nella Guida di 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 software o competenza di Contact Center.
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'ultima app Webex Contact Center dallo store ServiceNow.
Per configurare il widget Azioni per le istanze degli sviluppatori, scarica il file di XML del set di aggiornamenti di sistema più recente disponibile sul 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 a filter navigator e cerca
Lo script include
.Selezionare Script include in Interfaccia utente di sistema.
-
Filtrare il Nome e cercare
propUtils
. -
Modificare il metodo
UserGetSysId
nello script.Curent:
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= 'telefono'; 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='chiamata ricevuta da '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); 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 a filter navigator e cerca
la pagina
dell'interfaccia utente.Selezionare le pagine dell'interfaccia utente in Interfaccia utente di sistema.
-
Filtrare il Nome e cercare
agentdesktop
. -
Modificare il
screenpop
Funzione nello script client.Funzione corrente:
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('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:
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 in CRM ed è già stato aperto un nuovo incidente con questo contatto, l'applicazione apre l'incidente in corso
Se le informazioni sul chiamante non esistono in CRM, l'applicazione apre un nuovo incidente
Se le informazioni del chiamante sono presenti in 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 creare sn_openframe_phone_log dopo l'installazione di Webex CC for ServiceNow CRM Connector.
Per impostazione predefinita, la tabella contiene determinati campi e valori di sistema predefiniti.
È possibile creare più variabili specifiche dell'azienda (variabili CAD) all'interno di WebexCC Flow Designer e aggiungere le variabili CAD all'interno del registro attività post-chiamata ServiceNow, nonché mantenerle nei dati della tabella delle attività post-chiamata.
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 del IVR e lo invia a ServiceNow.
Si prevede che gli sviluppatori di ServiceNow partner+cliente configureranno e gestiranno 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 di variabili CAD al registro attività e alla tabella attività utilizzando la tecnica descritta di seguito:
Aggiungi colonna all'attività WebexCC IMP
-
Modifica la tabella nella versione per sviluppatori di ServiceNow.
-
Vai al navigatore dei filtri e cerca studio.
Seleziona
Webex Contact Center
o
-
Selezionare l'icona
Attività WebexCC IMP
tavolo -
Aggiungere una nuova colonna, ad esempio
NomeCliente
Aggiungi colonna al registro telefonico
-
Modificare la tabella del registro telefonico.
-
Aggiungere una nuova colonna, ad esempio
NomeCliente
.
Mappa di trasformazione dell'attività WebexCC
Aggiungere una nuova colonna, ad esempio NomeCliente
Mappatura dei campi.
Personalizza colonne elenco
Come consigliato da Service Now, modificare l'azione Scelta da crea a ignora.
Configurare l'elenco dei registri telefonici
Vai a Includi script
Aggiungi solo una riga webexcc.u_customername=actInfo.CustomerName
A propUtils.
Script di esempio
Vedere 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= 'telefono'; grInt.opened_for= opened_for; var sysid=grInt.insert(); sysid di ritorno; }, 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 acquisirla nel Registro attività webexcc.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(actInfoString),null,2); inc.comments =jsonPretty; inc.update(); } } } ritorno sys_id; }, tipo: 'propUtils' });
Creare una variabile CAD in Flow Designer
Aggiunta della variabile CAD al layout del desktop
Esempio
"CadName1:SnowField1,CadName2:SnowField2" CadName1 è CustomerName SnowField1 viene utilizzato anche come CustomerName che fa parte dello scirpt di esempio mostrato sopra "actInfo.CustomerName".
Screenshot demo
Visualizzare la variabile CAD appena aggiunta nella tabella Attività WebexCC.
Creare variabili CAD per Flow Designer
Urgenza dell'incidenteImpatto dell'incidente
Aggiornamento script Service Now
Gli aggiornamenti allo script includono
-
Vai al navigatore dei filtri e cerca script include
Selezionare l'opzione Script include in Interfaccia utente di sistema.
-
Filtrare il Nome con
propUtils
. -
Modificare il metodo
UserGetSysId
nel campo Script .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= 'telefono'; 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='Chiamata ricevuta da '+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); 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
le 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
screenpop
Nel campo dello script.Funzione corrente:
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 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 Aggiungere una nuova colonna - InteractionsNumber Aggiungere una nuova colonna - IncidentNumber
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 Script include in Interfaccia utente di 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 CTI Elaborazione anziché utilizzare lo script predefinito.
Definire la funzione in una voce di sys_script contrassegnata come client richiamabile.
Se è necessario inserire, aggiornare o eliminare qualsiasi GlideRecords nella funzione, chiamare una funzione richiamabile non client 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
PanoramicaIn questo articolo viene descritto in dettaglio il processo per aggiungere un'ulteriore colonna alla tabella ServiceNow, webexcc_activity creato dopo l'installazione di Webex CC for ServiceNow CRM Connector.
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à post-chiamata ServiceNowe mantenerle nei dati della tabella delle attività post-chiamata.
-
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 attività utilizzando la tecnica descritta di seguito.
Modifica la tabella nella versione per sviluppatori di ServiceNow.
Vai al
Webex.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 scriptCreare 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.