必要条件

目前,此功能仅适用于代理。

在将 Webex Center 与 ServiceNow CRM 控制台集成之前,请确保您有下列设备:

请遵循以下两种方法之一:

对于开发者实例,我们建议遵循开发者实例指南中的步骤。

如果您拥有企业许可实例,请遵循针对企业许可实例的指南。

我们不建议将企业许可的应用程序与开发者沙箱实例混合。

以下部分描述了为开发人员实例安装ServiceNow连接器的步骤。

1

登录您的ServiceNow开发者门户帐户并打开管理 控制台。

2

在“ 帐户”菜单 的“我的 实例” 区域中,单击 开始构建

3

在您的开发者实例中,从窗口左上角的过滤器导航器 字段导航至插件

4

搜索标题为 Openframe 的 Openframe 插件。您可能需要滚动浏览列表。

5

单击 安装 以安装 Openframe 插件。

6

在激活 插件对话框 ,单击 激活

7

当插件激活完成后,单击插件激活 对话框中的关闭和重新加载表单

8

要验证插件激活,从 窗口左上角的过滤器导航器字段中导航至 OpenFrame

9

单击 配置 并确保 OpenFrame 插件出现在 OpenFrame 配置 列表中。

1

在此位置下载github repo上可用的最新系统更新集XML文件:https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow

文件名:webexcc-servicenow-update-setV(X)。xml

2

在ServiceNow实例上,从窗口左上角的 Filter navigator 字段导航至 System Update Sets > Update Sets to Commit

3

单击从 XML 导入更新设置 链接。

4

单击选择文件,选择系统更新集XML文件,然后单击上传

更新集显示在检索 更新集 列表中,并且已载入 状态。
5

检索的更新集 列表中,单击更新集文件名称(链接)打开更新集。

6

在窗口的右上角,单击 预览更新设置 ,检查针对问题的更新集。

7

预览完成后,单击“更新设置预览”对话框上的关闭

8

单击 提交更新集

9

提交更新集后,单击关闭更新集提交 对话框。

1

在窗口左上角的过滤器导航器 字段中,输入sys_properties。list 并按回车。

2

在系统 属性 页面上,按更新日期对属性排序。确保您在 Contact Center 属性 Webex以下信息:

3

单击 agentdesktop_url 打开系统 属性 agentdesktop_url 页面。

4

字段中,根据操作区域输入Webex Contact Center桌面的URL。

5

单击 更新 以保存更改。

6

(可选)要更改活动表名称,请根据 要求编辑 Webexccactivity 表 属性。

系统属性 页面上,单击Webexccactivitytable

根据需要更改 字段。

7

(可选)通过以下方式添加用户组:

  1. 在窗口左上角的过滤器字段中,导航至系统安全 下的组。

  2. 创建新用户组或使用现有用户组。

  3. 单击编辑。

  4. sn_openframe_user 集合下搜索 并将其移至您的用户组。

  5. 单击保存

  6. 将用户添加为组成员。

1

从过滤器 导航器字段中 ,导航到 打开帧 > 配置。

2

单击“新建”。

3

为URL输入以下属性:

  • 姓名:Webex Contact Center 桌面

  • 标题:Webex Contact Center

  • 宽度:550(推荐)

  • 高度:600(推荐)

4

URL 字段右侧,单击锁定 按钮,然后将代理desktop.do 添加为URL。(执行此步骤将配置指向用户界面页面)

5

(可选)选择用户/代理组以分配配置。

6

点击提交。URL 显示为链接。

7

在尝试使用OpenFrame电话之前,请确保将ServiceNow自定义桌面布局JSON文件上传到Webex Contact Center Management Portal。有关详细信息,请参阅在Webex Contact Center上设置ServiceNow桌面布局

1

https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow 下载ServiceNow的桌面布局。

2

如果需要,请更新桌面布局文件中的属性。

3

转至 Webex Contact Center Management Portal。

4

从“管理门户”导航栏选择配置 > 桌面布局。

5

单击 新布局 ,然后输入桌面布局的详细信息。

6

上传 ServiceNow 桌面布局 JSON 文件。

7

单击保存以保存配置。

现在您可以在 ServiceNow 控制台Webex Contact Center 桌面。

8

过滤器导航器 字段导航至服务操作工作空间

ServiceNow主页,与ServiceNow集成Webex Contact Center Agent Desktop。

以下部分描述了为许可企业实例安装ServiceNow连接器的步骤。

1

登录您的ServiceNow开发者门户帐户并打开管理 控制台。

2

在“ 帐户”菜单 的“我的 实例” 区域中,单击 开始构建

3

在您的开发者实例中,从窗口左上角的过滤器导航器 字段导航至插件

4

搜索标题为 Openframe 的 Openframe 插件。您可能需要滚动浏览列表。

5

单击 安装 以安装 Openframe 插件。

6

在激活 插件对话框 ,单击 激活

7

当插件激活完成后,单击插件激活 对话框中的关闭和重新加载表单

8

要验证插件激活,从 窗口左上角的过滤器导航器字段中导航至 OpenFrame

9

单击 配置 并确保 OpenFrame 插件出现在 OpenFrame 配置 列表中。

1

在窗口左上角的过滤导航器 字段中,输入 sys_properties.list

2

在系统 属性 页面上,按更新日期对属性排序。确保您在 Contact Center 属性 Webex以下信息:

3

单击 agentdesktop_url 打开系统 属性 agentdesktop_url 页面。

4

字段中,根据操作区域输入Webex Contact Center桌面的URL。

5

单击 更新 以保存更改。

6

(可选)要更改活动表名称,请根据需要编辑 x_caci_webexcc。webexccactivitytable 属性。

  1. 系统属性 页面上,单击x_caci_webexcc。webexccactivitytable

  2. 根据需要更改 字段。

7

(可选)通过以下方式添加用户组:

  1. 在窗口左上角的过滤器 字段中,导航至系统安全 下的

  2. 单击编辑 并添加以下角色:

    • sn_openframe_user

    • x_caci_webexcc.agent

    • agent_workspace_user

    • x_caci_webexcc.webexcc_imp_activity_user

    • x_caci_webexcc.webex_contact_center

1

从过滤器 导航器字段中 ,导航到 打开帧 > 配置。

2

单击“新建”。

3

为URL输入以下属性:

  • 姓名:Webex Contact Center 桌面

  • 标题:Webex Contact Center

  • 宽度:550(推荐)

  • 高度:600(推荐)

4

URL 字段右侧,单击锁定 按钮并添加x_caci_webexcc_agentdesktop。do 作为URL。(执行此步骤将配置指向用户界面页面)

5

(可选)选择用户/代理组以分配配置。

6

点击提交。URL 显示为链接。

7

过滤器导航器 字段导航至服务操作工作空间

ServiceNow主页,与ServiceNow集成Webex Contact Center Agent Desktop。

8

(可选)在用户组 列表中,将可访问Webex Contact Center桌面的用户组从可用 移动到已选中

9

在尝试使用OpenFrame电话之前,请确保将ServiceNow自定义桌面布局JSON文件上传到Webex Contact Center Management Portal。有关详细信息,请参阅在Webex Contact Center上设置ServiceNow桌面布局

1

https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow 下载ServiceNow的桌面布局。

2

如果需要,请更新桌面布局文件中的属性。

3

转至 Webex Contact Center Management Portal。

4

从“管理门户”导航栏选择配置 > 桌面布局。

5

单击 新布局 ,然后输入桌面布局的详细信息。

6

上传 ServiceNow 桌面布局 JSON 文件。

7

单击保存以保存配置。

现在您可以在 ServiceNow 控制台Webex Contact Center 桌面。

8

过滤器导航器 字段导航至服务操作工作空间

ServiceNow主页,与ServiceNow集成Webex Contact Center Agent Desktop。

1

筛选器导航器字段导航至事件 >打开事件。

2

右键单击呼叫者字段,然后单击配置词典

3

添加逗号分隔属性“ref_contributions=show_phone,

您现在可以在ServiceNow控制台中开始使用Webex Contact Center桌面。

4

过滤器导航器 字段导航至服务操作工作空间

ServiceNow主页,与ServiceNow集成Webex Contact Center Agent Desktop。

我们目前不支持使用Desktop选项(WebRTC)登录代理桌面。

ServiceNow控制台中的代理桌面

在拨打电话前,请确保执行以下操作:

  • 创建外拨入口点并设置外拨入口点策略。

  • 为代理档案启用外拨 ANI。

  • 将外拨 ANI 设置为“拨号号码到入口点”映射。

有关详细信息,请参阅Cisco Webex Contact Center设置和管理指南配置章节。

过滤器导航器 字段导航至服务操作工作空间

ServiceNow主页,与ServiceNow集成Webex Contact Center Agent Desktop。

有关如何使用桌面的信息,请参阅Webex联系中心帮助中的代理 选项卡。

概览

本文介绍了ServiceNow CRM连接器定制业务规则的几种方法。它详细介绍了如何根据特定于ServiceNow的业务规则自定义用例。

客户必须在ServiceNow上自行管理这些用例。此配置是ServiceNow特有的,而不是Webex Contact Center软件或专业知识。

这是用于帮助修改业务规则的参考文档。ServiceNow开发人员将创建和管理业务规则并提供支持。

Cisco仅提供示例文档。

以下部分提供了有关如何为开发人员和企业实例设置、启用和管理操作小工具的详细信息。

提交操作小工具的更新集

对于持照的企业实例,请从 ServiceNow商店安装最新的Webex Contact Center应用程序。

要为开发人员实例设置Actions小部件,请在此位置下载github repo上可用的最新系统更新集XML文件:https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow/ActionsWidget。文件名是webexcc-servicenow-update-setv7-1-ActionsWidget.xml。要提交操作小件的更新集,请参阅提交更新集中的步骤2至9。

启用操作小部件

使用 isWidgetDisplayEnabled 属性启用操作Widget。您不能在自定义桌面布局的无头部分中修改此属性的值。在自定义桌面布局的无头部分中,属性始终设置为false。仅应在自定义桌面布局的面板部分更新该属性的值。

在自定义桌面布局中启用“操作”小部件后,您可以执行以下操作:

  • 管理活动记录—单击查看/编辑活动记录 可查看与呼叫者关联的活动记录列表。
  • 关联CRM对象—单击关联至活动记录 以将CRM对象(呼叫类型(入站或出站)、呼叫对象、呼叫笔记等,添加到活动记录中。
  • 管理事件—单击创建事件。已预填充呼叫者详细信息创建新事件。您可以对事件进行必要的更新。您可以根据您的要求选择从事件到案例、HR模块等更改记录类型。要更改记录类型,请在Actions小部件配置中修改 typeOfRecord 属性的值。例如:
    {"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", "属性":{"isWidgetDisplayEnabled":true,“typeOfRecord” :“创建事件” },“包装器”:{“标题”:“雪地行动!”,“maximizeAreaName”:“app-maximize-area” } } ] }
  • 添加实时呼叫备注—您可以在文本区域中捕获有关呼叫的其他信息并完成呼叫。您可以在活动记录中看到这些注释,作为呼叫注释。

ServiceNow上的代码更改

脚本包含更改
  1. 转至过滤导航并搜索脚本包含

    系统用户界面 下选择脚本包含

  2. 筛选名称 并搜索propUtils

  3. 脚本 中更改UserGetSysId方法。

    curent:

    UserGetSysId:函数() { 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; },

    事件的新示例代码:

    UserGetSysId:函数() { varopened_for; //与事件相关的更改var sysidlist ={}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) {opened_for=用户。sys_id;//返回用户。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;公司。contact_type=“电话”; inc.short_description='从'+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt。assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt。opened_for=opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid;返回JSON.stringify(sysidlist); },

UI页面上的方法更改
  1. 转至过滤导航并搜索UI页面

    系统用户界面 下选择UI页面

  2. 筛选名称 并搜索代理桌面

  3. 客户端脚本 中更改屏幕弹出功能

    当前功能:

    // 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:“交互”,查询:'sys_id='+sysid });

    事件示例代码:

    // 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 sysObj = JSON.parse(gaout.getAnswer()); if(sysObj.incsysid){ openFrameAPI.openServiceNowForm({ entity:“事件”,查询:'sys_id='+sysObj.incsysid,'interaction_sys_id':sysObj.sysid }); else{ openFrameAPI.openServiceNowForm({ entity:“事件”,查询:'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }); }

如果CRM中存在呼叫者信息,并且此联系人已打开新事件,应用程序将打开未进展事件

如果CRM中不存在呼叫者信息,应用程序将打开一个新事件

如果呼叫者信息在CRM中存在,应用程序将打开一个包含预填充详细信息的新事件

概览

此用例详细介绍了在安装ServiceNow CRM连接器的Webex CC后,向ServiceNow表中添加额外列和创建webexcc_imp_activitysn_openframe_phone_log 的流程。

默认情况下,该表包含框系统字段和值。

您可以在WebexCC Flow设计器中创建更多业务特定变量(CAD变量),并在ServiceNow后呼叫活动日志中添加CAD变量,并将此持续到呼叫后活动表数据。

这仅为参考文档-并说明了如何对名为“客户名称”的样本CAD变量执行此操作,该变量将客户名称存储在IVR中,并将其发布到ServiceNow。

预计合作伙伴+Customer ServiceNow开发人员将配置和管理此配置,因为它是对现有连接器的自定义。

Cisco仅提供有关如何自定义和扩展连接器的技术。

截至本文中,Cisco团队已使用以下技术验证了在活动日志和活动表中添加CAD变量方面的支持:

向WebexCC IMP活动添加列

  1. 在ServiceNow开发者版本中编辑表格。

  2. 转至过滤器导航器并搜索工作室。

    选择 Webex联系中心

  3. 选择 WebexCC IMP活动

  4. 添加新列,例如,CustomerName

将列添加到电话日志

  1. 编辑电话日志表。

  2. 添加新列,例如 CustomerName

WebexCC活动转换地图

添加新列,例如,CustomerName 字段映射。

自定义列表列

根据Service Now的建议,将选择操作从“创建”更改为忽略。

配置电话日志列表

转至“包含脚本”

仅向propUtils添加一行 webexcc.u_customername=actInfo.CustomerName

示例脚本

查看此行:webexcc.u_customername=actInfo.CustomerName; 附有支持注释。

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');返回JSON.stringify(webexccprop); }, UserGetSysId:函数() { 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 :函数() { varsys_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.queuename; webexcc.wrapuptime =actInfo.CallDurationInSeconds; webexcc.ringingtime =actInfo.ActivityDate; webexcc.callobject =actInfo.CallObject; webexcc.calltype =actInfo.CallType; webexcc.calldisposition=actInfo.CallDisposition; //此行已添加-以在webexcc活动日志中捕获它。u_customername=actInfo.CustomerName;sys_id=webexcc.insert(); //事件记录上的活动; 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”””苏塞。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(); } } }返回sys_id; },类型:'propUtils' });

在Flow设计器中创建CAD变量

将CAD变量添加到桌面布局

示例

"CadName1:SnowField1,CadName2:SnowField2" CadName1是CustomerName SnowField1也可用作CustomerName,这是在"actInfo.CustomerName"上方的样本剪切的一部分。

演示屏幕截图

查看WebexCC活动表中新添加的CAD变量。

为Flow Designer创建CAD变量

事件紧急

事件影响

Service Now脚本更新

脚本的更新包括

  1. 转至过滤器导航器并搜索脚本包括

    系统用户界面 下选择脚本包含选项。

  2. 使用propUtils 筛选名称

  3. 更改脚本 字段中的UserGetSysId 方法。

    当前脚本:

    UserGetSysId:函数() { 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; },

    事件的新示例代码:

    UserGetSysId:函数() { varopened_for; var sysidlist ={}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.next()) {opened_for=用户。sys_id;//返回用户。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;公司。contact_type='phone'; inc.urgency=this.getParameter('IncUrgency'); inc.impact=this.getParameter('Impact'); inc.short_description='从'+ this.getParameter('value'); sysidlist.incsysid=inc.insert(); } } var grInt = new GlideRecordSecure('interaction'); grInt.initialize(); grInt。assigned_to= gs.getUserID(); grInt.type= 'phone'; grInt。opened_for=opened_for; var sysid=grInt.insert(); sysidlist.sysid=sysid;返回JSON.stringify(sysidlist);//sysid; },

UI页面上的方法更改
  1. 转至过滤器导航器并搜索UI页面

    系统用户界面 下选择UI页面选项。

  2. 使用名称 筛选用户界面页面,并搜索代理桌面

  3. 更改脚本字段中的屏幕弹出 功能。

    当前功能:

    // 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:“交互”,查询:'sys_id='+sysid }); 

    事件示例代码:

    //屏幕弹出功能screenpop(callerani,callSessionInfo) { var Impact=3; if(callSessionInfo.callAssociatedData.Impact != null && callSessionInfo.callAssociatedData.Impact != undefined) { var IncUrgency=3; if(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', '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:“事件”,查询:'sys_id='+sysObj.incsysid,'interaction_sys_id':sysObj.sysid }); else{ openFrameAPI.openServiceNowForm({ entity:“事件”,查询:'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }

如果呼叫者信息在CRM中存在,并且没有新事件或未进展事件,则应用程序将打开新事件

更改ServiceNow上的代码

WebexCC IMP活动 表添加新列

打开 WebexCC IMP活动

添加新列- InteractionsNumber

添加新列-事件编号

单击更新

电话日志 表添加新列

打开电话日志

添加新列- InteractionsNumber

添加新列-事件编号

WebexCC活动转换地图

从过滤器导航器打开转换地图

单击 WebexCC Activity TransformMap

添加新-用于交互号码映射

添加新-针对事件号码映射

单击更新

脚本的更改包括

  1. 转至filter navigator并搜索“脚本包含”。

    系统用户界面 下选择脚本包含

  2. 使用propUtils 筛选名称

  3. 更改方法setWebexcctable

    事件的新示例代码:

    setWebexcctable:函数() { varsys_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="";删除actInfo['interaction_sys_id'];删除actInfo['incident_sys_id']; if( interactionsysid!= null && interactionsysid != undefined){ var inte = new GlideRecordSecure('interaction'); //inte.get('sys_id', interactionsysid ); int.addQuery('sys_id', interactionsysid ); int.query(); if (int.next()) { intenum=int.number; // inte.setValue('state', 'Closed Complete'); int.work_notes='将状态更新为关闭。'; 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”””苏塞。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(); }返回sys_id; },

UI页面上的方法更改

  1. 转至过滤导航并搜索UI页面

    系统用户界面 下选择UI页面选项。

  2. 使用名称 筛选用户界面页面,并搜索代理桌面

  3. 更改脚本中的nowActivities and screenpop 功能。

    当前功能:

    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); 

    事件示例代码:

    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:“事件”,查询:'sys_id='+sysObj.incsysid,'interaction_sys_id':sysObj.sysid }); else{ openFrameAPI.openServiceNowForm({ entity:“事件”,查询:'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); } 

更新后的结果

以下自定义适用于1.0.5及以下版本。对于最新版本1.0.7及以上版本的自定义,请按照上述步骤操作。

自定义# 1 -为呼叫流用例添加自定义业务规则

为每次呼叫创建新的事件记录

对于ServiceNow中的WebexCC CRM连接器中的每次新呼叫,请创建新的事件记录。

  1. 在Filter导航器上搜索业务规则

  2. 单击“新建”。

    供参考的示例代码:

    函数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;如果(fQuery == null) fQuery = ''; var view =sysparm_view,如果(视图==零)|| view =='') view = "itil"; var userID = null; if (eid != null && eid !='') { userID = UserGetSysId("employee_number",eid); }如果(userID == null && name != null && name !='') { userID = UserGetSysId("name", name); }如果(userID == null && phone != null && phone !='') { userID = UserGetSysId("phone", phone); }如果(userID != null) { if (fQuery.length > 0) fQuery += "^"; fQuery += ""caller_id=" + userID; }如果(url == null) { url = "incident.do?sys_id=-1";如果(fQuery != null) url += "&sysparm_query=" + fQuery; }答案= url;返回url; }函数UserGetSysId(field, value) { var user = new GlideRecord("sys_user"); user.addQuery(field, value); user.query();如果(user.next())返回用户。sys_id; else return null; }

    业务规则的示例配置

  3. 启用客户端可呼叫

    事件计算机电话集成(CTI)处理 标记为正确

  4. 使用自定义CTI规则更新屏幕弹出网址" cti.do?sysparm_cti_rule=createIncident&sysparm_caller_phone="

示例

sysparm_cti_rule=name ,其中“name”是函数 的名称将被调用CTI处理 ,而不是使用默认脚本。

sys_script 标记为客户端可呼叫的条目中定义功能。

如果您必须在函数中插入、更新或删除任何GlideRecord,请呼叫单独的非客户端可呼叫功能以执行更新。

要使脚本可客户端呼叫,您必须选中显示的sys_script 条目时表单上的客户端呼呼复选框。

默认情况下,客户端可呼叫复选框不会显示。要查看,您必须使用齿轮图标和螺丝桶机制修改表单上显示的字段。

引用

自定义# 2 -在Webex Contact Center活动表中添加CAD变量

概述

本文详细介绍了向ServiceNow表添加额外列的过程,webexcc_activity 该列表是在安装ServiceNow CRM Connector的Webex CC时创建的。

默认情况下,该表包含出箱式系统字段和值。

您可以在WebexCC Flow设计器中创建更多业务特定变量(CAD变量),并在ServiceNow 呼叫后活动日志中添加这些CAD变量,并将其持续到呼叫后活动表 数据中。

  • 这仅为参考文档-并说明了如何对名为“客户名称”的样本CAD变量执行此操作,该变量将客户名称存储在IVR中,并将其发布到ServiceNow。

  • 合作伙伴+Customer ServiceNow开发人员将配置和管理此配置,因为它是对现有连接器的自定义。

  • Cisco将仅提供有关如何自定义和扩展连接器的技术。

  • 截至本文中,Cisco团队已使用以下技术验证了将CAD变量添加到活动日志和活动表中的支持。

向WebexCC活动添加列
  1. 在ServiceNow开发者版本中编辑表格。

  2. 转至 Studio > Webex联系中心

  3. 选择 WebexCC活动 表。

  4. 例如,CustomerName

  5. 选择 WebexCC活动的列表布局。

创建新脚本包括

如果您使用更新集XML,则无需此步骤-只需向propUtils添加“webexcc.u_customername=actInfo.CustomerName”一行。

示例脚本

查看带有以下内容的线条:webexcc.u_customername=actInfo.CustomerName; 附有支持注释。

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');返回JSON.stringify(webexccprop); }, setWebexcctable:函数() { varsys_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.queuename; webexcc.wrapuptime =actInfo.CallDurationInSeconds; webexcc.ringingtime =actInfo.ActivityDate; webexcc.callobject =actInfo.CallObject; webexcc.calltype =actInfo.CallType; webexcc.calldisposition=actInfo.CallDisposition; //此行已添加-以在webexcc活动日志中捕获它。u_customername=actInfo.CustomerName;sys_id=webexcc.insert(); //事件记录上的活动; 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”””苏塞。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(); } } }返回sys_id; },类型:'propUtils2' });
使用新的脚本名称编辑UI页面

在Flow设计器中创建CAD变量

将CAD变量添加到桌面布局

演示屏幕截图

查看WebexCC活动表中新添加的CAD变量。