Intégrer Webex Contact Center à ServiceNow
Lorsque vous intégrez Webex Contact Center à la console ServiceNow CRM, vous pouvez lancer Webex Contact Center Desktop à partir de ServiceNow.
Conditions préalablement requises
Avant d'intégrer Webex Contact Center à la console ServiceNow CRM, assurez-vous de disposer des éléments suivants :
-
Accès à Webex centre de contact.
-
Accès administrateur au Control Hub at https://admin.webex.com et au Webex Contact Center Management Portal. Les URL du Management Portal sont propres à votre région.
-
Amérique du Nord : https://portal.wxcc-us1.cisco.com
-
Royaume-Uni : https://portal.wxcc-eu1.cisco.com
-
Singapour : https://portal-v2.wxcc-sg1.cisco.com
-
-
Agent ayant accès au bureau. L'URL du bureau est spécifique à votre région.
-
Amérique du Nord : https://desktop.wxcc-us1.cisco.com
-
Royaume-Uni : https://desktop.wxcc-eu1.cisco.com
-
Singapour : https://desktop.wxcc-sg1.cisco.com
-
-
Accès de l'agent au domaine suivant qui est ajouté dans la liste autorisée de stratégie de sécurité du contenu :
-
*.service-now.com
Pour plus d'informations sur la définition de la liste autorisée, voir l'article Paramètres de sécurité pour Webex Contact Center.
-
-
Un compte portail de développeur ServiceNow. Pour créer un compte, accédez au portail des développeurs ServiceNow à l'adresse https://developer.servicenow.com/dev.do et cliquez sur S'inscrire et commencer à créer.
-
Accès aux fichiers suivants à https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow :
-
Jeu de mises à jour ServiceNow (XML)
-
Disposition du bureau du centre de contacts ServiceNow (JSON)
-
- Les éditions ServiceNow prises en charge par Webex Contact Center sont Vancouver, Utah, Tokya, Washington et Xanadu. Pour plus d'informations, voir Webex Intégration de Contact Center avec ServiceNow.
Suivez l'une des deux méthodes ci-dessous :
Pour les instances de développeur, nous vous recommandons de suivre les étapes du guide des instances du développeur.
Si vous possédez une instance sous licence d'entreprise, suivez les instructions relatives aux instances sous licence d'entreprise.
Nous vous déconseillons de mélanger l'application sous licence d'entreprise avec des instances sandbox de développeur.
Les sections suivantes décrivent les étapes d'installation du connecteur ServiceNow pour les instances de développeur.
1 |
connectez-vous à votre compte portail développeur ServiceNow et ouvrez la console Administration . |
2 |
Dans la zone Mon instance du menu Compte , cliquez sur Démarrer la création. |
3 |
Sur votre instance de développeur, dans le champ Filter navigator en haut à gauche de la fenêtre, accédez à Plugins. |
4 |
Recherchez le plug-in Openframe qui a le titre Openframe. Vous devrez peut-être faire défiler la liste. |
5 |
Cliquez sur Installer pour installer le plug-in Openframe. |
6 |
Dans la boîte de dialogue Activer le plug-in, cliquez sur Activer. |
7 |
Une fois l'activation du plugin terminée, cliquez sur Fermer et recharger le formulaire dans la boîte de dialogue Activation du plug-in. |
8 |
Pour vérifier l'activation du plug-in, dans le champ Navigateur de filtre en haut à gauche de la fenêtre, accédez à OpenFrame. |
9 |
Cliquez sur Configurations et assurez-vous que le plug-in OpenFrame apparaît dans la liste Configurations OpenFrame . |
1 |
Téléchargez le dernier fichier System Update Set XML disponible sur le dépôt github à cet emplacement : https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. Nom de fichier : webexcc-servicenow-update-setV(X).xml |
2 |
Sur votre instance ServiceNow, dans le champ Filter navigator (Navigateur de filtre) en haut à gauche de la fenêtre, accédez à . |
3 |
Cliquez sur Importer le jeu de mises à jour à partir de XML lien. |
4 |
Cliquez sur Choisir un fichier, sélectionnez le fichier XML jeu de mises à jour système, puis cliquez sur Télécharger.
Le jeu de mises à jour apparaît dans la liste des jeux de mise à jour récupérés et est à l'état Chargé .
|
5 |
Dans la liste Jeux de mises à jour récupérés , cliquez sur le nom de fichier du jeu de mises à jour (lien) pour ouvrir le jeu de mises à jour. |
6 |
Dans le coin supérieur droit de la fenêtre, cliquez sur Aperçu du jeu de mises à jour pour rechercher des problèmes dans le jeu de mises à jour. |
7 |
Cliquez sur Fermer dans la boîte de dialogue Aperçu du jeu de mise à jour une fois l'aperçu terminé. |
8 |
Cliquez sur Valider le jeu de mises à jour. |
9 |
Cliquez sur Fermer dans la boîte de dialogue Mettre à jour l'ensemble de valid. une fois la validation du jeu de mises à jour terminée. |
1 |
Dans le champ Navigateur de filtre en haut à gauche de la fenêtre, tapez |
2 |
Dans la page Propriétés système, triez les propriétés par date de mise à jour. Vérifiez que vous pouvez voir les propriétés suivantes de Webex Contact Center : |
3 |
Cliquez sur agentdesktop_url pour ouvrir la page agentdesktop_url des propriétés système. |
4 |
Dans le champ Valeur , saisissez l'URL du centre de contacts Webex Desktop en fonction de la région d'opérations.
|
5 |
Cliquez sur Mettre à jour pour enregistrer les modifications. |
6 |
(Facultatif) Pour modifier le nom de la table Activity, modifiez les propriétés de webexccactivitytable selon vos besoins. Dans la page Propriétés système, cliquez sur webexccactivitytable. Modifiez le champ Valeur selon vos besoins. |
7 |
(Facultatif) Ajoutez des groupes d'utilisateurs des manières suivantes :
|
1 |
Dans le champ Filter navigator , accédez à . |
2 |
Cliquez sur Nouveau. |
3 |
Entrez les propriétés suivantes pour l'URL :
|
4 |
À droite du champ URL , cliquez sur le bouton Verrouiller et ajoutez |
5 |
(Facultatif) Sélectionnez les groupes d'utilisateurs/agents à attribuer à la configuration. |
6 |
Cliquez sur Soumettre. L'URL apparaît sous forme de lien. |
7 |
Avant d'essayer d'utiliser le téléphone OpenFrame, assurez-vous de télécharger le fichier JSON d'aménagement du bureau personnalisé ServiceNow sur le portail Webex Contact Center Management. Pour plus d'informations, consultez Configuration de la disposition du bureau ServiceNow sur Webex Contact Center. |
1 |
Téléchargez la présentation du bureau pour ServiceNow à partir de https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
Mettez à jour les propriétés dans le fichier d'aménagement du bureau, si nécessaire. |
3 |
Accédez au portail de gestion de Webex Contact Center. |
4 |
Dans la barre de navigation Management Portal, choisissez du bureau. |
5 |
Cliquez sur Nouvelle disposition et entrez les détails de la disposition du bureau. |
6 |
Téléchargez le fichier JSON ServiceNow Desktop Layout. |
7 |
Cliquez sur Enregistrer pour enregistrer la configuration. Vous pouvez désormais démarrer Webex Contact Center Desktop dans la console ServiceNow. |
8 |
Dans le champ Navigateur de filtre, accédez à des opérations de service. |
Les sections suivantes décrivent les étapes d'installation du connecteur ServiceNow pour les instances d'entreprise sous licence.
1 |
connectez-vous à votre compte portail développeur ServiceNow et ouvrez la console Administration . |
2 |
Dans la zone Mon instance du menu Compte , cliquez sur Démarrer la création. |
3 |
Sur votre instance de développeur, dans le champ Filter navigator en haut à gauche de la fenêtre, accédez à Plugins. |
4 |
Recherchez le plug-in Openframe qui a le titre Openframe. Vous devrez peut-être faire défiler la liste. |
5 |
Cliquez sur Installer pour installer le plug-in Openframe. |
6 |
Dans la boîte de dialogue Activer le plug-in, cliquez sur Activer. |
7 |
Une fois l'activation du plugin terminée, cliquez sur Fermer et recharger le formulaire dans la boîte de dialogue Activation du plugin . |
8 |
Pour vérifier l'activation du plugin, à partir du champ Navigateur de filtre en haut à gauche de la fenêtre, accédez à OpenFrame. |
9 |
Cliquez sur Configurations et assurez-vous que le plug-in OpenFrame apparaît dans la liste Configurations OpenFrame . |
Les instances disposant de licences d'entreprise peuvent installer l'application Webex Contact Center directement depuis ServiceNow Store.
Téléchargez et installez le package Webex Contact Center depuis la boutique ServiceNow : https://store.servicenow.com/sn_appstore_store.do#!/store/application/6c8e2a4edbc73410e1c75e25ca961947. |
1 |
Dans le champ Navigateur de filtre en haut à gauche de la fenêtre, saisissez |
2 |
Sur la page Propriétés système , triez les propriétés par date de mise à jour. Assurez-vous que vous pouvez voir les propriétés suivantes du centre de contact Webex : |
3 |
Cliquez sur agentdesktop_url pour ouvrir la page Propriétés système agentdesktop_url . |
4 |
Dans le champ Valeur , saisissez l'URL du bureau du centre de contact Webex en fonction de la région d'opération.
|
5 |
Cliquez sur Mettre à jour pour enregistrer les modifications. |
6 |
(Facultatif) Pour modifier le nom de la table d'activité, modifiez les propriétés x_caci_webexcc.webexccactivitytable comme requis.
|
7 |
(Facultatif) Ajoutez des groupes d'utilisateurs de la manière suivante :
|
1 |
À partir du champ Navigateur de filtre , accédez à . |
2 |
Cliquez sur Nouveau. |
3 |
Saisissez les propriétés suivantes pour l'URL :
|
4 |
À droite du champ URL , cliquez sur le bouton Verrouiller et ajoutez |
5 |
(Facultatif) Sélectionnez les groupes d'utilisateurs/d'agents auxquels attribuer la configuration. |
6 |
Cliquez sur Soumettre. L'URL apparaît sous forme de lien. |
7 |
À partir du champ Navigateur de filtre , accédez à . |
8 |
(Facultatif) Dans la liste Groupe d'utilisateurs , déplacez les groupes d'utilisateurs qui peuvent accéder au bureau du centre de contact Webex de Disponible à Sélectionné. |
9 |
Avant de tenter d'utiliser le téléphone OpenFrame, assurez-vous de télécharger le fichier JSON de disposition de bureau personnalisé ServiceNow sur le portail de gestion du centre de contact Webex. Pour plus d'informations, consultez Configurer la disposition du bureau ServiceNow sur Webex Contact Center. |
1 |
Téléchargez la disposition du bureau pour ServiceNow depuis https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. |
2 |
Mettez à jour les propriétés dans le fichier de disposition du bureau, si nécessaire. |
3 |
Accédez au portail de gestion du centre de contact Webex. |
4 |
Dans la barre de navigation du portail de gestion, choisissez . |
5 |
Cliquez sur Nouvelle disposition et entrez les détails de la disposition du bureau. |
6 |
Téléchargez le fichier JSON de mise en page du bureau ServiceNow. |
7 |
Cliquez sur Enregistrer pour enregistrer la configuration. Vous pouvez maintenant démarrer le centre de contact Webex dans la console ServiceNow. |
8 |
À partir du champ Navigateur de filtre , accédez à . |
1 |
À partir du champ Navigateur de filtre , accédez à Incidents > ouvrir l'incident. |
2 |
Cliquez avec le bouton droit sur le champ appelant et cliquez sur Configurer le dictionnaire. |
3 |
Ajouter des attributs séparés par des virgules Vous pouvez désormais commencer à utiliser Webex Contact Center Desktop dans la console ServiceNow. |
4 |
Dans le champ Navigateur de filtre, accédez à . |
Agent Desktop dans la console ServiceNow
Avant de passer des appels externes, assurez-vous de :
-
Créez le point d'entrée de numérotation externe et mettez en place une stratégie de point d'entrée de numérotation externe.
-
Activez la numérotation externe ANI pour le profil d'agent.
-
Définissez l'espace de numérotation externe sur un mappage de numéro d'appel à point d'entrée.
Pour plus d'informations, reportez-vous au chapitre Provisioning du guide d'installation et d'administration Cisco Webex Contact Center.
Dans le champ Navigateur de filtre, accédez à des opérations de service.
Pour plus d'informations sur l'utilisation de Desktop, consultez l'onglet Agent de l'aide de Webex Contact Center.
Vue d'ensemble
Cet article couvre plusieurs façons de personnaliser vos règles d'entreprise pour le connecteur ServiceNow CRM. Il détaille comment vous pouvez personnaliser les cas d'utilisation en fonction des règles métier spécifiques à ServiceNow.
Le client doit gérer lui-même ces cas d'utilisation sur ServiceNow. La configuration est spécifique à ServiceNow et non Webex logiciel ou expertise Contact Center.
Il s'agit d'une documentation de référence pour faciliter la modification des règles métier. Les développeurs ServiceNow créeront et géreront les règles métier et fourniront un support.
Cisco ne fournit que des exemples de documentation.
Les sections suivantes fournissent des détails sur la configuration, l'activation et la gestion du widget Actions pour les instances de développeur et d'entreprise.
Valider le jeu de mises à jour pour le widget Actions
Pour les instances d'entreprise sous licence, installez la dernière application Webex Contact Center à partir de la boutique ServiceNow.
Pour configurer le widget Actions pour les instances de développeur, téléchargez le dernier fichier System Update Set XML disponible sur le dépôt github à cet emplacement : https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow/ActionsWidget. Le nom de fichier est webexcc-servicenow-update-setv7-1-ActionsWidget.xml. Pour valider le jeu de mises à jour pour le widget Actions, reportez-vous aux étapes 2 à 9 dans Valider le jeu de mises àjour.
Widget Activer les actions
Utilisez la propriété isWidgetDisplayEnabled pour activer le widget Actions. Vous ne devez pas modifier la valeur de cette propriété dans la section sans tête de la mise en page de bureau personnalisée. La propriété est toujours définie sur false dans la section sans tête de la disposition de bureau personnalisée. Vous devez mettre à jour la valeur de la propriété uniquement dans la section de panneau de la disposition de bureau personnalisée.
Une fois que vous avez activé le widget Actions dans la présentation personnalisée du bureau, vous pouvez effectuer les actions suivantes :
- Gestion des enregistrements d'activité : cliquez sur Afficher/Modifier le rapport d'activité pour afficher la liste des rapports d'activité associés à l'appelant.
- Associer des objets CRM : cliquez sur Associer aux enregistrements d'activité pour ajouter à l'enregistrement d'activité des objets CRM tels que le type d'appel (entrant ou sortant), l'objet d'appel, les notes d'appel, etc.
- Gérer les incidents : cliquez sur Créer un incident. Un nouvel incident est créé lorsque les détails de l'appelant sont prérenseignés. Vous pouvez apporter les mises à jour requises à l'incident. Vous pouvez choisir de modifier le type d'enregistrement d'un incident à un incident, un module RH, etc., en fonction de vos besoins. Pour modifier le type d'enregistrement, modifiez la valeur de la propriété typeOfRecord dans la configuration du widget Actions. Par exemple :
{ "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" } } ] }
- Ajouter des notes d'appel en direct : vous pouvez capturer des informations supplémentaires sur l'appel dans la zone de texte et post-appel de l'appel. Vous pouvez voir ces notes ajoutées sous forme de notes d'appel dans le rapport d'activité.
Changement de code sur ServiceNow
Le script inclut les modifications-
Accédez au navigateur de filtre et recherchez
Le script inclut
.Sélectionnez le script inclus dans l'interface utilisateur système.
-
Filtrez le nom et recherchez
propUtils
. -
Modifier la méthode
UserGetSysId
Dans le script.Actuel :
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 ; },
Nouvel exemple de code pour l'incident :
UserGetSysId : function () { var opened_for ; //Modifications liées aux incidents 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='Appel reçu de '+ this.getParameter('value') ; sysidlist.incsysid=inc.insert() ; } } var grInt = new GlideRecordSecure('interaction') ; grInt.initialize() ; grInt.assigned_to= gs.getUserID() ; grInt.type= 'téléphone' ; grInt.opened_for= opened_for ; var sysid=grInt.insert() ; sysidlist.sysid=sysid ; return JSON.stringify(sysidlist) ; },
-
Accédez au navigateur de filtre et recherchez
la page
UI.Sélectionnez Pages d'interface utilisateur sous Interface utilisateur système.
-
Filtrez le nom et recherchez
Agentdesktop (bureau) d'agent
. -
Modifiez
screenpop
dans le script client.Fonction actuelle :
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('champ', 'téléphone') ; gaout.addParam('value', callerani) ; gaout.getXMLWait() ; var sysid = gaout.getAnswer() ; openFrameAPI.openServiceNowForm({ entity : 'interaction', query : 'sys_id='+sysid }) ;
Exemple de code pour l'incident :
fonction screen pop 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' }) ; } }
Si les informations relatives à l'appelant existent dans CRM et qu'un nouvel incident a déjà été déclenché avec ce contact, l'application ouvre l'incident en cours
Si les informations sur l'appelant n'existent pas dans CRM, l'application ouvre un nouvel incident
Si les informations sur l'appelant existent dans CRM, l'application ouvre un nouvel incident avec des détails préremplis
Vue d'ensemble
Ce cas d'utilisation détaille le processus d'ajout d'une colonne supplémentaire à la table ServiceNow - webexcc_imp_activity et créer sn_openframe_phone_log lors de l'installation de Webex CC pour ServiceNow CRM Connector.
Par défaut, le tableau contient certains champs et valeurs système prêts à l'emploi.
Vous pouvez créer davantage de variables spécifiques à l'entreprise (variables CAO) dans le concepteur de flux WebexCC et ajouter les variables CAO dans le journal d'activité post-appel ServiceNow, ainsi que les conserver dans les données de la table d'activité post-appel.
Il s'agit d'une documentation de référence uniquement - et montre comment procéder pour un exemple de variable CAD appelée Nom du client qui stocke le nom du client dans le IVR et le publie sur ServiceNow.
Il est prévu que les développeurs partenaire+client ServiceNow configurent et gèrent cette configuration car il s'agit d'une personnalisation du connecteur existant.
Cisco ne fournit que des techniques de personnalisation et d'extension du connecteur.
Depuis cet article, l'équipe Cisco a validé la prise en charge de l'ajout de variables CAD au journal d'activité et au tableau d'activité en utilisant la technique décrite ci-dessous :
Ajouter une colonne à l'activité IMP WebexCC
-
Modifiez le tableau dans la version développeur de ServiceNow.
-
Accédez au navigateur de filtre et recherchez studio.
Sélection
Webex Contact Center
ou
-
Cochez la case
Activité IMP WebexCC
table -
Ajouter une nouvelle colonne, par exemple,
NomClient
Ajouter une colonne au journal du téléphone
-
Modifiez le tableau du journal du téléphone.
-
Ajouter une nouvelle colonne, par exemple,
NomClient
.
Carte de transformation de l'activité WebexCC
Ajouter une nouvelle colonne, par exemple, NomClient
Cartographie des champs.
Personnalisation des colonnes de la liste
Comme Service Now le recommande, modifiez l'action Choix de créer à ignorer.
Configurer la liste des journaux du téléphone
Aller à Script include
Ajouter une seule ligne webexcc.u_customername=actInfo.NomClient
à propUtils.
Exemple de script
Consultez la ligne : webexcc.u_customername=actInfo.CustomerName ; avec un commentaire à l'appui.
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= 'téléphone' ; grInt.opened_for= opened_for ; var sysid=grInt.insert() ; renvoyer 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 ; cette ligne est ajoutée - pour la capturer dans le journal d'activité webexcc.u_customername=actInfo.CustomerName ; sys_id=webexcc.insert() ; Activités consignées dans le dossier de l'incident ; 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() ; } } } retour sys_id ; }, type : 'propUtils' }) ;
Créer une variable CAO dans le concepteur de flux
Ajouter la variable CAD à la présentation du bureau
Exemple
"CadName1 : SnowField1,CadName2 : SnowField2" CadName1 est CustomerName SnowField1 est également utilisé comme CustomerName qui fait partie de l'exemple de scirpt ci-dessus "actInfo.CustomerName".
Captures d'écran de la démo
Affichez la variable CAD nouvellement ajoutée dans la table d'activité WebexCC.
Création d'une variable CAD pour Flow Designer
Urgence en cas d'incidentImpact de l'incident
Mise à jour du script Service Now
Les mises à jour du script incluent
-
Accédez au navigateur de filtres et recherchez les inclusions de
script
Sélectionnez l'option Inclut le script sous Interface utilisateur système.
-
Filtrez le nom avec
propUtils
. -
Modifier la méthode
UserGetSysId
Dans le champ Script .Script actuel :
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 ; },
Nouvel exemple de code pour l'incident :
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='téléphone' ; inc.urgency=this.getParameter('IncUrgency') ; inc.impact=this.getParameter('Impact') ; inc.short_description='Appel reçu de '+ this.getParameter('value') ; sysidlist.incsysid=inc.insert() ; } } var grInt = new GlideRecordSecure('interaction') ; grInt.initialize() ; grInt.assigned_to= gs.getUserID() ; grInt.type= 'téléphone' ; grInt.opened_for= opened_for ; var sysid=grInt.insert() ; sysidlist.sysid=sysid ; return JSON.stringify(sysidlist) ;//sysid ; },
-
Accédez au navigateur de filtre et recherchez
les pages de l'interface
utilisateur.Sélectionnez l'option Pages de l'interface utilisateur sous Interface utilisateur système.
-
Filtrez les pages de l'interface utilisateur avec Nom et recherchez
agentdesktop
. -
Modifiez
screenpop
Dans le champ de script.Fonction actuelle :
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 }) ; }
Exemple de code pour l'incident :
screen pop, fonction 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('champ', 'téléphone') ; gaout.addParam('value', callerani) ; gaout.addParam('IncUrgence', IncUrgence) ; 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)) ; }
Si les informations relatives à l'appelant existent dans CRM et qu'il n'y a pas d'incident nouveau ou en cours, l'application ouvre un nouvel incident
Modifier le code sur ServiceNow
Ajouter de nouvelles colonnes Activité IMP WebexCC
table
Ouvrez Activité IMP WebexCCtable Ajouter une nouvelle colonne - InteractionsNumber Ajouter une nouvelle colonne - IncidentNumber
Cliquez sur Mettre à jour.
Ajouter de nouvelles colonnes Journal du téléphone
table
Ouvrez Journal du téléphone
table
Carte de transformation de l'activité WebexCC
Ouverte Transformer la carte
à partir du navigateur de filtres
Cliquez sur Carte de transformation de l'activité WebexCC
Cliquez sur Mettre à jour.
Modifications apportées aux fonctionnalités de script
-
Allez dans le navigateur de filtre et recherchez "script includes".
Sélectionnez le script inclus dans l'interface utilisateur système.
-
Filtrez le nom avec
propUtils
. -
Modifier la méthode
setWebexcctable
.Nouvel exemple de code pour l'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()) { //Activités sur l'enregistrement d'incident ; //var actInfoString =this.getParameter('actInfo') ; var incsysid=actInfo.incident_sys_id ; var interactionsysid=actInfo.interaction_sys_id ; var incnum=" » ; var intenum=" » ; supprimer actInfo['interaction_sys_id'] ; supprimer 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('état','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.DuréeAppelDansSecondes ; 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() ; } retourner sys_id ; },
Modifications de méthode sur les pages d'interface utilisateur
-
Accédez au navigateur de filtre et recherchez
Pages de l'interface utilisateur
Sélectionnez l'option Pages de l'interface utilisateur sous Interface utilisateur système.
-
Filtrez les pages de l'interface utilisateur avec Nom et recherchez agentdesktop
.
-
Modifiez
maintenantActivités et screenpop
Dans le script.Fonction actuelle :
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) ; }
Exemple de code pour l'incident :
function nowActivities(actInfo, ani) { var sysObjstr = window.localStorage.getItem("screenpopinteraction") ; if(sysObjstr != null && sysObjstr != undefined) { var sysObjjson=JSON.parse(sysObjstr) ; actInfo.interaction_sys_id=sysObjjson.sysid ; actInfo.incident_sys_id=sysObjjson.incsysid ; } var gaout = new GlideAjax('propUtils') ; gaout.addParam('sysparm_name', 'setWebexcctable') ; gaout.addParam('actInfo', JSON.stringify(actInfo)) ; gaout.addParam('ani', stripPrefixes(ani)) ; gaout.getXML(SetCCsysId) ; } 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)) ; }
Résultats après la mise à jour
Les personnalisations suivantes s'appliquent aux versions 1.0.5 et antérieures. Pour les personnalisations pour les versions plus récentes 1.0.7 et ultérieures, suivez les étapes ci-dessus.
Personnalisation #1 - Ajouter des règles métier personnalisées pour les cas d'utilisation de flux d'appels
Créer un nouvel enregistrement d'incident pour chaque appelPour chaque nouvel appel dans le connecteur WebexCC CRM dans ServiceNow, créez un nouvel enregistrement d'incident.
Rechercher des règles métier dans le navigateur de filtre
Cliquez sur Nouveau.
Exemple de code pour référence :
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", nom) ; } if (userID == null && phone != null && phone != '') { userID = UserGetSysId("téléphone", télé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 de retour ; } 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 ; }
Exemple de configuration de la règle métier
Activer le client appelable
Le traitement CTI Computer Telephony Integration (Computer Telephony Integration - Incident ) est marqué comme Vrai.
Mettez à jour l'URL screenpop avec la règle de CTI personnalisée « cti.do ?sysparm_cti_rule=createIncident&sysparm_caller_phone= »
Le sysparm_cti_rule=name où 'name' est le nom d'une fonction doit être appelée pour CTI Traitement plutôt qu'utilisation du script par défaut.
Définissez la fonction dans une entrée de sys_script marquée client appelable.
Si vous devez insérer, mettre à jour ou supprimer des enregistrements glideRecords dans la fonction, appelez une fonction appelable non client distincte pour effectuer les mises à jour.
Pour rendre un script appelable par le client, vous devez cocher la case correspondante dans le formulaire qui s'affiche lorsque l'entrée de sys_script est affichée.
La case à cocher appelable par le client ne s'affiche pas par défaut. Pour les afficher, vous devez modifier les champs qui s'affichent sur le formulaire à l'aide de l'icône d'engrenage et du mécanisme de seau fondée.
Personnalisation #2 - Ajouter une variable CAD dans Webex table d'activité Contact Center
PrésentationCet article détaille le processus d'ajout d'une colonne supplémentaire au tableau ServiceNow - webexcc_activity qui est créé lors de l'installation du connecteur Webex CC pour ServiceNow CRM.
Par défaut, la table contient des champs et des valeurs système prêts à l'emploi.
Vous pouvez éventuellement créer davantage de variables spécifiques à l'entreprise (variables CAO) dans le concepteur de flux WebexCC et ajouter ces variables CAO dans le journal d'activité post-appel ServiceNow, et les conserver dans les données de la table d'activité post-appel.
-
Ceci est uniquement une documentation de référence - et montre comment procéder pour un exemple de variable CAD appelé Nom du client qui stocke le nom du client dans le IVR et le publie sur ServiceNow.
-
Les développeurs partenaire+client ServiceNow configureront et géreront cette configuration car il s'agit d'une personnalisation du connecteur existant.
-
Cisco ne fournira que les techniques de personnalisation et d'extension du connecteur.
-
Depuis cet article, l'équipe Cisco a validé la prise en charge de l'ajout de variables CAO au journal d'activité et au tableau d'activité en utilisant la technique décrite ci-dessous.
Modifiez le tableau dans la version développeur de ServiceNow.
Accédez au
Webex.Sélectionnez la table d'activité WebexCC.
Par exemple, NomClient.
Sélectionnez Mise en page de liste pour l'activité WebexCC.
Cette étape n'est pas nécessaire si vous utilisez le jeu de mises à jour XML - Une seule ligne doit être ajoutée « webexcc.u_customername=actInfo.CustomerName » à propUtils.
Exemple de script
Voir la ligne avec :webexcc.u_customername=actInfo.CustomerName ; avec un commentaire à l'appui.
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 ; // Cette ligne est ajoutée - pour la capturer dans le journal d'activité webexcc. u_customername=actInfo.NomClient ; sys_id=webexcc.insert() ; Activités consignées dans le dossier de l'incident ; 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() ; } } } retour sys_id ; }, type : 'propUtils2' }) ;
Modifier la page d'interface utilisateur avec un nouveau nom de scriptCréer une variable CAO dans le concepteur de flux
Ajouter la variable CAD à la présentation du bureau
Captures d'écran de la démo
Affichez la variable CAD nouvellement ajoutée dans la table d'activité WebexCC.