Integrera Webex Contact Center med ServiceNow (version 1—Legacy)
Förutsättningar
Den minsta stödda storleken för softphone-gränssnittet är 500px. Alla värden som är lägre än 500px kan leda till problem med visning eller funktionalitet.
Innan du integrerar Webex Contact Center med ServiceNow CRM-konsolen, se till att du har följande:
-
Tillgång till Webex Contact Center.
-
Administratörsåtkomst till Control Hub på https://admin.webex.com och Webex Contact CenterManagement Portal. Webbadresserna för Management Portal är specifika för din region.
-
En agent med åtkomst till skrivbordet. Webbadressen för skrivbordet är specifik för din region.
-
Agentåtkomst till följande domän som läggs till i listan Tillåtet innehållssäkerhetsprincip:
-
*.service-now.com
Mer information om hur du definierar den tillåtna listan finns i artikeln Säkerhetsinställningar för Webex Contact Center.
-
-
Ett ServiceNow-utvecklarportalkonto. För att skapa ett konto, gå till ServiceNow utvecklarportal på https://developer.servicenow.com/dev.do och klicka på Registrera dig och börja bygga.
-
Åtkomst till följande filer på https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow:
-
ServiceNow uppdateringsuppsättning (XML)
-
ServiceNow Contact Center-skrivbordslayout (JSON)
-
- ServiceNow-utgåvorna som Webex Contact Center stöder är Vancouver, Utah, Tokya, Washington och Xanadu. Mer information finns i Webex Contact Center Integration med ServiceNow.
Följ en av de två metoderna nedan:
- För utvecklarinstanser rekommenderar vi att du följer stegen i guiden för utvecklarinstanser.
- Om du äger en företagslicensierad instans följer du riktlinjerna för företagslicensierade instanser.
Vi rekommenderar inte att blanda den företagslicensierade appen med utvecklarsandlådeinstanser.
Digitala kanaler som chatt och e-post stöds inte med CRM-kontakter. Detta gäller alla CRM-integrationer som använder dessa kontakter. Planera dina arbetsflöden för driftsättning och kundengagemang i enlighet därmed.
I följande avsnitt beskrivs stegen för att installera ServiceNow-anslutningen för utvecklarinstanser.
| 1 |
Logga in på ditt ServiceNow-utvecklarportalkonto och öppna administr ationskonsolen. |
| 2 |
Klicka på Starta att bygga i området Min instans på menyn Kon to.
|
| 3 |
På din utvecklarinstans, från fältet Filter navigator längst upp till vänster i fönstret, navigera till Plugins.
|
| 4 |
Sök efter Openframe-plugin som har titeln Open frame. Du kan behöva bläddra igenom listan.
|
| 5 |
Klicka på Installera för att installera Openframe-plugin. |
| 6 |
Klicka på Akti vera i dialogrutan Aktivera insticksprogram.
|
| 7 |
När aktiveringen av insticksprogrammet är klar klickar du på Stä ng och ladda om formulär i dialogrutan Aktivering av instick sprogram.
|
| 8 |
För att verifiera plugin-aktiveringen, navigera till OpenFrame från fältet Filter navigator längst upp till vänster i fönstret. |
| 9 |
Klicka på Konfigurationer och se till att OpenFrame-insticksprogrammet visas i listan OpenFrame-konfigurationer.
|
| 1 |
Filnamn: Web Excc-ServiceNow-Update-Setv (X) .xml
|
| 2 |
I ServiceNow-instansen navigerar du till System navigator längst upp till vänster i fönstret.
|
| 3 |
Klicka på länken Importera uppdateringsuppsättning från XML.
|
| 4 |
Klicka på Välj fil, välj XML-filen Systemuppdateringsuppsättning och klicka sedan på Ladda upp.
Uppdateringsuppsättningen visas i listan Hämtade uppdateringsuppsättningar och är i läget In läst.
|
| 5 |
Klicka på länken Update Set File Name (länk) i listan Häm tade uppdateringsuppsättningar för att öppna uppdateringsuppsättningen.
|
| 6 |
Klicka på För handsgranska uppdateringsset längst upp till höger i fönstret för att kontrollera om det finns problem i uppdateringsuppsättningen.
|
| 7 |
Klicka på Stä ng i dialogrutan Update Set Preview när förhandsgranskningen är klar.
|
| 8 |
Klicka på Commit Update Set.
|
| 9 |
Klicka på Stä ng i dialogr utan Update Set Commit när verifieringen av Update Set har slutförts.
|
| 1 |
I fältet Filternavigator längst upp till vänster i fönstret skriver du
|
| 2 |
Sortera egenskaperna efter uppdaterat datum på sidan Systemegenskaper. Se till att du kan se följande Webex Contact Center-egenskaper:
|
| 3 |
Klicka agentdesktop_urlför att öppna agentdesktop_url sidan System egenskaper. |
| 4 |
I fältet Vär de anger du webbadressen för Webex Contact Center Desktop enligt verksamhetsområdet.
|
| 5 |
Klicka på Uppdat era för att spara ändringarna. |
| 6 |
(Valfritt) Om du vill ändra namnet på tabellen Aktivitet redigerar du egenskaperna webexccactivit ytable efter behov. Klicka på webex ccactivitytable på sidan Systemegenskaper. Ändra fältet Vär de efter behov.
|
| 7 |
(Valfritt) Lägg till användargrupper på följande sätt:
|
| 1 |
Från fältet Filternavigator navigerar du till .
|
| 2 |
Klicka på Ny.
|
| 3 |
Ange följande egenskaper för webbadressen:
|
| 4 |
Till höger om URL- fältet klickar du på knappen Lås och lägger till
|
| 5 |
(Valfritt) Välj användare- eller agentgrupp (er) för att tilldela konfigurationen.
|
| 6 |
Klicka på Skicka. Webbadressen visas som en länk.
|
| 7 |
Innan du försöker använda OpenFrame-telefonen, se till att du överför ServiceNow anpassade JSON-filen för skrivbordslayout till Webex Contact Center. Management Portal Mer information finns i Konfigurera ServiceNow Desktop Layout på Webex Contact Center. |
| 1 |
|
| 2 |
Uppdatera egenskaperna i skrivbordslayoutfilen, om det behövs. |
| 3 |
Gå till Webex Contact CenterManagement Portal. |
| 4 |
Välj Tillhandahållande navigeringsfältet.
|
| 5 |
Klicka på Ny layout och ange detaljerna för skrivbordslayouten. |
| 6 |
Ladda upp ServiceNow Desktop Layout JSON-filen. |
| 7 |
Klicka på Spara för att spara konfigurationen. Du kan nu starta Webex Contact Center- skrivbordet i ServiceNow-konsolen. |
| 8 |
Från fältet Filternavigator navigerar du till .
|
I följande avsnitt beskrivs stegen för att installera ServiceNow-anslutningen för licensierade företagsinstanser.
| 1 |
Logga in på ditt ServiceNow-utvecklarportalkonto och öppna administr ationskonsolen. |
| 2 |
Klicka på Starta att bygga i området Min instans på menyn Kon to.
|
| 3 |
På din utvecklarinstans, från fältet Filter navigator längst upp till vänster i fönstret, navigera till Plugins.
|
| 4 |
Sök efter Openframe-plugin som har titeln Open frame. Du kan behöva bläddra igenom listan.
|
| 5 |
Klicka på Installera för att installera Openframe-plugin. |
| 6 |
Klicka på Akti vera i dialogrutan Aktivera insticksprogram.
|
| 7 |
När aktiveringen av insticksprogrammet är klar klickar du på Stä ng och ladda om formulär i dialogrutan Aktivering av instick sprogram.
|
| 8 |
För att verifiera plugin-aktiveringen, navigera till OpenFrame från fältet Filter navigator längst upp till vänster i fönstret. |
| 9 |
Klicka på Konfigurationer och se till att OpenFrame-insticksprogrammet visas i listan OpenFrame-konfigurationer.
|
Instanser som har företagslicenser kan installera Webex Contact Center-programmet direkt från ServiceNow Store.
|
|
| 1 |
I fältet Filternavigator längst upp till vänster i fönstret anger du
|
| 2 |
Sortera egenskaperna efter uppdaterat datum på sidan Systemegenskaper. Se till att du kan se följande Webex Contact Center-egenskaper:
|
| 3 |
Klicka agentdesktop_urlför att öppna agentdesktop_url sidan System egenskaper. |
| 4 |
I fältet Vär de anger du webbadressen för Webex Contact Center Desktop enligt verksamhetsområdet.
|
| 5 |
Klicka på Uppdat era för att spara ändringarna. |
| 6 |
(Valfritt) Om du vill ändra namnet på tabellen Aktivitet redigerar du egenskap x_caci_webexccen.webexccactiv itytable efter behov.
|
| 7 |
(Valfritt) Lägg till användargrupper på följande sätt:
|
| 1 |
Från fältet Filternavigator navigerar du till .
|
| 2 |
Klicka på Ny.
|
| 3 |
Ange följande egenskaper för webbadressen:
|
| 4 |
Till höger om URL- fältet klickar du på knappen Lås och lägger till
|
| 5 |
(Valfritt) Välj användare- eller agentgrupp (er) för att tilldela konfigurationen.
|
| 6 |
Klicka på Skicka. Webbadressen visas som en länk.
|
| 7 |
Från fältet Filternavigator navigerar du till .
|
| 8 |
(Valfritt) Flytta användargrup perna som kan komma åt Webex Contact Center- skrivbordet från Tillgäng ligt till marker at i listan Användargrupp. |
| 9 |
Innan du försöker använda OpenFrame-telefonen, se till att du överför ServiceNow anpassade JSON-filen för skrivbordslayout till Webex Contact Center. Management Portal Mer information finns i Konfigurera ServiceNow Desktop Layout på Webex Contact Center. |
| 1 |
|
| 2 |
Uppdatera egenskaperna i skrivbordslayoutfilen, om det behövs. |
| 3 |
Gå till Webex Contact CenterManagement Portal. |
| 4 |
Välj Tillhandahållande navigeringsfältet.
|
| 5 |
Klicka på Ny layout och ange detaljerna för skrivbordslayouten. |
| 6 |
Ladda upp ServiceNow Desktop Layout JSON-filen. |
| 7 |
Klicka på Spara för att spara konfigurationen. Du kan nu starta Webex Contact Center- skrivbordet i ServiceNow-konsolen. |
| 8 |
Från fältet Filternavigator navigerar du till .
|
| 1 |
Gå till Incid enter > Öppna incident i fältet Filternavigator. |
| 2 |
Högerklicka på uppringningsfältet och klicka på Konfigurera ordlista.
|
| 3 |
Lägg till kommaseparerade attribut
Du kan nu börja använda Webex Contact Center-skrivbordet i ServiceNow-konsolen. |
| 4 |
Från fältet Filternavigator navigerar du till .
|
- Vi stöder inloggning Agent Desktop med WebRTC för Salesforce (SFDC) och Microsoft Dynamics (MS Dynamics) Connectors endast.
- För närvarande är den här funktionen endast tillämplig på agenter.
Agent Desktopi ServiceNow Console
Innan du ringer utgående samtal, se till att du gör följande:
-
Skapa den outdial-ingångspunkten och ställ in en outdial ingångspunktstrategi.
-
Aktivera outdial ANI för agentprofilen.
-
Ställ in outdial ANI på en uppringningsnummer-till-ingångspunkt-mappning.
Mer information finns i kapitlet Tillhandah ållande i Installations- Cisco Webex Contact Centeroch administrationsguiden.
Från fältet Filternavigator navigerar du till .
Information om hur du använder Desktop finns på fliken Agent i hjälpen för Webex Contact Center.
Översikt
Den här artikeln behandlar flera sätt att anpassa dina affärsregler för ServiceNow CRM-anslutningen. Den beskriver hur du kan anpassa användningsfall baserat på affärsregler som är specifika för ServiceNow.
Kunden måste själv hantera dessa användningsfall på ServiceNow. Konfigurationen är specifik för ServiceNow och inte Webex Contact Center-programvara eller expertis.
Detta är en referensdokumentation för att underlätta ändringen av affärsregler. ServiceNow-utvecklarna kommer att skapa och hantera affärsreglerna och ge support.
Cisco tillhandahåller endast exempeldokumentation.
Följande avsnitt innehåller information om hur du konfigurerar, aktiverar och hanterar åtgärdswidgeten för utvecklare och företagsinstanser.
Aktivera widgeten Uppdateringsuppsättning för åtgärder
För licensierade företagsinstanser installerar du den senaste Webex Contact Center-appen från Service Now-butiken.
Om du vill konfigurera widgeten Åtgärder för utvecklarinstanser hämtar du den senaste XML-filen för systemuppdateringsuppsättning som är tillgänglig på github-repo på den här platsen: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow/ActionsWidget. Filnamnet är webexcc-servicenow-update-setv7-1-ActionsWidget.xml. Om du vill utföra uppdateringsuppsättningen för widgeten Åtgärder finns i steg 2 till 9 i Veri fiera uppdateringsuppsättningen.
Aktivera åtgärdswidget
Använd egenskapen isWidgetDisplayEnabled för att aktivera widgeten Åtgärder. Du får inte ändra egenskapens värde i den anpassade skrivbordslayoutens huvudlösa sektion. Egenskapen är alltid inställd på false i den anpassade skrivbordslayoutens huvudlösa sektion. Du bör bara uppdatera egenskapens värde i panelavsnittet i den anpassade skrivbordslayouten.
När du har aktiverat widgeten Åtgärder i den anpassade skrivbordslayouten kan du utföra följande åtgärder:
- Hantera aktivitetsposter — Klicka på Vis a/redigera aktivitetspost för att visa listan över aktivitetsposter som är associerade med den som ringer.
- Associera CRM-objekt — Klicka på Associera till aktivitetsposter om du vill lägga till CRM-objekt som samtalstyp (inkommande eller utgående), samtalsobjekt, samtalsanteckningar osv. i aktivitetsposten.
- Hantera händelser — Klicka på Skapa incident. En ny incident skapas med uppringningsuppgifterna förfyllda. Du kan göra nödvändiga uppdateringar av händelsen. Du kan välja att ändra posttypen från incident till fall, HR-modul och så vidare baserat på dina krav. Ändra posttypen genom att ändra värdet på egenskapen typeOfRecord i widgetkonfigurationen Åtgärder. Till exempel:
{ "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" } } ] } - Lägg till live-samtalsnoteringar — Du kan samla in ytterligare information om samtalet i textområdet och avsluta samtalet. Du kan se dessa anteckningar som läggs till som samtalsanteckningar i aktivitetsposten.
Kodändring på ServiceNow
Skriptet innehåller ändringar-
Gå till filternavigatorn och sök efter
skript inkluderar
.Välj Skript Inkluderar under Systemgränssnitt.
-
Filtrera namnet och sök efter
PropUtils.
-
Ändra metoden U
serGetSysID i skriptet
.Nuvarande:
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; },Ny exempelkod för händelsen:
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); },
-
Gå till filternavigatorn och sök efter
UI page.Välj UI-sidor under Systemgränssnitt.
-
Filtrera namnet och sök efter
agentdesktop
. -
Ändra
skärmpop-
funktionen i klientskript.Nuvarande funktion:
// 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 });Exempelkod för händelsen:
// 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' }); } }
Om uppringningsinformationen finns i CRM, och det redan har öppnats en ny incident med den här kontakten, öppnar applikationen den pågående incidenten
Om uppringningsinformationen inte finns i CRM öppnar applikationen en ny incident
Om uppringningsinformationen finns i CRM öppnar applikationen en ny incident med förifyllda uppgifter
Översikt
Detta användningsfall beskriver processen för att lägga till en extra kolumn i ServiceNow-tabellen - webexcc_imp_activity och skapa sn_openframe_phone_log vid installationen av Webex CC för ServiceNow CRM Connector.
Som standard innehåller tabellen vissa systemfält och värden utanför boxen.
Du kan skapa fler affärsspecifika variabler (CAD-variabler) inuti WebExCC Flow Designer och lägga till CAD-variablerna inuti ServiceNow-aktivitetsloggen efter anrop, samt bibehålla detta i aktivitetstabellens data efter samtal.
Detta är endast en referensdokumentation - och visar hur man gör detta för ett exempel på en CAD-variabel som heter Customer Name som lagrar kundnamnet i IVR och publicerar detta till ServiceNow.
Det förväntas att partner+kundserviceNow-utvecklarna kommer att konfigurera och hantera den här konfigurationen eftersom det är en anpassning till den befintliga kontakten.
Cisco tillhandahåller endast tekniker för hur du anpassar och utökar kontakten.
Från och med den här artikeln har Cisco-teamet validerat stöd för tillägg av CAD-variabel till aktivitetsloggen och aktivitetstabellen med hjälp av tekniken som beskrivs nedan:
Lägg till kolumn i WebExCC IMP-aktivitet
-
Redigera tabellen i utvecklarversionen av ServiceNow.

-
Gå till filternavigatorn och sök efter studio.

Välj
Webex kontaktcenter

eller



-
Välj tabellen
WebExCC IMP-aktivitet

-
Lägg till en ny kolumn, till exempel
CustomerName


Lägg till kolumn i telefonlogg
-
Redigera telefonloggtabellen.


-
Lägg till en ny kolumn, till exempel
CustomerName
.

WebExCC Aktivitetstransformeringskarta

Lägg till en ny kolumn, till exempel fältmappning CustomerName
.


Anpassa listkolumner

Ändra åtgärden Val från skapa till ignorera, som Service Now rekommenderar.


Konfigurera telefonlogglista

Gå till Skript Inkludera
Lägg bara till en rad webexcc. u_customername=ActInfo.CustomerName till PropUtils
.



Se raden: webexcc. u_customername=ActInfo.customer Name; med en stödjande kommentar.
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'
});
Skapa en CAD-variabel i Flow designer

Lägga till CAD-variabeln i skrivbordslayouten
Exempel
"CadName1:SnowField1,CadName2:SnowField2"
CadName1 is CustomerName
SnowField1 is also used as CustomerName which is part of sample scirpt showen above "actInfo.CustomerName".

Demo skärmdumpar
Visa den nyligen tillagda CAD-variabeln i tabellen WebExCC Activity.



Skapa CAD-variabel för Flow Designer
Brådskande incidenter
Incidentpåverkan

Service Now-skriptuppdatering
Uppdateringar av skriptet inkluderar
-
Gå till filternavigatorn och sök efter
script includesVälj alternativet Skript inkluderar under Systemgränssnitt.

-
Filtrera namnet med
propUtils.
-
Ändra metoden
UserGetSysID
i fältet Script.
Aktuellt skript:
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; },Ny exempelkod för händelsen:
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; },
-
Gå till filternavigatorn och sök efter
UI pages.Välj alternativet Användar gränssnittssidor under Systemgränssnitt.

-
Filtrera användargränssnittssidorna med namn och sök efter
agentdesktop.
-
Ändra
skärmpop-
funktionen i skriptfältet.
Nuvarande funktion:
// 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 }); }Exempelkod för händelsen:
// 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)); }
Om uppringningsinformationen finns i CRM, och det inte finns någon ny eller pågående incident öppnar applikationen en ny incident


Ändra koden på ServiceNow
Lägga till nya kolumner i tabellen WebExCC IMP-aktivitet
Öppna tabellen WebExCC IMP-aktivitet





Klicka på Uppdatera.


Lägga till nya kolumner i tabellen Telefonlogg
Öppna tabellen Telefonlogg





WebExCC Aktivitetstransformeringskarta
Öppna omvandlingskartan
från filternavigatorn


Klicka på WebExCC Activity TransformMap




Klicka på Uppdatera.

Ändringar i skript inkluderar
-
Gå till filternavigatorn och sök efter ”script include”.
Välj Skript Inkluderar under Systemgränssnitt.

-
Filtrera namnet med
PropUtils.

-
Ändra metoden
SetWeb
ExccTable.
Ny exempelkod för 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; },
Metodändringar på användargränssnittssidor
-
Gå till filternavigatorn och sök efter
UI-sidor
Välj alternativet Användar gränssnittssidor under Systemgränssnitt.

-
Filtrera användargränssnittssidorna med namn och sök efter
agentdesktop.
-
Ändra funktionen
NowActivities och screenpop
i skriptet.
Nuvarande funktion:
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); }Exempelkod för händelsen:
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)); }
Resultat efter uppdateringen

Följande anpassningar gäller för version 1.0.5 och senare. Följ stegen ovan för anpassningar för de nyare versionerna 1.0.7 och senare.
Anpassning # 1 - Lägg till anpassade affärsregler för användningsfall för samtalsflöde
Skapa en ny incidentpost för varje samtalFör varje nytt samtal till WebExCC CRM-anslutningen i ServiceNow skapar du en ny incidentpost.
Sök efter affärsregler i filternavigatorn

Klicka på Ny.

Provkod för referens:
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; }Exempel på konfiguration av affärsregeln

Aktivera Client callable

Computer Telephony Integration (CTI) Processing for Incident är markerad som True.

Uppdatera skärmpop-webbadressen med den anpassade CTI-regeln "cti.do? sysparm_cti_rule=SkapaIncident& = "sysparm_caller_phone

sysparm_cti_rule=name där 'name' är namnet på en funktion ska anrop as för CTI-bearbetning snarare än att använda standardskriptet.
Definiera funktionen i en sys_scriptpost som är märkt klientkallbar.
Om du måste infoga, uppdatera eller ta bort GlidereCord i funktionen anropar du en separat icke-klientanropbar funktion för att utföra uppdateringarna.
Om du vill göra ett skript klientkallbart måste du markera kryssrutan Client-callable i formuläret som visas när posten visas. sys_script
Kryssrutan Client-callable visas inte som standard. För att visa måste du ändra fälten som visas i formuläret med hjälp av kugghjulsikonen och slush buck-mekanismen.
Anpassning # 2 - Lägg till CAD-variabel i Webex Contact Center aktivitetstabell
ÖversiktDen här artikeln beskriver processen för att lägga till en ytterligare kolumn i ServiceNow-tabellen - webexcc_activity som skapas vid installationen av Webex CC för ServiceNow CRM Connector.
Som standard innehåller tabellen färdiga systemfält och värden.
Du kan potentiellt skapa fler affärsspecifika variabler (CAD-variabler) i WebExCC Flow Designer och lägga till dessa CAD-variabler i ServiceNow-aktivitetslo ggen efter anropet och behålla detta i aktivitetstabellens data efter samtal.
-
Detta är endast referensdokumentation - och visar hur man gör detta för ett exempel på en CAD-variabel som heter Customer Name som lagrar kundnamnet i IVR och skickar detta till ServiceNow.
-
Partner+kundserviceNow-utvecklarna kommer att konfigurera och hantera den här konfigurationen eftersom den är en anpassning till den befintliga anslutningen.
-
Cisco kommer bara att tillhandahålla teknikerna för hur du anpassar och förlänger kontakten.
-
Från och med den här artikeln har Cisco-teamet validerat stöd för tillägg av CAD-variabel till aktivitetsloggen och aktivitetstabellen med hjälp av tekniken som beskrivs nedan.
Redigera tabellen i utvecklarversionen av ServiceNow.

Gå till .



Välj WebExCC Aktiv itetstabell.

Till exempel CustomerName.


Välj Listlayout för WebExcc-aktivitet.

Det här steget krävs inte om du använder Update Set XML - Endast en rad krävs för att läggas till "webexcc. u_customername=ActInfo.customerName "till PropUtils.



Exempelskript
Se raden med: webexcc. u_customername=ActInfo.customer Name; med en stödjande kommentar.
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'
});
Redigera användargränssnittssidan med ett nytt scriptnamn
Skapa en CAD-variabel i Flow designer
Lägga till CAD-variabeln i skrivbordslayouten
Demo skärmdumpar
Visa den nyligen tillagda CAD-variabeln i tabellen WebExCC Activity.

CRM-anslutningen fungerar baserat på den version av widgeten som anges i skrivbordslayouten JSON. Det är oerhört viktigt att se till att widgetversionen i skrivbordslayouten hålls uppdaterad.
Administratörer förväntas se till att alla skrivbordslayouter för denna CRM-anslutning använder den här widgetversionen. If the layout is not updated to use the latest version, functionality will no longer be supported and may cease to work correctly.
- Senaste ServiceNow uppdatering— ServiceNow_Desktop_0 .1.0_v5.0.3.json. Från och med mars 2024 är paketversionen 1.0.9
- Senaste XML-uppdatering—WebExcc-ServiceNow-Update-SetV7-1-ActionsWidget.xml, juni 2024











































