當您 Webex Contact Center 與 ServiceNow CRM 控制台整合時,您可以從 ServiceNow 中啟動 Webex Contact Center Desktop。
先決條件
在您將 Webex Contact Center 與 ServiceNow CRM 主控台整合之前,請確保您具備下列各項:
-
存取 Webex 客服中心。
-
位於 https://admin.webex.com 的 Control Hub 和 Webex Contact Center Management Portal 的系統管理員存取權限。 Management Portal 的 URL 為您所在的地區所特有。
-
可存取桌面的代理。 桌面的 URL 是您所在地區特有的。
-
代理存取內容安全原則允許清單中新增的以下域:
-
*.service-now.com
有關如何定義允許清單的詳細資訊,請參閱文章 Webex Contact Center 的安全性設定。
-
-
一個 ServiceNow 開發人員入口網站帳戶。 若要創建帳戶,請 轉到 https://developer.servicenow.com/dev.do 處的 ServiceNow 開發人員門戶,然後按兩下 「註冊並開始構建」。
-
在 https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow 存取以下檔案:
-
ServiceNow 更新集(XML)
-
ServiceNow Contact Center 桌面排列(JSON)
-
- Webex Contact Center 支援的 ServiceNow 版本包括溫哥華、猶他、托基亞和華盛頓。 有關更多資訊,請參見 Webex Contact Center 與 ServiceNow 的整合。
請遵循以下兩種方法之一: 對於開發人員實例,我們建議按照開發人員實例指南中的步驟操作。 如果您擁有企業許可實例,請遵循企業許可實例的準則。 我們不建議將企業許可的應用與開發人員沙盒實例混合使用。 |
以下部分介紹了為開發人員實例安裝 ServiceNow 連接器的步驟。
1 |
登錄到您的 ServiceNow 開發人員門戶帳戶並 打開管理 控制台。 |
2 |
在帳戶功能表的我的 實例 區域 中,單擊 開始構建 。 |
3 |
在開發人員實例上,從視窗左上角的 篩選器導航器 欄位中,導航到 外掛程式。 |
4 |
搜索標題 為 Openframe 的 Openframe 外掛程式。 您可能需要捲動清單。 |
5 |
按兩下 安裝 以安裝 Openframe 外掛程式。 |
6 |
在“啟動外掛程式 ”對話框中,按兩下 “啟動”。 |
7 |
外掛程式啟動完成後,按兩下 外掛程式啟動 對話框中的關閉並重新載入表單 。 |
8 |
要驗證外掛程式啟動,請從視窗左上角的 過濾器導航器 欄位中導航到 OpenFrame。 |
9 |
單擊 配置 並確保 OpenFrame 外掛程式出現在 OpenFrame 配置 清單中。 |
1 |
下載 github 儲存庫上提供的最新系統更新集 XML 檔: https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow。 檔案名稱:webexcc-servicenow-update-setV(X).xml |
2 |
在 ServiceNow 實例上,從視窗左上角的「 篩選器導航器 」欄位中,導航到 更新集”。 |
3 |
按兩下從 XML 導入更新集連結。 |
4 |
單擊“ 選擇檔”,選擇“系統更新集”XML 檔,然後按兩下“上傳 ”。
更新集將顯示在 「檢索到的更新集 」清單中,並且處於 「已載入」 狀態。
|
5 |
從「 檢索到的更新集 」清單中,按兩下更新集檔名(連結)以打開更新集。 |
6 |
在視窗的右上角,按兩下 預覽更新集 以檢查更新集是否存在問題。 |
7 |
預覽完成後,按兩下 更新集預覽對話框中的關閉 。 |
8 |
按兩下 提交更新集” |
9 |
完成更新集提交後,按兩下「 更新集提交 」對話框中的「關閉 」。 |
1 |
在視窗左上角的「過濾器導航器 」欄位中,鍵入 |
2 |
在「 系統屬性 」頁上,按更新日期對屬性進行排序。 確保您可以看到以下 Webex Contact Center 屬性: |
3 |
按兩下 agentdesktop_url 以打開「 系統屬性 agentdesktop_url 」頁。 |
4 |
在值 欄位 中,根據營運區域輸入 Webex Contact Center Desktop 的 URL。 |
5 |
按一下 「更新」 以儲存變更。 |
6 |
(選用)若要更改“活動”表名稱,請根據需要編輯 webexccactivitytable 屬性。 在「系統屬性 」頁上,按一下 webexccactivitytable。 視需要變更「 值 」欄位。 |
7 |
(選用)透過以下方式新增使用者群組:
|
1 |
從過濾器導航器 欄位中,導航到 。 |
2 |
按一下新增。 |
3 |
輸入 URL 的下列屬性:
|
4 |
在 URL 欄位的 右側,點按 鎖定 按鈕,然後添加 agentdesktop.do |
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 |
從 Management Portal 導航欄中,選擇 ”。 |
5 |
按下 新建佈局 並輸入桌面佈局的詳細資訊。 |
6 |
上傳 ServiceNow 桌面配置 JSON 檔案。 |
7 |
按一下 儲存 ,以儲存組態。 您現在可以在 ServiceNow 控制台中啟動 Webex Contact Center Desktop。 |
8 |
在篩選器導航器 欄位中,導航到 。 按一下左下角的電話圖示。 |
以下部分介紹為許可的企業實例安裝 ServiceNow 連接器的步驟。
1 |
登錄到您的 ServiceNow 開發人員門戶帳戶並 打開管理 控制台。 |
2 |
在帳戶功能表的我的 實例 區域 中,單擊 開始構建 。 |
3 |
在開發人員實例上,從視窗左上角的 篩選器導航器 欄位中,導航到 外掛程式。 |
4 |
搜索標題 為 Openframe 的 Openframe 外掛程式。 您可能需要捲動清單。 |
5 |
按兩下 安裝 以安裝 Openframe 外掛程式。 |
6 |
在“啟動外掛程式 ”對話框中,按兩下 “啟動”。 |
7 |
外掛程式啟動完成後,按兩下 外掛程式啟動 對話框中的關閉並重新載入表單 。 |
8 |
要驗證外掛程式啟動,請從視窗左上角的 過濾器導航器 欄位中導航到 OpenFrame。 |
9 |
單擊 配置 並確保 OpenFrame 外掛程式出現在 OpenFrame 配置 清單中。 |
擁有企業授權的實例可以直接從 ServiceNow Store 安裝 Webex Contact Center 應用程式。
從 ServiceNow 商店下載並安裝 Webex Contact Center 軟體包: https://store.servicenow.com/sn_appstore_store.do#!/store/application/6c8e2a4edbc73410e1c75e25ca961947。 |
1 |
在視窗左上角的「過濾器導航器 」欄位中,輸入 |
2 |
在「 系統屬性 」頁上,按更新日期對屬性進行排序。 確保您可以看到以下 Webex Contact Center 屬性: |
3 |
按兩下 agentdesktop_url 以打開「 系統屬性 agentdesktop_url 」頁。 |
4 |
在值 欄位 中,根據營運區域輸入 Webex Contact Center Desktop 的 URL。 |
5 |
按一下 「更新」 以儲存變更。 |
6 |
(選用)若要更改活動表名稱,請根據需要編輯 x_caci_webexcc.webexccactivitytable 屬性。
|
7 |
(選用)透過以下方式新增使用者群組:
|
1 |
從過濾器導航器 欄位中,導航到 。 |
2 |
按一下新增。 |
3 |
輸入 URL 的下列屬性:
|
4 |
在 URL 欄位的 右側,點按鎖定 按鈕並將 x_caci_webexcc_agentdesktop.do 新增 |
5 |
(選用)選取要指定組態的使用者/代理群組。 |
6 |
按一下遞交。 URL 即會顯示為連結。 |
7 |
在篩選器導航器 欄位中,導航到 。 按一下左下方的電話圖示。 |
8 |
(選用)在「 使用者群組 」清單中,將可以存取 Webex Contact Center Desktop 的使用者群組從 「可用 」移至 「已選取」。 |
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 |
從 Management Portal 導航欄中,選擇 ”。 |
5 |
按下 新建佈局 並輸入桌面佈局的詳細資訊。 |
6 |
上傳 ServiceNow 桌面配置 JSON 檔案。 |
7 |
按一下 儲存 ,以儲存組態。 您現在可以在 ServiceNow 控制台中啟動 Webex Contact Center Desktop。 |
8 |
在篩選器導航器 欄位中,導航到 。 按一下左下角的電話圖示。 |
1 |
從篩選器導航器 欄位中,導航到 事件 >打開事件。 |
2 |
在來電者欄位上按一下滑鼠右鍵,然後按一下「 設定字典」。 |
3 |
添加逗號分隔的 您現在可以在 ServiceNow 控制台中使用 Webex Contact Center Desktop。 |
4 |
在篩選器導航器 欄位中,導航到 。 按一下左下方的電話圖示。 |
Agent Desktop 在 ServiceNow 控制台中
在進行撥出通話之前,請確保執行以下操作:
-
創建外撥入口點並設置外撥入口點策略。
-
為代理設定檔啟用撥出 ANI。
-
將撥出 ANI 設定為撥出號碼到進入點對映。
有關詳細資訊,請參閱 《設置和管理指南》Cisco Webex Contact Center 預配 一章 。
在篩選器導航器 欄位中,導航到 。
按一下左下方的電話圖示。
有關如何使用桌面的資訊,請參閱 Cisco Webex Contact Center Agent Desktop 使用者指南。
第三方儲存分區
最近更新到 Google Chrome 和 Edge 116 或更高版本可能存在的問題可能會中斷您對 Webex Contact Center 中 CRM 連接器的登錄體驗。 此問題會影響 ServiceNow CRM 控制臺上的桌面登入。
要在 Google Chrome 瀏覽器上解決此問題,請執行以下操作:
-
打開谷歌瀏覽器,然後在位址欄中輸入
chrome://flags/#third-party-storage-partitioning
。 -
禁用 實驗性第三方存儲分區 標誌。
-
關閉並重新啟動 Chrome。
-
再次登入 ServiceNow CRM 控制台中的桌面。
要在 Edge 瀏覽器上解決此問題,請執行以下操作:
-
打開瀏覽器並在位址列中輸入
edge://flags/#third-party-storage-partitioning
。 -
禁用 實驗性第三方存儲分區 標誌。
-
保存更改並重新啟動瀏覽器。
-
再次登入 ServiceNow CRM 控制台中的桌面。
要在 Firefox 瀏覽器上解決此問題,請執行以下操作:
-
打開瀏覽器並在位址列中輸入
about:config
。可能會出現警告頁面。 按兩下 接受風險並繼續 ,進入
關於:配置
頁面。 -
在 about:config
頁面頂端
的「 搜尋偏好設定名稱 」方塊中輸入network.cookie.cookieBehavior
以尋找偏好設定。 -
按兩下首選項或按下 「編輯 」圖示以編輯首選項。
-
將值更改為 0。
-
保存更改並重新啟動瀏覽器。
-
再次登入 ServiceNow CRM 控制台中的桌面。
概覽
本文介紹了為 ServiceNow CRM 連接器自定義業務規則的幾種方法。 它詳細介紹了如何根據特定於 ServiceNow 的業務規則自定義用例。
客戶必須在 ServiceNow 上自行管理這些用例。 該組態特定於 ServiceNow 而非 Webex Contact Center 軟體或專業知識。
這是説明修改業務規則的參考文檔。 ServiceNow 開發人員將創建和管理業務規則,並提供支援。 Cisco 僅提供範例文件。 |
以下部分提供了有關如何為開發人員和企業實例設置、啟用和管理操作小組件的詳細資訊。
提交操作小組件的更新集
對於獲得許可的企業實例,請從 ServiceNow 商店安裝 ServiceNow 連接器操作小組件版本 1.9。
要為開發人員實例設置操作小組件,請下載 github 儲存庫上提供的最新系統更新集 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 模組等修改記錄類型。 要更改記錄類型,請在操作小組件配置中修改 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”,“properties”:{“isWidgetDisplayEnabled”:true,“typeOfRecord”:“Create Incident”},“wrapper”:{“title”:“SNOW Actions!”,“maximizeAreaName”:“app-maximize-area”} } ] }
- 新增即時通話備註 -- 您可以在文字區域中擷取有關通話的其他資訊並整理通話。 您可以在活動記錄中看到這些作為通話筆記添加的註釋。
服務現在的代碼變更
指令檔包含變更-
移至過濾器導航器並搜尋
指令檔包括
.選擇「系統 UI」 下的 「腳本包括」。
-
過濾名稱 , 然後搜尋
propUtils
. -
變更方法
UserGetSysId
在腳本 中。目前:
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(); 傳回 sysid; },
事件的新範例代碼:
UserGetSysId:function(){ var opened_for; //Incident related changes 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='Call Received from '+ 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 頁面
。選擇 「系統 UI」下的 「UI」 頁。
-
過濾名稱 , 然後搜尋
代理桌面
. -
變更
螢幕彈出
用戶端腳本 中的函數。目前功能:
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 });
事件的範例代碼:
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(); // 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' }); } }
如果 CRM 中存在呼叫者資訊,並且此聯繫人已打開新事件,則應用程式將打開進行中事件
如果 CRM 中不存在呼叫者資訊,則應用程式將打開一個新事件
如果 CRM 中存在呼叫者資訊,則應用程式將打開一個包含預填充詳細資訊的新事件
概覽
此用例詳細介紹了向 ServiceNow 表新增額外欄的過程 - webexcc_imp_activity 在安裝 Webex CC for ServiceNow CRM 連接器時建立 sn_openframe_phone_log。
默認情況下,該表包含某些現成的系統欄位和值。
您可以在 WebexCC Flow 設計器中創建更多業務特定變數(CAD 變數),並將 CAD 變數新增到 ServiceNow 通話後活動日誌中,並將其保存到通話後活動表資料中。
這隻是一個參考文檔 - 並展示了如何對名為「客戶名稱」的示例 CAD 變數執行此操作,該變數將客戶名稱存儲在 IVR 中並將其發佈到 ServiceNow。 預計合作夥伴 + 客戶 ServiceNow 開發人員將配置和管理此配置,因為它是對現有連接器的自定義。 Cisco 僅提供有關如何自訂和擴展連接器的技術。 截至本文,Cisco 團隊已驗證支援使用下述技術將 CAD 變數添加到活動日誌和活動表: |
新增欄至 WebexCC IMP 活動
-
在 ServiceNow 的開發人員版本中編輯該表。
-
轉到過濾器導航器並搜索工作室。
選取
Webex Contact Center
或
-
選取
WebexCC IMP 活動
目錄 -
新增一欄例如,
客戶名稱
新增欄到電話紀錄
-
編輯電話日誌表。
-
新增一欄例如,
客戶名稱
.
WebexCC 活動轉換對應
新增一欄例如, 客戶名稱
欄位映射。
個人化清單欄
按照「服務立即」的建議,將“選擇”操作從“創建”更改為“忽略”。
設定電話紀錄清單
移至文稿包含
僅新增一行 |
範例文稿
請參閱以下行: 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'); 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;//返回 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();返回 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;添加了此行 - 以在活動日誌中捕獲它 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',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(); } } }返回 sys_id;},type:'propUtils' });
在 Flow 設計器中建立 CAD 變數
將 CAD 變數新增到桌面佈局
範例
“CadName1:SnowField1,CadName2:SnowField2”CadName1 是 CustomerName SnowField1 也用作 CustomerName,這是“actInfo.CustomerName”上方的示例 scirpt show 的一部分。
簡報截圖
在 WebexCC 活動表格中檢視新新增的 CAD 變數。
為 Flow Designer 建立 CAD 變數
事件緊急性事件影響
立即服務指令碼更新
對文稿的更新包括
-
移至篩選器導航器並搜尋
文稿包含
選擇「系統 UI」 下的 「腳本包含」選項。
-
使用 propUtils 過濾
名稱
。 -
變更方法
UserGetSysId
在「腳本 」 欄位中。目前文稿:
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(); 傳回 sysid; },
事件的新範例代碼:
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='phone'; inc.urgency=this.getParameter('IncUrgency'); inc.impact=this.getParameter('Impact'); inc.short_description='Call Received From '+ 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 頁面
。選擇「系統 UI」下的 「 UI 頁面 」 選項。
-
使用名稱過濾 UI 頁面 並搜尋 代理桌面 。
-
變更
螢幕彈出
指令檔欄位中的函數。目前功能:
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 }); }
事件的範例代碼:
螢幕彈出功能 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','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',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));}
如果 CRM 中存在呼叫者資訊,並且沒有新的或正在進行的事件,則應用程式將打開一個新事件
變更 ServiceNow 上的代碼
新增欄至 WebexCC IMP 活動
目錄
開啟 WebexCC IMP 活動目錄 新增欄 - 互動次數 新增欄位 - 事件編號
點擊更新 。
新增欄至 電話記錄
目錄
開啟 電話記錄
目錄
WebexCC 活動轉換對應
開啟 轉換地圖
從過濾器導航器
點擊 WebexCC 活動轉換圖
按一下更新。
對文稿的變更包括
-
轉到過濾器導航器並搜索「腳本包含」。
選擇「系統 UI」 下的 「腳本包括」。
-
過濾 名稱 以
propUtils
. -
變更方法
設定網路可執行
.事件的新範例代碼:
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()){ //Activity on Incident record; //var actInfoString =this.getParameter('actInfo'); var incsysid=actInfo.incident_sys_id; var interactionsysid=actInfo.interaction_sys_id; var incnum=“”; var intenum=“”; delete 行為資訊['interaction_sys_id'];刪除行為資訊['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('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=英寸;sys_id=webexcc.insert();} 傳回 sys_id;},
UI 頁面上的方法變更
-
移至過濾器導航器並搜尋
UI 頁面
選擇「系統 UI」下的 「 UI 頁面 」 選項。
-
使用 名稱 過濾 UI 頁面並搜尋
代理桌面
。 -
變更
Now 活動與螢幕彈出
腳本中的函數。目前功能:
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:'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));}
更新後的結果
以下自定義適用於版本 1.0.5 及更低版本。 對於較新版本 1.0.7 及更高版本的自定義,請執行上述步驟。 |
自訂 # 1 - 為呼叫流用例新增自訂業務規則
為每個呼叫建立新的事件記錄每當有新通話進入 ServiceNow 中的 WebexCC CRM 連接器時,皆需建立新的事件記錄。
在篩選器導航器上搜尋業務規則
點撃新增。
範例代碼供參考:
函數 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”,姓名);} if(userID == null && phone!= null && phone!= ''){ userID = UserGetSysId(“phone”,phone); } if(userID!= null){ if(fQuery.length > 0)fQuery +=“ˆ”; fQuery +=“caller_id=”+ userID; } if(url == null){ url =“incident.do?sys_id=-1”; if(fQuery!= null)url +=“&sysparm_query=”+ fQuery; } 答案 = url;返回網址;} 函數 UserGetSysId(field,value){ var user = new GlideRecord(“sys_user”); user.addQuery(field,value); user.query(); if(user.next())傳回 user.sys_id; else return null; }
商務規則的範例設定
開啟用戶端可呼叫
電腦電話整合(CTI)事件 處理標記為 True。
使用自訂 CTI 規則 更新螢幕彈出 url“ cti.do?sysparm_cti_rule=createIncident&sysparm_caller_phone=”
sysparm_cti_rule=名稱 ,其中“name”是要調用 的函數 名稱 CTI 處理 而不是使用預設腳本。
在標記為 用戶端可調用 的 sys_script 條目中定義函數。
如果必須在函數中插入、更新或刪除任何 GlideRecords,請調用單獨的非用戶端可調用函數來執行更新。
若要使腳本用戶端可調用,必須選中顯示 sys_script 條目時顯示的表單上的用戶端可調用複選框。 默認情況下,用戶端可調用複選框不顯示。 若要查看,必須使用齒輪圖示和雪泥桶機制修改窗體上顯示的欄位。 |
自訂 # 2 - Webex 聯絡中心活動表中新增 CAD 變數
概覽本文詳細介紹了向 ServiceNow 表添加其他列的過程 - webexcc_activity 在為 ServiceNow CRM 連接器安裝 Webex CC 時創建。
默認情況下,該表包含現成的系統欄位和值。
您可以在 WebexCC Flow 設計器中創建更多特定於業務的變數(CAD 變數),並將這些 CAD 變數新增到 ServiceNow 通話後活動日誌中,並將其保存到 通話後活動表 資料中。
|
在 ServiceNow 的開發人員版本中編輯該表。
前往
。選擇 「WebexCC 活動 」表格。
例如, CustomerName。
選擇 WebexCC 活動 的清單佈局。
如果您使用的是更新集 XML,則不需要此步驟 - 只需將“webexcc.u_customername=actInfo.CustomerName”添加到 propUtils。 |
範例文稿
請參閱以下行: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'); 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; // 添加了此行 - 以在活動日誌 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',suser.sys_id); inc.orderByDesc('sys_created_on'); inc.query(); if(inc.next()){ var jsonPretty = JSON.stringify(JSON.parse(act string),null,2); inc.comments =jsonPretty; inc.update(); } } } }返回 sys_id;},type:'propUtils2' });
使用新文稿名稱編輯 UI 頁面在 Flow 設計器中建立 CAD 變數
將 CAD 變數新增到桌面佈局
簡報截圖
在 WebexCC 活動表格中檢視新新增的 CAD 變數。