ServiceNow アクションを追加する

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

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

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

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


フィールド

説明

Caller

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

Title

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

Description

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

Category

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

Impact

インシデントの影響。

Urgency

インシデントの緊急度。

State

インシデントの状態。

Assigned to

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

Assignment group

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

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. [All] > [System OAuth] > [Application registry] に移動します。
  3. [New] をクリックし、[Create an OAuth API endpoint for external clients] を選択します。クライアント ID とクライアント シークレットを取得します。
  4. 必須情報を入力します。
    1. 名前: 一意の名前。
    2. リダイレクト URL: https://vertexaisearch.cloud.google.com/oauth-redirect
  5. [Submit] をクリックして、認証情報を作成します。
  6. 送信したら、名前をクリックしてクライアント シークレットを表示します。
  7. シークレットはマスクされています。シークレットのマスクを解除して表示するには、横にある鍵アイコンをクリックします。
  8. 必要に応じて使用するクライアント ID とシークレットのコピーを保管しておきます。
  9. developer.service-now.com に移動し、[Manage instance password] をクリックします。
  10. 必要に応じて使用するユーザー名とパスワードのコピーを保管しておきます。
  11. この段階で、ServiceNow データストアの設定に必要な 5 つの情報がすべて揃っています。管理者ロールを使用してデータを取得することに問題がない場合は、データストアの作成に進みます。

ロールと権限を設定する

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

  1. ACL ルールを含むカスタムロールを作成します。
    1. [All] > [User administration] > [Roles] に移動します。
    2. [New] をクリックして、新しいロールを作成します。
    3. 名前を選択して [Submit] をクリックします。
    4. [System security] > [Access Control(ACL)] に移動して、新しい ACL ルールを作成します。
    5. [New] をクリックして、新しい ACL ルールを作成します。
    6. sys_user_role などのロールを選択します。
    7. [Submit] をクリックして、ロールを割り当てます。
    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. [All] > [User Administration] > [Users] に移動して、ユーザーを選択します。
    2. ロールを付与するユーザーを見つけて選択します。
  3. ユーザーがいない場合は、[System security] > [Users and groups] > [Users] に移動します。
  4. [New] をクリックして、User テーブルに新しいサービス アカウントを作成します。
  5. [Web service access only] チェックボックスをオンにします。
  6. ページの下部にある [Roles] テーブルに移動します。
  7. 右側の [Edit] をクリックします。
  8. 作成したロールを付与して、ユーザーに割り当てます。作成したロールのタイプに応じて、適切なロールを選択して割り当てます。
  9. ユーザーのユーザー名とパスワードを取得します。同じページで、[Set password] をクリックします。
  10. パスワードを自動生成して、後で使用できるように保存します。
    1. ユーザー ID: manager
    2. パスワード: 自動生成されたパスワードを入力します。

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

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

新しいロールを作成する

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

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

  1. [User Administration] > [Users] に移動します。
  2. 制限付きアクセスが必要なユーザーを選択します。
  3. ユーザー レコードで、[Roles] 関連リストに移動します。
  4. [Roles] 関連リストで、[Edit] をクリックします。
  5. [Collection] 列で、作成したロールを見つけて選択します。
  6. [Add] をクリックして、ロールを [Roles List] に移動します。
  7. [Save] をクリックします。

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

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

    • Type: record を選択します。
    • Operation: read を選択します。
    • Name:
      • 最初のプルダウンで、sys_db_object テーブルを選択します。
      • 2 つ目のプルダウンで、[None] を選択します。
    • Requires role: [Insert a new row] フィールドで、新しく作成したロールを検索して選択します。
  4. [Submit] をクリックします。

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

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

  1. [System Security] > [Access Controls(ACL)] に移動します。
  2. [New] をクリックします。
  3. 次のフィールドを構成します。
    • Type: record を選択します。
    • Operation: read を選択します。
    • Name:
      • 最初のプルダウンで、ターゲット テーブル(sys_db_object など)を選択します。
      • 2 つ目のプルダウンで、テーブル内のすべてのフィールドに権限を適用するか、name などの特定のフィールド名を選択します。
    • Requires role: [Insert a new row] フィールドで、新しく作成したロールを検索して選択します。
  4. [Submit] をクリックします。
  5. これらの手順を繰り返して、sys_glide_object テーブルと sys_dictionary テーブルの特定のフィールドまたはすべてのフィールドにフィールドレベルの権限を実装します。

Workforce プールを構成する

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

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

ServiceNow アクションを構成する

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

フィールド 説明
Client ID ServiceNow 統合のクライアント ID。
Client secret ServiceNow 統合のクライアント シークレット
Username 統合のユーザー アカウント。
Password 統合のパスワード。
Instance URL(または Destination host) ServiceNow サイトのインスタンス URL。これは次の形式になります。 https://INSTANCE_NAME.service-now.com
Auth URL ServiceNow API クライアントの認可 URI。これは次の形式になります。 https://INSTANCE_NAME.service-now.com/oauth_auth.do
Token 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 を設定する
    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. 省略可: アプリのセキュリティ レイヤを追加するには、[PKCE サポートを有効にする] を選択します。

  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 ライセンスが必要です。