前提条件

現在、この機能はエージェントにのみ適用されます。

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

以下の 2 つの方法のいずれかに従ってください。

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

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

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

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

1

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

2

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

「ビルドの開始」ボタンが強調表示された ServiceNow 開発者ポータルのスクリーンショット。

3

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

ServiceNow 開発者インスタンスに、「プラグイン」フィルター ナビゲータの検索が表示されています。

4

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

アプリケーション画面の ServiceNow 開発者インスタンス。「OpenFrame」の検索結果が表示されています。

5

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

6

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

ServiceNow 開発者インスタンスに、OpenFrame プラグイン ポップアップが表示され、「アクティブ化」ボタンが強調表示されています。

7

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

OpenFrame プラグインのアクティベーションの読み込みを示す ServiceNow 開発者インスタンス。

ServiceNow 開発者インスタンスに、OpenFrame プラグインのアクティベーション成功ウィンドウが表示され、「閉じてフォームを再読み込み」ボタンが強調表示されています。

8

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

9

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

フィルター ナビゲータ検索で OpenFrame 構成を表示する ServiceNow 開発者インスタンス。

1

この場所の github リポジトリで入手可能な最新のシステム アップデート セット XML ファイルをダウンロードします : https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow

ファイル名: webexcc-servicenow-update-setV(X).XML

Webex Contact Center CRM 統合 – ServiceNow の Github リポジトリのスクリーンショット。

2

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

ServiceNow 開発者インスタンスでは、フィルター ナビゲータで「すべて」Tab の「更新セット」および「コミットする更新セット」オプションの検索が強調表示されています。

3

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

更新セットの結果ページの ServiceNow 開発者インスタンスで、「関連リンク: XML からの更新セットのインポート」が強調表示されています。

4

[ファイルの選択] をクリックし、System Update Set XML ファイルを選択して、 [アップロード] をクリックします。

ServiceNow 開発者インスタンスのインポート XML 画面。

ServiceNow 開発者ポータルが更新セットのリストを取得しました。

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

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

ServiceNow 開発者ポータルは、更新されたファイルの更新セット リストを取得しました。

6

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

ServiceNow 開発者ポータルは、「更新セットのプレビュー」ボタンが強調表示された更新されたファイルの更新セット リストを取得しました。

7

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

更新セットのプレビュー成功通知を含む ServiceNow 開発者ポータル。

8

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

ServiceNow 開発者ポータルは、「更新セットのコミット」ボタンが強調表示された更新されたファイルの更新セット リストを取得しました。

9

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

更新セットのコミット成功通知を含む ServiceNow 開発者ポータル。

1

ウィンドウの左上にある フィルター ナビゲータ フィールドに「 sys_properties.list 」と入力して Enter キーを押します。

ServiceNow 開発者インスタンスで、フィルター ナビゲータの 'すべて' Tab で 'sys_properties.list' を検索している様子

2

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

ServiceNow 開発者インスタンスのシステム プロパティ ページ。

3

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

4

フィールドに、運用地域に応じて Webex Contact Center デスクトップの URL を入力します。

Agentdesktop_url の ServiceNow 開発者インスタンス システム プロパティの詳細。

5

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

6

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

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

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

Webexactivitytable の ServiceNow 開発者インスタンス システム プロパティの詳細。

7

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

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

    ServiceNow developer instance filter navigator search for ‘Groups’ under ‘System Security’
  2. 新しいユーザ グループを作成するか、既存のユーザ グループを使用します。

    WebexccAgentsGroup の ServiceNow 開発者インスタンス グループ ページ。

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

  4. 検索する sn_openframe_userコレクション ユーザ グループに移動します。

    コレクションの検索が表示されている ServiceNow 開発者インスタンス グループのメンバー編集ページ。

    ServiceNow 開発者インスタンス グループのメンバー編集ページに、ロール リストに移動されたコレクションが表示されています。

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

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

    ユーザ ロールが割り当てられた ServiceNow 開発者インスタンス グループ ページ。

1

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

ServiceNow 開発者インスタンス フィルター ナビゲーターでは、検索フィールドに「openframe」が表示され、結果では「OpenFrame」の下の「構成」が強調表示されます。

2

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

ServiceNow 開発者インスタンスの OpenFrame 構成ページで、「新規」が強調表示されています。

3

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

  • 名前: Webex Contact Center デスクトップ

  • タイトル: Webex Contact Center

  • : 550 (推奨)

  • 身長: 600 (推奨)

4

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

ServiceNow 開発者インスタンスの OpenFrame 構成 – ロック アイコンが強調表示された新しいレコード ページ。

5

(オプション) 構成を割り当てるユーザ/エージェント グループを選択します。

ServiceNow 開発者インスタンスの OpenFrame 構成 – 新しいレコード ユーザ グループの選択。

6

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

ServiceNow 開発者インスタンスの OpenFrame 構成 – ユーザ グループの選択を送信した後に表示される URL リンクを示す新しいレコード ページ。

7

OpenFrame フォンを使用する前に、ServiceNow カスタム デスクトップ レイアウト JSON ファイルを Webex Contact Center 管理ポータルにアップロードしてください。 詳細については、 Webex Contact Center の「ServiceNow デスクトップ レイアウトの設定」を参照してください

1

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

Webex Contact Center CRM 統合 – デスクトップ レイアウト – ServiceNow の Github 画面。

2

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

3

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

4

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

Webex Contact Center 管理ポータルのプロビジョニング ページ。左側のナビゲーションでデスクトップ レイアウトが強調表示されています。

5

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

6

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

7

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

ServiceNow コンソール内で Webex Contact Center デスクトップを起動できるようになりました。

8

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

ServiceNow と統合された Webex Contact Center Agent Desktop を含む ServiceNow Home ページ。

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

1

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

2

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

「ビルドの開始」ボタンが強調表示された ServiceNow 開発者ポータルのスクリーンショット。

3

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

ServiceNow 開発者インスタンスに、「プラグイン」フィルター ナビゲータの検索が表示されています。

4

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

アプリケーション画面の ServiceNow 開発者インスタンス。「OpenFrame」の検索結果が表示されています。

5

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

6

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

ServiceNow 開発者インスタンスに、OpenFrame プラグイン ポップアップが表示され、「アクティブ化」ボタンが強調表示されています。

7

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

OpenFrame プラグインのアクティベーションの読み込みを示す ServiceNow 開発者インスタンス。

ServiceNow 開発者インスタンスに、OpenFrame プラグインのアクティベーション成功ウィンドウが表示され、「閉じてフォームを再読み込み」ボタンが強調表示されています。

8

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

9

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

フィルター ナビゲータ検索で OpenFrame 構成を表示する ServiceNow 開発者インスタンス。

1

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

ServiceNow 開発者インスタンスで、フィルター ナビゲータの「すべて」Tab で「sys_properties.list」を検索している様子

2

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

ServiceNow 開発者インスタンスのシステム プロパティ ページの結果。

3

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

4

フィールドに、操作地域に応じて Webex Contact Center デスクトップの URL を入力します。

Agentdesktop_url の ServiceNow 開発者インスタンス システム プロパティの詳細ページ。

5

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

6

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

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

    ServiceNow 開発者インスタンスのシステム プロパティ ページの x_caci_webexcc.webexccactivitytable の結果。

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

    x_caci_webexcc.webexccactivitytable の ServiceNow 開発者インスタンス システム プロパティ ページ。

7

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

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

    ServiceNow 開発者インスタンス フィルター ナビゲータの「グループ」の結果。

    Webexccagentsgroup の SeviceNow 開発者インスタンス グループ ページ。

  2. 編集 をクリックし、次のロールを追加します。

    • sn_openframe_user

    • x_caci_webexcc.エージェント

    • エージェントワークスペースユーザ

    • x_caci_webexcc.webexcc_imp_アクティビティ_ユーザ

    • x_caci_webexcc.webex_コンタクトセンター

    ロールが追加された webexccagentsgroup の SeviceNow 開発者インスタンス グループ ページ。

1

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

ServiceNow 開発者インスタンス フィルター ナビゲーターでは、検索フィールドに「openframe」が表示され、結果では「OpenFrame」の下の「構成」が強調表示されます。

2

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

ServiceNow 開発者インスタンスの OpenFrame 構成ページで、「新規」が強調表示されています。

3

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

  • 名前: Webex Contact Center デスクトップ

  • タイトル: Webex Contact Center

  • : 550 (推奨)

  • 高さ: 600 (推奨)

4

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

ServiceNow 開発者インスタンスの OpenFrame 構成 – ロック アイコンが強調表示された新しいレコード ページ。

5

(オプション) 構成を割り当てるユーザ/エージェント グループを選択します。

ServiceNow 開発者インスタンスの OpenFrame 構成 – 新しいレコード ユーザ グループの選択。

6

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

ServiceNow 開発者インスタンスの OpenFrame 構成 – URL が追加された新しいレコード。

7

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

ServiceNow と統合された Webex Contact Center Agent Desktop を含む ServiceNow Home ページ。

8

(オプション) ユーザグループ リストで、Webex Contact Center デスクトップにアクセスできるユーザグループを 利用可能選択済み

9

OpenFrame フォンを使用する前に、ServiceNow カスタム デスクトップ レイアウト JSON ファイルを Webex Contact Center 管理ポータルにアップロードしてください。 詳細については、 Webex Contact Center で ServiceNow デスクトップレイアウトを設定する

1

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

Webex Contact Center CRM 統合 – デスクトップ レイアウト – ServiceNow の Github 画面。

2

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

3

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

4

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

Webex Contact Center 管理ポータルのプロビジョニング ページ。左側のナビゲーションでデスクトップ レイアウトが強調表示されています。

5

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

6

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

7

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

ServiceNow コンソール内で Webex Contact Center デスクトップを起動できるようになりました。

8

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

ServiceNow と統合された Webex Contact Center Agent Desktop を含む ServiceNow Home ページ。

1

フィルター ナビゲータ フィールドから、 インシデント > オープン インシデントに移動します。

2

発信者フィールドを右クリックし、 「辞書の構成」 をクリックします。

ServiceNow 開発者インスタンスのインシデント ウィンドウで、[ディレクトリの構成] オプションが強調表示されています。

3

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

ServiceNow 開発者インスタンスは、ディレクトリ エントリのインシデント ウィンドウを呼び出します。

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

4

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

ServiceNow と統合された Webex Contact Center Agent Desktop を含む ServiceNow Home ページ。

Salesforce (SFDC) および WebRTC および Microsoft Dynamics (MS Dynamics) コネクタのみを使用して、Agent Desktop へのログインをサポートしています。

ServiceNow コンソールの Agent Desktop

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

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

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

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

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

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

ServiceNow と統合された Webex Contact Center Agent Desktop を含む ServiceNow Home ページ。

Desktop の使用方法については、Webex Contact Center ヘルプの Agent Tab を参照してください。

概要

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

顧客は ServiceNow 上でこれらのユースケースを自ら管理する必要があります。 構成は ServiceNow に固有のものであり、Webex Contact Center ソフトウェアや専門知識に固有のものではありません。

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

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

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

アクションウィジェットの更新セットをコミットする

ライセンスされたエンタープライズ インスタンスの場合は、 ServiceNow ストア から最新の Webex Contact Center アプリをインストールします。

開発者インスタンスのアクション ウィジェットを設定するには、次の場所にある 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 プロパティを使用します。 カスタム デスクトップ レイアウトのヘッドレス セクションでこのプロパティの値を変更しないでください。 カスタム デスクトップ レイアウトのヘッドレス セクションでは、このプロパティは常に 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" : "インシデントの作成" }, "wrapper": { "title": "SNOW アクション!", "maximizeAreaName": "app-maximize-area" } } ] }
  • ライブ通話メモを追加する - 通話に関する追加情報をテキスト領域に記録し、通話を終了できます。 追加されたメモは、アクティビティ レコードの通話メモとして確認できます。

ServiceNow のコード変更

スクリプトには変更が含まれています
  1. フィルターナビゲータに移動して検索 スクリプトには.

    選択してください スクリプトインクルードシステム UI

  2. フィルタリング 名前 そして検索 プロップユーティリティ.

  3. 方法を変える ユーザ取得システム ID の中で スクリプト

    現在:

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

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

    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.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; return JSON.stringify(sysidlist); },

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

    システム UI の下の UI ページを選択します。

  2. 名前 をフィルターして検索 エージェントデスクトップ.

  3. 変更する スクリーンポップ クライアント スクリプト内の関数。

    現在の機能:

    // スクリーンポップ関数 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) { 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: 'incident', query: 'sys_id='+sysObj.incsysid, 'interaction_sys_id': sysObj.sysid }); }else{ openFrameAPI.openServiceNowForm({ エンティティ: 'incident', クエリ: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid //'a2ba0ba62fd121106446cc96f699b6b8' }); } }

CRM に発信者情報が存在し、この連絡先で新しいインシデントがすでに開かれている場合、アプリケーションは進行中のインシデントを開きます。

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

CRM に発信者情報が存在する場合、アプリケーションは事前に入力された詳細で新しいインシデントを開きます。

概要

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

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

WebexCC フロー デザイナー内でビジネス固有の変数 (CAD 変数) をさらに作成し、ServiceNow POST コール アクティビティ ログ内に CAD 変数を追加し、これを POST コール アクティビティ テーブル データに保持することができます。

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

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

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

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

WebexCC IMP アクティビティに列を追加する

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

    ServiceNow 開発者インスタンス WebexCC IMP アクティビティ テーブル。

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

    フィルターに「studio」が入力されたすべての Tab の ServiceNow 開発者インスタンス フィルター ナビゲータ。

    選択 Webex Contact Center

    アプリケーションの選択ウィンドウが開いた ServiceNow 用の Studio アプリ。

    または

    ServiceNow 用の Studio アプリで、[アプリケーションの選択] ウィンドウが開き、[カスタマイズするストア アプリの選択] が選択されています。

    ServiceNow 用の Studio アプリで、「カスタマイズするストア アプリを選択」ウィンドウが開き、「Webex Contact Center」が選択されています。

    Webex Contact Center アプリケーション ファイルの詳細を含む ServiceNow 用の Studio アプリ。

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

    ServiceNow WebexCC IMP アクティビティ テーブル用の Studio アプリ。

  4. 新しい列を追加します。たとえば、 顧客名

    ServiceNow WebexCC IMP アクティビティ テーブルの新しい列の例の Studio アプリ。

    ServiceNow WebexCC IMP アクティビティ テーブルの新しい列の例の Studio アプリに新しい列が追加。

電話ログに列を追加する

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

    ServiceNow 開発者インスタンスは電話ログ テーブルを検索します。

    ServiceNow 開発者インスタンスの電話ログ テーブル。

  2. 新しい列を追加します。たとえば、 顧客名.

    ServiceNow 開発者インスタンスの電話ログ テーブルの新しい列の例。

    ServiceNow 開発者インスタンスの電話ログ テーブルの新しい列の例。新しい列が追加済みです。

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

ServiceNow WebexCC アクティビティ変換マップ用の Studio アプリ。

新しい列を追加します。たとえば、 顧客名 フィールド マッピング。

ServiceNow WebexCC アクティビティ変換マップの Studio アプリ、CustomerName フィールド マッピングの新しい列の例。

ServiceNow WebexCC アクティビティ変換マップの Studio アプリで、ターゲット フィールドで CustomeName が選択された新しい列の例。

リスト列をカスタマイズする

パーソナライズされたリスト列へのポップアップ ウィンドウを備えた ServiceNow WebexCC アクティビティ変換マップの Studio アプリ。 選択アクション オプションが [選択済み] 列で強調表示されます。

Service Now の推奨に従って、選択アクションを「作成」から「無視」に変更します。

ServiceNow WebexCC アクティビティ変換マップの Studio アプリには、選択アクション列があり、「無視」または「作成」を選択するためのドロップダウンが表示されています。

ServiceNow WebexCC アクティビティ変換マップの Studio アプリ。選択アクション列があり、顧客名ソース フィールドで「無視」が強調表示されています。

電話ログリストを設定する

ServiceNow 用の Studio アプリで、選択列で CustomerName が強調表示された電話ログ リストを構成しています。

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

1 行だけ追加 webexcc.u_customername=actInfo.顧客名 propUtils へ。

ServiceNow 開発者インスタンス フィルター ナビゲータで「スクリプト インクルード」を検索します。

ServiceNow 開発者インスタンスのスクリプト インクルード ページ。

サンプルスクリプト

次の行を参照してください: webexcc.u_customername=actInfo.顧客名; 支持するコメント付き。

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; // そうでない場合 // 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: 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(); } } } return sys_id; }, type: 'propUtils' });

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

Webex Contact Center CustomerName のフロー変数の追加ポップアップを備えた CAD 変数フロー デザイナー。

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

「CadName1:SnowField1、CadName2:SnowField2」CadName1 は CustomerName です。SnowField1 は CustomerName としても使用され、これは上記の「actInfo.CustomerName」に示されているサンプル スクリプトの一部です。

CAD 変数をデスクトップ レイアウトに追加するためのサンプル ソース コード。

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

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

WebexCC アクティビティ テーブルに新しく追加された CAD 変数の ServiceNow の例。Cisco WebexCC ポップアップに「顧客名」が表示されます。

WebexCC アクティビティ テーブルに新しく追加された CAD 変数の ServiceNow の例。コメント セクションの「アクティビティ」と「システム管理者」に「CustomerName」が表示されています。

WebexCC アクティビティ テーブルに新しく追加された CAD 変数の ServiceNow 開発者インスタンスの例。「CustomerName」列が表示されています。

Flow Designer 用の CAD 変数を作成する

インシデントの緊急性

Webex Contact Center フロー デザイナーの CAD 変数作成画面には、インシデント緊急フロー変数のフロー変数編集ポップアップが表示されています。

インシデントの影響

Webex Contact Center フロー デザイナーの CAD 変数作成画面に、インシデント緊急度フロー変数のフロー変数編集ポップアップが表示されています。

Service Now スクリプトの更新

スクリプトの更新内容

  1. フィルターナビゲータに移動して検索します スクリプトには

    選択してください スクリプトインクルード オプションの下 システム UI

    ServiceNow 開発者インスタンスのフィルターナビゲータで「スクリプトインクルード」を検索

  2. フィルタリング 名前プロップユーティリティ

    ServiceNow 開発者インスタンス スクリプトには、「propUtils」による名前フィルターが含まれています。

  3. 方法を変える ユーザ取得システム ID の中で スクリプト 分野。

    ServiceNow 開発者インスタンスのスクリプトインクルード – propUtils の詳細ページ。

    現在のスクリプト:

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

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

    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='+ 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; return JSON.stringify(sysidlist);//sysid; },

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

    選択してください UI ページ オプションの下 システム UI

    ServiceNow 開発者インスタンスのフィルターナビゲータで「Ui ページ」を検索

  2. フィルタリング UI ページ名前 そして検索 エージェントデスクトップ

    ServiceNow 開発者インスタンス UI ページの名前フィルターを使用して「agentdesktop」を検索します

  3. 変更する スクリーンポップ スクリプト フィールドで関数を実行します。

    ServiceNow 開発者インスタンス UI ページ – エージェントデスクトップの詳細ページ。

    現在の機能:

    // スクリーンポップ関数 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 のインシデントの例。

ServiceNow のインタラクションの例。

ServiceNow のコードを変更する

新しい列を追加する WebexCC IMP アクティビティ

開く WebexCC IMP アクティビティ

ServiceNow 開発者インスタンス WebexCC アクティビティ TransformMap。

ServiceNow 開発者インスタンス WebexCC アクティビティ TransformMap の詳細ページ。

新しい列を追加 - InteractionsNumber

ServiceNow 開発者インスタンス WebexCC アクティビティ TransformMap の新しい列、InteractionNumber。

ServiceNow 開発者インスタンスの WebexCC アクティビティ TransformMap の詳細ページに、追加された新しい「interactionnumber」列が表示されています。

新しい列「IncidentNumber」を追加します

ServiceNow 開発者インスタンスの WebexCC アクティビティ TransformMap の詳細ページに、新しい「incidentnumber」列の追加が表示されています。

クリック アップデート

ServiceNow 開発者インスタンスの WebexCC アクティビティ TransformMap の詳細ページに、IncidentNumber 列の最大長の編集が表示されています。

ServiceNow 開発者インスタンスの WebexCC アクティビティ TransformMap の詳細ページに、追加された新しい「incidentnumber」列が表示されています。

新しい列を追加する 電話ログ

開く 電話ログ

ServiceNow 開発者インスタンスの電話ログ テーブル。

新しい列を追加 - InteractionsNumber

ServiceNow 開発者インスタンスのディレクトリ エントリ – 新しいレコード ページに、InteractionsNumber の新しい列が表示されています。

InteractionsNumber 列が追加された ServiceNow 開発者インスタンスの電話ログ テーブル。

新しい列「IncidentNumber」を追加します

ServiceNow 開発者インスタンスのディレクトリ エントリ – 新しいレコード ページに、IncidentNumber の新しい列が表示されています。

IncidentNumber 列が追加された ServiceNow 開発者インスタンスの電話ログ テーブル。

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

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

ServiceNow 開発者インスタンスのフィルターナビゲータで「変換マップ」を検索

結果に WebexCC アクティビティ TransformMap を表示する ServiceNow 開発者インスタンス テーブル変換マップ。

クリック WebexCC アクティビティ トランスフォームマップ

ServiceNow 開発者インスタンス WebexCC アクティビティ TransformMap。

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

ServiceNow 開発者インスタンス WebexCC アクティビティ TransformMap の「ターゲット フィールド」に「InteractionNumber」が入力されている

ServiceNow 開発者インスタンス WebexCC アクティビティ TransformMap に「InteractionNumber」が追加されました。

事件番号マップに新規追加

ServiceNow 開発者インスタンス WebexCC アクティビティ TransformMap の「ターゲット フィールド」に「IncidentNumber」が入力されている

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

ServiceNow 開発者インスタンス WebexCC アクティビティ TransformMap に「IncidentNumber」が追加されました。

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

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

    システム UI の下にある スクリプト インクルード を選択します

    ServiceNow 開発者インスタンス フィルター ナビゲータで「スクリプト インクルード」を検索

  2. 名前 をフィルター プロップユーティリティ.

    ServiceNow 開発者インスタンスのスクリプト インクルードには、検索に名前フィルターが適用され、検索フィールドに「propUtils」が入力されています。

  3. 方法を変える setWebexcctable.

    ServiceNow 開発者インスタンスのスクリプトインクルード - 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()) { //インシデント レコードのアクティビティ; //var actInfoString =this.getParameter('actInfo'); var incsysid=actInfo.incident_sys_id; var interactsysid=actInfo.interaction_sys_id; var incnum=""; var intenum=""; delete actInfo['interaction_sys_id']; delete actInfo['incident_sys_id']; if(interactionsysid!= null && interactsysid != undefined){ var inte = new GlideRecordSecure('interaction'); //inte.get('sys_id', interactsysid ); inte.addQuery('sys_id', interactsysid ); inte.query(); if (inte.next()) { intenum=inte.number; // inte.setValue('state','Closed Complete'); inte.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', 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=intenum; sys_id=webexcc.Insert(); } sys_id を返します。},

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

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

    システム UI の下にある UI ページ オプションを選択します。

    ServiceNow 開発者インスタンス フィルター ナビゲータで「Ui ページ」を検索

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

    検索に名前フィルターが適用された ServiceNow 開発者インスタンス UI ページ。

  3. 変更する nowActivities とスクリーンポップ スクリプト内の関数。

    ServiceNow 開発者インスタンス UI ページ – agentdesktop。

    現在の機能:

    関数 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({ エンティティ: 'incident', クエリ: 'sys_id=-1', 'interaction_sys_id': sysObj.sysid }); } window.localStorage.setItem("screenpopinteraction",JSON.stringify(sysObj)); } 

アップデート後の結果

ServiceNow 開発者インスタンスの電話ログ ページ。

次のカスタマイズはバージョン 1.0.5 以下に適用されます。 新しいバージョン 1.0.7 以降のカスタマイズについては、上記の手順に従ってください。

カスタマイズ # 1 - コールフローのユースケースにカスタムビジネスルールを追加する

通話ごとに新しいインシデント記録を作成する

ServiceNow の WebexCC CRM コネクタへの新しい呼び出しごとに、新しいインシデント レコードを作成します。

  1. フィルターナビゲータでビジネスルールを検索

    ServiceNow developer instance Business Rules page header.
  2. [新規] をクリックします。

    ServiceNow developer instance Business Rule – New Record.

    参考サンプルコード:

    関数 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", 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; } answer = url; return url; } 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; }

    ビジネスルールのサンプル構成

    ServiceNow developer instance Business Rule – CTI Processing For Incident page as a sample configuration of the business rule.
  3. クライアント呼び出しを有効にする

    ServiceNow developer instance Business Rules page with the Personalized List Columns popup screen showing ‘Client callable’ in the ‘Selected’ column.

    コンピュータテレフォニー統合(CTI)インシデントの処理 としてマークされています 真実

    ServiceNow developer instance Business Rules page showing the Client callable column with options to select ‘true’ or ‘false’
  4. スクリーンポップの URL をカスタム CTI ルールで更新します cti.do?sysparm_cti_rule=インシデント作成&sysparm_caller_phone=

    System Property page for screenpop_url showing update to the custom CTI rule in the ‘Value’ field.

その sysparm_cti_rule=名前 どこ '名前'は、 関数 呼び出される CTI 処理中 デフォルトのスクリプトを使用するのではなく。

関数を定義する システムスクリプト エントリがマークされました クライアント呼び出し可能

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

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

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

参考資料

カスタマイズ # 2 - Webex Contact Center アクティビティ テーブルに CAD 変数を追加する

概要

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

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

WebexCC フロー デザイナー内でビジネス固有の変数 (CAD 変数) をさらに作成し、それらの CAD 変数を ServiceNow POST コール アクティビティ ログ内に追加し、これを POST コール アクティビティ テーブル データに保持することができます。

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

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

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

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

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

    ServiceNow developer instance Table – WebexCC Activity page.
  2. スタジオ > Webex Contact Center にアクセスしてください。

    ServiceNow developer instance filter navigator search for ‘studio’  highlighting the cross launch search result for ‘App Engine Studio’

    App Engine Studio Select Application screen showing Webex Contact Center in the search results.

    App Engine Studio Webex Contact Center screen.

  3. WebexCC アクティビティ テーブルを選択します。

    App Engine Studio WebexCC Activity table.
  4. たとえば、 CustomerName

    App Engine Studio WebexCC Activity table column edit example for ‘CustomerName’ column.

    App Engine Studio WebexCC Activity table screen.

  5. WebexCC アクティビティのリスト レイアウトを選択します。

    App Engine Studio WebexCC Activity table list layout showing ‘CustomerName’ highlighted in the ‘Selected’ column.
新しいスクリプトインクルードを作成する

更新セット XML を使用している場合、この手順は必要ありません - propUtils に「webexcc.u_customername=actInfo.CustomerName」という 1 行のみを追加する必要があります。

ServiceNow developer instance filter navigator search for ‘script includes’

ServiceNow developer instance Script Includes page with ‘Application’ in the filter.

ServiceNow developer instance Script Includes – New Record page.

サンプルスクリプト

次の行を参照してください: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(acting string),null,2); inc.comments =jsonPretty; inc.update(); } } } return sys_id; }, type: 'propUtils2' });
新しいスクリプト名で UI ページを編集するApp Engine Studio agentdesktop UI page with new script name.

フローデザイナーで CAD 変数を作成するWebex Contact Center flow designer with Add Flow Variable popup showing adding a CustomerName variable.

CAD 変数をデスクトップレイアウトに追加するWebex Contact Center CAD variable to the desktop layout script with ‘CustomerName:CustomerName’ highlighted.

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

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

ServiceNow developer instance showing newly added CAD variable in the WebexCC Activity table.

ServiceNow developer instance WebexCC Activities screen.