Intégrer Webex Contact Center à ServiceNow (Version 1—Ancien)
Prérequis
Actuellement, cette fonctionnalité n'est applicable qu'aux agents.
Avant d’intégrer Webex Contact Center à la console ServiceNow CRM, assurez-vous d’avoir les informations suivantes :
-
Accès à Webex Contact Center.
-
Accès administrateur au Control Hub à l’adresse https://admin.webex.com et au portail de gestion de Webex Contact Center. Les URL du portail de gestion sont spécifiques à 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
-
-
Un agent avec 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 Politique de sécurité du contenu autorisée :
-
*.service-now.com
Pour plus d’informations sur la façon de définir la liste autorisée, voir l’article Paramètres de sécurité pour le Centre de contactWebex.
-
-
Un compte du portail ServiceNow du développeur. Pour créer un compte, allez sur le portail ServiceNow du développeur à l’espace https://developer.servicenow.com/dev.do et cliquez sur S’inscrire et Démarrer le bâtiment.
-
Accéder aux fichiers suivants à l': https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow
-
Ensemble de mises à jour de ServiceNow (XML)
-
Disposition du bureau ServiceNow Contact Center (JSON)
-
- Les éditions ServiceNow prises en charge par Webex Contact Center sont Vancouver, Utah, Tokya, Washington et Xanadu. Pour plus d’informations, voir Intégration de Webex Contact Center avec ServiceNow.
Suivez l'une des deux méthodes ci-dessous :
Pour les instances de développeurs, nous vous recommandons de suivre les étapes contenues dans le guide de l’instance de développeur.
Si vous possédez une instance avec licence d'entreprise, suivez les instructions pour les instances avec licence d'entreprise.
Nous ne recommandons pas de mélanger l’application sous licence d’entreprise avec des instances de sandbox du développeur.
Les sections suivantes décrivent les étapes à suivre pour installer le connecteur ServiceNow pour les instances de développeur.
1 |
Connectez-vous à votre compte portail de développement ServiceNow et ouvrez la console Administration . |
2 |
À partir de la zone Mon instance du menu Compte , cliquez sur Démarrer le bâtiment. |
3 |
Sur votre instance de développeur, à partir du champ Navigateur de filtre en haut à gauche de la fenêtre, allez à Plugins. |
4 |
Recherchez le plugin Openframe qui a le titre Openframe. Vous devrez peut-être parcourir la liste. |
5 |
Cliquez sur Installer pour installer le plugin Openframe. |
6 |
Dans la boite de dialogue Activer le plugin , cliquez sur Activer. |
7 |
Lorsque l'activation du plugin est terminée, cliquez sur Fermer et recharger le formulaire dans la boite de dialogue Activation du plugin . |
8 |
Pour vérifier l’activation du plugin, à partir du champ Filtrer le navigateur en haut à gauche de la fenêtre, accédez à OpenFrame. |
9 |
Cliquez sur Configurations et assurez-vous que le plugin OpenFrame apparait dans la liste Configurations OpenFrame. |
1 |
Téléchargez le dernier fichier XML Set de mise à jour du système disponible sur le repo github à cet emplacement : https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow. Nom du fichier : webexcc-servicenow-update-setV(X).xml |
2 |
Sur votre instance ServiceNow, à partir du champ Filtrer le navigateur en haut à gauche de la fenêtre, allez dans . |
3 |
Cliquez sur le lien Configurer la mise à jour d’importation à partir de XML . |
4 |
Cliquez sur Choisir le fichier, sélectionnez le fichier XML Set de mise à jour du système, puis cliquez sur Charger.
L’ensemble des mises à jour s’affiche dans la liste Des mises à jour récupérées et a le état Chargement .
|
5 |
À partir de la liste Ensembles de mise à jour récupérés , cliquez sur le nom du fichier Mise à jour des ensembles (lien) pour ouvrir l’ensemble de mise à jour. |
6 |
Dans le coin supérieur droit de la fenêtre, cliquez sur Aperçu de la mise à jour Configurer pour vérifier l’ensemble des mises à jour pour les problèmes. |
7 |
Cliquez sur Fermer sur la boite de dialogue Mise à jour de l’aperçu configuré une fois l’aperçu terminé. |
8 |
Cliquez sur Set la mise à jour de Validation. |
9 |
Cliquez sur Fermer sur la boite de dialogue Validation de la mise à jour de l’ensemble lorsque la validation de la mise à jour de l’ensemble est terminée. |
1 |
Dans le champ Filtre navigateur en haut à gauche de la fenêtre, tapez |
2 |
Sur la page Propriétés du système, trier les propriétés par date de mise à jour. Assurez-vous que vous pouvez voir les propriétés Webex Contact Center suivantes : |
3 |
Cliquez pour agentdesktop_url ouvrir la page Propriétés du agentdesktop_url système. |
4 |
Dans le champ Valeur , saisissez l'URL de Webex Contact Center Desktop en fonction de la région d'opération.
|
5 |
Cliquez sur Mettre à jour pour enregistrer les modifications. |
6 |
(Facultatif) Pour changer le nom du tableau Activité, modifiez les propriétés webexccactivitytable si nécessaire. Sur la page Propriétés du système , cliquez sur webexcactivitytable. Modifiez le champ Valeur si nécessaire. |
7 |
(Facultatif) Ajoutez des groupes d'utilisateurs des façons suivantes :
|
1 |
À partir du champ Filtrer le navigateur, 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 le(s) groupe(s) d'utilisateurs/d'agents à attribuer la configuration. |
6 |
Cliquez sur Soumettre. L’URL apparaît sous la barre d’adresses. |
7 |
Avant de tenter d'utiliser le téléphone OpenFrame, assurez-vous de télécharger le fichier JSON de présentation du bureau personnalisé ServiceNow sur le portail de gestion de Webex Contact Center. Pour plus d’informations, voir Configurer la mise en page du bureau ServiceNow sur Webex Contact Center. |
1 |
Téléchargez la mise en page 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 du fichier de mise en page du bureau, si nécessaire. |
3 |
Allez au portail de gestion de Webex Contact Center . |
4 |
À partir de la barre de navigation du portail de gestion, choisissez |
5 |
Cliquez sur Nouvelle mise en page et saisissez les détails de la mise en page du bureau. |
6 |
Téléchargez le fichier JSON de présentation du bureau ServiceNow. |
7 |
Cliquez sur Enregistrer pour enregistrer la configuration. Vous pouvez maintenant démarrer le bureau Webex Contact Center depuis la console ServiceNow. |
8 |
À partir du champ Navigateur de filtre , accédez à . |
Les sections suivantes décrivent les étapes à suivre pour installer le connecteur ServiceNow pour les instances d'entreprise sous licence.
1 |
Connectez-vous à votre compte portail de développement ServiceNow et ouvrez la console Administration . |
2 |
À partir de la zone Mon instance du menu Compte , cliquez sur Démarrer le bâtiment. |
3 |
Sur votre instance de développeur, à partir du champ Navigateur de filtre en haut à gauche de la fenêtre, allez à Plugins. |
4 |
Recherchez le plugin Openframe qui a le titre Openframe. Vous devrez peut-être parcourir la liste. |
5 |
Cliquez sur Installer pour installer le plugin Openframe. |
6 |
Dans la boite de dialogue Activer le plugin , cliquez sur Activer. |
7 |
Lorsque l'activation du plugin est terminée, cliquez sur Fermer et recharger le formulaire dans la boite de dialogue Activation du plugin . |
8 |
Pour vérifier l’activation du plugin, à partir du champ Filtrer le navigateur en haut à gauche de la fenêtre, accédez à OpenFrame. |
9 |
Cliquez sur Configurations et assurez-vous que le plugin OpenFrame apparait dans la liste Configurations OpenFrame. |
Les instances disposant de licences d'entreprise peuvent installer l'application Webex Contact Center directement à partir de la boutique ServiceNow.
Téléchargez et installez le pack Webex Contact Center à partir de la boutique ServiceNow : https://store.servicenow.com/sn_appstore_store.do#!/store/application/6c8e2a4edbc73410e1c75e25ca961947. |
1 |
Dans le champ Filtrer le navigateur en haut à gauche de la fenêtre, entrez |
2 |
Sur la page Propriétés du système, trier les propriétés par date de mise à jour. Assurez-vous que vous pouvez voir les propriétés Webex Contact Center suivantes : |
3 |
Cliquez pour agentdesktop_url ouvrir la page Propriétés du agentdesktop_url système. |
4 |
Dans le champ Valeur , saisissez l'URL de Webex Contact Center Desktop en fonction de la région d'opération.
|
5 |
Cliquez sur Mettre à jour pour enregistrer les modifications. |
6 |
(Facultatif) Pour changer le nom de la table Activity, modifiez les propriétés x_caci_webexcc.webexccactivitytable si nécessaire.
|
7 |
(Facultatif) Ajoutez des groupes d'utilisateurs des façons suivantes :
|
1 |
À partir du champ Filtrer le navigateur, 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 le(s) groupe(s) d'utilisateurs/d'agents à attribuer la configuration. |
6 |
Cliquez sur Soumettre. L’URL apparaît sous la barre d’adresses. |
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 Webex Contact Center de Disponible vers Sélectionné. |
9 |
Avant de tenter d'utiliser le téléphone OpenFrame, assurez-vous de télécharger le fichier JSON de présentation du bureau personnalisé ServiceNow sur le portail de gestion de Webex Contact Center. Pour plus d’informations, voir Configurer la mise en page du bureau ServiceNow sur Webex Contact Center. |
1 |
Téléchargez la mise en page 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 du fichier de mise en page du bureau, si nécessaire. |
3 |
Allez au portail de gestion de Webex Contact Center . |
4 |
À partir de la barre de navigation du portail de gestion, choisissez |
5 |
Cliquez sur Nouvelle mise en page et saisissez les détails de la mise en page du bureau. |
6 |
Téléchargez le fichier JSON de présentation du bureau ServiceNow. |
7 |
Cliquez sur Enregistrer pour enregistrer la configuration. Vous pouvez maintenant démarrer le bureau Webex Contact Center depuis la console ServiceNow. |
8 |
À partir du champ Navigateur de filtre , accédez à . |
1 |
À partir du champ Filtrer le navigateur, allez dans Incidents > Ouvrir un incident. |
2 |
Faites un clic droit sur le champ de l’appelant et cliquez sur Configurer le dictionnaire. |
3 |
Ajoutez des Attributs séparés par des virgules Vous pouvez maintenant commencer à utiliser le bureau Webex Contact Center dans la console ServiceNow. |
4 |
À partir du champ Navigateur de filtre , accédez à . |
Nous ne prenons actuellement pas en charge la connexion à Agent Desktop en utilisant l’option Desktop (WebRTC).
Agent Desktop dans la console ServiceNow
Avant de faire des appels sortants, assurez-vous d’effectuer les appels suivants :
-
Créez le point d’entrée sortant et définissez une stratégie de point d’entrée sortant.
-
Activer l’ANI de la hors-ligne pour le profil de l’agent.
-
Configurer l’ANI de numérotation à un mappage de point d’appel vers l’entrée.
Pour plus d’informations, voir le chapitre Mise à disposition du Guide de configuration et d’administration de Cisco Webex Contact Center.
À partir du champ Navigateur de filtre , accédez à .
Pour plus d’informations sur l’utilisation d’Desktop, voir l’onglet Agent dans l’aide Webex Contact Center.
Aperçu
Cet article couvre plusieurs façons de personnaliser vos règles métier pour le connecteur CRM ServiceNow. 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 au logiciel ou à l'expertise de Webex Contact Center.
Il s’agit d’une documentation de référence pour faciliter la modification des règles métier. Les développeurs de ServiceNow créeront et géreront les règles métier et fourniront une assistance.
Cisco ne fournit que des exemples de documentation.
Les sections suivantes fournissent des informations sur la façon de configurer, activer et gérer le widget Actions pour les instances des développeurs et des entreprises.
Valider l'ensemble 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 du développeur, téléchargez le dernier fichier XML Set de mise à jour du système disponible sur le repo github à cet emplacement : https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow/ActionsWidget. Le nom du fichier est webexcc-servicenow-update-setv7-1-ActionsWidget.xml. Pour valider l’ensemble de mises à jour pour le widget Actions, voir les étapes 2 à 9 dans Valider l’ensemble de mises à jour.
Activer le widget 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 personnalisée du bureau. La propriété est toujours définie sur faux dans la section sans tête de la mise en page personnalisée du bureau. Vous ne devez mettre à jour la valeur de la propriété que dans la section du panneau de la disposition du bureau personnalisé.
Une fois que vous avez activé le widget Actions dans la disposition du bureau personnalisée, vous pouvez effectuer les actions suivantes :
- Gérer les enregistrements d’activité—Cliquez sur Afficher/modifier l’enregistrement d’activité pour afficher la liste des enregistrements d’activité associés à l’appelant.
- Associer des objets CRM—Cliquez sur Associer aux enregistrements d'activité pour ajouter des objets CRM tels que le type d'appel (entrant ou sortant), l'objet d'appel, les notes d'appel, etc. à l'enregistrement d'activité.
- Gérer les incidents—Cliquez sur Créer un incident. Un nouvel incident est créé avec les détails de l'appelant préremplis. Vous pouvez effectuer les mises à jour requises de l'incident. Vous pouvez choisir de modifier le type d’enregistrement d’incident à cas, de module RH, etc. en fonction de vos besoins. Pour changer 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 mettre fin à l'appel. Vous pouvez voir ces notes ajoutées en tant que notes d'appel dans l'enregistrement d'activité.
Modification du code sur ServiceNow
Le Script Inclut des modifications-
Allez dans le navigateur de filtre et recherchez
script inclut
.Sélectionnez Inclut le script sous Interface utilisateur du système.
-
Filtrez le Nom et recherchez
propUtils
. -
Changez la méthode
UserGetSysId
dans le Script.Curent :
GetSysId de l’utilisateur : fonction () { 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(); renvoyer sysid; },
Nouveau modèle de code pour l'incident :
GetSysId de l’utilisateur : fonction () { var opened_for; //Modifications liées aux incidents var sysidlist = {}; utilisateur var = nouveau GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { opened_for= utilisateur.sys_id;//renvoyer l’utilisateur.sys_id; var inc = nouveau 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.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; retourner JSON.stringify(sysidlist); },
-
Allez au navigateur de filtre et recherchez la
page de l’interface utilisateur
.Sélectionnez Pages de l'IU sous Interface utilisateur.
-
Filtrez le Nom et recherchez
agentdesktop
. -
Changez la fonction
screen pop
dans Script du client.Fonction actuelle :
// 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(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: « interaction », requête : « 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 », requête : 'sys_id='+sysObj.incsysid, 'interaction_sys_id' : sysObj.sysid }) ; }autre{ openFrameAPI.openServiceNowForm({ entity: « incident », requête : 'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }) ; } }
Si les informations de l'appelant existent dans le CRM et qu'un nouvel incident est déjà ouvert avec ce contact, l'application ouvre l'incident d'avancement
Si les informations de l'appelant n'existent pas dans CRM, l'application ouvre un nouvel incident
Si les informations de l'appelant existent dans CRM, l'application ouvre un nouvel incident avec des détails préremplis
Aperçu
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 le connecteur CRM ServiceNow.
Par défaut, le tableau contient certains champs et valeurs système prêts à l'emploi.
Vous pouvez créer d'autres variables spécifiques à l'entreprise (Variables CAD) à l'intérieur du concepteur de flux WebexCC et ajouter les variables CAD à l'intérieur du 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 l'IVR et le publie sur ServiceNow.
Il est prévu que les développeurs partenaire+customer ServiceNow configureront et géreront cette configuration car il s'agit d'une personnalisation du connecteur existant.
Cisco ne fournit que les techniques sur la personnalisation et l'extension du connecteur.
À partir de cet article, l'équipe Cisco a validé la prise en charge de l'ajout de variable CAD au journal d'activité et au tableau d'activité à l'aide de la technique décrite ci-dessous :
Ajouter une colonne à l’activité IMP de WebexCC
-
Modifiez le tableau dans la version du développeur de ServiceNow.
-
Allez dans le navigateur de filtres et recherchez studio.
Sélectionnez
Webex Contact Center
ou
-
Sélectionnez le tableau
Activité IMP de WebexCC
-
Ajouter une nouvelle colonne, par exemple,
Nom du client
Ajouter une colonne au journal du téléphone
-
Modifiez la table des journaux du téléphone.
-
Ajoutez une nouvelle colonne, par exemple,
Nom du client
.
Carte de la transformation des activités WebexCC
Ajoutez une nouvelle colonne, par exemple, le mappage du champ Nom du client
.
Personnaliser les colonnes de la liste
Comme le Service le recommande maintenant, modifiez l'action Choix de créer pour ignorer.
Configurer la liste des journaux du téléphone
Aller à Inclure le script
Ajoutez une seule ligne webexcc.u_customername=actInfo.CustomerName
à propUtils.
Exemple de script
Voir la ligne : webexcc.u_customername=actInfo.CustomerName; avec un commentaire complémentaire.
var propUtils = Class.create(); propUtils.prototype = Object.extendsObject(global.AbstractAjaxProcessor,{ getWebexccProp : fonction () { 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 : fonction () { 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.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.NomDuClient; 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(); } }} retour sys_id; }, type : « propUtils » });
Créer une variable CAD dans le concepteur de flux
Ajouter la variable CAD à la disposition du bureau
Exemple
"CadName1:SnowField1,CadName2:SnowField2" CadName1 est CustomerName SnowField1 est également utilisé comme CustomerName qui fait partie de l'exemple de scirpt showen au-dessus de "actInfo.CustomerName".
Captures d’écran de démonstration
Affichez la variable CAD nouvellement ajoutée dans le tableau Activité WebexCC.
Créer une variable CAD pour le concepteur de flux
Urgence de l'incidentImpact de l'incident
Mise à jour du script Service Now
Les mises à jour du script incluent
-
Allez dans le navigateur de filtre et recherchez
script inclut
Sélectionnez l'option Le script inclut sous Interface utilisateur du système.
-
Filtrez le Nom avec
propUtils
. -
Changez la méthode
UserGetSysId
dans le champ Script .Script actuel :
GetSysId de l’utilisateur : fonction () { 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(); renvoyer sysid; },
Nouveau modèle de code pour l'incident :
GetSysId de l’utilisateur : fonction () { var opened_for; liste sysidlist var = {}; utilisateur var = nouveau GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) { opened_for= utilisateur.sys_id;//renvoyer l’utilisateur.sys_id; var inc = nouveau 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='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; retour JSON.stringify(sysidlist);//sysid; },
-
Allez dans le navigateur de filtre et recherchez les
pages de l’IU
.Sélectionnez l'option Pages de l'IU sous IU système.
-
Filtrez les pages de l'IU avec Nom et recherchez
agentdesktop
. -
Changez la fonction
screen pop
dans le champ du script.Fonction actuelle :
// 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(); var sysid = gaout.getAnswer(); openFrameAPI.openServiceNowForm({ entity: « interaction », requête : « sys_id= »+sysid }) ; }
Exemple de code pour l'incident :
// fonction de la fenêtre de l'écran 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', 'télé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 », requête : 'sys_id='+sysObj.incsysid, 'interaction_sys_id' : sysObj.sysid }) ; }autre{ openFrameAPI.openServiceNowForm({ entity: « incident », requête : 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }
Si les informations de 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 des nouvelles colonnes au tableau Activité IMP de WebexCC
Ouvrir le tableau Activité IMP de WebexCCAjouter une nouvelle colonne - NuméroInteractions Ajouter une nouvelle colonne - NuméroIncident
Cliquez sur Mettre à jour.
Ajouter des nouvelles colonnes au tableau Journal du téléphone
Ouvrir le tableau Journal du téléphone
Carte de la transformation des activités WebexCC
Ouvrir la carte de transformation
à partir du navigateur de filtres
Cliquez sur Carte de transformation des activités WebexCC
Cliquez sur Mettre à jour.
Les modifications apportées au script incluent
-
Allez dans le navigateur de filtres et recherchez « script inclut ».
Sélectionnez Inclut le script sous Interface utilisateur du système.
-
Filtrez le Nom avec
propUtils
. -
Changez la méthode
setWebexcctable
.Nouveau modèle de code pour l'incident :
configurer la table WebExcctable : fonction () { 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=""; supprimer actInfo['interaction_sys_id']; supprimer actInfo['incident_sys_id']; if( interactionsysid!= null && interactionsysid != indéfini){ var inte = new GlideRecordSecure('interaction'); //inte.get('sys_id', interactionsysid ) ; inte.addQuery('sys_id', interactionsysid ); inte.query(); si (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.DuréeAppelEnSecondes; 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(); } retour sys_id; },
Modifications de méthode sur les pages de l'IU
-
Allez dans le navigateur de filtrage et recherchez les
pages de l’IU
Sélectionnez l'option Pages de l'IU sous IU système.
-
Filtrez les pages de l'IU avec
Nom
et recherchez agentdesktop. -
Changez la fonction
nowActivities et screen pop
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); } fonction 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 », requête : 'sys_id='+sysObj.incsysid, 'interaction_sys_id' : sysObj.sysid }) ; }autre{ openFrameAPI.openServiceNowForm({ entity: « incident », requête : '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 plus récentes. Pour les personnalisations des nouvelles versions 1.0.7 et plus récentes, suivez les étapes ci-dessus.
Personnalisation n° 1 - Ajoutez des règles métier personnalisées pour les cas d’utilisation du flux d’appels
Créer un nouvel enregistrement d’incident pour chaque appelPour chaque nouvel appel dans le connecteur CRM WebexCC dans ServiceNow, créez un nouvel enregistrement d’incident.
Recherche de règles métier sur le navigateur de filtres
Cliquez sur Nouveau.
Exemple de code de référence :
fonction customcti() { var url = null ; var name = sysparm_caller_name; eid = sysparm_caller_id; téléphone var = sysparm_caller_phone; var taskID = sysparm_task_id; var fQuery = sysparm_query; si (fQuery == nul) fQuery = ''; affichage var = sysparm_view; si (view == null || view == '') view = "itil"; var userID = null ; si (eid != null && eid != '') { userID = UserGetSysId("employee_number",eid); } si (userID == null && name != null && name != '') { userID = UserGetSysId("name", name); } si (userID == null && phone != null && phone != '') { userID = UserGetSysId("phone", phone); } si (userID != null) { if (fQuery.length > 0) fQuery += "^"; fQuery += "caller_id=" + userID; } si (url == null) { url = "incident.do?sys_id=-1"; si (fQuery != null) url += "&sysparm_query=" + fQuery; } réponse = url; return url; } fonction UserGetSysId(champ, valeur) { var user = new GlideRecord("sys_user"); user.addQuery(champ, valeur); user.query(); si (user.next()) renvoie l'utilisateur.sys_id; sinon retour nul ; }
Exemple de configuration de la règle métier
Activer l’option d’appel du client
Le traitement d'intégration de la téléphonie informatique (CTI) pour les incidents est marqué comme Vrai.
Mettez à jour l’url de la fenêtre contextuelle avec la règle CTI personnalisée « cti.do?sysparm_cti_rule=createIncident&sysparm_caller_phone= »
Le sysparm_cti_rule=nom où « nom » est le nom d'une fonction doit être appelé pour le traitement CTI plutôt que d'utiliser le script par défaut.
Définissez la fonction dans une sys_script entrée marquée comme client appelable.
Si vous devez insérer, mettre à jour ou supprimer un ou plusieurs GlideRecord dans la fonction, appelez une fonction distincte non appelable par le client pour effectuer les mises à jour.
Pour qu'un script soit appelable par le client, vous devez cocher la case appelable par le client sur le formulaire qui s'affiche lorsque l'sys_script entrée est affichée.
La case à cocher appelable par le client ne s'affiche pas par défaut. Pour 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 godet mou.
Personnalisation n° 2 - Ajouter une variable CAD dans le tableau d’activité du Webex Contact Center
AperçuCet article détaille le processus d’ajout d’une colonne supplémentaire à la table ServiceNow - webexcc_activity qui est créée lors de l’installation de Webex CC pour le connecteur CRM ServiceNow.
Par défaut, le tableau contient les champs et valeurs système prêts à l'emploi.
Vous pouvez potentiellement créer plus de variables spécifiques à l'entreprise (Variables CAD) dans le concepteur de flux WebexCC et ajouter ces variables CAD dans le journal d'activité post-appel de ServiceNow, et le conserver dans les données de la table d'activité post-appel .
-
Il s'agit uniquement de la documentation de référence et montre comment procéder pour un exemple de variable CAD appelée Nom du client qui stocke le nom du client dans l'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 sur la personnalisation et l'extension du connecteur.
-
À partir de cet article, l'équipe Cisco a validé la prise en charge de l'ajout de variable CAD au journal d'activité et au tableau d'activité à l'aide de la technique décrite ci-dessous.
Modifiez le tableau dans la version du développeur de ServiceNow.
Allez dans
.Sélectionnez le tableau Activité WebexCC .
Par exemple, Nom du client.
Sélectionnez Mise en page en liste pour Activité WebexCC.
Cette étape n'est pas requise si vous utilisez le paramètre Update Set 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 complémentaire.
var propUtils2 = Class.create(); propUtils2.prototype = Object.extendsObject(global.AbstractAjaxProcessor,{ getWebexccProp : fonction () { 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 : fonction () { 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.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.NomDuClient; 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(); } }} retour sys_id; }, type : 'propUtils2' });
Modifier la page de l'IU avec un nouveau nom de scriptCréer une variable CAD dans le concepteur de flux
Ajouter la variable CAD à la disposition du bureau
Captures d’écran de démonstration
Affichez la variable CAD nouvellement ajoutée dans le tableau Activité WebexCC.