Lorsque vous intégrez Webex Contact Center à la console ServiceNow CRM, vous pouvez lancer Webex Contact Center Desktop depuis 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 au centre de contact Webex.
-
Accès administrateur au Control Hub à l'adresse https://admin.webex.com et au portail de gestion du centre de contact Webex. 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
-
-
Un 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
-
-
Accès de l'agent au domaine suivant ajouté à la liste autorisée des stratégies de sécurité du contenu :
-
*.service-now.com
Pour plus d'informations sur la définition de la liste autorisée, consultez l'article Paramètres de sécurité du centre de contact Webex.
-
-
Un compte sur le portail des développeurs 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 Inscrivez-vous et commencez à créer.
-
Accédez aux fichiers suivants à l'adresse https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow :
-
Ensemble de mises à jour ServiceNow (XML)
-
Disposition du bureau du centre de contact ServiceNow (JSON)
-
Suivez l'une des deux méthodes ci-dessous : Pour les instances de développeur, nous vous recommandons de suivre les étapes décrites dans le guide des instances de développeur. Si vous possédez une instance sous licence entreprise, suivez les instructions pour les instances sous licence entreprise. Nous ne recommandons pas 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 du portail de développeur ServiceNow et ouvrez la console Administration . |
2 |
Dans la zone Mon instance du menu Compte , cliquez sur Commencer à créer. |
3 |
Sur votre instance de développeur, dans le champ Navigateur de filtres en haut à gauche de la fenêtre, accédez à Plugins. |
4 |
Recherchez le plug-in Openframe portant 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 |
Lorsque l'activation du plugin est terminée, cliquez sur Fermer et Rechargez le formulaire dans la boîte de dialogue Activation du plug-in . |
8 |
Pour vérifier l'activation du plugin, depuis le champ Navigateur de filtres 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 de l'ensemble de mises à jour système XML disponible sur le dépôt 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, dans le champ Navigateur de filtres en haut à gauche de la fenêtre, accédez à . |
3 |
Cliquez sur le lien Importer l'ensemble de mises à jour depuis XML . |
4 |
Cliquez sur Choisir un fichier, sélectionnez le fichier du jeu de mises à jour système XML, puis cliquez sur Télécharger.
L'ensemble de mises à jour apparaît dans la liste Ensembles de mises à jour récupérés et est dans l'état Chargé .
|
5 |
Dans la liste Ensembles de mises à jour récupérés , cliquez sur le nom du fichier de l'ensemble de mises à jour (lien) pour ouvrir l'ensemble de mises à jour. |
6 |
Dans l'angle supérieur droit de la fenêtre, cliquez sur Aperçu de l'ensemble de mises à jour pour rechercher des problèmes dans l'ensemble de mises à jour. |
7 |
Cliquez sur Fermer dans la boîte de dialogue Aperçu de l'ensemble de mises à jour une fois l'aperçu terminé. |
8 |
Cliquez sur Valider l'ensemble de mises à jour. |
9 |
Cliquez sur Fermer dans la boîte de dialogue Validation de l'ensemble de mises à jour une fois la validation de l'ensemble de mises à jour terminée. |
1 |
Dans le champ Navigateur de filtres 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é système agentdesktop_url . |
4 |
Dans le champ Valeur , saisissez l'URL du Webex Contact Center Desktop en fonction de la région d'exploitation.
|
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 webexccactivitytable selon vos besoins. Sur 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 Navigateur de filtres , 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/d'agents pour 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 de configuration de bureau personnalisé ServiceNow sur le portail de gestion du centre de contact Webex. Pour plus d'informations, consultez Configurer la présentation du bureau ServiceNow sur le centre de contact Webex. |
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 de présentation 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 présentation et saisissez les détails de la présentation 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 Webex Contact Center Desktop dans la console ServiceNow. |
8 |
Dans le champ Navigateur de filtres , accédez à . Cliquez sur l'icône du téléphone en bas à gauche. |
Les sections suivantes décrivent les étapes d'installation du connecteur ServiceNow pour les instances d'entreprise sous licence.
1 |
connectez-vous à votre compte du portail de développeur ServiceNow et ouvrez la console Administration . |
2 |
Dans la zone Mon instance du menu Compte , cliquez sur Commencer à créer. |
3 |
Sur votre instance de développeur, dans le champ Navigateur de filtres en haut à gauche de la fenêtre, accédez à Plugins. |
4 |
Recherchez le plug-in Openframe portant 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 amp ; rechargez le formulaire dans la boîte de dialogue Activation du plug-in . |
8 |
Pour vérifier l'activation du plugin, depuis le champ Navigateur de filtres 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 à partir du 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 filtres 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 contacts Webex en fonction de la région d'exploitation.
|
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 selon vos besoins.
|
7 |
(Facultatif) Ajoutez des groupes d'utilisateurs des manières suivantes :
|
1 |
Dans le champ Navigateur de filtres , 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/d'agents pour attribuer la configuration. |
6 |
Cliquez sur Soumettre. L'URL apparaît sous forme de lien. |
7 |
Dans le champ Navigateur de filtres , accédez à . Cliquez sur l'icône du téléphone en bas à gauche. |
8 |
(Facultatif) Dans la liste des Groupes d'utilisateurs , déplacez les groupes d'utilisateurs qui peuvent accéder au bureau du centre de contacts Webex de Disponible à Sélectionné. |
9 |
Avant d'essayer d'utiliser le téléphone OpenFrame, assurez-vous de télécharger le fichier JSON de configuration de bureau personnalisé ServiceNow sur le portail de gestion du centre de contact Webex. Pour plus d'informations, consultez Configurer la présentation 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 de présentation 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 présentation et saisissez les détails de la présentation 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 Webex Contact Center Desktop dans la console ServiceNow. |
8 |
Dans le champ Navigateur de filtres , accédez à . Cliquez sur l'icône du téléphone en bas à gauche. |
1 |
Dans le champ Navigateur de filtres , accédez à 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 Webex Contact Center Desktop dans la console ServiceNow. |
4 |
Dans le champ Navigateur de filtre , accédez à . Cliquez sur l'icône du téléphone en bas à gauche. |
Agent Desktop dans la console ServiceNow
Avant de passer des appels externes, assurez-vous d'effectuer les opérations suivantes :
-
Créez le point d'entrée de numérotation externe et configurez une stratégie de point d'entrée de numérotation externe.
-
Activez l'ANI de numérotation externe pour le profil d'agent.
-
Définissez l'ANI de numérotation externe sur un mappage numéro de composition-point d'entrée.
Pour plus d'informations, consultez le chapitre Provisionnement du Guide de configuration et d'administrationCisco Webex Contact Center.
Dans le champ Navigateur de filtres , accédez à .
Cliquez sur l'icône du téléphone en bas à gauche.
Pour plus d'informations sur l'utilisation de Desktop, consultez le Cisco Webex Contact Center Agent Desktop Guide de l'utilisateur.
Partitionnement du stockage tiers
Un problème possible avec la récente mise à jour de Google Chrome et Edge 116 ou version ultérieure pourrait perturber votre expérience de connexion aux connecteurs CRM dans Webex Contact Center. Ce problème affecte la connexion au bureau sur la console ServiceNow CRM.
Pour résoudre ce problème sur le navigateur Google Chrome :
-
Ouvrez le navigateur Google Chrome et saisissez
chrome://flags/#third-party-storage-partitioning
dans la barre d'adresse. -
Désactivez l'option Partitionnement expérimental du stockage tiers .
-
Fermez et redémarrez Chrome.
-
reconnectez-vous au bureau dans la console ServiceNow CRM.
Pour résoudre ce problème sur le navigateur Edge :
-
Ouvrez le navigateur et saisissez
edge://flags/#third-party-storage-partitioning
dans la barre d'adresse. -
Désactivez l'option Partitionnement expérimental du stockage tiers .
-
Enregistrez les modifications et redémarrez le navigateur.
-
reconnectez-vous au bureau dans la console ServiceNow CRM.
Pour résoudre ce problème sur le navigateur Firefox :
-
Ouvrez le navigateur et saisissez
about:config
dans la barre d'adresse.Une page d'avertissement peut apparaître. Cliquez sur Accepter le risque et continuer pour accéder à la page
about:config
. -
Saisissez
network.cookie.cookieBehavior
dans la zone Nom de la préférence de recherche en haut de la zoneabout:config
page pour trouver la préférence. -
Double-cliquez sur la préférence ou cliquez sur l'icône Modifier pour modifier la préférence.
-
Remplacez la valeur par 0.
-
Enregistrez les modifications et redémarrez le navigateur.
-
reconnectez-vous au bureau dans la console ServiceNow CRM.
Vue d'ensemble
Cet article couvre plusieurs façons de personnaliser vos règles métier pour le connecteur ServiceNow CRM. Il explique comment vous pouvez personnaliser les cas d'utilisation en fonction de 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 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 fournit uniquement des exemples de documentation. |
Changement de code sur ServiceNow
Le script inclut des modifications-
Accédez au navigateur de filtres et recherchez
Le script comprend
.Sélectionnez le Script inclus sous Interface utilisateur système.
-
Filtrez le Nom et recherchez
propUtils
. -
Changer la méthode
UtilisateurGetSysId
Dans le Script.Actuel :
UserGetSysId : function () { var open_for ; var utilisateur = new GlideRecord("sys_user") ; user.addQuery(this.getParameter('field'),this.getParameter('value')) ; utilisateur.query() ; if (user.next()) open_for=user.sys_id ; 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 l'ID système ; },
Nouvel exemple de code pour l'incident :
UserGetSysId : function () { var open_for ; //Modifications liées à l'incident var sysidlist = {} ; var utilisateur = new GlideRecordSecure("sys_user") ; user.addQuery(this.getParameter('field'),this.getParameter('value')) ; utilisateur.query() ; if(user.next()) {open_for=user.sys_id;//return user.sys_id ; var inc = new GlideRecordSecure('incident') ; inc.addQuery('caller_id', open_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 ; return JSON.stringify(sysidlist) ; },
-
Accédez au navigateur de filtres et recherchez la
page d'interface utilisateur
.Sélectionnez pages de l'interface utilisateur sous interface utilisateur du système.
-
Filtrez le Nom et recherchez
agentdesktop
. -
Changer
Capture d'écran
Fonction dans Script client.Fonction actuelle :
// Fonction d'affichage d'écran 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', appelant) ; gaout.getXMLWait() ; var sysid = gaout.getAnswer() ; openFrameAPI.openServiceNowForm({entité : 'interaction', requête : 'sys_id='+sysid });
Exemple de code pour l'incident :
// Fonction d'affichage d'écran 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', appelant) ; gaout.getXMLWait() ; // Pour les modifications liées à l'incident var sysObj = JSON.parse(gaout.getAnswer()) ; if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({entité : 'incident', requête : 'sys_id='+sysObj.incsysid, 'interaction_sys_id' : sysObj.sysid }) ; }else{ openFrameAPI.openServiceNowForm({entité : 'incident', requête : 'sys_id=-1', 'interaction_sys_id' : sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }) ; } }
Si les informations sur l'appelant existent dans CRM et qu'un nouvel incident est déjà ouvert avec ce contact, l'application ouvre l'incident en cours.
Si les informations de 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 pour ajouter une colonne supplémentaire à la table ServiceNow - webexcc_imp_activity et créer sn_openframe_phone_log lors de l'installation du Webex CC pour ServiceNow CRM Connector.
Par défaut, la table contient certains champs et valeurs système prêts à l'emploi.
Vous pouvez créer des variables plus spécifiques à l'entreprise (variables CAO) dans le concepteur WebexCC Flow et ajouter les variables CAO dans le journal d'activité post-appel de ServiceNow, ainsi que les conserver dans les données du tableau d'activité post-appel.
Il s'agit uniquement d'une documentation de référence - et montre comment procéder pour un exemple de variable CAO 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 de ServiceNow partenaire+client configurent et gèrent cette configuration car il s'agit d'une personnalisation du connecteur existant. Cisco fournit uniquement les techniques permettant de personnaliser et d'étendre le connecteur. À partir de cet article, l'équipe Cisco a validé la prise en charge de l'ajout d'une variable CAO au journal d'activité et au tableau d'activité à l'aide de la technique décrite ci-dessous : |
Ajouter une colonne à l'activité WebexCC IMP
-
Modifiez le tableau dans la version développeur de ServiceNow.
-
Accédez au navigateur de filtres et recherchez studio.
Sélection
Webex Contact Center
ou
-
Sélectionnez
Activité WebexCC IMP
tableau -
Ajoutez une nouvelle colonne, par exemple,
Nom du client
Ajouter une colonne au journal du téléphone
-
Modifiez le tableau du journal téléphonique.
-
Ajoutez une nouvelle colonne, par exemple,
Nom du client
.
Carte de transformation d'activité WebexCC
Ajoutez une nouvelle colonne, par exemple, Nom du client
Cartographie du terrain.
Personnaliser les colonnes de la liste
Comme Service Now le recommande, modifiez l'action Choix de créer à ignorer.
Configurer la liste des journaux téléphoniques
Aller à Inclure le script
Ajouter une seule ligne |
Exemple de script
Consultez la ligne : webexcc.u_customername=actInfo.CustomerName; avec un commentaire à l'appui.
var propUtils = Classe.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 opens_for ; var user = new GlideRecord("sys_user") ; user.addQuery( this.getParameter('field'),this.getParameter('value')) ; user.query() ; if (user.next()) opens_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= open_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 ; // Cette ligne est ajoutée - pour la capturer dans le journal d'activité webexcc.u_customername=actInfo.CustomerName ; sys_id=webexcc.insert() ; //Activités sur l'enregistrement d'incident ; var actInfoString =this.getParameter('actInfo') ; var suser = new GlideRecordSecure("sys_user") ; suser.addQuery("télé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() ; } } } renvoie sys_id ; }, tapez : 'propUtils' });
Créer une variable CAO dans Flow Designer
Ajouter la variable CAO à 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 extrait présenté ci-dessus "actInfo.CustomerName".
Captures d'écran de démonstration
Affichez la variable CAO nouvellement ajoutée dans le tableau Activité WebexCC.
Créer une variable CAO pour Flow Designer
Urgence des incidentsImpact des incidents
Mise à jour du script Service Now
Mises à jour du script inclus
-
Accédez au navigateur de filtres et recherchez
le script inclut
Sélectionnez l'option Script inclus sous Interface utilisateur système.
-
Filtrez le Nom avec
propUtils
. -
Changer la méthode
UtilisateurGetSysId
Dans le champ Script .Scénario actuel :
UserGetSysId : function () { var open_for ; var utilisateur = new GlideRecord("sys_user") ; user.addQuery(this.getParameter('field'),this.getParameter('value')) ; utilisateur.query() ; if (user.next()) open_for=user.sys_id ; 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 l'ID système ; },
Nouvel exemple de code pour l'incident :
UserGetSysId : function () { var open_for ; var listesysid = {} ; var utilisateur = new GlideRecordSecure("sys_user") ; user.addQuery(this.getParameter('field'),this.getParameter('value')) ; utilisateur.query() ; if(user.next()) {open_for=user.sys_id;//return user.sys_id ; var inc = new GlideRecordSecure('incident') ; inc.addQuery('caller_id', open_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 filtres et recherchez
Pages d'interface utilisateur
.Sélectionnez le Pages d'interface utilisateur option sous Interface utilisateur du système.
-
Filtrer le Pages d'interface utilisateur avec Nom et rechercher
agentdesktop
. -
Changer
Capture d'écran
Fonction dans le champ script.Fonction actuelle :
// Fonction d'affichage d'écran 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', appelant) ; gaout.getXMLWait() ; var sysid = gaout.getAnswer() ; openFrameAPI.openServiceNowForm({entité : 'interaction', requête : 'sys_id='+sysid }) ; }
Exemple de code pour l'incident :
// Fonction d'affichage d'écran screenpop(callerani,callSessionInfo) { var Impact=3 ; if(callSessionInfo.callAssociatedData.Impact != null && callSessionInfo.callAssociatedData.Impact != non défini) { Impact=callSessionInfo.callAssociatedData.Impact.value ; } var IncUrgence=3 ; if(callSessionInfo.callAssociatedData.Urgency != null && callSessionInfo.callAssociatedData.Urgency != non défini) { 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', appelant) ; gaout.addParam('IncUrgence', IncUrgence) ; gaout.addParam('Impact', Impact) ; gaout.getXMLWait() ; // var idsys = gaout.getAnswer() ; var sysObj = JSON.parse(gaout.getAnswer()) ; if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({entité : 'incident', requête : 'sys_id='+sysObj.incsysid, 'interaction_sys_id' : sysObj.sysid }) ; }else{ openFrameAPI.openServiceNowForm({entité : 'incident', requête : 'sys_id=-1', 'interaction_sys_id' : sysObj.sysid }) ; } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)) ; }
Si les informations sur l'appelant existent dans CRM et qu'il n'y a aucun incident nouveau ou en cours, l'application ouvre un nouvel incident.
Changer le code sur ServiceNow
Ajouter de nouvelles colonnes Activité WebexCC IMP
tableau
Ouvrez Activité WebexCC IMPtableau Ajouter une nouvelle colonne - InteractionsNumber Ajouter une nouvelle colonne - IncidentNumber
Cliquez sur Mettre à jour.
Ajouter de nouvelles colonnes Journal téléphonique
tableau
Ouvrez Journal téléphonique
tableau
Carte de transformation d'activité WebexCC
Ouverte Transformer la carte
Depuis le navigateur de filtres
Cliquer sur TransformMap d'activité WebexCC
Cliquez sur Mettre à jour.
Modifications apportées aux inclusions de script
-
Accédez au navigateur de filtres et recherchez "le script inclut".
Sélectionnez le Script inclus sous interface utilisateur système.
-
Filtrer le Nom avec
propUtils
. -
Changer 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='Mettre à jour l'état sur fermé.' ; 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("télé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() ; } renvoie sys_id ; },
Modifications de méthode sur les pages de l'interface utilisateur
-
Accédez au navigateur de filtres et recherchez
Pages d'interface utilisateur
Sélectionnez l'option Pages de l'interface utilisateur sous Interface utilisateur du système.
-
Filtrez les pages de l'interface utilisateur avec Nom et recherchez
agentdesktop
. -
Changer
nowActivities et screenpop
Fonction 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 != non défini) { 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('champ', 'téléphone') ; gaout.addParam('value', appelant) ; gaout.getXMLWait() ; // var idsys = gaout.getAnswer() ; var sysObj = JSON.parse(gaout.getAnswer()) ; if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({entité : 'incident', requête : 'sys_id='+sysObj.incsysid, 'interaction_sys_id' : sysObj.sysid }) ; }else{ openFrameAPI.openServiceNowForm({entité : '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 inférieures. Pour les personnalisations pour les versions plus récentes 1.0.7 et supérieures, suivez les étapes ci-dessus. |
Personnalisation n°1 – Ajouter des règles métier personnalisées pour les cas d'utilisation du flux d'appels
Créez 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 Filtrer
Cliquez sur Nouveau.
Exemple de code pour référence :
function customcti() { var url = null ; var nom = sysparm_caller_name ; eid = sysparm_caller_id ; var téléphone = sysparm_caller_phone ; var ID de tâche = sysparm_task_id ; var fQuery = sysparm_query ; si (fQuery == null) fQuery = '' ; var vue = sysparm_view ; if (view == null || view == '') view = "itil" ; var ID utilisateur = nul ; if (eid != null && eid != '') { userID = UserGetSysId("employee_number",eid) ; } if (userID == null && nom != null && nom != '') { userID = UserGetSysId("name", nom) ; } 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 ; } réponse = URL ; URL de retour ; } function UserGetSysId(champ, valeur) { var user = new GlideRecord("sys_user") ; user.addQuery(champ, valeur) ; utilisateur.query() ; if (user.next()) renvoie user.sys_id ; sinon, renvoie null ; }
Exemple de configuration de la règle métier
Activer l'appel client
Intégration Téléphonie Informatique (CTI) Traitement des incidents est marqué comme Vrai.
Mettez à jour l'URL de la capture d'écran 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'un fonction doit être invoqué pour CTI Traitement plutôt que d'utiliser le script par défaut.
Définir la fonction dans un sys_script entrée marquée appelable par le client.
Si vous devez insérer, mettre à jour ou supprimer des 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 appelable par le client sur le formulaire qui s'affiche lorsque l'entrée sys_script est affichée. La case à cocher appelable par le client n'apparaît 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 du seau à neige fondante. |
Personnalisation n°2 - Ajouter une variable CAO dans la table d'activité Webex Contact Center
PrésentationCet article détaille le processus d'ajout d'une colonne supplémentaire à la table ServiceNow - webexcc_activity créée lors de l'installation du Webex CC pour le connecteur ServiceNow CRM.
Par défaut, la table contient des champs et des valeurs système prêts à l'emploi.
Vous pouvez potentiellement créer des variables plus spécifiques à l'entreprise (variables CAO) dans le concepteur WebexCC Flow et ajouter ces variables CAO dans le journal d'activité post-appel de ServiceNow , et les conserver dans le données du tableau d'activité post-appel .
|
Modifiez le tableau dans la version développeur de ServiceNow.
Accédez au centre de contact
.Sélectionnez le tableau Activité WebexCC .
Par exemple, CustomerName.
Sélectionnez la présentation de la liste pour Activité WebexCC.
Cette étape n'est pas requise si vous utilisez l'ensemble de mises à jour XML - Une seule ligne doit être ajoutée "webexcc.u_customername=actInfo.CustomerName" à propUtils. |
Exemple de script
Consultez la ligne :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.CustomerName ; sys_id=webexcc.insert() ; // Activités sur l'enregistrement d'incident ; var actInfoString =this.getParameter('actInfo') ; var suser = new GlideRecordSecure("sys_user") ; suser.addQuery("télé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() ; } } } renvoie sys_id ; }, tapez : 'propUtils2' });
Modifiez la page de l'interface utilisateur avec un nouveau nom de scriptCréer une variable CAO dans Flow Designer
Ajouter la variable CAO à la disposition du bureau
Captures d'écran de démonstration
Affichez la variable CAO nouvellement ajoutée dans le tableau Activité WebexCC.