ServiceNow アクションを追加する

ServiceNow アクションが有効になっている場合、エンドユーザーはアシスタントに次の ServiceNow アクションの実行を依頼できます。

  • ServiceNow インシデントを作成する
  • ServiceNow インシデントを更新する

たとえば、ユーザーがアプリに「パソコンのハードウェア障害に関する ServiceNow インシデントを作成して」や「ServiceNow インシデント INC0010001 の緊急度を「高」に更新して」と入力します。アシスタントは、必要に応じて追加の詳細情報を求め、作成または更新のリクエストを確認するようユーザーに求めます。

アシスタントは、アクションを通じて次の ServiceNow フィールドを読み取り、更新できます。


フィールド

説明

発信者

必須。インシデントの作成を代行する呼び出し元のメールアドレス(user@google.com など)。

タイトル

作成するインシデントの短いタイトル。

説明

作成するインシデントの詳細。

カテゴリ

作成するインシデントのカテゴリ。

影響

インシデントの影響。

緊急度

インシデントの緊急度。

状態

インシデントの状態。

割り当て先

インシデントの割り当て先となるユーザーのメールアドレス(例: user@google.com)。

割り当てグループ

インシデントを割り当てるユーザー グループ。

Close code(クローズコード)

インシデントのクローズ コード。

Close notes(クローズメモ)

インシデントのクローズ メモ。

ServiceNow の認証と権限を設定する

ServiceNow アクションを有効にする前に、ServiceNow 管理者がアクションの ServiceNow コネクタを承認して設定する必要があります。これは、インテグレーションを接続し、アクションの読み取りと書き込みの権限を許可するために必要です。

接続を設定する前に、次のものが揃っていることを確認してください。

  • 管理者権限: ServiceNow の管理者である必要があります。

  • ServiceNow インスタンス: ServiceNow Developer ドキュメントの手順に沿って、ServiceNow インスタンスを作成します。

  • Google Cloud プロジェクト: 組織レベルの構成を管理できる管理者アカウントを使用して Google Cloud プロジェクトを設定し、組織が Workforce プールを設定できるようにします。

  • Workforce プール: 組織が Workforce プールを管理するように設定されていることを確認します。

詳細については、インバウンド REST を使用した OAuth 2.0 のブログ投稿をご覧ください。

ServiceNow を設定する

ServiceNow には、次の 2 つのプライマリ サイトがあります。

  1. メインの ServiceNow サイト: ServiceNow インスタンスのサイト。
    • ユーザー、グループ、システム管理タスクを管理します。
    • URL: ServiceNow インスタンスの URL。
    • 自分の管理者認証情報を使用してログインします。
  2. デベロッパー サイト:
    • ナレッジベースを構成し、ワークフローを設定して、カスタム アプリケーションを開発します。
    • URL: https://developer.service-now.com
    • ServiceNow ID を使用してログインします。

OAuth エンドポイントを作成する

OAuth エンドポイントを作成するには、次の操作を行います。

  1. 管理者権限を使用してメインの ServiceNow インスタンスにログインします。
  2. [すべて] > [システム OAuth] > [アプリケーション レジストリ] に移動します。
  3. [新規] をクリックし、[外部クライアント用の OAuth API エンドポイントを作成する] を選択します。クライアント ID とクライアント シークレットを取得します。
  4. 必要な情報を入力します。
    1. 名前: 一意の名前。
    2. リダイレクト URL: https://vertexaisearch.cloud.google.com/oauth-redirect
  5. [送信] をクリックして、認証情報を作成します。
  6. 送信したら、名前をクリックしてクライアント シークレットを表示します。
  7. シークレットはマスクされています。シークレットのマスクを解除して表示するには、横にある鍵アイコンをクリックします。
  8. 必要に応じて使用するクライアント ID とシークレットのコピーを保管しておきます。
  9. developer.service-now.com に移動し、[インスタンスのパスワードを管理する] をクリックします。
  10. 必要に応じて使用するユーザー名とパスワードのコピーを保管しておきます。
  11. この段階で、ServiceNow データストアの設定に必要な 5 つの情報がすべて揃っています。管理者ロールを使用してデータを取得することに問題がない場合は、データストアの作成に進みます。

ロールと権限を設定する

ユーザーを作成して管理するには、セキュリティ管理者ロールが必要です。このロールを付与されていない場合は、プロフィールで [ロールを昇格] をクリックして、ロールを security_admin に昇格します。security_admin ロールを選択し、[更新] をクリックします。ロールの作成とユーザーの管理には、security_admin ロールが必要です。

  1. ACL ルールを含むカスタムロールを作成します。
    1. [すべて] > [ユーザー管理] > [ロール] に移動します。
    2. [新規] をクリックして、新しいロールを作成します。
    3. 名前を選択して [送信] をクリックします。
    4. [システム セキュリティ] > [アクセス制御(ACL)] に移動して、新しい ACL ルールを作成します。
    5. [New] をクリックして、新しい ACL ルールを作成します。
    6. sys_user_role などのロールを選択します。
    7. [送信] をクリックして、ロールを割り当てます。
    8. テーブルへのアクセス権がすべて付与されるまで、このプロセスを繰り返します。コネクタは、各エンティティを正常に実行するために、次のテーブルに対するアクセス権が必要です。
      1. インシデント: incident
      2. カタログ アイテム: sc_cat_itemsc_cat_item_user_criteria_mtomsc_cat_item_user_criteria_no_mtomsc_cat_item_user_mtomsc_cat_item_user_no_mtom
      3. 知識: kb_knowledgekb_knowledge_basekb_uc_can_read_mtomkb_uc_can_contribute_mtom
      4. 添付ファイル: リストに記載されているすべてのアイテム。
      5. ID: sys_user_rolesys_user_has_rolesys_user_groupsys_user_grmembersys_user
      6. 新しい条件が取得されるたびに更新: core_companycmn_locationcmn_department
      7. ユーザー条件: user_criteria
    9. 検索バーで sys_security_acl_role_list.do に移動して、すべての ACL が更新されていることを確認します。
    10. 確認するロールを選択します。
    11. 選択したロールにすべての必要な ACL が割り当てられていることを確認します。
  2. サービス アカウントにロールを付与します。
    1. [すべて] > [ユーザー管理] > [ユーザー] に移動して、ユーザーを選択します。
    2. ロールを付与するユーザーを見つけて選択します。
  3. ユーザーがいない場合は、[システム セキュリティ] > [ユーザーとグループ] > [ユーザー] に移動します。
  4. [新規] をクリックして、User テーブルに新しいサービス アカウントを作成します。
  5. [Web サービスへのアクセスのみ] チェックボックスをオンにします。
  6. ページの下部にある [ロール] テーブルに移動します。
  7. 右側の [編集] をクリックします。
  8. 作成したロールを付与して、ユーザーに割り当てます。作成したロールのタイプに応じて、適切なロールを選択して割り当てます。
  9. ユーザーのユーザー名とパスワードを取得します。同じページで、[パスワードを設定] をクリックします。
  10. パスワードを自動生成して、後で使用できるように保存します。
    1. ユーザー ID: manager
    2. パスワード: 自動生成されたパスワードを入力します。

専用のロールを作成して ACL を割り当てる

管理者以外のユーザーロールを使用している場合、ユーザーロールに必要な権限が含まれていても、ServiceNow アクションの実行時に問題が発生することがあります。この問題を回避するには、専用のロールを作成して必要な権限を割り当てます。

新しいロールを作成

  1. [ユーザー管理] > [ロール] に移動します。
  2. [New] をクリックします。
  3. 新しいロールの名前を指定します(例: database_admin_restricted)。
  4. 必要に応じて、説明を入力します。
  5. [送信] をクリックします。

認証ユーザーに新しいロールを割り当てる

  1. [ユーザー管理] > [ユーザー] に移動します。
  2. 制限付きアクセスが必要なユーザーを選択します。
  3. ユーザー レコードで、[ロール] 関連リストに移動します。
  4. [ロール] 関連リストで、[編集] をクリックします。
  5. [コレクション] 列で、作成したロールを見つけて選択します。
  6. [追加] をクリックして、ロールを [ロールリスト] に移動します。
  7. [保存] をクリックします。

行レベルの権限を実装する

  1. [System Security] > [Access Controls (ACL)] に移動します。
  2. [New] をクリックします。
  3. 次のフィールドを構成します。

    • タイプ: [レコード] を選択します。
    • オペレーション: [読み取り] を選択します。
    • 名前:
      • 最初のプルダウンで、sys_db_object テーブルを選択します。
      • 2 つ目のプルダウンで、[なし] を選択します。
    • ロールが必要: [新しい行を挿入] フィールドで、新しく作成したロールを検索して選択します。
  4. [送信] をクリックします。

  5. これらの手順を繰り返して、sys_glide_object テーブルと sys_dictionary テーブルに行レベルの権限を実装します。

フィールド レベルのアクセス権限を実装する

  1. [System Security] > [Access Controls (ACL)] に移動します。
  2. [New] をクリックします。
  3. 次のフィールドを構成します。
    • タイプ: [レコード] を選択します。
    • オペレーション: [読み取り] を選択します。
    • 名前:
      • 最初のプルダウンで、ターゲット テーブル(sys_db_object など)を選択します。
      • 2 つ目のプルダウンで、テーブル内のすべてのフィールドに権限を適用するか、name などの特定のフィールド名を選択します。
    • ロールが必要: [新しい行を挿入] フィールドで、新しく作成したロールを検索して選択します。
  4. [送信] をクリックします。
  5. これらの手順を繰り返して、sys_glide_object テーブルと sys_dictionary テーブルの特定のフィールドまたはすべてのフィールドにフィールドレベルの権限を実装します。

Workforce プールを構成する

次のいずれかの構成で Workforce プールを設定する手順は次のとおりです。

  1. Azure OIDC の設定
  2. Azure SAML の設定
  3. Okta と OIDC の設定
  4. Okta と SAML の設定

ServiceNow アクションを構成する

開始する前に、 Google Cloud 管理者が ServiceNow の認証と権限を設定するの手順を完了し、次の情報を提供していることを確認してください。

フィールド 説明
クライアント ID ServiceNow 統合のクライアント ID。
クライアント シークレット ServiceNow 統合のクライアント シークレット
ユーザー名 統合のユーザー アカウント。
パスワード 統合のパスワード。
インスタンス URL(または宛先ホスト ServiceNow サイトのインスタンス URL。これは次の形式になります。 https://INSTANCE_NAME.service-now.com
認証 URL ServiceNow API クライアントの認可 URI。これは次の形式になります。 https://INSTANCE_NAME.service-now.com/oauth_auth.do
トークンの URL ServiceNow API クライアントの更新トークン URI。これは次の形式になります。 https://INSTANCE_NAME.service-now.com/oauth_token.do

Google Cloud コンソールで ServiceNow アクションを構成する

コンソールを使用してアプリにアクションを追加する手順は次のとおりです。

  1. Google Cloud コンソールで、Agent Builder ページに移動します。
  2. ナビゲーション メニューで [アクション] をクリックします。
  3. [アクションを追加] をクリックします。
  4. アクションのソースとして ServiceNow を選択するには、ServiceNow カードで [接続] をクリックします。
  5. [構成] ページで、[インスタンスを選択] プルダウン リストから ServiceNow データストアを選択します。
    今すぐサービスを設定する
    ServiceNow の設定を構成する
  6. 選択したコネクタ インスタンスの認可情報を入力します。

    1. OAuth エンドポイントを作成したときに取得した新しいクライアント ID新しいクライアント シークレットを入力します。
    2. ServiceNow の認証 URI を入力します。https://<var>INSTANCE_NAME</var>.service-now.com/oauth_auth.do の形式を使用します。
    3. ServiceNow の宛先 URI を入力します。https://<var>INSTANCE_NAME</var>.service-now.com の形式を使用します。
    4. ServiceNow のトークン URI を入力します。https://<var>INSTANCE_NAME</var>.service-now.com/oauth_token.do の形式を使用します。
    5. ServiceNow 管理者のユーザー アカウントパスワードを入力します。
  7. 省略可: アプリのセキュリティ レイヤを追加するには、[Enable PKCE support] を選択します。

  8. 省略可: [システム テーブルを含める] を選択して、ServiceNow の基盤となるシステム情報(システム テーブル)にアクセスできるようにします。このオプションは、慎重に検討したうえで、どうしても必要な場合にのみ選択してください。

  9. 有効にする ServiceNow アクションを選択します。

  10. [設定を終了する] をクリックします。アクションは [アクション] ページに表示されます。アプリでアクションが有効になるまで数分かかります。

API を使用して ServiceNow アクションを構成する

API を使用してアプリにアクションを追加する手順は次のとおりです。

  1. アクション用の ServiceNow コネクタを作成します。

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -H "X-GFE-SSL: yes" \
      -H "X-Goog-User-Project: PROJECT_ID" \
      "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global:setUpDataConnector" \
      -d '{
        "collectionId": "COLLECTION_ID",
        "collectionDisplayName": "COLLECTION_DISPLAY_NAME",
        "dataConnector": {
          "dataSource": "servicenow",
          "params": {
            "user_account": "USER_ACCOUNT",
            "client_id": "CLIENT_ID",
            "client_secret": "CLIENT_SECRET",
            "password": "PASSWORD",
            "instance_uri": "INSTANCE_URI",
            "auth_type": "OAUTH_PASSWORD_GRANT"
          },
          "refreshInterval": "86400s",
          "entities": [
            {
              "entityName": "knowledge_base",
              "params": {
                "inclusion_filters":{},
                "exclusion_filters":{}
              }
            },
            {
              "entityName": "catalog"
            },
            {
              "entityName": "knowledge"
            },
            {
              "entityName": "incident"
            },
            {
              "entityName": "attachment"
            }
          ],
          "syncMode": "PERIODIC",
          "staticIpEnabled": false
        }
      }'
    

    次のように置き換えます。

    • PROJECT_ID: 実際のプロジェクトの ID。

    • COLLECTION_ID: コレクションの ID。

    • COLLECTION_DISPLAY_NAME: コレクションの表示名。

    • USER_ACCOUNT: ServiceNow 統合のユーザー アカウント。

    • CLIENT_ID: ServiceNow 統合のクライアント ID。

    • PASSWORD: ServiceNow インテグレーションのパスワード。

    • INSTANCE_URI: ServiceNow サイトのインスタンス URI。

  2. アクション構成を含めるようにコネクタを更新します。

    curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token --project "PROJECT_NUMBER")" \
      -H "Content-Type: application/json" \
      -H "X-Goog-User-Project: PROJECT_ID" \
      "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/COLLECTION_ID/dataConnector?update_mask=action_config,bap_config,destination_configs" \
      -d '{
      "name": "projects/PROJECT_ID/locations/global/collections/COLLECTION_ID/dataConnector",
      "actionConfig": {
        "isActionConfigured": true,
        "actionParams": {
          "client_id": "CLIENT_ID",
          "client_secret": "CLIENT_SECRET",
          "auth_uri": "AUTH_URI",
          "token_uri": "TOKEN_URI",
          "pkce_support_enabled": true,
          "include_system_tables": true
        }
      },
      "bapConfig": {
        "supported_connector_modes": "ACTIONS"
      },
      "destinationConfigs": [
        {
          "key": "host_url",
          "destinations": [
            {
              "host": "INSTANCE_URL"
            }
          ]
        }
      ]
    }'
    

    次のように置き換えます。

    • PROJECT_ID: 実際のプロジェクトの ID。

    • COLLECTION_ID: コレクションの ID。

    • USERNAME: ServiceNow 統合のユーザー アカウント。

    • CLIENT_ID: ServiceNow 統合のクライアント ID。

    • PASSWORD: ServiceNow インテグレーションのパスワード。

    • AUTH_URI: ServiceNow 統合の認可 URI。

    • TOKEN_URI: ServiceNow インテグレーションの更新トークン URI。

    • INSTANCE_URL: ServiceNow サイトのインスタンス URL。

  3. アシスタントで ServiceNow アクションを有効にします。

    curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token --project "PROJECT_NUMBER")" \
      -H "Content-Type: application/json" \
      -H "X-Goog-User-Project: PROJECT_NUMBER" \
      "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID/assistants/default_assistant?update_mask=enabledActions" \
      -d '{
        "name": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID/assistants/default_assistant",
        "enabledActions": {
          "projects/PROJECT_NUMBER/locations/global/collections/CONNECTOR_ID/dataConnector": {
            "actionInfo": [
              {
                "actionName": "create_servicenow_incident",
                "actionDisplayName": "Create ServiceNow Incident"
              },
              {
                "actionName": "update_servicenow_incident",
                "actionDisplayName": "Update ServiceNow Incident"
              }
            ]
          }
        }
      }'
    

    次のように置き換えます。

    • PROJECT_NUMBER: Google Cloud プロジェクトの番号。

    • APP_ID: アプリの ID。

    • CONNECTOR_ID: 前の手順で生成したコネクタのコレクション ID。

アクションを追加すると、アシスタントはアプリ内でエンドユーザーに代わってアクションを実行できるようになります。ユーザーがアシスタントに ServiceNow アクションの実行を初めてリクエストしたときに、ServiceNow アカウントへのアクセスを承認するよう求められます。アシスタントを使用するには、Gemini Enterprise Plus ライセンスが必要です。