WebexコンタクトセンターをServiceNowと統合します(バージョン1 — レガシー)

list-menuフィードバックがある場合
Webex コンタクトセンターを ServiceNow CRM コンソールと統合すると、ServiceNow 内から Webex コンタクトセンターデスクトップを起動できます。

前提条件

ソフトフォンインターフェースでサポートされている最小サイズは500pxです。 500px未満の値は、表示や機能に問題が発生する可能性があります。

Webex コンタクトセンターを ServiceNow CRM コンソールと統合する前に、次のものが揃っていることを確認してください。

  • Webex コンタクトセンターへのアクセス。

  • https://admin.webex.com にあるコントロールハブと Webex コンタクトセンターへの管理者アクセス。Management Portal Management PortalのURLは、お住まいの地域に固有のものです。

  • デスクトップにアクセスできるエージェント。 デスクトップのURLは、お住まいの地域によって異なります。

  • コンテンツセキュリティポリシーの許可リストに追加された次のドメインへのエージェントアクセス:

    • *.service-now.com

    許可リストを定義する方法の詳細については、「Webex Contact Center のセキュリティ設定」を参照してください。

  • ServiceNow開発者ポータルアカウント。 アカウントを作成するには、ServiceNowデベロッパーポータル https://developer.servicenow.com/dev.do にアクセスし、「サインアップして構築を始めましょう」をクリックします。

  • https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow にある次のファイルにアクセスできます。

    • サービスナウアップデートセット(XML)

    • ServiceNowコンタクトセンターのデスクトップレイアウト(JSON)

  • Webex コンタクトセンターがサポートする ServiceNow のエディションは、バンクーバー、ユタ、東京、ワシントン、ザナドゥです。 詳細については、「Webex コンタクトセンターと ServiceNow の統合」を参照してください。

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

  • 開発者インスタンスの場合は、開発者インスタンスガイドの手順に従うことをお勧めします。
  • エンタープライズライセンスインスタンスを所有している場合は、エンタープライズライセンスインスタンスのガイドラインに従ってください。

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

チャットやメールなどのデジタルチャネルは、CRMコネクタではサポートされていません。 これは、これらのコネクタを使用するすべてのCRM統合に当てはまります。 それに応じて、導入と顧客エンゲージメントのワークフローを計画してください。

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

1

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

2

アカウントメニューの「マイインスタンス」エリアから、「構築を開始」をクリックします。

ServiceNow developer portal screenshot with ‘Start Building’ button highlighted.

3

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

ServiceNow developer instance showing a search for ‘plugins’ filter navigator.

4

OpenframeというタイトルのOpenframeプラグインを検索してください。 リストをスクロールする必要があるかもしれません。

ServiceNow developer instance on the Applications screen, showing the search and results for ‘OpenFrame.’

5

Openframeプラグインをインストールするには、「インストール」をクリックしてください。

6

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

ServiceNow developer instance showing OpenFrame plugin popup with the ‘Activate’ button highlighted.

7

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

ServiceNow developer instance showing OpenFrame plugin activation loading.

ServiceNow developer instance showing OpenFrame plugin activation success window with the ‘Close & Reload Form’ button highlighted.

8

プラグインの有効化を確認するには、ウィンドウの左上にあるフィルターナビゲーターフィールドからOpenFrameに移動します。

9

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

ServiceNow developer instance showing OpenFrame Configurations in the filter navigator search.

1

https://github.com/CiscoDevNet/webex-contact-center-crm-integrations/tree/main/ServiceNow のgithubリポジトリにある最新のシステムアップデートセットのXMLファイルをダウンロードしてください。

ファイル名:WebEXCC-ServiceNow-Update-Setv (X) .xml

Github repo screenshot for Webex Contact Center CRM integrations – ServiceNow.

2

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

ServiceNow developer instance showing a search in the filter navigator on the ‘All’ tab for ‘Update set’ and ‘Update Sets to Commit’ option highlighted.

3

「XMLからアップデートセットをインポート」リンクをクリックします。

ServiceNow developer instance on the Update Sets results page with ‘Related Links: Import Update Set from XML’ highlighted.

4

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

ServiceNow developer instance import XML screen.

ServiceNow developer portal retrieved update sets list.

アップデートセットは 「取得されたアップデートセット」リストに表示され、「読み込まれました」状態です。
5

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

ServiceNow developer portal retrieved update sets list for an updated file.

6

ウィンドウの右上にある「アップデートセットのプレビュー」をクリックして、アップデートセットに問題がないか確認します。

ServiceNow developer portal retrieved update sets list for an updated file with the ‘Preview Update Set’ button highlighted.

7

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

ServiceNow developer portal with the update set preview success notification.

8

「更新セットをコミット」をクリックします。

ServiceNow developer portal retrieved update sets list for an updated file with the ‘Commit Update Set’ button highlighted.

9

アップデートセットのコミットが完了したら、「アップデートセットのコミット」ダイアログボックスで「閉じる」をクリックします。

ServiceNow developer portal with the update set commit success notification.

1

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

ServiceNow developer instance showing a search in the filter navigator on the ‘All’ tab for ‘sys_properties.list’

2

システムのプロパティページで、プロパティを更新日順に並べ替えます。 次の Webex コンタクトセンターのプロパティが表示されていることを確認してください。

ServiceNow developer instance system properties page.

3

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

4

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

ServiceNow developer instance system property details for agentdesktop_url.

5

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

6

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

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

必要に応じて「値」フィールドを変更してください。

ServiceNow developer instance system property details for webexactivitytable.

7

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

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

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

    ServiceNow developer instance group page for WebexccAgentsGroup.

  3. 「編集」をクリックします。

  4. 「コレクション sn_openframe_user」で検索して、ユーザーグループに移動してください。

    ServiceNow developer instance group edit members page showing a search for a collection.

    ServiceNow developer instance group edit members page showing a collection moved into the roles list.

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

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

    ServiceNow developer instance group page with user roles assigned.

1

フィルターナビゲーターフィールドから、OpenFrame > 設定に移動します。

ServiceNow developer instance filters navigator with ‘openframe’ in the search field and ‘Configurations’ under ‘OpenFrame’ highlighted in the results.

2

「新規」をクリックします。

ServiceNow developer instance OpenFrame Configurations page with ‘New’ highlighted.

3

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

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

  • タイトル:Webex コンタクトセンター

  • 幅:550 (推奨)

  • 高さ:600 (推奨)

4

URLフィールドの右側にあるロックボタンをクリックして、agentdesktop.doURLとして追加してください。 (このステップを実行して、設定をUIページに向けてください)

ServiceNow developer instance OpenFrame Configurations – New Record page with the lock icon highlighted.

5

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

ServiceNow developer instance OpenFrame Configurations – New Record user group selection.

6

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

ServiceNow developer instance OpenFrame Configurations – New Record page showing the URL link that appears after submitting the user group selections.

7

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

1

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

Github screen for Webex Contact Center CRM Integrations – Desktop Layouts – ServiceNow.

2

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

3

Webex コンタクトセンターに行ってください。Management Portal

4

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

Webex Contact Center Management Portal provisioning page with Desktop Layout highlighted in the left navigation.

5

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

6

ServiceNowデスクトップレイアウトのJSONファイルをアップロードしてください。

7

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

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

8

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

ServiceNow home page with Webex Contact Center Agent Desktop integrated with ServiceNow.

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

1

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

2

アカウントメニューの「マイインスタンス」エリアから、「構築を開始」をクリックします。

ServiceNow developer portal screenshot with ‘Start Building’ button highlighted.

3

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

ServiceNow developer instance showing a search for ‘plugins’ filter navigator.

4

OpenframeというタイトルのOpenframeプラグインを検索してください。 リストをスクロールする必要があるかもしれません。

ServiceNow developer instance on the Applications screen, showing the search and results for ‘OpenFrame.’

5

Openframeプラグインをインストールするには、「インストール」をクリックしてください。

6

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

ServiceNow developer instance showing OpenFrame plugin popup with the ‘Activate’ button highlighted.

7

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

ServiceNow developer instance showing OpenFrame plugin activation loading.

ServiceNow developer instance showing OpenFrame plugin activation success window with the ‘Close & Reload Form’ button highlighted.

8

プラグインの有効化を確認するには、ウィンドウの左上にあるフィルターナビゲーターフィールドからOpenFrameに移動します。

9

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

ServiceNow developer instance showing OpenFrame Configurations in the filter navigator search.

1

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

ServiceNow developer instance showing a search in the filter navigator on the ‘All’ tab for ‘sys_properties.list’

2

システムのプロパティページで、プロパティを更新日順に並べ替えます。 次の Webex コンタクトセンターのプロパティが表示されていることを確認してください。

ServiceNow developer instance system properties page results.

3

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

4

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

ServiceNow developer instance system property details page for agentdesktop_url.

5

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

6

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

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

    ServiceNow developer instance system properties page results for x_caci_webexcc.webexccactivitytable.

  2. 必要に応じて「値」フィールドを変更してください。

    ServiceNow developer instance system property page for x_caci_webexcc.webexccactivitytable.

7

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

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

    ServiceNow developer instance filter navigator results for ‘Groups.’

    SeviceNow developer instance group page for webexccagentsgroup.

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

    • sn_openframe_user

    • x_caci_webexcc. エージェント

    • agent_workspace_user

    • x_caci_webexcc。webexcc_imp_activity_user

    • x_caci_webexcc。webex_contact_center

    SeviceNow developer instance group page for webexccagentsgroup with rolls added.

1

フィルターナビゲーターフィールドから、OpenFrame > 設定に移動します。

ServiceNow developer instance filters navigator with ‘openframe’ in the search field and ‘Configurations’ under ‘OpenFrame’ highlighted in the results.

2

「新規」をクリックします。

ServiceNow developer instance OpenFrame Configurations page with ‘New’ highlighted.

3

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

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

  • タイトル:Webex コンタクトセンター

  • 幅:550 (推奨)

  • 高さ:600 (推奨)

4

URLフィールドの右側にあるロックボタンをクリックして、x_caci_webexcc_agentdesktop.doURLとして追加してください。 (このステップを実行して、設定をUIページに向けてください)

ServiceNow developer instance OpenFrame Configurations – New Record page with the lock icon highlighted.

5

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

ServiceNow developer instance OpenFrame Configurations – New Record user group selection.

6

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

ServiceNow developer instance OpenFrame Configurations – New Record with URL added.

7

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

ServiceNow home page with Webex Contact Center Agent Desktop integrated with ServiceNow.

8

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

9

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

1

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

Github screen for Webex Contact Center CRM Integrations – Desktop Layouts – ServiceNow.

2

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

3

Webex コンタクトセンターに行ってください。Management Portal

4

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

Webex Contact Center Management Portal provisioning page with Desktop Layout highlighted in the left navigation.

5

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

6

ServiceNowデスクトップレイアウトのJSONファイルをアップロードしてください。

7

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

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

8

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

ServiceNow home page with Webex Contact Center Agent Desktop integrated with ServiceNow.

1

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

2

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

ServiceNow developer instance Incidents window with the Configure Directory option highlighted.

3

“ref_contributions=show_phone,カンマで区切られた属性を追加してください。

ServiceNow developer instance call incident window for a Directory Entry.

これで、ServiceNowコンソールでWebexコンタクトセンターデスクトップを使い始めることができます。

4

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

ServiceNow home page with Webex Contact Center Agent Desktop integrated with ServiceNow.

  • セールスフォース(SFDC)とマイクロソフトダイナミクス(MS Dynamics)Agent DesktopコネクタでのWebRTCの使用へのサインインのみをサポートしています。
  • 現在、この機能はエージェントのみに適用されます。

Agent DesktopServiceNowコンソールで

アウトダイヤル電話をかける前に、次のことを必ず行ってください。

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

  • エージェントプロファイルのアウトダイヤルANIを有効にしてください。

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

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

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

ServiceNow home page with Webex Contact Center Agent Desktop integrated with ServiceNow.

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

概要

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

お客様はServiceNowでこれらのユースケースを自分で管理する必要があります。 設定はServiceNowに固有で、Webex コンタクトセンターのソフトウェアや専門知識には固有ではありません。

これはビジネスルールの変更に役立つ参考資料です。 ServiceNowの開発者は、ビジネスルールを作成して管理し、サポートを提供します。

シスコはサンプルドキュメントのみを提供しています。

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

アクションウィジェットのアップデートセットをコミットしてください

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

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

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

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

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

  • 活動記録の管理-「活動記録の表示/編集」をクリックすると、発信者に関連する活動記録のリストが表示されます。
  • CRMオブジェクトの関連付け-「アクティビティレコードに関連付ける」をクリックして、コールタイプ(インバウンドまたはアウトバウンド)、コールオブジェクト、コールメモなどのCRMオブジェクトをアクティビティレコードに追加します。
  • インシデントの管理 —「インシデントを作成」をクリックします。 発信者の詳細があらかじめ入力された新しいインシデントが作成されます。 インシデントに必要な更新を加えることができます。 要件に応じて、レコードタイプをインシデントごと、ケースごと、人事モジュールなどに変更できます。 レコードタイプを変更するには、アクションウィジェットの設定で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"
                      }
                    }
                  ]
                }
  • ライブ通話メモを追加—通話に関する追加情報をテキスト領域に入力して、通話を終了できます。 これらのメモは活動記録に通話メモとして追加されています。

ServiceNowのコード変更

スクリプトには変更が含まれています
  1. フィルターナビゲーターに行き、スクリプトインクルードを検索してください。

    システムUIの下にあるスクリプトインクルードを選択してください。

  2. 名前をフィルタリングして、PropuTilsを検索してください。

  3. スクリプトの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();
    return 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;
                
                return JSON.stringify(sysidlist);
            },

UIページのメソッド変更
  1. フィルターナビゲーターに移動して検索してください。UI page

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

  2. 名前をフィルタリングして、agentdesktopを検索してください。

  3. クライアントスクリプトのスクリーンポップ機能を変更してください。

    現在の機能:

    // 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に存在する場合、アプリケーションは詳細があらかじめ入力された新しいインシデントを開きます

概要

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

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

WebEXCCフローデザイナー内でビジネス固有の変数(CAD変数)をさらに作成し、ServiceNowのポストコールアクティビティログにCAD変数を追加したり、これをポストコールアクティビティテーブルデータに永続化したりできます。

これはあくまでも参考資料であり、IVRに顧客名を格納してServiceNowに送信するCustomer NameというサンプルCAD変数でこれを行う方法を示しています。

この構成は既存のコネクタをカスタマイズするものなので、パートナー+カスタマーServiceNowの開発者が構成および管理することが期待されます。

シスコが提供しているのは、コネクタのカスタマイズと拡張の方法に関する技術だけです。

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

WebEXCC IMPアクティビティに列を追加してください

  1. ServiceNowの開発者版でテーブルを編集してください。

    ServiceNow developer instance WebexCC IMP activity table.

  2. フィルターナビゲーターに行き、スタジオを検索してください。

    ServiceNow developer instance filter navigator on the All tab with ‘studio’ entered in the filter.

    Webex コンタクトセンターを選択してください

    Studio app for ServiceNow with the Select Application window open.

    または

    Studio app for ServiceNow with the Select Application window open and ‘Select Store App to Customize’ selected.

    Studio app for ServiceNow with the ‘Select Store App to Customize’ window open and ‘Webex Contact Center’ selected.

    Studio app for ServiceNow with Webex Contact Center application file details.

  3. WebEXCC IMPアクティビティテーブルを選択してください

    Studio app for ServiceNow WebexCC IMP Activity table.

  4. 顧客名など、新しい列を追加してください

    Studio app for ServiceNow WebexCC IMP Activity table new column example.

    Studio app for ServiceNow WebexCC IMP Activity table new column example with new column added.

電話ログに列を追加

  1. 電話ログテーブルを編集してください。

    ServiceNow developer instance search for a phone log table.

    ServiceNow developer instance phone log table.

  2. 顧客名など、新しい列を追加してください。

    ServiceNow developer instance phone log table new column examples.

    ServiceNow developer instance phone log table new column example with new column added.

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

Studio app for ServiceNow WebexCC Activity Transform Map.

顧客名のフィールドマッピングなど、新しい列を追加します。

Studio app for ServiceNow WebexCC Activity Transform Map new column example for CustomerName field mapping.

Studio app for ServiceNow WebexCC Activity Transform Map new column example with CustomeName selected in the Target field.

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

Studio app for ServiceNow WebexCC Activity Transform Map with popup window to personalized list columns. Choice action option is highlighted in the Selected column.

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

Studio app for ServiceNow WebexCC Activity Transform Map with the Choice action column, showing the dropdown to choose ‘ignore’ or ‘create.’

Studio app for ServiceNow WebexCC Activity Transform Map with the Choice action column and ‘ignore’ highlighted for the customer name source field.

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

Studio app for ServiceNow configuring phone log list with CustomerName highlighted in the Selected column.

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

webexccを1行だけ追加してください。u_customername=行動情報。顧客名はプロプティルズへ。

ServiceNow developer instance filter navigator search for ‘script includes.’

ServiceNow developer instance Script Includes page.

サンプルスクリプト

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;
//            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 : 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;
                 
                // This line is Added - to capture it in the Activity Log
               webexcc.u_customername=actInfo.CustomerName;
                 
                sys_id=webexcc.insert();
 
                //Activities on Incident record;
                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 CAD variable flow designer with Add Flow Variable popup for CustomerName.

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

例

"CadName1:SnowField1,CadName2:SnowField2"
 CadName1 is CustomerName
 SnowField1 is also used as CustomerName which is part of sample scirpt showen above "actInfo.CustomerName".

Example source code for adding the CAD variable to the Desktop Layout.

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

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

ServiceNow example of the newly added CAD variable in the WebexCC Activity table, showing ‘Customer Name’ in the Cisco WebexCC popup.

ServiceNow example of the newly added CAD variable in the WebexCC Activity table, showing ‘CustomerName’ in the comments section under ‘Activity’ and ‘System Administrator.’

ServiceNow developer instance example of the newly added CAD variable in the WebexCC Activity table, showing the ‘CustomerName’ column.

フローデザイナー用のCAD変数を作成してください

インシデントの緊急度

Webex Contact Center flow designer create CAD variable screen showing the edit flow variable popup for an incident urgency flow variable.

インシデントの影響

Webex Contact Center flow designer create CAD variable screen showing the edit flow variable popup for an incident urgency flow variable.

サービスナウスクリプトの更新

スクリプトの更新には次のものが含まれます

  1. フィルターナビゲーターに行き、検索してください script includes

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

    ServiceNow developer instance filter navigator search for ‘script includes’

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

    ServiceNow developer instance Script Includes name filter by ‘propUtils’

  3. スクリプトフィールドの userGetSysID メソッドを変更してください。

    ServiceNow developer instance Script Includes – propUtils details page.

    現在のスクリプト:

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

UIページのメソッド変更
  1. フィルターナビゲーターに移動して検索してください。UI pages

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

    ServiceNow developer instance filter navigator search for ‘Ui page’

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

    ServiceNow developer instance UI Pages name filter to search ‘agentdesktop’

  3. スクリプトフィールドのスクリーンポップ機能を変更してください。

    ServiceNow developer instance UI Page – agentdesktop details page.

    現在の機能:

    // 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) {
       
        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 example of an incident.

ServiceNow example of an interaction.

ServiceNowのコードを変更してください

WebEXCC IMPアクティビティテーブルに新しい列を追加します

WebEXCC IMPアクティビティテーブルを開きます

ServiceNow developer instance WebexCC Activity TransformMap.

ServiceNow developer instance WebexCC Activity TransformMap details page.

新しい列を追加してください-インタラクション番号

ServiceNow developer instance WebexCC Activity TransformMap new column, InteractionNumber.

ServiceNow developer instance WebexCC Activity TransformMap details page showing the new ‘interactionnumber’ column added.

新しい列を追加してください-インシデント番号

ServiceNow developer instance WebexCC Activity TransformMap details page showing adding a new ‘incidentnumber’ column.

更新をクリックします。

ServiceNow developer instance WebexCC Activity TransformMap details page showing editing the max length for the IncidentNumber column.

ServiceNow developer instance WebexCC Activity TransformMap details page showing the new ‘incidentnumber’ column added.

電話ログテーブルに新しい列を追加します

電話ログテーブルを開きます

ServiceNow developer instance Phone Log table.

新しい列を追加してください-インタラクション番号

ServiceNow developer instance Directory Entry – New Record page showing a new column for InteractionsNumber.

ServiceNow Developer instance Phone Log table with InteractionsNumber column added.

新しい列を追加してください-インシデント番号

ServiceNow developer instance Directory Entry – New Record page showing a new column for IncidentNumber.

ServiceNow Developer instance Phone Log table with IncidentNumber column added.

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

フィルターナビゲーターから変換マップを開きます

ServiceNow developer instance filter navigator search for ‘transform map’

ServiceNow developer instance Table Transform Maps showing WebexCC Activity TransformMap in results.

WebEXCCアクティビティトランスフォームマップをクリックしてください

ServiceNow developer instance WebexCC Activity TransformMap.

インタラクションナンバーマップ用に新規-を追加

ServiceNow developer instance WebexCC Activity TransformMap with ‘InteractionNumber’ entered into the ‘Target field’

ServiceNow developer instance WebexCC Activity TransformMap with ‘InteractionNumber’ added.

インシデント番号マップ用に新規-を追加してください

ServiceNow developer instance WebexCC Activity TransformMap with ‘IncidentNumber’ entered into the ‘Target field’

「更新」をクリックします。

ServiceNow developer instance WebexCC Activity TransformMap with ‘IncidentNumber’ added.

スクリプトの変更が含まれています

  1. フィルターナビゲーターに行き、「スクリプトインクルード」を検索してください。

    システムUIの下にあるスクリプトインクルードを選択してください。

    ServiceNow developer instance filter navigator with search for ‘script includes’

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

    ServiceNow developer instance Script Includes with Name filter applied to search and  ‘propUtils’ entered into the search field.

  3. setWebExccTableのメソッドを変更してください。

    ServiceNow developer instance Script includes - propUtils page

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

    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()) {
                    
                    //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="";
                    delete actInfo['interaction_sys_id'];
                    delete actInfo['incident_sys_id'];
                    if( interactionsysid!= null && interactionsysid != undefined){
                        var inte = new GlideRecordSecure('interaction');
                        //inte.get('sys_id', interactionsysid );
                        
                        inte.addQuery('sys_id', interactionsysid );
                        inte.query();
                        if (inte.next()) {
                            intenum=inte.number;
                           // inte.setValue('state','Closed Complete');
                            inte.work_notes='Update State to closed.';
                            inte.update();
        
                        }
                    }
                    if( incsysid!= null && incsysid != undefined){
                        var inci = new GlideRecordSecure('incident');
                        inci.addQuery('sys_id', incsysid );
                        inci.query();
                        if (inci.next()) {
                            incnum=inci.number;
                            var jsonPretty = JSON.stringify(actInfo,null,2); //JSON.stringify(JSON.parse(actInfoString),null,2);  
                            inci.comments =jsonPretty;
                            inci.update();
        
                        }
                    }else{
                      var suser = new GlideRecordSecure("sys_user");
                        suser.addQuery("phone", this.getParameter('ani'));
                        suser.query();
                        if(suser.next()) {
                        var inc = new GlideRecordSecure('incident');
                                inc.addQuery('caller_id', suser.sys_id);
                                inc.addQuery('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();
    
                    
                                
                }    
                return sys_id;
           },

UIページのメソッド変更

  1. フィルターナビゲーターに行き、UIページを検索してください

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

    ServiceNow developer instance filter navigator with search for ‘Ui page’

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

    ServiceNow developer instance UI Pages with Name filter applied to search.

  3. スクリプトのNowActivitiesとスクリーンポップ機能を変更してください。

    ServiceNow developer instance UI Page – agentdesktop.

    現在の機能:

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

更新後の結果

ServiceNow developer instance Phone Logs page.

次のカスタマイズはバージョン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.

    参考用のサンプルコード:

    function customcti() {
                var url = null;
                var name = sysparm_caller_name;
                eid = sysparm_caller_id;
                var phone = sysparm_caller_phone;
                var taskID = sysparm_task_id;
                var fQuery = sysparm_query;
                if (fQuery == null)
                   fQuery = '';
                var view = sysparm_view;
                if (view == null || view == '')
                    view = "itil";
     
                var userID = null;
                if (eid != null && eid != '') {
                    userID = UserGetSysId("employee_number",eid);
                }
                if (userID == null && name != null && name != '') {
                    userID = UserGetSysId("name", 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)処理は「True」とマークされています。

    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=name('name'は関数の名前です)は、デフォルトのスクリプトを使用するのではなく、CTI処理で呼び出してください。

client sys_scriptcallableとマークされたエントリに関数を定義してください。

関数内のGlideRecordを挿入、更新、削除する必要がある場合は、クライアント以外の呼び出し可能な別の関数を呼び出して更新を実行してください。

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

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

参考文献

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

概要

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

デフォルトでは、テーブルには標準装備のシステムフィールドと値が含まれています。

WebEXCCフローデザイナー内でビジネス固有の変数(CAD変数)をさらに作成し、それらのCAD変数をServiceNowポストコールアクティビティログに追加して、これをポストコールアクティビティテーブルデータに永続化できる可能性があります。

  • これは参考資料であり、IVRに顧客名を格納してServiceNowに送信するCustomer NameというサンプルCAD変数でこれを行う方法を示しています。

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

  • シスコは、コネクタのカスタマイズと拡張の方法に関する技術のみを提供します。

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

WebEXCCアクティビティに列を追加してください
  1. ServiceNowの開発者版でテーブルを編集してください。

    ServiceNow developer instance Table – WebexCC Activity page.
  2. スタジオ > Webex コンタクトセンターに行ってください。

    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. たとえば、顧客名。

    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を使用している場合は、この手順は必要ありません。追加する必要があるのは1行だけです。」webexccu_customername=行動情報。顧客名」をproputilsに。

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.顧客名; 補足コメント付き。

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;
 
               // This line is Added - to capture it in the Activity Log
               webexcc.u_customername=actInfo.CustomerName;
 
                sys_id=webexcc.insert();
  
                // Activities on Incident record;
                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.

CRMコネクタは、デスクトップレイアウトJSONで指定されたウィジェットのバージョンに基づいて動作します。 デスクトップレイアウト内のウィジェットのバージョンを常に最新の状態に保つことは非常に重要です。

管理者は、このCRMコネクタのすべてのデスクトップレイアウトがこのウィジェットバージョンを使用することを確認する必要があります。If the layout is not updated to use the latest version, functionality will no longer be supported and may cease to work correctly.

  • サービスナウの最終アップデート — .1.0_v5.0.3.json ServiceNow_Desktop_0。 2024年3月現在、パッケージのバージョンは1.0.9です
  • 最新の XML 更新—Webexcc-ServiceNow-Update-Setv7-1-ActionsWidget.xml、2024年6月

この投稿記事は役に立ちましたか?
この投稿記事は役に立ちましたか?