ディスクの問題をチャットボットで改善する

開始するために、一般的なチャットボットの使用事例に関する以下のNQLの例を確認してください。

従業員に基本的なトラブルシューティングを提供するために、従業員デバイスに関するNexthinkデータを活用して、基本的なデバイス情報を取得し、ディスク問題を修正するための修復を開始します。

前提条件

Nexthinkとあなたのチャットボットを統合する前に、以下の項目が揃っていることを確認してください。

  • Nexthinkライセンス

  • 管理者権限

API技術を用いたユーザー-チャットボット間の対話の設計

従業員とチャットボット間の対話の標準化された手順を設計し、各ステップで使用するAPI技術を定義します。 以下の表はこの例の対話ステップを示しています。

対話ステージ
API技術

ステップ 1: 通信の認証

API資格情報を構成し、APIを介してトークンを収集します。

ステップ 2: デバイスの識別

NQL APIを使用して、チャットボットがusernameに基づいてデバイスを識別できるようにします。 または、Data Exporterを使用します。

ステップ 3: デバイスの診断

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

ステップ 4: 問題の解決

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

ステップ 5: 修正後のフォローアップ

NQL APIを利用して修復の状況と詳細を取得し、修復結果をユーザーに知らせます。

テクノロジーの選択は、現在Nexthink機能をどのように使用しているか、およびライセンスで利用可能な制限によって決まります。 Nexthink Infinityのしきい値と制限の概要ドキュメントページを参照して詳しい情報を取得し、API制限などについて確認してください。

Nexthinkで

NexthinkのwebインターフェースでAPI機能を設定します。 Nexthinkは、一覧にある順序に従うことを推奨しており、いくつかの機能は相互に依存しています。 それでも、異なるソリューションの間を自分の好みに応じてナビゲートする柔軟性があります。

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

Nexthink Libraryから以下のリモートアクションをインストールしてください:

  • Get Startup Impact&#x20

  • Get Battery Status

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

このステップを完了した後、次のステップで使用するために、両方のリモートアクションのNQL IDを保存してください。

NQL ID:

  • get_startup_impact_windows

  • get_battery_status

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

Nexthink Libraryから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

クリーンアップレベル(軽度か深度)を選択します。

このフィールドはキャンペーンを使用せず、従業員がクリーンアップレベルの選択に関与する場合にのみ機能します。 そうでなければ、従業員の選択が優先されます。

このステップが完了したら、次のステップで使用するためにリモートアクションのNQL IDを保存してください。

NQL ID: disk_cleanup

NQL APIクエリの作成

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

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

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

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

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

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

クエリ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 LibraryからGet Startup Impactというリモートアクションが必要です。

  • バッテリー健康状態を確認するためには(BatteryHealth)、Nexthink Libraryから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

このクエリには$request_id パラメーターが含まれ、チャットボットは前の対話ステージでリモートアクションAPIコールからこれを取得します。

任意の構成されたリモートアクションに対して同じ汎用的なクエリを使用できます。

  • Nexthinkは、APIでリモートアクションをトリガーした後、1分以上経過してからリモートアクションの結果を取得することを推奨しています。

このステップが完了したら、次のステップで使用するためにすべてのNQL APIクエリのNQL IDを保存してください。

NQL ID:

  • #get_device_basic_infos

  • #diagnose_device_bad_health

  • #get_remote_action_result

API資格情報の作成

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

このステップを完了したら、Nexthink webインターフェースで資格情報を作成する際に取得したClient IDおよびClient Secretを保存してください。

チャットボットのサービスレイヤーで

Nexthink内で必要なAPI機能をすべて構成したら、チャットボットのサービスレイヤー内でAPIコールを実装に移ることができます。 以下のステップはユーザー-チャットボット間の対話設計を反映しています。

ステップ 1: 通信の認証

以下のAPIコールを実行する前に、有効な認証トークンを取得する必要があります。 有効なOAuthトークンを取得する方法については、Nexthink Nexthink Developerドキュメントをご参照ください。

ステップ 2: デバイスの識別&#x20

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

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

APIリクエスト

POST /api/v1/nql/execute

{
 "queryId": "#get_device_basic_infos",
 "parameters": {
 "username": "[チャットボットによって識別されたusername]"
  }
}
APIレスポンスの例

ステータス 200

{
 "queryId": "#get_device_basic_infos",
 "executedQuery": "...",
 "rows": 2,
 "executionDateTime": { ... },
 "headers": [
 "device.collector.uid",
 "device.name",
 "device.operating_system.platform",
 "device.operating_system.name",
 "device.hardware.type",
 "device.hardware.manufacturer",
 "device.last_seen"
    ],
 "data": [
        [
 "e0aa796d-e3af-47b5-88d8-228cf5551fb6",
 "XN1231242-2142",
 "Windows",
 "Windows 11 Pro 22H2 (64 bits)",
 "laptop",
 "Lenovo",
 "2023-07-17 17:53:49"
        ],
        [
 "9866a43b-caab-4948-86d2-5567b3ac1d24",
 "XCX124231-1231",
 "macOS",
 "macOS Ventura 13.4.1 (ARM 64 bits)",
 "laptop",
 "Apple",
 "2023-07-17 17:53:03"
        ]
    ]
}

注意:

  • ステータスコードが200以外の値である場合、リクエストは失敗したかレート制限に達したことを意味します。 詳しくはNexthink Developerドキュメントを参照してください。

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

ステップ 3: デバイスの診断

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

(1) ラップトップ XN1231242-2142 (Lenovo)

(2) ラップトップ XCX124231-1231 (Apple)

従業員(ユーザー) 「1」

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

前のステップからの入力

ステップ 2: デバイスの識別 でデバイス名を取得しました。

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は、システムがその後の対話でリモートアクションをトリガーするために使用するキーです。

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

    • IF free_space_GB <= 6 THEN リモートアクションライブラリをトリガーして ディスククリーンアップ を実行します。

    • IF remote_action.get_startup_impact_windows.execution.outputs.HighImpactCount > 0 THEN 高インパクトアプリケーションを無効にするために、remote_action.get_startup_impact_windows.execution.outputs.HighImpactApplicationsの値を使用して スタートアップメニューからアプリケーションを無効にする リモートアクションライブラリをトリガーします。

    • IF remote_action.get_battery_status.execution.outputs.BatteryHealth <= 0.85 THEN バッテリーの交換が必要である:フォローアップのために、チャットボットからITSMチケットを作成する。

お知らせ:

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

  • システムが返したリストが空であれば、デバイスが見つかりませんでした。

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

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

    • リモートアクションフィールドの場合、システムがまだリモートアクションを正常に実行していません。 リモートアクションのスケジュールとターゲティングNQLクエリ、および潜在的な実行エラーについてリモートアクションダッシュボードを確認してください。

ステップ4:問題の修正

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

「不要なファイルを削除して速度低下を防ぐことができます。」

「実行してもよろしいでしょうか?」

社員(ユーザー) 「はい」

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

前のステップからの入力

#diagnose_device_bad_health NQL API(またはデータエクスポート)を通じてステップ3:デバイスの診断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開発者ポータルドキュメントを参照してください。

ステップ5:修正のフォローアップ

(チャットボット) 「修正を開始しました。 短い時間で終わるはずです。」

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

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

Nexthinkは、APIでリモートアクションをトリガーしてから1分以上経ってからリモートアクションの結果を取得するよう推奨しています。

前のステップからの入力

リモートアクションAPIコールを通じてステップ4:問題の修正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",
 "ディスククリーンアップ",
 "success",
 "ディスククリーンアップが正常に実行されました。 \r\nPowerShell がコード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時間以上前の実行の場合に発生します。このクエリで指定されている時間枠です。

会話を終了します

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

(チャットボット) 「すべて完了しました - 1.3GBのスペースを解放しました。」 他にお手伝いできることはありますか?」

Nexthink Flow を使用してチャットボット統合を設定する

お使いの会社が Nexthink Flow を購入している場合、前のセクションで説明したすべての診断と修正を実行し、チャットボットや他のサードパーティソリューションでロジックをプログラミングせずに、ワークフロー内で完全にプロセスを編成するワークフローを設定できます。

  • APIを呼び出してリアルタイムのフィードバックを提供するために コネクタサービスAPI Thinklets を使用します。

  • 特定のサードパーティAPIが再開するまで待機するために APIリスナー Thinklet を使用します。

  • Flow API でワークフローをトリガーします。

詳細については、ワークフロー のドキュメントページを参照してください。

事前構築されたコンテンツ

チャットボット統合を開始するのに役立つ、典型的なチャットボット会話で使用できるトピックの例を見つけてください。 各トピックには以下が含まれます:

  • 必須データ収集リモートアクション。 本セクションで紹介されるすべてのリモートアクションは、Nexthinkライブラリで利用可能であり、事前に設定する必要があります:

    • データ収集リモートアクションには、トリガータイプ スケジュール がアクティブであり、必要な頻度に応じて、収集スケジュールを毎時または毎日に設定する必要があります。

    • 修正リモートアクションには、トリガータイプ API がアクティブである必要があります。 詳細については、リモートアクションの管理 ドキュメントを参照してください。

  • 診断NQLクエリ。

  • 診断クエリの結果を解釈するためのロジック。

  • 各診断に対する可能な修正。

デバイス名を事前に特定しておくことを前提に、エンドツーエンドの使用例と同様のフローを使用して例を実装できます。

一般的なクエリ

エンドツーエンドの使用例で示されているように、すべての使用例で役立つ2つの基本的なタスクを実行するために一般的なクエリを設定する必要があります:

タスク
NQLクエリ

ユーザーのデバイスを取得する

クエリID:#get_device_basic_infos - ユーザー名に基づいての一致

過去7日間のデバイス
| 過去7日間にセッションイベントあり
| ユーザー名が $username である
| collector.uid, device.name, 
  operating_system.platform, operating_system.name, 
  hardware.type, hardware.manufacturer, last_seen をリスト
| last_seen を降順でソート

別の方法での使用に合わせて、where句| where user.name == $usernameを調整できます。例を以下に示します:

  • ユーザーのUPNを知っている場合:| where user.upn == $upn(UPNをCollectorレベルでアクティブ化する必要があります)

  • ユーザーのメールアドレスを知っている場合:| where user.ad.email_address == $email(Azure ADコネクタをアクティブ化し、メールフィールドを同期する必要があります)

  • デバイス名を知っている場合:| where device.name == $device_name

7日間以外の期間にユーザーがアクティブだったデバイスを考慮したい場合、タイムフレームを調整してください。

Nexthinkテナントの最大データ保持期間である30日間まで、past 7dの両方の句を希望の時間枠に置き換えてください。

修正リモートアクションのステータスと出力を取得します

クエリID:#get_remote_action_result

過去24時間のリモートアクション実行
| request_idが $request_id である
| request_id, device.name, remote_action.name, 
  status, status_details, outputsをリスト

Microsoft Outlookの問題

従業員にMicrosoft Outlookの不具合を引き起こす問題を診断する。

種類
コンテンツ

プラットフォーム

Microsoft Windows

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

データ収集リモートアクションをスケジュール:

  • Microsoft Outlookをオンラインにする

  • Microsoft Outlookプラグインのクラッシュ詳細を取得します

NQLクエリ

クエリID: #diagnose_outlook_issues

devices
| where device.name == $device_name
| include package.installed_packages
| where package.name in ["Microsoft Office", "Microsoft 365"]
| where package.version != "16.*"
| compute outdated_office_packages = package.name.count()
| list collector.uid, device.name,
  remote_action.get_outlook_plugin_crash_details_windows.execution.outputs.CrashedPluginList,
  remote_action.get_outlook_online_windows.execution.outputs.IsOnline,
  remote_action.get_outlook_online_windows.execution.status,
  boot.days_since_last_full_boot, outdated_office_packages

修正リスト

  1. IF remote_action.get_outlook_online_windows.execution.outputs.IsOnline = "No" and remote_action.get_outlook_online_windows.execution.status = "success" THEN リモートアクション修復を実行 Outlookオンラインに設定

  2. IF remote_action.get_outlook_plugin_crash_details_windows.execution.outputs.CrashedPluginList != "["-"]" THEN リモートアクション修復を実行 Outlookプラグインを設定

  3. IF device.boot.days_since_last_full_boot > 10 THEN 従業員にマシンの再起動を推奨。

  4. IF outdated_office_packages = "1" THEN Run remediation remote action Repair Office 365

  5. 付加的な一般的修正: リモートアクション修復を実行 Outlook OSTの問題を修復

Microsoft OneDriveの問題

Microsoft OneDriveに関連する問題を診断し、システムが問題を検出したときにOneDriveを修復します。

タイプ
コンテンツ

プラットフォーム

Microsoft Windows

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

データ収集リモートアクションのスケジュール:

  • OneDriveのステータスを取得

NQLクエリ

クエリID: #diagnose_onedrive_issues

devices
| where device.name == $device_name
| list collector.uid, device.name,
  remote_action.get_onedrive_status.execution.outputs.OneDriveStatus

修正リスト

  1. IF remote_action.get_onedrive_status.execution.outputs.OneDriveStatus が次のいずれかを含んでいる場合:

    1. OneDrive はインストールされていません

    2. OneDrive はインストールされていますが実行されていません

    3. OneDrive 環境変数が存在しません

    4. OneDrive フォルダーが存在しません

THEN リモートアクション修復を実行 OneDrive を修復

遅いPCの問題

エンドポイントの遅さを引き起こす典型的な問題の幅広い範囲を診断します。

タイプ
コンテンツ

プラットフォーム

Microsoft Windows

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

データ収集リモートアクションのスケジュール:

  • GPO起動インパクトを取得

  • 起動インパクトを取得

NQLクエリ

クエリID: #diagnose_slow_pc_issues

devices during past 7d 
| where name == $device_name
| include device_performance.events during past 24h
| compute free_space = system_drive_free_space.avg() / 1000000000
| include package.installed_packages
| where package.name in ["*Microsoft Office*", "*Microsoft 365*"]
| where package.version != "16.*"
| compute outdated_office_packages = package.name.count()
| list collector.uid, device.name, free_space,
  boot.days_since_last_full_boot,
  outdated_office_packages,
  remote_action.get_startup_impact_windows.execution.outputs.HighImpactCount,
  remote_action.get_gpo_startup_impact_windows.execution.outputs.UserGpoAppliedTimeInSeconds,
  remote_action.get_gpo_startup_impact_windows.execution.outputs.UserGpoDCDiscoveryInSeconds

修正リスト

  1. IF device.boot.days_since_last_full_boot > 10 THEN 従業員にマシンの再起動を推奨。

  2. IF free_space_GB <= 6 THEN リモートアクション修復を実行 ディスククリーンアップ

  3. IF remote_action.get_startup_impact_windows.execution.outputs.HighImpactCount > 0 THEN リモートアクション修復を実行 スタートアップメニューからのアプリケーションの無効化 remote_action.get_startup_impact_windows.execution.outputs.HighImpactApplications の値を使用して高影響アプリケーションを無効にする

  4. IF remote_action.get_gpo_startup_impact_windows.execution.outputs.UserGpoAppliedTimeInSeconds + remote_action.get_gpo_startup_impact_windows.execution.outputs.UserGpoDCDiscoveryInSeconds > 10 THEN リモートアクション修復を実行 グループポリシー設定を更新

  5. IF outdated_office_packages = "1" THEN Run remediation remote action Repair Office 365


関連トピック

Last updated