前提条件

Webex Contact Center を ServiceNow CRM コンソールと統合する前に、次のものがあることを確認してください。

以下の 2 つの方法のいずれかに従います。

開発者インスタンスについては、開発者インスタンス ガイドの手順に従うことをおすすめします。

エンタープライズ ライセンスのインスタンスを所有している場合は、エンタープライズ ライセンス インスタンスのガイドラインに従ってください。

エンタープライズ ライセンス アプリと開発者サンドボックス インスタンスを混在させることはお勧めしません。

以下のセクションでは、開発者インスタンス用の ServiceNow コネクタをインストールする手順について説明します。

1

ServiceNow 開発者ポータルアカウントにログインして [ 管理 ] コンソールを開きます。

2

[アカウント] メニューの [マイインスタンス] 領域で、[構築の開始] をクリックします。

3

開発者インスタンスで、ウィンドウの左上にある フィルターナビゲーター フィールドから プラグインに移動します。

4

Openframeというタイトルの Openframe プラグインを検索します。 リストのスクロールが必要な場合があります。

5

[インストール] をクリックして、OpenFrame プラグインをインストールします。

6

[プラグインの有効化] ダイアログボックスで、[有効化] をクリックします。

7

プラグインのアクティベーションが完了したら、[閉じる &] をクリックします。 [フォーム の再読み込み] を [ プラグインのアクティベーション ] ダイアログボックスで行います。

8

プラグインのアクティベーションを確認するには、ウィンドウの左上部にある [ナビゲーターのフィルタ処理] フィールドで、[OpenFrame] に移動します。

9

[設定] をクリックして、OpenFrame プラグインが [OpenFrame設定] リストに表示されていることを確認します。

1

Github リポジトリの最新のシステム更新セット XML ファイルを次の場所にダウンロードします: https://desktop.wxcc-jp1.cisco.com

ファイル名: webexc-servicenow-update-setV(X).xml

2

ServiceNow インスタンスで、ウィンドウの左上にある フィルターナビゲーター フィールドから [システム更新セット] </a36] に移動します。>> 確定するためにセットを更新します。

3

[XML から更新セットをインポート] リンクをクリックします。

4

[ファイルの選択]をクリックし、システム更新セット XML ファイルを選択して、[ アップロード] をクリックします。

更新セットが [取得した更新セット] リストに表示され、[ロード済み] 状態に表示されます。
5

取得した更新セット リストから、[更新セットファイル名] (リンク) をクリックして更新セットを開きます。

6

ウィンドウの右上部にある [プレビュー更新セット] をクリックして、問題の更新セットを確認します。

7

プレビューが完了したら、[更新セットのプレビュー] ダイアログボックスで [ 閉じる ] をクリックします。

8

[更新セットをコミットする] をクリックします。

9

更新セットの確定が完了したら、[ 更新セット確定 ] ダイアログボックスで [ 閉じる ] をクリックします。

1

ウィンドウ左上の フィルタナビゲータの フィールドに sys_properties.list と入力して Enter を押してください。

2

[システムプロパティ] ページで、更新された日付でプロパティを並べ替えます。 次の Webex Contact Center のプロパティが表示されていることを確認してください。

3

[agentdesktop_url] をクリックして、[システムプロパティの agentdesktop_url] ページを開きます。

4

[ ] フィールドに、運用地域に応じて Webex コンタクトセンターデスクトップの URL を入力します。

5

[更新(Update)] をクリックして変更を保存します。

6

(オプション)アクティビティテーブル名を変更するには、必要に応じて webexccactivitytable のプロパティを編集します。

システムプロパティ ページで、 webexcactivitytable をクリックします。

必要に応じて フィールドを変更します。

7

(オプション) 以下の方法でユーザグループを追加します。

  1. ウィンドウ左上にある フィルタナビゲータの フィールドで、[システムセキュリティ] の [グループ] に移動します。

  2. 新しいユーザグループを作成するか、既存のグループを使用します。

  3. [Edit] をクリックします。

  4. [ sn_openframe_user ] を [ コレクション ] で検索し、自分のユーザグループに移動します。

  5. [保存] をクリックします。

  6. ユーザをグループメンバーとして追加します。

1

[ナビゲーターのフィルタ処理] フィールドで、[OpenFrame] > [設定] に移動します。

2

[新規] をクリックします。

3

URL の次のプロパティを入力します:

  • 名前: Webex コンタクトセンターのデスクトップ

  • 役職: Webex コンタクトセンター

  • : 550 (推奨)

  • 高さ: 600 (推奨)

4

URL フィールドの右側にある ロック ボタンをクリックして追加 agentdesktop.do を URL として入力します。 (この手順を実行して、UI ページの構成を指定します)

5

(オプション) [ユーザ/エージェントグループ] を選択して構成を指定します。

6

[送信(Submit)] をクリックします。 URL がリンクとして表示されます。

7

OpenFrame 電話を使用する前に、ServiceNow カスタム デスクトップ レイアウト JSON ファイルを Webex コンタクト センター管理ポータル にアップロードしていることを確認してください。 詳細については、 Webex コンタクトセンターでの ServiceNow デスクトップレイアウトのセットアップを参照してください。

1

https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow から ServiceNow のデスクトップレイアウトをダウンロードしてください。

2

必要に応じて、デスクトップレイアウトファイルのプロパティを更新します。

3

Webex Contact Center 管理ポータルへ移動します。

4

Management Portal のナビゲーションバーから、 [プロビジョニング] > デスクトップレイアウトを選択します。

5

[新しいレイアウト] をクリックし、デスクトップレイアウトの詳細を入力します。

6

ServiceNow デスクトップレイアウトの場合は、次のファイルをアップロードします。

7

[Save] をクリックして、設定を保存します。

ServiceNow コンソール内で Webex コンタクト センター デスクトップを開始できるようになりました。

8

フィルターナビゲーター フィールドから サービスオペレーションワークスペースに移動します。

ServiceNow ホームページには、ServiceNow と統合された Webex コンタクトセンター Agent Desktop が表示されます。

以下のセクションでは、ライセンスされたエンタープライズ インスタンスに ServiceNow コネクタをインストールする手順について説明します。

1

ServiceNow 開発者ポータルアカウントにログインして [ 管理 ] コンソールを開きます。

2

[アカウント] メニューの [マイインスタンス] 領域で、[構築の開始] をクリックします。

3

開発者インスタンスで、ウィンドウの左上にある フィルタナビゲータ フィールドから [プラグイン] に移動します

4

Openframeというタイトルの Openframe プラグインを検索します。 リストのスクロールが必要な場合があります。

5

[インストール] をクリックして、OpenFrame プラグインをインストールします。

6

[プラグインの有効化] ダイアログボックスで、[有効化] をクリックします。

7

プラグインのアクティベーションが完了したら、 [閉じる &] をクリックします。[フォーム の再読み込み] ([ プラグインのアクティベーション ] ダイアログボックス内) を使用してください。

8

プラグインのアクティベーションを確認するには、ウィンドウの左上部にある [ナビゲーターのフィルタ処理] フィールドで、[OpenFrame] に移動します。

9

[設定] をクリックして、OpenFrame プラグインが [OpenFrame設定] リストに表示されていることを確認します。

1

ウィンドウの左上部にある [ナビゲーターのフィルタ処理] フィールドに、sys_properties.list と入力します。

2

[システムプロパティ] ページで、更新された日付でプロパティを並べ替えます。 次の Webex Contact Center のプロパティが表示されていることを確認してください。

3

[agentdesktop_url] をクリックして、[システムプロパティの agentdesktop_url] ページを開きます。

4

[ ] フィールドに、運用地域に応じて Webex コンタクトセンターデスクトップの URL を入力します。

5

[更新(Update)] をクリックして変更を保存します。

6

(オプション) アクティビティ テーブル名を変更するには、 x_caci_webEXc.webexcactivitytable プロパティを必要に応じて編集します。

  1. [システムプロパティ] ページで、 x_caci_webEXc.webexcactivitytable をクリックします。

  2. 必要に応じて フィールドを変更します。

7

(オプション) 以下の方法でユーザグループを追加します。

  1. ウィンドウ左上の フィルタナビゲータ フィールドで [グループ] に移動します。a31>システムセキュリティ

  2. [編集] をクリックして次の役割を追加します:

    • sn_openframe_user

    • x_caci_webexc.エージェント

    • Agent_workspace_user

    • x_caci_webexc.webexc_imp_activity_user

    • x_caci_webexc.webex_contact_center

1

[ナビゲーターのフィルタ処理] フィールドで、[OpenFrame] > [設定] に移動します。

2

[新規] をクリックします。

3

URL の次のプロパティを入力します:

  • 名前: Webex コンタクトセンターのデスクトップ

  • 役職: Webex コンタクトセンター

  • : 550 (推奨)

  • 高さ : 600 (推奨)

4

[ URL ] フィールドの右側にある [ ロック ] ボタンをクリックして x_caci_webexc_gentdesktop を追加します .do を URL として入力します。 (この手順を実行して、UI ページの構成を指定します)

5

(オプション) [ユーザ/エージェントグループ] を選択して構成を指定します。

6

[送信(Submit)] をクリックします。 URL がリンクとして表示されます。

7

フィルターナビゲータの フィールドから サービスオペレーションワークスペースに移動します。

ServiceNow ホームページには、ServiceNow と統合された Webex コンタクトセンター Agent Desktop が表示されます。

8

(オプション) [ ユーザグループ ] リストで、Webex コンタクトセンターデスクトップにアクセスできるユーザグループを、[利用可能] から から移動します 。a56>から までまで選択済みです。

9

OpenFrame 電話を使用する前に、ServiceNow カスタム デスクトップ レイアウト JSON ファイルを Webex コンタクト センター管理ポータル にアップロードしていることを確認してください。 詳細については、 Webex コンタクトセンターで ServiceNow デスクトップレイアウトをセットアップするを参照してください。

1

https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow から ServiceNow のデスクトップレイアウトをダウンロードしてください。

2

必要に応じて、デスクトップレイアウトファイルのプロパティを更新します。

3

Webex Contact Center 管理ポータルへ移動します。

4

Management Portal のナビゲーションバーから、 [プロビジョニング] > デスクトップレイアウトを選択します。

5

[新しいレイアウト] をクリックし、デスクトップレイアウトの詳細を入力します。

6

ServiceNow デスクトップレイアウトの場合は、次のファイルをアップロードします。

7

[Save] をクリックして、設定を保存します。

ServiceNow コンソール内で Webex コンタクト センター デスクトップを開始できるようになりました。

8

フィルターナビゲーターの フィールドから サービスオペレーションワークスペースに移動します。

ServiceNow ホームページには、ServiceNow と統合された Webex コンタクトセンター Agent Desktop が表示されます。

1

フィルターナビゲータの フィールドから インシデント > に移動します。未解決の問題。

2

発信者フィールドで右クリックして、[ 辞書の設定] をクリックします。

3

カンマ区切りの属性を追加 "ref_contributions=show_phone,.

ServiceNow コンソール内で Webex コンタクト センター デスクトップの使用を開始できるようになりました。

4

フィルターナビゲーター フィールドから サービスオペレーションワークスペースに移動します。

ServiceNow のホームページには、ServiceNow と統合された Webex コンタクトセンター Agent Desktop が表示されます。

ServiceNow コンソールで Agent Desktop

発信する前に、次の操作を実行してください。

  • アウトダイヤル エントリポイントを作成し、アウトダイヤルのエントリポイント戦略を設定する。

  • エージェントプロファイルのアウトダイヤル ANI を有効にする。

  • ダイヤル番号からエントリポイントへのマッピングにアウトダイヤル ANI を設定します。

詳細については、『Cisco Webex Contact Center セットアップおよび管理ガイド』の「プロビジョニング」の章を参照してください。

フィルターナビゲータの フィールドから サービスオペレーションワークスペースに移動します。

ServiceNow のホームページには、ServiceNow と統合された Webex コンタクトセンター Agent Desktop と表示されています。

デスクトップの使用方法に関する情報は、Webex コンタクトセンターヘルプの エージェント タブを参照してください。

概要

この記事では、ServiceNow CRM コネクタのビジネス ルールをカスタマイズするいくつかの方法について説明します。 ServiceNow に固有のビジネス ルールに基づいて、ユース ケースをカスタマイズする方法について詳しく説明します。

顧客は ServiceNow でこれらの使用事例を自己管理する必要があります。 設定は ServiceNow に固有であり、Webex コンタクト センターのソフトウェアや専門知識ではありません。

これはビジネスルールの変更を支援するための参照ドキュメントです。 ServiceNow の開発者は、ビジネス ルールを作成および管理し、サポートを提供します。

Cisco はサンプル ドキュメントのみを提供します。

以下のセクションでは、開発者およびエンタープライズ インスタンスのアクション ウィジェットをセットアップ、有効化、および管理する方法の詳細について説明します。

アクション ウィジェットの更新セットを確定

ライセンスを受けたエンタープライズ インスタンスの場合、 ServiceNow ストアから最新の Webex コンタクトセンター アプリをインストールしてください

開発者インスタンスにアクション ウィジェットをセットアップするには、github リポジトリの https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow/ActionsWidget で利用可能な最新のシステム更新セット XML ファイルをダウンロードします。 ファイル名は webexc-servicenow-update-setv7-1-ActionsWidget.xml です。 アクション ウィジェットの更新セットを確定するには、「更新セットを確定する 」のステップ 2 9 を参照してください

アクション ウィジェットを有効にする

isWidgetDisplayEnabled プロパティを使用してアクションウィジェットを有効にします。 カスタムデスクトップレイアウトのヘッドレスセクションにあるこのプロパティの値を変更してはいけません。 カスタム デスクトップ レイアウトのヘッドレス セクションでは、このプロパティは常に false に設定されます。 カスタム デスクトップ レイアウトのパネル セクションでのみ、プロパティの値を更新する必要があります。

カスタム デスクトップ レイアウトで [アクション] ウィジェットを有効にすると、次のアクションを実行できます。

ServiceNow でのコードの変更

台本に変更を加える
  1. フィルター ナビゲーターに移動して、 スクリプトのインクルード.

    システム UIインクルードスクリプトを選択します。

  2. [ 名前 ] をフィルタリングして次の検索を行います: プロパティ ユーティリティ.

  3. 方法の変更 UserGetSysId スクリプト で使用することができます。

    キュレント:

    UserGetSysId: Function () { varopened_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if (user.ext())opened_for=user.sys_id; var grInt = new GlideRecord('interaction'); grInt.Initialize(); grInt.aligned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for=opened_for; var sysid=grInt.挿入();システム ID を返します。},

    インシデント用の新しいサンプルコード:

    UserGetSysId: Function () { varopened_for; //インシデント関連の変更 var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.ext()) {opened_for=user.sys_id;//return user.sys_id; var inc = new GlideRecordSecure(' Incident'); inc.addQuery('caller_id', open_for); inc.addQuery('state','IN','1,2'); inc. orderByDesc('sys_created_on'); inc.query();もし ( Inc.ext()) { sysidlist. Incsysid= Inc.getUniqueValue(); }else{ inc.Initialize(); inc.caller_id=opened_for; inc.contact_type='phone'; inc. short_description='呼び出し元 '+ this.getParameter('value'); sysidlist. Incsysid= Inc.挿入(); var grInt = new GlideRecordSecure('interaction'); grInt.Initialize(); grInt.aligned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for=opened_for; var sysid=grInt.挿入(); sysidlist.sysid=sysid; JSON.stringify(sysidlist); を返します。},

UI ページでのメソッドの変更
  1. フィルタナビゲータに移動して、 UI ページを検索します。

    [システム UI] から UI ページ を選択します

  2. 名前 をフィルタリングして次のように検索します: エージェントデスクトップ.

  3. スクリーンポップ クライアントスクリプト の関数です。

    現在の機能:

    // スクリーンポップ関数 screenpop(callerani,callSessionInfo) {if(callerani===callSessionInfo.phoneNumber){ callerani=s 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', クエリ: 'sys_id='+sysid });

    インシデントのサンプルコード:

    // スクリーンポップ関数 screenpop(callerani,callSessionInfo) {if(callerani===callSessionInfo.phoneNumber){ callerani=s 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: ' Incident', クエリ: '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 テーブルに余分な列を追加するプロセス (webexc_imp_activity) と、ServiceNow CRM Connector の Webex CC のインストール時に sn_openframe_phone_log を作成するプロセスについて詳しく説明します。

既定では、テーブルにはすぐに使用できる特定のシステムフィールドと値が含まれています。

WebexCC Flow デザイナー内でよりビジネス固有の変数 (CAD 変数) を作成し、ServiceNow 通話後のアクティビティ ログに CAD 変数を追加することができます。これを通話後のアクティビティ テーブル データに永続化することもできます。

これは参照ドキュメントのみです。IVR 内部に顧客名を保存し、これを ServiceNow に投稿する Customer Name というサンプル CAD 変数に対してこれを行う方法を示します。

この構成は既存のコネクタをカスタマイズするものであるため、パートナーと顧客の ServiceNow 開発者が構成および管理を行う必要があります。

Cisco は、コネクタをカスタマイズおよび拡張する方法に関するテクニックのみを提供します。

この記事の時点で、Cisco チームは、以下で説明する手法を使用して、アクティビティ ログとアクティビティ テーブルに CAD 変数を追加できることを確認しました。

WebexCC IMP 活動に列を追加する

  1. 開発者バージョンの ServiceNow でテーブルを編集します。

  2. フィルター ナビゲーターに移動して、stodo を検索します。

    選択 Webex Contact Center

    または

  3. を選択します。 WebexCC IMP 活動

  4. 新しい列を追加します。例: CustomerName さん

電話ログに列を追加する

  1. 電話ログテーブルを編集します。

  2. 新しい列を追加します。例: CustomerName さん.

WebexCC アクティビティ変換マップ

新しい列を追加します。例: CustomerName さん フィールド マッピング。

リストの列をパーソナライズする

Service Now が推奨しているように、選択アクションを作成から無視に変更します。

電話ログ リストの設定

スクリプトインクルードに移動

1 行だけ追加してください webexc.u_customername=actInfo.CustomerName を PropUtils に追加します。

サンプルスクリプト

webexc.u_customername=actInfo.CustomerName; とサポートのコメントを参照してください。

varPropUtils = Class.create(); PropUtils.prototype = Object.ex 頭出しオブジェクト(global.AbstractAjaxProcessor,{ getWebExcelProp: Function () { var webEXCPROPOP = {}; webexcProp.instanceurl= 'https://'+gs.getProperty('instance_name')+'.service-now.com/'; webEXCCPROP.url=gs.getProperties('x_caci_webexc.gent)//desktop_url_url_url_url_index.php?id=10000000000) / webexcprop.popupurl=gs.getProperties('x_caci_webexc.screenpop_url'); return JSON.stringify(webEXcProp); }, UserGetSysId: Function () { varopened_for; var user = new GlideRecord("sys_user"); user.addQuery( this.get パラメータ('field'),this.get パラメータ('value')); user.query();if (user.ext())opened_for=user.sys_id;//return user.sys_id;//else / / return null; var grInt = new GlideRecord('interaction'); grInt.Initialize(); grInt.aligned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for=opened_for; var sysid=grInt. varactInfo = JSON.parse(this.getParameter('actInfo')); var webexc = new GlideRecordSecure(gs.getProperties('x_caci_webexc.) webexcactivitytable')); webExcel.addQue ry("callobject",actInfo.CallObject); Webexc.query(); if(!webexc.next()) { webexc.ani =actInfo.ani; webexc.dnis =actInfo.dnis; webexc.queuename =actInfo.queuename; webexpc.wrapuptime =actInfo.wrapuptime; webexc.callduration =actInfo.CallDurationInSeconds; webexc.ringingtime =actInfo.ringingtime; webExcelc.activitydate =actInfo.ActivityDate; webexc.callobject =actInfo.CallObject; webexpc.calltype =actInfo.CallType; webexc.calldis ポジション=actInfo.CallDis ポジション; // アクティビティ ログに記録するために、この行が追加されます webexc.u_customername=actInfo.CustomerName; sys_id=webexc.挿入(); //インシデント記録のアクティビティ; varactInfoString =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();の場合 (Inc.Next()) { var JSONPretty = JSON.stringify(JSON.parse(actInfoString),null,2); inc.comments =JSONPretty; inc.update(); sys_id; を返します。次を入力します: 'PropUtils' });

フロー デザイナーで CAD 変数を作成する

CAD 変数をデスクトップレイアウトに追加します。

"CadName1:SnowField1,CadName2:SnowField2" CadName1 は CustomerName です。SnowField1 は、CustomerName としても使用されています。これは、"actInfo.CustomerName"の上のサンプルシナリオの一部です。

デモのスクリーンショット

WebexCC アクティビティ表に新しく追加された CAD 変数を表示します。

フロー デザイナーの CAD 変数を作成する

インシデントの緊急度

インシデントの影響

[サービスの開始] スクリプトの更新

スクリプト インクルードの更新

  1. フィルタナビゲータに移動して、「 スクリプトの追加」を検索します

    システム UI スクリプトインクルード オプションを選択します。

  2. PropUtils名前をフィルタリングします。

  3. 方法の変更 UserGetSysId スクリプト フィールドに入力してください。

    現在のスクリプト:

    UserGetSysId: Function () { varopened_for; var user = new GlideRecord("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if (user.ext())opened_for=user.sys_id; var grInt = new GlideRecord('interaction'); grInt.Initialize(); grInt.aligned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for=opened_for; var sysid=grInt.挿入();システム ID を返します。},

    インシデント用の新しいサンプルコード:

    UserGetSysId: Function () { varopened_for; var sysidlist = {}; var user = new GlideRecordSecure("sys_user"); user.addQuery(this.getParameter('field'),this.getParameter('value')); user.query(); if(user.ext()) {opened_for=user.sys_id;//return user.sys_id; var inc = new GlideRecordSecure(' Incident'); inc.addQuery('caller_id', open_for); inc.addQuery('state','IN','1,2'); inc. orderByDesc('sys_created_on'); inc.query();もし ( Inc.ext()) { 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='呼び出し元 '+ this.getParameter('value'); sysidlist. Incsysid= Inc.挿入(); var grInt = new GlideRecordSecure('interaction'); grInt.Initialize(); grInt.aligned_to= gs.getUserID(); grInt.type= 'phone'; grInt.opened_for=opened_for; var sysid=grInt.挿入(); sysidlist.sysid=sysid; Return JSON.stringify(sysidlist);//sysid; },

UI ページのメソッド変更
  1. フィルター ナビゲータに移動して、[ UI ページ] を検索します。

    [システム UI ] の [ UI ページ] オプションを選択します。

  2. フィルタリングする UI ページ名前 に移動し、次を検索します エージェントデスクトップ

  3. スクリーンポップ スクリプトフィールドに関数を入力します。

    現在の機能:

    // スクリーンポップ関数 screenpop(callerani,callSessionInfo) {if(callerani===callSessionInfo.phoneNumber){ callerani=s 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', クエリ: 'sys_id='+sysid }); }

    インシデントのサンプルコード:

    // スクリーンポップ関数 screenpop(callerani,callSessionInfo) { var Imfect=3; if(callSessionInfo.callAssociatedData.Impact != null && callSessionInfo.callAssociatedData.Impact != un 定義) { Impat=callSessionInfo.callAssociatedData.Impact.value;変数 IncUrgency=3; if(callSessionInfo.callAssociatedData.Urgency != null && callSessionInfo.callAssociatedData.Urgency != un 定義) { IncUrgency=callSessionInfo.callAssociatedData.Urgency.value; }if(callerani===callSessionInfo.phoneNumber){ callerani=s 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', クエリ: 'sys_id='+sysObj. Incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: ' Incident', クエリ: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); }

発信者情報が CRM に存在し、新規または進行中のインシデントがない場合、アプリケーションは新しいインシデントを開きます。

ServiceNow のコードを変更する

新しい列を WebexCC IMP 活動

[ WebexCC IMP 活動

新しい列の追加 - InteractionsNumber

新しい列を追加する - IncidentNumber

次をクリックします。 更新

新しい列を 電話ログ

[ 電話ログ

新しい列の追加 - InteractionsNumber

新しい列を追加する - IncidentNumber

WebexCC アクティビティ変換マップ

Open 変換マップ フィルター ナビゲーターから

次をクリックします。 WebexCC アクティビティのトランスフォームマップ

新規追加 - インタラクション番号マップ

新規追加 - インシデント番号マップ

[更新(Update)] をクリックします。

スクリプト インクルードの変更

  1. フィルター ナビゲーターに移動し、「script インクルード」を検索します。

    システム UI で インクルードスクリプト を選択します

  2. 次の条件で 名前 をフィルタリングする プロパティ ユーティリティ.

  3. 方法の変更 setWebexcctable.

    Incident の新しいサンプルコード:

    setWebExcelctable: Function () { var sys_id=0; varactInfo = JSON.parse(this.getParameter('actInfo')); var webexc = new GlideRecordSecure(gs.getProperties('webexcactivitytable')); webexc.addQuery("u_callobject",actInfo.CallObject); Webexc.query(); if(!webEXC.Next()) { //インシデント記録のアクティビティ; //varactInfoString =this.getParameter('actInfo'); var incsysid=actInfo. Incident_sys_id; var interactivesysid=actInfo.interaction_sys_id; var incnum=""; var intenum=""; actInfo['interaction_sys_id']; を削除します。actInfo[' Incident_sys_id'] を削除します。if(interactionsysid!= null &&interactionsysid!= un 定義){ var inte = new GlideRecordSecure('interaction'); //inte.get('sys_id', interactivesysid ); inte.addQuery('sys_id', interactivesysid ); inte.query(); if (inte.next()) { intenum=inte.number; // inte.setValue('state','閉じる完了'); inte.work_notes='状態を終了済みに更新します。'; inte.update(); if( incsysid!= null && incsysid != un 定義){ var inci = new GlideRecordSecure(' Incident'); inci.addQuery('sys_id', incsysid ); inci.query();もし (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();もし ( Inc.ext()) { var JSONPretty = JSON.stringify(actInfo,null,2); inc.comments =JSONPretty; inc.update(); } } } webexpc.u_ani =actInfo.ani; webexc.u_dnis =actInfo.dnis; webexc.u_queuename =actInfo.queuename; webexpc.u_wrapuptime =actInfo.wrapuptime; webexc.u_callduration =actInfo.CallDurationInSeconds; webexpc.u_ringingtime =actInfo.ringingtime; webexc.u_activitydate =actInfo.ActivityDate; webexc.u_callobject =actInfo.CallObject; webexc.u_calltype =actInfo.CallType; webexc.u_calldis ポジション=actInfo.CallDis ポジション; webexpc.u_ Incidentnumber= Incnum; webexc.u_interactionsnumber=期間; sys_id=webexc.挿入(); sys_id を返します。},

UI ページでのメソッドの変更

  1. フィルター ナビゲーターに移動して、 UI ページ

    [システム UI] オプションを選択し、 UI ページ オプションを選択します。

  2. UI ページを 名前 でフィルタリングし、 gentdesktop を検索します。

  3. 今すぐアクティビティとスクリーンポップ スクリプトで機能します。

    現在の機能:

    FunctionnowActivities(actInfo, ani) { var gaout = new GlideAjax('propUtils'); gaout.addParam('sysparm_name', 'setWebExcelctable'); gaout.addParam('actInfo', JSON.stringify(actInfo)); gaout.addParam('ani', StripPrefixes(ani)); gaout.getXML(SetCCsysId); }

    インシデントのサンプルコード:

    FunctionnowActivities(actInfo, ani) { var sysObjstr = window.localStorage.getItem("screenpopinteraction"); if(sysObjstr != null && sysObjstr != un 定義) { 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', 'setWebExcelctable'); gaout.addParam('actInfo', JSON.stringify(actInfo)); gaout.addParam('ani', StripPrefixes(ani)); gaout.getXML(SetCCsysId); Functionscreenpop(callerani,callSessionInfo) {if(callerani===callSessionInfo.phoneNumber){ callerani=s 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', クエリ: 'sys_id='+sysObj. Incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ entity: ' Incident', クエリ: '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. フィルター ナビゲーターでのビジネス ルールの検索

  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; if (view == null || view == '') view = "itil"; var userID = null; (eid != null && eid != '') { userID = UserGetSysId("employee_number",eid); }if (userID == null && name != null && name != '') { userID = UserGetSysId("name", 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"; (fQuery != null) url += "&sysparm_query=" + fQuery;回答 = url;リターン URL; Function UserGetSysId(field, value) { var user = new GlideRecord("sys_user"); user.addQuery(field, value); user.query();もし (user.ext()) が user.sys_id を返します。そうでない場合は null を返します。}

    ビジネスルールの設定例

  3. クライアント呼び出し可能オブジェクトを有効にする

    インシデント用のコンピュータテレフォニーインテグレーション (CTI) の処理中 は次のようにマークされています: True

  4. カスタム CTI ルールでスクリーンポップ URL を更新します " cti.do?sysparm_cti_rule=create インシデント&sysparm_caller_phone= "

[ sysparm_cti_rule=name '名前' は、 機能 の呼び出し期間 CTI 処理中 既定のスクリプトを使用する代わりに。

関数を sys_script エントリがマークされました クライアント呼び出し可能

関数で GlideRecords を挿入、更新、または削除する必要がある場合、別の非クライアント呼び出し可能関数を呼び出して更新を実行します。

スクリプトをクライアント呼び出し可能にするには、sys_script エントリが表示されるときに表示されるフォームの [クライアント呼び出し可能] チェックボックスをオンにする必要があります。

[クライアント呼び出し可能] チェックボックスは既定では表示されません。 表示するには、歯車アイコンとスラッシュ バケツ メカニズムを使用してフォームに表示されるフィールドを変更する必要があります。

参考資料

カスタマイズ # 2 - Webex コンタクト センター アクティビティ テーブルに CAD 変数を追加

概要

この記事では、ServiceNow テーブルに列を追加するプロセス、つまり ServiceNow CRM コネクタの Webex CC のインストール時に作成される webexc_activity のプロセスについて詳しく説明します。

既定では、テーブルにはすぐに使用できるシステムフィールドと値が含まれています。

WebexCC Flow デザイナー内で、よりビジネスに特化した変数 (CAD 変数) を作成することもできます。これらの CAD 変数を、ServiceNow 通話後アクティビティ ログ に追加し、 事後活動テーブルの データです。

  • これは参照ドキュメントのみです。IVR 内に顧客名を保存し、これを ServiceNow に投稿する Customer Name というサンプル CAD 変数に対してこれを行う方法を示します。

  • この構成は既存のコネクタのカスタマイズであるため、パートナーと顧客の ServiceNow 開発者が構成および管理します。

  • Cisco は、コネクタをカスタマイズおよび拡張する方法に関するテクニックのみを提供します。

  • この記事の時点で、Cisco チームは以下で説明する手法を使用して、アクティビティ ログとアクティビティ テーブルに CAD 変数を追加できることを確認しました。

WebexCC アクティビティに列を追加する
  1. 開発者バージョンの ServiceNow でテーブルを編集します。

  2. スタジオ > Webex コンタクトセンターに移動してください。

  3. WebexCC アクティビティ 表を選択します。

  4. たとえば、 顧客名 です。

  5. WebexCC アクティビティのリストレイアウトを選択してください。

スクリプトインクルードの新規作成

更新セット XML を使用している場合、この手順は必要ありません。- "webexc.u_customername=actInfo.CustomerName" を 1 行だけ追加するだけです。

サンプルスクリプト

webexc.u_customername=actInfo.CustomerName; とサポートのコメントを参照してください。

varPropUtils2 = Class.create(); PropUtils2.prototype = Object.ex 頭出しオブジェクト(global.AbstractAjaxProcessor,{getWebExcelProp:関数() { var webEXCProp = {}; webexcProp.instanceurl='https://'+gs.getProperty('instance_name')+'.service-now.com/'; webexcprop.url=gs.getProperties('x_caci_webexc.). .popupurl=gs.getProperties('x_caci_webexc.screenpop_url'); return JSON.stringify(webEXcProp); }, setWebExcelctable: Function () { var sys_id=0; varactInfo = JSON.parse(this.getParameter('actInfo') ); var webexc = new GlideRecordSecure(gs.getProperties('x_caci_webexc.webexcactivitytable')); webexc.addQuery("callobject",actInfo.CallObject); webexc.query(); .ani =actInfo.ani; webexc.dnis =actInfo.dnis; webexc.queuename =actInfo.queuename; webexc.wrapuptime =actInfo.wrapuptime; webexc.callduration =actInfo.CallDurationInSeconds; webexc.ringingtime =actInfo.ringingtime; webexc.activitydate =actInfo.ActivityDate; webexc.callobject =actInfo.CallObject; webexc.calltype =actInfo.CallType; webexc.calldis ポジション= actInfo.CallDis ポジション; // アクティビティ ログに記録するために、この行が追加されます webexc.u_customername=actInfo.CustomerName; sys_id=webexc.挿入(); // インシデント記録の活動; varactInfoString =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();の場合 (Inc.Next()) { var JSONPretty = JSON.stringify(JSON.parse(acting 文字列),null,2); inc.comments =JSONPretty; inc.update(); sys_id; を返します。次を入力します: 'PropUtils2' });
新しいスクリプト名で UI ページを編集する

フロー デザイナーで CAD 変数を作成する

CAD 変数をデスクトップレイアウトに追加します。

デモのスクリーンショット

WebexCC アクティビティ表に新しく追加された CAD 変数を表示します。