利用事例: ディスク問題をチャットボットで解決

この使用ケースでは、NexthinkのAPI機能とチャットボットソリューションを統合して、ディスク関連の問題を修正するための手順を詳述します。

このドキュメントには、問題の解決に不可欠な一般的なチャットボットタスクのためのNQL例を示しています。

  • 従業員にデバイスの問題に関する基本的なトラブルシューティングを提供する。

  • 従業員デバイスに関するNexthinkデータを活用して基本的なデバイス情報を取得する。

  • ディスクの問題を解決するための修正を開始する。

ステップ1 - API技術を使用してディスク問題の解決のためのユーザーとチャットボットの対話を設計する

従業員とチャットボットの対話の標準化手順を設計し、各ステップで使用するAPI技術を定義します。

チャットボットのフローを理解するためにNexthink REST APIを使用したチャットボットの統合ドキュメントを参照してください。

次の表は、この使用ケースのために設計された対話のステップを示しています。

対話ステージ
API技術
  1. 通信の認証

API資格情報を設定し、APIを通じてトークンを収集します。

  1. デバイスの識別

チャットボットがユーザー名に基づいてデバイスを識別できるようにNQL APIを使用します。 または、データエクスポーターを使用します。

  1. ユーザーデバイスの診断

デバイスのパフォーマンスデータとGet Startup ImpactおよびGet Battery Statusリモートアクションの出力を取得するためにNQL API(またはデータエクスポーター)を使用します。

  1. 問題の修正

リモートアクションAPIを使用して、ユーザーのデバイスでDisk Cleanupリモートアクションをトリガーします。

  1. 修正のフォローアップ

NQL APIを使用して修正のステータスと詳細を取得し、修正結果をユーザーに通知します。

技術の選択は、現在のNexthink機能の使用方法やライセンスで利用可能な制限によって決まります。 Nexthink Infinityの制限と限界の概要のドキュメントページを参照して、さらに詳しい情報を含むAPIの制限について確認してください。


ステップ2 - APIを介したチャットボット統合をサポートするためにNexthinkコンテンツを設定する

NexthinkウェブインターフェイスでAPI機能を設定します。 Nexthinkは、各機能が依存関係があるため、リストされた順序に従うことを推奨しています。 それでも、あなたの好みに応じてさまざまなソリューション間をナビゲートする柔軟性があります。

データ収集リモートアクションの設定

Nexthinkライブラリから次のリモートアクションをインストールします。

  • Get Startup Impact

  • Get Battery Statusです。

実行を毎日行うようにスケジュールします。 詳細については、リモートアクションの管理を参照してください。

修正リモートアクションの設定

NexthinkライブラリからDisk Cleanupリモートアクションをインストールします。 すでにインストール済みの場合は、それをコピーして以下のように設定します。

Disk Cleanupリモートアクションの入力パラメータ

入力
推奨値

DiskCleanupCampaignId

キャンペーンを表示する場合は、ライブラリキャンペーンのdisk_cleanup_invokeを使用します。

キャンペーン確認ポップアップを表示しない場合は、値を00000000-0000-0000-0000-000000000000に設定します。

CleanupCompletedCampaignId

キャンペーンを表示する場合は、ライブラリキャンペーンのdisk_cleanup_completedを使用します。

キャンペーン通知ポップアップを表示しない場合は、値を00000000-0000-0000-0000-000000000000に設定します。

RemoveFilesNotModifiedInDays

ライブラリデフォルト値 (7)

MaximumDelayInSeconds

ライブラリデフォルト値 (30)

CleanupLevel

クリーンアップレベル、LightまたはDeepを選択します。

このフィールドは、キャンペーンを使用しないことを選択し、従業員がクリーンアップレベルを選択する場合にのみ機能します。 それ以外の場合は、従業員の選択が優先されます。

NQL APIクエリの作成

設計されたシナリオに従って、3つのNQL APIクエリを作成する必要があります。

  • ユーザーのusernameに基づいてユーザーデバイスを取得する(ステージ1:デバイスの識別)。

  • 現在のトピックのために診断を行うためのデバイスデータを取得する(ステージ2:デバイスの診断)。

  • リモートアクションのステータスと結果を取得する(ステージ4:修正後のフォローアップ)。

各NQL APIクエリの詳細を参照してください。

ユーザー名に基づいてユーザーデバイスを取得する

クエリID: #get_device_basic_infos

NQLクエリ:

devices during past 7d
| with session.events past 7d
| where user.name == $username
| list collector.uid, device.name, operating_system.platform, operating_system.name,
       hardware.type, hardware.manufacturer, last_seen
| sort last_seen desc
  • フィールドcollector.uidはシステムが後の対話でリモートアクションをトリガーするために使用するキーです。

  • usernameに基づいて一致します。 代替アプローチも利用可能です。詳細はPre-builtを参照してください。

現在のトピックのために診断を行うためのデバイスデータを取得する

クエリID: #diagnose_device_bad_health

NQLクエリ:

devices
| where device.name == $device_name
| include device_performance.events during past 24h
| compute free_space = system_drive_free_space.avg() / 1000000000
| list collector.uid, device.name, free_space,
       remote_action.get_startup_impact_windows.execution.outputs.HighImpactCount,
       remote_action.get_battery_status.execution.outputs.BatteryHealth

このクエリには、チャットボットが前段の対話ステップで取得するdevice_nameパラメータが含まれています。

この例では、次の3つのデータポイントを収集します。

  • free_spaceはデフォルトの指標です。

  • 起動時に高い影響を与えるアプリケーションの確認(HighImpactCount)には、 NexthinkライブラリからのGet Startup Impactというリモートアクションが必要です。

  • バッテリーの健康状態の確認(BatteryHealth)には、NexthinkライブラリからのGet Battery Statusというリモートアクションが必要です。

詳細は、データ収集リモートアクションの設定セクションを参照してください。

リモートアクションがスケジュールされていない、またはデバイスでまだ実行されていない場合、対応する列は空になります。

リモートアクションのステータスと結果を取得する

クエリID: #get_remote_action_result

NQLクエリ:

remote_action.executions past 24h
| where request_id == $request_id
| list request_id, device.name, remote_action.name, status, status_details, outputs

このクエリには、チャットボットがリモートアクションAPI呼び出しの前段の対話ステップで取得するrequest_idパラメータが含まれています。

同一の汎用クエリを設定済みのどのリモートアクションにも使用できます。

Nexthinkは、APIでリモートアクションをトリガーしてから1分以降にリモートアクションの結果を取得する呼び出しを行うことをお勧めします。

API資格情報を設定する

NexthinkのウェブインターフェイスでAPI資格情報を作成して、Nexthinkとチャットボット間の安全な通信を確立します。 Permissionsセクションから、Remote Actions APINQL APIを選択してください。 詳細については、API資格情報を参照してください。


ステップ3 - チャットボットのサービス層内でAPI呼び出しを実装する

利用事例: ディスク問題をチャットボットで解決のドキュメントを参照して、利用可能なプレ構築コンテンツを適応し、チャットボット統合ロジックの設定を加速します。

Nexthink内で必要なすべてのAPI機能を設定した後、チャットボットのサービス層内でNexthink REST API呼び出しを実装します。

次のステージは、ユーザーとチャットボットの対話設計を反映しています。

チャットボットの第一ステージ:通信の認証

以下のAPI呼び出しを実行する前に、有効な認証トークンを取得する必要があります。 Nexthink開発者のドキュメントを参照し、生成したAPI資格情報を使用して有効なOAuthトークンを取得する方法を確認してください。

チャットボットの第二ステージ:デバイスの識別

従業員(ユーザー) デバイスに問題があります

デバイスを識別するために、前に作成した#get_device_basic_infos NQL APIクエリを使用します(参照:ユーザー名に基づいてユーザーデバイスを取得する)。

APIリクエスト

POST /api/v1/nql/execute

{
 "queryId": "#get_device_basic_infos",
 "parameters": {
 "username": "[チャットボットで識別されたユーザー名]"
  }
}
例としてのAPI応答

ステータス200

{
 "queryId": "#get_device_basic_infos",
 "executedQuery": "...",
 "rows": 2,
 "executionDateTime": { ... },
 "headers": [...],
 "data": [...]
}

注意:

  • ステータスコードが200以外の場合、リクエストが失敗したか、制限に達した可能性があります。 詳細については、Nexthink開発者のドキュメントを参照してください。

  • 返されたリストが空の場合、ユーザーは指定された期間(この例では過去7日間)内にデバイスをアクティブに使用していないことを意味します。 従業員がデバイスを使い始めた時間とそのデータがNexthinkデータプラットフォームで利用可能になる時間には、小さな遅延があります。

チャットボットの第三ステージ:デバイスの診断

(チャットボット) 次のデバイスを見つけました。どのデバイスに問題がありますか?

(1)ノートパソコン XN1231242-2142 (Lenovo)

(2)ノートパソコン XCX124231-1231 (Apple)

従業員(ユーザー) 1

デバイス情報を取得するためには、前に作成した#diagnose_device_bad_health NQL APIクエリを使用します(参照:現在のトピックのために診断を行うためのデバイスデータを取得する)。

前のステップからの入力

第二ステージ:デバイスの識別でデバイス名を取得しました。

APIリクエスト

POST /api/v1/nql/execute

{
 "queryId": "#diagnose_device_bad_health",
 "parameters": {
 "device_name": "[チャットボットで識別されたデバイス名]"
  }
}
例としてのAPI応答

ステータス200

{
 "queryId": "#diagnose_device_bad_health",
 "executedQuery": "...",
 "rows": 1,
 "executionDateTime": { ... },
 "headers": [
 "device.collector.uid",
 "device.name",
 "free_space_GB",
 "remote_action.get_startup_impact_windows.execution.outputs.HighImpactApplications",
 "remote_action.get_startup_impact_windows.execution.outputs.HighImpactCount",
 "remote_action.get_battery_status.execution.outputs.BatteryHealth"
    ],
 "data": [
        [
 "e0aa796d-e3af-47b5-88d8-228cf5551fb6",
 "XN1231242-2142",
 2.2316807136971,
 "",
 null,
 0.9
        ]
   ]
}
  • collector.uidのフィールドはシステムがリモートアクションをトリガーするために後続のやり取りで使用するキーであることに注意してください。

  • チャットボットは、会話の意思決定枝として三つの列を使用します。

    • もし free_space_GB <= 6 ならば ライブラリリモートアクションをトリガーして対策 ディスククリーンアップを実行します。

    • もし remote_action.get_startup_impact_windows.execution.outputs.HighImpactCount > 0 ならば ライブラリリモートアクションを使用してスタートアップメニューからのアプリケーション無効化を実行し、remote_action.get_startup_impact_windows.execution.outputs.HighImpactApplications の値を用いて高影響のアプリケーションを無効化します。

    • もし remote_action.get_battery_status.execution.outputs.BatteryHealth <= 0.85 ならば バッテリー交換が必要です: チャットボットによってITSMチケットを作成し、フォローアップを行います。

注意:

  • ステータスコードが200以外の場合、リクエストが失敗したか、またはレート制限に達しています。 詳しくは、 Nexthink 開発者プラットフォーム のドキュメントを参照してください。

  • システムによって返されるリストが空の場合、デバイスは見つかりませんでした。

  • 診断フィールドのいずれかがnullまたは空の場合、情報は利用できません。 空の値の主な理由は次の通りです:

    • データプラットフォームフィールドにおいて、そのフィールドがプラットフォームでサポートされていません。 詳細については、NQL データモデル のドキュメントを参照してください。

    • リモートアクションフィールドにおいて、システムはまだリモートアクションを正常に実行していません。 リモートアクションのスケジュールと対象のNQLクエリ、そしてリモートアクションダッシュボードをチェックし、実行エラーの可能性を見つけましょう。

チャットボット 第四段階: 問題の是正

(チャットボット) ありがとうございます、デバイスには約 2 GB の空きディスクスペースしか残っていないようです。

遅延を防ぐために不要なファイルをクリーンアップできます。

続行しますか?

従業員 (ユーザー) はい

リモートアクション API を使用して、前のステップで設定した ディスククリーンアップのリモートアクションを実行し、問題を解決します (参照: リモートアクションの設定)。

リモートアクションAPIの応答には、実行ステータス(成功/失敗)と定義された出力が含まれます。 チャットボットはこの情報を使用して、修正が正しく適用されたのか、必要に応じてトラブルシューティングを続行するかを確認することができます。

前のステップからの入力

#diagnose_device_bad_health NQL API(またはデータエクスポート)を経由して 第三段階: デバイスの診断collector.uid を取得しました。

APIリクエスト

POST /api/v1/act/execute

{
 "remoteActionId": "disk_cleanup",
 "devices": ["e0aa796d-e3af-47b5-88d8-228cf5551fb6"]
}
API応答の例

ステータス 200

{
 "requestId":"f27efd0c-8cb2-4d00-aae0-261aa06729c7",
 "expiresInMinutes":10080
}
  • 成功したAPI呼び出しは、リモートアクションがエンドポイントが準備でき次第、実行されるようにスケジュールされたことを示しています。

  • 返されたリクエストIDを使用して実行ステータスをフォローアップすることができます。

  • この呼び出しは非同期であるため、成功したAPI呼び出しがリモートアクションの実行開始や完了を示すわけではありません。

注意:

  • ステータスコードが200以外の場合、リクエストが失敗したか、またはレート制限に達しています。 詳しくは、Nexthink 開発者ポータル のドキュメントを参照してください。

チャットボット 第五段階: 修正のフォローアップ

(チャットボット) 修正を開始しました。 すぐに終了します。

以前に作成した #get_remote_action_result NQL API クエリを使用してリモートアクションのステータスと結果を取得します。

(参照: リモートアクションのステータスと結果の取得)。

前のステップからの入力

第四段階: 問題の是正 にて リモートアクションAPI 呼び出しを通じて request_id を取得しました。

APIリクエスト

POST /api/v1/nql/execute

{
 "queryId": "#get_remote_action_result",
 "parameters": {
 "request_id": "f27efd0c-8cb2-4d00-aae0-261aa06729c7"
  }
}
API応答の例

ステータス 200

{
 "queryId": "#get_remote_action_result",
 "executedQuery": "...",
 "rows": 1,
 "executionDateTime": { ... },
 "headers": [
 "remote_action.execution.request_id",
 "device.name",
 "remote_action.name",
 "remote_action.execution.status",
 "remote_action.execution.status_details",
 "remote_action.execution.outputs"
    ],
 "data": [
        [
 "XN1231242-2142",
 "f27efd0c-8cb2-4d00-aae0-261aa06729c7",
 "Disk Cleanup",
 "success",
 "Disk cleanup successfully performed. \r\nPowerShell exited with code 0\n",
 "{\"CleanupSpace\":1324470272.0}"
        ]
    ]
}
  • remote_action.execution.statusは現在の実行ステータスを示します。 主なステータスは次のとおりです:

    • リモートアクションが正常に実行された際のsuccess

    • システムがまだ実行を完了していない場合のin_progress。 様々なリモートアクションのステータスについて詳しくは、リモートアクション のドキュメントを参照してください。

  • remote_action.execution.status_details はトラブルシューティングに役立つリモートアクション実行の詳細を含みます。 設計上、従業員に直接見せることはありません。

  • remote_action.execution.outputs は、リモートアクションの出力値を含むJSONマップです。 ディスククリーンアップリモートアクションでは、返される値は解放されたスペースの量(バイト単位)です。

注意:

  • ステータスコードが200以外の場合、リクエストが失敗したか、またはレート制限に達しています。 詳しくは、Nexthink 開発者ポータル のドキュメントを参照してください。

  • システムが空のリストを返した場合、システムはまだリモートアクションの実行を作成していません。 これは、APIをトリガーした時間の直後にAPIを呼び出した場合や、実行が24時間以上前である場合に発生します(クエリで指定された時間枠)。

会話の終了

このステップで取得したリモートアクションのステータス出力を表示します。

(チャットボット) 全て完了しました - 1.3 GBを解放しました。 他にご助力できることはありますか?


関連トピック

Last updated

Was this helpful?