Conditions préalablement requises

Avant d'intégrer Webex Contact Center à la console ServiceNow CRM, assurez-vous de disposer des éléments suivants :

Suivez l'une des deux méthodes ci-dessous :

Pour les instances de développeur, nous vous recommandons de suivre les étapes du guide des instances du développeur.

Si vous possédez une instance sous licence d'entreprise, suivez les instructions relatives aux instances sous licence d'entreprise.

Nous vous déconseillons de mélanger l'application sous licence d'entreprise avec des instances sandbox de développeur.

Les sections suivantes décrivent les étapes d'installation du connecteur ServiceNow pour les instances de développeur.

1

connectez-vous à votre compte portail développeur ServiceNow et ouvrez la console Administration .

2

Dans la zone Mon instance du menu Compte , cliquez sur Démarrer la création.

3

Sur votre instance de développeur, dans le champ Filter navigator en haut à gauche de la fenêtre, accédez à Plugins.

4

Recherchez le plug-in Openframe qui a le titre Openframe. Vous devrez peut-être faire défiler la liste.

5

Cliquez sur Installer pour installer le plug-in Openframe.

6

Dans la boîte de dialogue Activer le plug-in, cliquez sur Activer.

7

Une fois l'activation du plugin terminée, cliquez sur Fermer et recharger le formulaire dans la boîte de dialogue Activation du plug-in.

8

Pour vérifier l'activation du plug-in, dans le champ Navigateur de filtre en haut à gauche de la fenêtre, accédez à OpenFrame.

9

Cliquez sur Configurations et assurez-vous que le plug-in OpenFrame apparaît dans la liste Configurations OpenFrame .

1

Téléchargez le dernier fichier System Update Set XML disponible sur le dépôt github à cet emplacement : https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow.

Nom de fichier : webexcc-servicenow-update-setV(X).xml

2

Sur votre instance ServiceNow, dans le champ Filter navigator (Navigateur de filtre) en haut à gauche de la fenêtre, accédez à System Update Sets > Update Sets to Commit (Jeux de mises à jour du système) à valider.

3

Cliquez sur Importer le jeu de mises à jour à partir de XML lien.

4

Cliquez sur Choisir un fichier, sélectionnez le fichier XML jeu de mises à jour système, puis cliquez sur Télécharger.

Le jeu de mises à jour apparaît dans la liste des jeux de mise à jour récupérés et est à l'état Chargé .
5

Dans la liste Jeux de mises à jour récupérés , cliquez sur le nom de fichier du jeu de mises à jour (lien) pour ouvrir le jeu de mises à jour.

6

Dans le coin supérieur droit de la fenêtre, cliquez sur Aperçu du jeu de mises à jour pour rechercher des problèmes dans le jeu de mises à jour.

7

Cliquez sur Fermer dans la boîte de dialogue Aperçu du jeu de mise à jour une fois l'aperçu terminé.

8

Cliquez sur Valider le jeu de mises à jour.

9

Cliquez sur Fermer dans la boîte de dialogue Mettre à jour l'ensemble de valid. une fois la validation du jeu de mises à jour terminée.

1

Dans le champ Navigateur de filtre en haut à gauche de la fenêtre, tapez sys_properties.list et appuyez sur Entrée.

2

Dans la page Propriétés système, triez les propriétés par date de mise à jour. Vérifiez que vous pouvez voir les propriétés suivantes de Webex Contact Center :

3

Cliquez sur agentdesktop_url pour ouvrir la page agentdesktop_url des propriétés système.

4

Dans le champ Valeur , saisissez l'URL du centre de contacts Webex Desktop en fonction de la région d'opérations.

5

Cliquez sur Mettre à jour pour enregistrer les modifications.

6

(Facultatif) Pour modifier le nom de la table Activity, modifiez les propriétés de webexccactivitytable selon vos besoins.

Dans la page Propriétés système, cliquez sur webexccactivitytable.

Modifiez le champ Valeur selon vos besoins.

7

(Facultatif) Ajoutez des groupes d'utilisateurs des manières suivantes :

  1. Dans le champ Navigateur de filtre en haut à gauche de la fenêtre, accédez à Groupes sous Sécurité du système.

  2. Créez un nouveau groupe d'utilisateurs ou utilisez un groupe existant.

  3. Cliquez sur Modifier.

  4. Recherchez sn_openframe_user sous Collection et déplacez-le vers votre groupe d'utilisateurs.

  5. Cliquez sur Enregistrer.

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

1

Dans le champ Filter navigator , accédez à OpenFrame > Configurations.

2

Cliquez sur Nouveau.

3

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

  • Nom : Webex Contact Center Desktop

  • Titre : Centre de contact Webex

  • 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 les groupes d'utilisateurs/agents à attribuer à la configuration.

6

Cliquez sur Soumettre. L'URL apparaît sous forme de lien.

7

Avant d'essayer d'utiliser le téléphone OpenFrame, assurez-vous de télécharger le fichier JSON d'aménagement du bureau personnalisé ServiceNow sur le portail Webex Contact Center Management. Pour plus d'informations, consultez Configuration de la disposition du bureau ServiceNow sur Webex Contact Center.

1

Téléchargez la présentation du bureau pour ServiceNow à partir de https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow.

2

Mettez à jour les propriétés dans le fichier d'aménagement du bureau, si nécessaire.

3

Accédez au portail de gestion de Webex Contact Center.

4

Dans la barre de navigation Management Portal, choisissez Mise à disposition > Présentation du bureau.

5

Cliquez sur Nouvelle disposition et entrez les détails de la disposition du bureau.

6

Téléchargez le fichier JSON ServiceNow Desktop Layout.

7

Cliquez sur Enregistrer pour enregistrer la configuration.

Vous pouvez désormais démarrer Webex Contact Center Desktop dans la console ServiceNow.

8

Dans le champ Navigateur de filtre, accédez à Espace de travail des opérations de service.

La page d'accueil ServiceNow avec Webex Contact Center Agent Desktop intégrée à ServiceNow.

Les sections suivantes décrivent les étapes d'installation du connecteur ServiceNow pour les instances d'entreprise sous licence.

1

connectez-vous à votre compte portail développeur ServiceNow et ouvrez la console Administration .

2

Dans la zone Mon instance du menu Compte , cliquez sur Démarrer la création.

3

Sur votre instance de développeur, dans le champ Filter navigator en haut à gauche de la fenêtre, accédez à Plugins.

4

Recherchez le plug-in Openframe qui a le titre Openframe. Vous devrez peut-être faire défiler la liste.

5

Cliquez sur Installer pour installer le plug-in Openframe.

6

Dans la boîte de dialogue Activer le plug-in, cliquez sur Activer.

7

Une fois l'activation du plugin terminée, cliquez sur Fermer et recharger le formulaire dans la boîte de dialogue Activation du plugin .

8

Pour vérifier l'activation du plugin, à partir du champ Navigateur de filtre en haut à gauche de la fenêtre, accédez à OpenFrame.

9

Cliquez sur Configurations et assurez-vous que le plug-in OpenFrame apparaît dans la liste Configurations OpenFrame .

1

Dans le champ Navigateur de filtre en haut à gauche de la fenêtre, saisissez sys_properties.list.

2

Sur la page Propriétés système , triez les propriétés par date de mise à jour. Assurez-vous que vous pouvez voir les propriétés suivantes du centre de contact Webex :

3

Cliquez sur agentdesktop_url pour ouvrir la page Propriétés système agentdesktop_url .

4

Dans le champ Valeur , saisissez l'URL du bureau du centre de contact Webex en fonction de la région d'opération.

5

Cliquez sur Mettre à jour pour enregistrer les modifications.

6

(Facultatif) Pour modifier le nom de la table d'activité, modifiez les propriétés x_caci_webexcc.webexccactivitytable comme requis.

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

  2. Modifiez le champ Valeur selon vos besoins.

7

(Facultatif) Ajoutez des groupes d'utilisateurs de la manière suivante :

  1. Dans le champ Navigateur de filtre en haut à gauche de la fenêtre, accédez à 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_espace_de_travail_utilisateur

    • x_caci_webexcc.webexcc_imp_activité_utilisateur

    • x_caci_webexcc.centre_de_contact_webex

1

À partir du champ Navigateur de filtre , accédez à OpenFrame > Configurations.

2

Cliquez sur Nouveau.

3

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

  • Nom : Webex Centre de contact pour ordinateur de bureau

  • Titre : Webex Centre de contact

  • 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. (Procédez à cette étape pour pointer la configuration vers la page de l'interface utilisateur)

5

(Facultatif) Sélectionnez les groupes d'utilisateurs/d'agents auxquels attribuer la configuration.

6

Cliquez sur Soumettre. L'URL apparaît sous forme de lien.

7

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

Page d'accueil ServiceNow avec Webex Centre de contact 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 du centre de contact Webex de Disponible à Sélectionné.

9

Avant de tenter d'utiliser le téléphone OpenFrame, assurez-vous de télécharger le fichier JSON de disposition de bureau personnalisé ServiceNow sur le portail de gestion du centre de contact Webex. Pour plus d'informations, consultez Configurer la disposition du bureau ServiceNow sur Webex Contact Center.

1

Téléchargez la disposition du bureau pour ServiceNow depuis https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow.

2

Mettez à jour les propriétés dans le fichier de disposition du bureau, si nécessaire.

3

Accédez au portail de gestion du centre de contact Webex.

4

Dans la barre de navigation du portail de gestion, choisissez Provisionnement > Disposition du bureau.

5

Cliquez sur Nouvelle disposition et entrez les détails de la disposition du bureau.

6

Téléchargez le fichier JSON de mise en page du bureau ServiceNow.

7

Cliquez sur Enregistrer pour enregistrer la configuration.

Vous pouvez maintenant démarrer le centre de contact Webex dans la console ServiceNow.

8

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

Page d'accueil ServiceNow avec Webex Centre de contact Agent Desktop intégré à ServiceNow.

1

À partir du champ Navigateur de filtre , accédez à Incidents > ouvrir l'incident.

2

Cliquez avec le bouton droit sur le champ appelant et cliquez sur Configurer le dictionnaire.

3

Ajouter des attributs séparés par des virgules "ref_contributions=show_phone,.

Vous pouvez désormais commencer à utiliser Webex Contact Center Desktop dans la console ServiceNow.

4

Dans le champ Navigateur de filtre, accédez à Espace de travail des opérations de service.

La page d'accueil ServiceNow avec Webex Contact Center Agent Desktop intégrée à ServiceNow.

Agent Desktop dans la console ServiceNow

Avant de passer des appels externes, assurez-vous de :

  • Créez le point d'entrée de numérotation externe et mettez en place une stratégie de point d'entrée de numérotation externe.

  • Activez la numérotation externe ANI pour le profil d'agent.

  • Définissez l'espace de numérotation externe sur un mappage de numéro d'appel à point d'entrée.

Pour plus d'informations, reportez-vous au chapitre Provisioning du guide d'installation et d'administration Cisco Webex Contact Center.

Dans le champ Navigateur de filtre, accédez à Espace de travail des opérations de service.

La page d'accueil ServiceNow avec Webex Contact Center Agent Desktop intégrée à ServiceNow.

Pour plus d'informations sur l'utilisation de Desktop, consultez l'onglet Agent de l'aide de Webex Contact Center.

Vue d'ensemble

Cet article couvre plusieurs façons de personnaliser vos règles d'entreprise pour le connecteur ServiceNow CRM. Il détaille comment vous pouvez personnaliser les cas d'utilisation en fonction des règles métier spécifiques à ServiceNow.

Le client doit gérer lui-même ces cas d'utilisation sur ServiceNow. La configuration est spécifique à ServiceNow et non Webex logiciel ou expertise Contact Center.

Il s'agit d'une documentation de référence pour faciliter la modification des règles métier. Les développeurs ServiceNow créeront et géreront les règles métier et fourniront un support.

Cisco ne fournit que des exemples de documentation.

Les sections suivantes fournissent des détails sur la configuration, l'activation et la gestion du widget Actions pour les instances de développeur et d'entreprise.

Valider le jeu de mises à jour pour le widget Actions

Pour les instances d'entreprise sous licence, installez la dernière application Webex Contact Center à partir de la boutique ServiceNow.

Pour configurer le widget Actions pour les instances de développeur, téléchargez le dernier fichier System Update Set XML disponible sur le dépôt github à cet emplacement : https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow/ActionsWidget. Le nom de fichier est webexcc-servicenow-update-setv7-1-ActionsWidget.xml. Pour valider le jeu de mises à jour pour le widget Actions, reportez-vous aux étapes 2 à 9 dans Valider le jeu de mises àjour.

Widget Activer les actions

Utilisez la propriété isWidgetDisplayEnabled pour activer le widget Actions. Vous ne devez pas modifier la valeur de cette propriété dans la section sans tête de la mise en page de bureau personnalisée. La propriété est toujours définie sur false dans la section sans tête de la disposition de bureau personnalisée. Vous devez mettre à jour la valeur de la propriété uniquement dans la section de panneau de la disposition de bureau personnalisée.

Une fois que vous avez activé le widget Actions dans la présentation personnalisée du bureau, vous pouvez effectuer les actions suivantes :

  • Gestion des enregistrements d'activité : cliquez sur Afficher/Modifier le rapport d'activité pour afficher la liste des rapports d'activité associés à l'appelant.
  • Associer des objets CRM : cliquez sur Associer aux enregistrements d'activité pour ajouter à l'enregistrement d'activité des objets CRM tels que le type d'appel (entrant ou sortant), l'objet d'appel, les notes d'appel, etc.
  • Gérer les incidents : cliquez sur Créer un incident. Un nouvel incident est créé lorsque les détails de l'appelant sont prérenseignés. Vous pouvez apporter les mises à jour requises à l'incident. Vous pouvez choisir de modifier le type d'enregistrement d'un incident à un incident, un module RH, etc., en fonction de vos besoins. Pour modifier le type d'enregistrement, modifiez la valeur de la propriété typeOfRecord dans la configuration du widget Actions. Par exemple :
    { "comp" : "md-tab-panel", "attributes" : { "slot" : "panel", "class" : "widget-pane" }, "children" : [ { "comp" : "agentx-custom-desktop", "script" : "https://cx-crmconnector.ciscoccservice.com/servicenow/v5/dist/index.js", "properties" : { "isWidgetDisplayEnabled" : true, "typeOfRecord" : "Create Incident" }, "wrapper" : { "title" : "SNOW Actions ! », "maximizeAreaName" : "app-maximize-area" } } ] }
  • Ajouter des notes d'appel en direct : vous pouvez capturer des informations supplémentaires sur l'appel dans la zone de texte et post-appel de l'appel. Vous pouvez voir ces notes ajoutées sous forme de notes d'appel dans le rapport d'activité.

Changement de code sur ServiceNow

Le script inclut les modifications
  1. Accédez au navigateur de filtre et recherchez Le script inclut.

    Sélectionnez le script inclus dans l'interface utilisateur système.

  2. Filtrez le nom et recherchez propUtils.

  3. Modifier la méthode UserGetSysId Dans le script.

    Actuel :

    UserGetSysId : function () { var opened_for ; var user = new GlideRecord("sys_user") ; user.addQuery(this.getParameter('field'),this.getParameter('value')) ; user.query() ; if (user.next()) opened_for=user.sys_id ; var grInt = new GlideRecord('interaction') ; grInt.initialize() ; grInt.assigned_to= gs.getUserID() ; grInt.type= 'phone' ; grInt.opened_for= opened_for ; var sysid=grInt.insert() ; return sysid ; },

    Nouvel exemple de code pour l'incident :

    UserGetSysId : function () { var opened_for ; //Modifications liées aux incidents var sysidlist = {} ; var user = new GlideRecordSecure("sys_user") ; user.addQuery(this.getParameter('field'),this.getParameter('value')) ; user.query() ; if(user.next()) { opened_for=user.sys_id ;//return user.sys_id ; var inc = new GlideRecordSecure('incident') ; inc.addQuery('caller_id', opened_for) ; inc.addQuery('state','IN','1,2') ; inc.orderByDesc('sys_created_on') ; inc.query() ; if (inc.next()) { sysidlist.incsysid=inc.getUniqueValue() ; }else{ inc.initialize() ; inc.caller_id=opened_for ; inc.contact_type='phone' ; inc.short_description='Appel reçu de '+ this.getParameter('value') ; sysidlist.incsysid=inc.insert() ; } } var grInt = new GlideRecordSecure('interaction') ; grInt.initialize() ; grInt.assigned_to= gs.getUserID() ; grInt.type= 'téléphone' ; grInt.opened_for= opened_for ; var sysid=grInt.insert() ; sysidlist.sysid=sysid ; return JSON.stringify(sysidlist) ; },

Changement de méthode sur les pages d'interface utilisateur
  1. Accédez au navigateur de filtre et recherchez la page UI.

    Sélectionnez Pages d'interface utilisateur sous Interface utilisateur système.

  2. Filtrez le nom et recherchez Agentdesktop (bureau) d'agent.

  3. Modifiez screenpop dans le script client.

    Fonction actuelle :

    screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani) ; } var gaout = new GlideAjax('propUtils') ; gaout.addParam('sysparm_name', 'UserGetSysId') ; gaout.addParam('champ', 'téléphone') ; gaout.addParam('value', callerani) ; gaout.getXMLWait() ; var sysid = gaout.getAnswer() ; openFrameAPI.openServiceNowForm({ entity : 'interaction', query : 'sys_id='+sysid }) ;

    Exemple de code pour l'incident :

    fonction screen pop screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani) ; } var gaout = new GlideAjax('propUtils') ; gaout.addParam('sysparm_name', 'UserGetSysId') ; gaout.addParam('field', 'phone') ; gaout.addParam('value', callerani) ; gaout.getXMLWait() ; // For Incident-related change var sysObj = JSON.parse(gaout.getAnswer()) ; if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity : 'incident', query : 'sys_ id='+sysObj.incsysid, 'interaction_sys_id' : sysObj.sysid }) ; }else{ openFrameAPI.openServiceNowForm({ entity : 'incident', query : 'sys_id=-1', 'interaction_sys_id' : sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }) ; } }

Si les informations relatives à l'appelant existent dans CRM et qu'un nouvel incident a déjà été déclenché avec ce contact, l'application ouvre l'incident en cours

Si les informations sur l'appelant n'existent pas dans CRM, l'application ouvre un nouvel incident

Si les informations sur l'appelant existent dans CRM, l'application ouvre un nouvel incident avec des détails préremplis

Vue d'ensemble

Ce cas d'utilisation détaille le processus d'ajout d'une colonne supplémentaire à la table ServiceNow - webexcc_imp_activity et créer sn_openframe_phone_log lors de l'installation de Webex CC pour ServiceNow CRM Connector.

Par défaut, le tableau contient certains champs et valeurs système prêts à l'emploi.

Vous pouvez créer davantage de variables spécifiques à l'entreprise (variables CAO) dans le concepteur de flux WebexCC et ajouter les variables CAO dans le journal d'activité post-appel ServiceNow, ainsi que les conserver dans les données de la table d'activité post-appel.

Il s'agit d'une documentation de référence uniquement - et montre comment procéder pour un exemple de variable CAD appelée Nom du client qui stocke le nom du client dans le IVR et le publie sur ServiceNow.

Il est prévu que les développeurs partenaire+client ServiceNow configurent et gèrent cette configuration car il s'agit d'une personnalisation du connecteur existant.

Cisco ne fournit que des techniques de personnalisation et d'extension du connecteur.

Depuis cet article, l'équipe Cisco a validé la prise en charge de l'ajout de variables CAD au journal d'activité et au tableau d'activité en utilisant la technique décrite ci-dessous :

Ajouter une colonne à l'activité IMP WebexCC

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

  2. Accédez au navigateur de filtre et recherchez studio.

    Sélection Webex Contact Center

    ou

  3. Cochez la case Activité IMP WebexCC table

  4. Ajouter une nouvelle colonne, par exemple, NomClient

Ajouter une colonne au journal du téléphone

  1. Modifiez le tableau du journal du téléphone.

  2. Ajouter une nouvelle colonne, par exemple, NomClient.

Carte de transformation de l'activité WebexCC

Ajouter une nouvelle colonne, par exemple, NomClient Cartographie des champs.

Personnalisation des colonnes de la liste

Comme Service Now le recommande, modifiez l'action Choix de créer à ignorer.

Configurer la liste des journaux du téléphone

Aller à Script include

Ajouter une seule ligne webexcc.u_customername=actInfo.NomClient à propUtils.

Exemple de script

Consultez la ligne : webexcc.u_customername=actInfo.CustomerName ; avec un commentaire à l'appui.

var propUtils = Class.create() ; propUtils.prototype = Object.extendsObject(global. AbstractAjaxProcessor,{ getWebexccProp : function () { var webexccprop = {} ; webexccprop.instanceurl= 'https://'+gs.getProperty('instance_name')+'.service-now.com/' ; webexccprop.url=gs.getProperty('x_caci_webexcc.agentdesktop_url') ; // webexccprop.popupurl=gs.getProperty('x_caci_webexcc.screenpop_url') ; return JSON.stringify(webexccprop) ; }, UserGetSysId : function () { var opened_for ; var user = new GlideRecord("sys_user") ; user.addQuery(this.getParameter('field'),this.getParameter('value')) ; user.query() ; if (user.next()) opened_for=user.sys_id ;//return user.sys_id ; else // return null ; var grInt = new GlideRecord('interaction') ; grInt.initialize() ; grInt.assigned_to= gs.getUserID() ; grInt.type= 'téléphone' ; grInt.opened_for= opened_for ; var sysid=grInt.insert() ; renvoyer sysid ; }, setWebexcctable : function () { var sys_id=0 ; var actInfo = JSON.parse(this.getParameter('actInfo')) ; var webexcc = new GlideRecordSecure(gs.getProperty('x_caci_webexcc.webexccactivitytable')) ; webexcc.addQuery("callobject", actInfo.CallObject) ; webexcc.query() ; if( !webexcc.next()) { webexcc.ani = actInfo.ani ; webexcc.dnis =actInfo.dnis ; webexcc.queuename =actInfo.queuename ; webexcc.wrapuptime =actInfo.wrapuptime ; webexcc.callduration =actInfo.CallDurationInSeconds ; webexcc.ringingtime =actInfo.ringingtime ; webexcc.activitydate =actInfo.ActivityDate ; webexcc.callobject =actInfo.CallObject ; webexcc.calltype =actInfo.CallType ; webexcc.calldisposition=actInfo.CallDisposition ; cette ligne est ajoutée - pour la capturer dans le journal d'activité webexcc.u_customername=actInfo.CustomerName ; sys_id=webexcc.insert() ; Activités consignées dans le dossier de l'incident ; var actInfoString =this.getParameter('actInfo') ; var suser = new GlideRecordSecure("sys_user") ; suser.addQuery("phone", this.getParameter('ani')) ; suser.query() ; if(suser.next()) { var inc = new GlideRecordSecure('incident') ; inc.addQuery('caller_id', suser.sys_id) ; inc.orderByDesc('sys_created_on') ; inc.query() ; if (inc.next()) { var jsonPretty = JSON.stringify(JSON.parse(actInfoString),null,2) ; inc.comments =jsonPretty ; inc.update() ; } } } retour sys_id ; }, type : 'propUtils' }) ;

Créer une variable CAO dans le concepteur de flux

Ajouter la variable CAD à la présentation du bureau

Exemple

"CadName1 : SnowField1,CadName2 : SnowField2" CadName1 est CustomerName SnowField1 est également utilisé comme CustomerName qui fait partie de l'exemple de scirpt ci-dessus "actInfo.CustomerName".

Captures d'écran de la démo

Affichez la variable CAD nouvellement ajoutée dans la table d'activité WebexCC.

Création d'une variable CAD pour Flow Designer

Urgence en cas d'incident

Impact de l'incident

Mise à jour du script Service Now

Les mises à jour du script incluent

  1. Accédez au navigateur de filtres et recherchez les inclusions de script

    Sélectionnez l'option Inclut le script sous Interface utilisateur système.

  2. Filtrez le nom avec propUtils.

  3. Modifier la méthode UserGetSysId Dans le champ Script .

    Script actuel :

    UserGetSysId : function () { var opened_for ; var user = new GlideRecord("sys_user") ; user.addQuery(this.getParameter('field'),this.getParameter('value')) ; user.query() ; if (user.next()) opened_for=user.sys_id ; var grInt = new GlideRecord('interaction') ; grInt.initialize() ; grInt.assigned_to= gs.getUserID() ; grInt.type= 'phone' ; grInt.opened_for= opened_for ; var sysid=grInt.insert() ; return sysid ; },

    Nouvel exemple de code pour l'incident :

    UserGetSysId : function () { var opened_for ; var sysidlist = {} ; var user = new GlideRecordSecure("sys_user") ; user.addQuery(this.getParameter('field'),this.getParameter('value')) ; user.query() ; if(user.next()) { opened_for=user.sys_id ;//return user.sys_id ; var inc = new GlideRecordSecure('incident') ; inc.addQuery('caller_id', opened_for) ; inc.addQuery('state','IN','1,2') ; inc.orderByDesc('sys_created_on') ; inc.query() ; if (inc.next()) { sysidlist.incsysid=inc.getUniqueValue() ; } else{ inc.initialize() ; inc.caller_id=opened_for ; inc.contact_type='téléphone' ; inc.urgency=this.getParameter('IncUrgency') ; inc.impact=this.getParameter('Impact') ; inc.short_description='Appel reçu de '+ this.getParameter('value') ; sysidlist.incsysid=inc.insert() ; } } var grInt = new GlideRecordSecure('interaction') ; grInt.initialize() ; grInt.assigned_to= gs.getUserID() ; grInt.type= 'téléphone' ; grInt.opened_for= opened_for ; var sysid=grInt.insert() ; sysidlist.sysid=sysid ; return JSON.stringify(sysidlist) ;//sysid ; },

Changement de méthode sur les pages d'interface utilisateur
  1. Accédez au navigateur de filtre et recherchez les pages de l'interface utilisateur.

    Sélectionnez l'option Pages de l'interface utilisateur sous Interface utilisateur système.

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

  3. Modifiez screenpop Dans le champ de script.

    Fonction actuelle :

    screen pop function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani) ; } var gaout = new GlideAjax('propUtils') ; gaout.addParam('sysparm_name', 'UserGetSysId') ; gaout.addParam('field', 'phone') ; gaout.addParam('value', callerani) ; gaout.getXMLWait() ; var sysid = gaout.getAnswer() ; openFrameAPI.openServiceNowForm({ entity : 'interaction', query : 'sys_id='+sysid }) ; }

    Exemple de code pour l'incident :

    screen pop, fonction screenpop(callerani,callSessionInfo) { var Impact=3 ; if(callSessionInfo.callAssociatedData.Impact != null && callSessionInfo.callAssociatedData.Impact != undefined) { Impact=callSessionInfo.callAssociatedData.Impact.value ; } var IncUrgency=3 ; if(callSessionInfo.callAssociatedData.Urgency != null && callSessionInfo.callAssociatedData.Urgency != undefined) { IncUrgency=callSessionInfo.callAssociatedData.Urgency.value ; } if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani) ; } var gaout = new GlideAjax('propUtils') ; gaout.addParam('sysparm_name', 'UserGetSysId') ; gaout.addParam('champ', 'téléphone') ; gaout.addParam('value', callerani) ; gaout.addParam('IncUrgence', IncUrgence) ; gaout.addParam('Impact', Impact) ; gaout.getXMLWait() ; var sysid = gaout.getAnswer() ; var sysObj = JSON.parse(gaout.getAnswer()) ; if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity : 'incident', query : 'sys_id='+sysObj.incsysid, 'interaction_sys_id' : sysObj.sysid }) ; } else{ openFrameAPI.openServiceNowForm({ entity : 'incident', query : 'sys_id=-1', 'interaction_sys_id' : sysObj.sysid }) ; } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)) ; }

Si les informations relatives à l'appelant existent dans CRM et qu'il n'y a pas d'incident nouveau ou en cours, l'application ouvre un nouvel incident

Modifier le code sur ServiceNow

Ajouter de nouvelles colonnes Activité IMP WebexCC table

Ouvrez Activité IMP WebexCC table

Ajouter une nouvelle colonne - InteractionsNumber

Ajouter une nouvelle colonne - IncidentNumber

Cliquez sur Mettre à jour.

Ajouter de nouvelles colonnes Journal du téléphone table

Ouvrez Journal du téléphone table

Ajouter une nouvelle colonne - InteractionsNumber

Ajouter une nouvelle colonne - IncidentNumber

Carte de transformation de l'activité WebexCC

Ouverte Transformer la carte à partir du navigateur de filtres

Cliquez sur Carte de transformation de l'activité WebexCC

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

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

Cliquez sur Mettre à jour.

Modifications apportées aux fonctionnalités de script

  1. Allez dans le navigateur de filtre et recherchez "script includes".

    Sélectionnez le script inclus dans l'interface utilisateur système.

  2. Filtrez le nom avec propUtils.

  3. Modifier la méthode setWebexcctable.

    Nouvel exemple de code pour l'incident :

    setWebexcctable : function () { var sys_id=0 ; var actInfo = JSON.parse(this.getParameter('actInfo')) ; var webexcc = new GlideRecordSecure(gs.getProperty('webexccactivitytable')) ; webexcc.addQuery("u_callobject", actInfo.CallObject) ; webexcc.query() ; if( !webexcc.next()) { //Activités sur l'enregistrement d'incident ; //var actInfoString =this.getParameter('actInfo') ; var incsysid=actInfo.incident_sys_id ; var interactionsysid=actInfo.interaction_sys_id ; var incnum=" » ; var intenum=" » ; supprimer actInfo['interaction_sys_id'] ; supprimer actInfo['incident_sys_id'] ; if( interactionsysid != null && interactionsysid != undefined){ var inte = new GlideRecordSecure('interaction') ; //inte.get('sys_id', interactionsysid ) ; inte.addQuery('sys_id', interactionsysid ) ; inte.query() ; if (inte.next()) { intenum=inte.number ; // inte.setValue('state','Closed Complete') ; inte.work_notes='Update State to closed.' ; inte.update() ; } } if( incsysid != null && incsysid != undefined){ var inci = new GlideRecordSecure('incident') ; inci.addQuery('sys_id', incsysid ) ; inci.query() ; if (inci.next()) { incnum=inci.number ; var jsonPretty = JSON.stringify(actInfo,null,2) ; //JSON.stringify(JSON.parse(actInfoString),null,2) ; inci.comments =jsonPretty ; inci.update() ; } } else{ var suser = new GlideRecordSecure("sys_user") ; suser.addQuery("phone", this.getParameter('ani')) ; suser.query() ; if(suser.next()) { var inc = new GlideRecordSecure('incident') ; inc.addQuery('caller_id', suser.sys_id) ; inc.addQuery('état','IN','1,2') ; inc.orderByDesc('sys_created_on') ; inc.query() ; if (inc.next()) { var jsonPretty = JSON.stringify(actInfo,null,2) ; inc.comments =jsonPretty ; inc.update() ; } } } webexcc.u_ani = actInfo.ani ; webexcc.u_dnis =actInfo.dnis ; webexcc.u_queuename =actInfo.queuename ; webexcc.u_wrapuptime =actInfo.wrapuptime ; webexcc.u_callduration =actInfo.DuréeAppelDansSecondes ; webexcc.u_ringingtime =actInfo.ringingtime ; webexcc.u_activitydate =actInfo.ActivityDate ; webexcc.u_callobject =actInfo.CallObject ; webexcc.u_calltype =actInfo.CallType ; webexcc.u_calldisposition=actInfo.CallDisposition ; webexcc.u_incidentnumber=incnum ; webexcc.u_interactionsnumber=intenum ; sys_id=webexcc.insert() ; } retourner sys_id ; },

Modifications de méthode sur les pages d'interface utilisateur

  1. Accédez au navigateur de filtre et recherchez Pages de l'interface utilisateur

    Sélectionnez l'option Pages de l'interface utilisateur sous Interface utilisateur système.

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

  3. Modifiez maintenantActivités et screenpop Dans le script.

    Fonction actuelle :

    function nowActivities(actInfo, ani) { var gaout = new GlideAjax('propUtils') ; gaout.addParam('sysparm_name', 'setWebexcctable') ; gaout.addParam('actInfo', JSON.stringify(actInfo)) ; gaout.addParam('ani', stripPrefixes(ani)) ; gaout.getXML(SetCCsysId) ; }

    Exemple de code pour l'incident :

    function nowActivities(actInfo, ani) { var sysObjstr = window.localStorage.getItem("screenpopinteraction") ; if(sysObjstr != null && sysObjstr != undefined) { var sysObjjson=JSON.parse(sysObjstr) ; actInfo.interaction_sys_id=sysObjjson.sysid ; actInfo.incident_sys_id=sysObjjson.incsysid ; } var gaout = new GlideAjax('propUtils') ; gaout.addParam('sysparm_name', 'setWebexcctable') ; gaout.addParam('actInfo', JSON.stringify(actInfo)) ; gaout.addParam('ani', stripPrefixes(ani)) ; gaout.getXML(SetCCsysId) ; } function screenpop(callerani,callSessionInfo) { if(callerani===callSessionInfo.phoneNumber){ callerani=stripPrefixes(callerani) ; } var gaout = new GlideAjax('propUtils') ; gaout.addParam('sysparm_name', 'UserGetSysId') ; gaout.addParam('field', 'phone') ; gaout.addParam('value', callerani) ; gaout.getXMLWait() ; // var sysid = gaout.getAnswer() ; var sysObj = JSON.parse(gaout.getAnswer()) ; if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity : 'incident', query : 'sys_id='+sysObj.incsysid, 'interaction_sys_id' : sysObj.sysid }) ; }else{ openFrameAPI.openServiceNowForm({ entity : 'incident', query : 'sys_id=-1', 'interaction_sys_id' : sysObj.sysid }) ; } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)) ; } 

Résultats après la mise à jour

Les personnalisations suivantes s'appliquent aux versions 1.0.5 et antérieures. Pour les personnalisations pour les versions plus récentes 1.0.7 et ultérieures, suivez les étapes ci-dessus.

Personnalisation #1 - Ajouter des règles métier personnalisées pour les cas d'utilisation de flux d'appels

Créer un nouvel enregistrement d'incident pour chaque appel

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

  1. Rechercher des règles métier dans le navigateur de filtre

  2. Cliquez sur Nouveau.

    Exemple de code pour référence :

    function customcti() { var url = null ; var name = sysparm_caller_name ; eid = sysparm_caller_id ; var phone = sysparm_caller_phone ; var taskID = sysparm_task_id ; var fQuery = sysparm_query ; if (fQuery == null) fQuery = '' ; var view = sysparm_view ; if (view == null || view == '') view = "itil" ; var userID = null ; if (eid != null && eid != '') { userID = UserGetSysId("employee_number",eid) ; } if (userID == null && name != null && name != '') { userID = UserGetSysId("name", nom) ; } if (userID == null && phone != null && phone != '') { userID = UserGetSysId("téléphone", téléphone) ; } if (userID != null) { if (fQuery.length > 0) fQuery += « ˆ » ; fQuery += "caller_id= » + userID ; } if (url == null) { url = "incident.do ?sys_id=-1" ; if (fQuery != null) url += « &sysparm_query= » + fQuery ; } answer = url ; URL de retour ; } function UserGetSysId(field, value) { var user = new GlideRecord("sys_user") ; user.addQuery(field, value) ; user.query() ; if (user.next()) return user.sys_id ; else return null ; }

    Exemple de configuration de la règle métier

  3. Activer le client appelable

    Le traitement CTI Computer Telephony Integration (Computer Telephony Integration - Incident ) est marqué comme Vrai.

  4. Mettez à jour l'URL screenpop avec la règle de CTI personnalisée «  cti.do ?sysparm_cti_rule=createIncident&sysparm_caller_phone= »

Exemple

Le sysparm_cti_rule=name où 'name' est le nom d'une fonction doit être appelée pour CTI Traitement plutôt qu'utilisation du script par défaut.

Définissez la fonction dans une entrée de sys_script marquée client appelable.

Si vous devez insérer, mettre à jour ou supprimer des enregistrements glideRecords dans la fonction, appelez une fonction appelable non client distincte pour effectuer les mises à jour.

Pour rendre un script appelable par le client, vous devez cocher la case correspondante dans le formulaire qui s'affiche lorsque l'entrée de sys_script est affichée.

La case à cocher appelable par le client ne s'affiche pas par défaut. Pour les afficher, vous devez modifier les champs qui s'affichent sur le formulaire à l'aide de l'icône d'engrenage et du mécanisme de seau fondée.

Références

Personnalisation #2 - Ajouter une variable CAD dans Webex table d'activité Contact Center

Présentation

Cet article détaille le processus d'ajout d'une colonne supplémentaire au tableau ServiceNow - webexcc_activity qui est créé lors de l'installation du connecteur Webex CC pour ServiceNow CRM.

Par défaut, la table contient des champs et des valeurs système prêts à l'emploi.

Vous pouvez éventuellement créer davantage de variables spécifiques à l'entreprise (variables CAO) dans le concepteur de flux WebexCC et ajouter ces variables CAO dans le journal d'activité post-appel ServiceNow, et les conserver dans les données de la table d'activité post-appel.

  • Ceci est uniquement une documentation de référence - et montre comment procéder pour un exemple de variable CAD appelé Nom du client qui stocke le nom du client dans le IVR et le publie sur ServiceNow.

  • Les développeurs partenaire+client ServiceNow configureront et géreront cette configuration car il s'agit d'une personnalisation du connecteur existant.

  • Cisco ne fournira que les techniques de personnalisation et d'extension du connecteur.

  • Depuis cet article, l'équipe Cisco a validé la prise en charge de l'ajout de variables CAO au journal d'activité et au tableau d'activité en utilisant la technique décrite ci-dessous.

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

  2. Accédez au centre de contact Studio >Webex.

  3. Sélectionnez la table d'activité WebexCC.

  4. Par exemple, NomClient.

  5. Sélectionnez Mise en page de liste pour l'activité WebexCC.

Créer un script inclus

Cette étape n'est pas nécessaire si vous utilisez le jeu de mises à jour XML - Une seule ligne doit être ajoutée « webexcc.u_customername=actInfo.CustomerName » à propUtils.

Exemple de script

Voir la ligne avec :webexcc.u_customername=actInfo.CustomerName ; avec un commentaire à l'appui.

var propUtils2 = Class.create() ; propUtils2.prototype = Object.extendsObject(global. AbstractAjaxProcessor,{ getWebexccProp : function () { var webexccprop = {} ; webexccprop.instanceurl= 'https://'+gs.getProperty('instance_name')+'.service-now.com/' ; webexccprop.url=gs.getProperty('x_caci_webexcc.agentdesktop_url') ; webexccprop.popupurl=gs.getProperty('x_caci_webexcc.screenpop_url') ; return JSON.stringify(webexccprop) ; }, setWebexcctable : function () { var sys_id=0 ; var actInfo = JSON.parse(this.getParameter('actInfo')) ; var webexcc = new GlideRecordSecure(gs.getProperty('x_caci_ webexcc.webexccactivitytable')) ; webexcc.addQuery("callobject", actInfo.CallObject) ; webexcc.query() ; if( !webexcc.next()) { webexcc.ani = actInfo.ani ; webexcc.dnis =actInfo.dnis ; webexcc.queuename =actInfo.queuename ; webexcc.wrapuptime =actInfo.wrapuptime ; webexcc.callduration =actInfo.CallDurationInSeconds ; webexcc.ringingtime =actInfo.ringingtime ; webexcc.activitydate =actInfo.ActivityDate ; webexcc.callobject =actInfo.CallObject ; webexcc.calltype =actInfo.CallType ; webexcc.calldisposition=actInfo.CallDisposition ; // Cette ligne est ajoutée - pour la capturer dans le journal d'activité webexcc. u_customername=actInfo.NomClient ; sys_id=webexcc.insert() ; Activités consignées dans le dossier de l'incident ; var actInfoString =this.getParameter('actInfo') ; var suser = new GlideRecordSecure("sys_user") ; suser.addQuery("phone", this.getParameter('ani')) ; suser.query() ; if(suser.next()) { var inc = new GlideRecordSecure('incident') ; inc.addQuery('caller_id', suser.sys_id) ; inc.orderByDesc('sys_created_on') ; inc.query() ; if (inc.next()) { var jsonPretty = JSON.stringify(JSON.parse(acting string),null,2) ; inc.comments =jsonPretty ; inc.update() ; } } } retour sys_id ; }, type : 'propUtils2' }) ;
Modifier la page d'interface utilisateur avec un nouveau nom de script

Créer une variable CAO dans le concepteur de flux

Ajouter la variable CAD à la présentation du bureau

Captures d'écran de la démo

Affichez la variable CAD nouvellement ajoutée dans la table d'activité WebexCC.