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 :

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 Mise à jour des ensembles du système > Mettre à jour les ensembles à valider.

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 sys_properties.list et appuyez sur Entrée.

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. Dans le champ Filtrer le navigateur en haut à gauche de la fenêtre, allez dans Groupes sous Sécurité du système.

  2. Créer un nouveau groupe d'utilisateurs ou utiliser un groupe existant.

  3. Cliquez sur Éditer.

  4. Recherchez sn_openframe_user sous Collecte et déplacez-la vers votre groupe d’utilisateurs.

  5. Cliquez sur Enregistrer.

  6. Ajouter l'utilisateur en tant que membre du groupe.

1

À partir du champ Filtrer le navigateur, accédez à OpenFrame > configurations.

2

Cliquez sur Nouveau.

3

Saisissez les propriétés suivantes pour l'URL :

  • Nom : Bureau Webex Contact Center

  • Titre : Webex Contact Center

  • Largeur : 550 (recommandé)

  • Hauteur : 600 (recommandé)

4

À droite du champ URL , cliquez sur le bouton Verrouiller et ajoutez agentdesktop.do comme URL. (Effectuez cette étape pour pointer la configuration vers la page de l'interface utilisateur)

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 Mise à disposition > Mise en page du bureau.

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 à Espace de travail des opérations de service.

Page d'accueil de ServiceNow avec Webex Contact Center Agent Desktop intégré à ServiceNow.

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.

1

Dans le champ Filtrer le navigateur en haut à gauche de la fenêtre, entrez sys_properties.list.

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.

  1. Sur la page Propriétés du système , cliquez sur x_caci_webexcc.webexccactivitytable.

  2. Modifiez le champ Valeur si nécessaire.

7

(Facultatif) Ajoutez des groupes d'utilisateurs des façons suivantes :

  1. Dans le champ Filtrer le navigateur en haut à gauche de la fenêtre, allez dans Groupes sous Sécurité du système.

  2. Cliquez sur Modifier et ajoutez les rôles suivants :

    • sn_openframe_user

    • x_caci_webexcc.agent

    • agent_workspace_user

    • x_caci_webexcc.webexcc_imp_activity_user

    • x_caci_webexcc.webex_contact_center

1

À partir du champ Filtrer le navigateur, accédez à OpenFrame > configurations.

2

Cliquez sur Nouveau.

3

Saisissez les propriétés suivantes pour l'URL :

  • Nom : Bureau Webex Contact Center

  • Titre : Webex Contact Center

  • Largeur : 550 (recommandé)

  • Hauteur : 600 (recommandé)

4

À droite du champ URL , cliquez sur le bouton Verrouiller et ajoutez x_caci_webexcc_agentdesktop.do comme URL. (Effectuez cette étape pour pointer la configuration vers la page de l'interface utilisateur)

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 à Espace de travail des opérations de service.

Page d'accueil de ServiceNow avec Webex Contact Center Agent Desktop intégré à ServiceNow.

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 Mise à disposition > Mise en page du bureau.

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 à Espace de travail des opérations de service.

Page d'accueil de ServiceNow avec Webex Contact Center Agent Desktop intégré à ServiceNow.

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 « ref_contributions=show_phone,.

Vous pouvez maintenant commencer à utiliser le bureau Webex Contact Center dans la console ServiceNow.

4

À partir du champ Navigateur de filtre , accédez à Espace de travail des opérations de service.

Page d'accueil de ServiceNow avec Webex Contact Center Agent Desktop intégré à ServiceNow.

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 à Espace de travail des opérations de service.

Page d'accueil de ServiceNow avec Webex Contact Center Agent Desktop intégré à ServiceNow.

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
  1. Allez dans le navigateur de filtre et recherchez script inclut.

    Sélectionnez Inclut le script sous Interface utilisateur du système.

  2. Filtrez le Nom et recherchez propUtils.

  3. 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); },

Changement de méthode sur les pages de l'IU
  1. Allez au navigateur de filtre et recherchez la page de l’interface utilisateur.

    Sélectionnez Pages de l'IU sous Interface utilisateur.

  2. Filtrez le Nom et recherchez agentdesktop.

  3. 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

  1. Modifiez le tableau dans la version du développeur de ServiceNow.

  2. Allez dans le navigateur de filtres et recherchez studio.

    Sélectionnez Webex Contact Center

    ou

  3. Sélectionnez le tableau Activité IMP de WebexCC

  4. Ajouter une nouvelle colonne, par exemple, Nom du client

Ajouter une colonne au journal du téléphone

  1. Modifiez la table des journaux du téléphone.

  2. 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'incident

Impact de l'incident

Mise à jour du script Service Now

Les mises à jour du script incluent

  1. Allez dans le navigateur de filtre et recherchez script inclut

    Sélectionnez l'option Le script inclut sous Interface utilisateur du système.

  2. Filtrez le Nom avec propUtils.

  3. 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; },

Un changement de méthode sur les pages de l'interface utilisateur
  1. 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.

  2. Filtrez les pages de l'IU avec Nom et recherchez agentdesktop.

  3. 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 WebexCC

Ajouter 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

Ajouter une nouvelle colonne - NuméroInteractions

Ajouter une nouvelle colonne - NuméroIncident

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

Ajouter un nouveau - pour la carte des numéros d'interaction

Ajouter un nouveau - pour la carte des numéros d'incident

Cliquez sur Mettre à jour.

Les modifications apportées au script incluent

  1. Allez dans le navigateur de filtres et recherchez « script inclut ».

    Sélectionnez Inclut le script sous Interface utilisateur du système.

  2. Filtrez le Nom avec propUtils.

  3. 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

  1. 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.

  2. Filtrez les pages de l'IU avec Nom et recherchez agentdesktop.

  3. 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 appel

Pour chaque nouvel appel dans le connecteur CRM WebexCC dans ServiceNow, créez un nouvel enregistrement d’incident.

  1. Recherche de règles métier sur le navigateur de filtres

  2. 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

  3. 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.

  4. 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= »

Exemple

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.

Références

Personnalisation n° 2 - Ajouter une variable CAD dans le tableau d’activité du Webex Contact Center

Aperçu

Cet 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.

Ajouter une colonne à l’activité WebexCC
  1. Modifiez le tableau dans la version du développeur de ServiceNow.

  2. Allez dans Studio > Webex Contact Center.

  3. Sélectionnez le tableau Activité WebexCC .

  4. Par exemple, Nom du client.

  5. Sélectionnez Mise en page en liste pour Activité WebexCC.

La création d'un nouveau script inclut

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 script

Cré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.