> For the complete documentation index, see [llms.txt](https://docs.nexthink.com/platform/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nexthink.com/platform/ja/solutions/chatbots/integrating-chatbots-with-nexthink/chatbot-use-cases.md).

# ユースケース: チャットボットによるディスク問題の改善

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

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

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

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

従業員とチャットボットのインタラクションにおける標準化された手順を設計し、各ステップで使用するAPI技術を定義してください。

チャットボットのフローを理解するために[Nexthink REST APIを使用したチャットボットの統合](/platform/ja/solutions/chatbots/integrating-chatbots-with-nexthink.md)ドキュメントを参照してください。

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

<table><thead><tr><th width="220">対話ステージ</th><th>API技術</th></tr></thead><tbody><tr><td><ol><li>通信の認証</li></ol></td><td><strong>API資格情報</strong>を設定し、APIを通じてトークンを収集します。</td></tr><tr><td><ol start="2"><li>デバイスの識別</li></ol></td><td>チャットボットが<code>ユーザー名</code>に基づいてデバイスを識別できるように<strong>NQL API</strong>を使用します。 または、データエクスポーターを使用します。</td></tr><tr><td><ol start="3"><li>ユーザーデバイスの診断</li></ol></td><td>デバイスのパフォーマンスデータと<strong>Get Startup Impact</strong>および<strong>Get Battery Status</strong>リモートアクションの出力を取得するために<strong>NQL API</strong>（またはデータエクスポーター）を使用します。</td></tr><tr><td><ol start="4"><li>問題の修正</li></ol></td><td><strong>リモートアクションAPI</strong>を使用して、ユーザーのデバイスで<strong>Disk Cleanup</strong>リモートアクションをトリガーします。</td></tr><tr><td><ol start="5"><li>修正のフォローアップ</li></ol></td><td><strong>NQL API</strong>を使用して修正のステータスと詳細を取得し、修正結果をユーザーに通知します。</td></tr></tbody></table>

{% hint style="info" %}
技術の選択は、現在のNexthink機能の使用方法やライセンスで利用可能な制限によって決まります。 [Nexthink Infinityの制限と限界の概要](https://edocs.nexthink.com/ja/nexthink-infinity/infinity-specifications/nexthink-infinity-default-thresholds-overview)のドキュメントページを参照して、さらに詳しい情報を含むAPIの制限について確認してください。
{% endhint %}

***

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

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

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

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

* **スタートアップのインパクトを取得**
* **Get Battery Status**です。

実行を毎日行うようにスケジュールします。 詳細については、[リモートアクションの管理](/platform/ja/user-guide/remote-actions/setting-up-and-managing-remote-actions/managing-remote-actions.md)を参照してください。

{% hint style="success" %}
このステップを完了すると、次のステップで使用するためのリモートアクションのNQL IDを保存します。

NQL ID:

* `get_startup_impact_windows`
* `get_battery_status`
  {% endhint %}

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

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

* リモートアクショントリガーとして**API**を選択します。
* チャットボットの要件に応じたデフォルトの入力パラメータの値を設定します。 [Disk Cleanupリモートアクションの入力パラメータ](#input-parameters-for-disk-cleanup-remote-action)の表を参照してください。

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

<table><thead><tr><th width="337">入力</th><th>推奨値</th></tr></thead><tbody><tr><td><code>DiskCleanupCampaignId</code></td><td><p>キャンペーンを表示する場合は、ライブラリキャンペーンの<code>disk_cleanup_invoke</code>を使用します。</p><p>キャンペーン確認ポップアップを表示しない場合は、値を00000000-0000-0000-0000-000000000000に設定します。</p></td></tr><tr><td><code>CleanupCompletedCampaignId</code></td><td><p>キャンペーンを表示する場合は、ライブラリキャンペーンの<code>disk_cleanup_completed</code>を使用します。</p><p>キャンペーン通知ポップアップを表示しない場合は、値を00000000-0000-0000-0000-000000000000に設定します。</p></td></tr><tr><td><code>RemoveFilesNotModifiedInDays</code></td><td>ライブラリデフォルト値 (7)</td></tr><tr><td><code>MaximumDelayInSeconds</code></td><td>ライブラリデフォルト値 (30)</td></tr><tr><td><code>CleanupLevel</code></td><td><p>クリーンアップレベル、LightまたはDeepを選択します。</p><p>このフィールドは、キャンペーンを使用しないことを選択し、従業員がクリーンアップレベルを選択する場合にのみ機能します。 それ以外の場合は、従業員の選択が優先されます。</p></td></tr></tbody></table>

{% hint style="success" %}
このステップを完了すると、次のステップで使用するためのリモートアクションのNQL IDを保存します。

NQL ID: `disk_cleanup`
{% endhint %}

### NQL APIクエリの作成

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

* ユーザーの`username`に基づいてユーザーデバイスを取得する（ステージ1：デバイスの識別）。
* 現在のトピックのために診断を行うためのデバイスデータを取得する（ステージ2：デバイスの診断）。
* リモートアクションのステータスと結果を取得する（ステージ4：修正後のフォローアップ）。

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

<details>

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

**クエリ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](#chatbotusecases-pre-builtcontentprebuilt)を参照してください。

</details>

<details>

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

**クエリ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ライブラリからのリモートアクション**スタートアップのインパクトを取得**が必要です。
* バッテリーの健康状態 (`BatteryHealth`) を確認するには、Nexthinkライブラリからのリモートアクション**バッテリーステータスを取得**が必要です。

詳細は、[データ収集リモートアクションの設定](#configuring-data-collection-remote-actions)セクションを参照してください。

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

</details>

<details>

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

**クエリ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`パラメータが含まれています。

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

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

</details>

{% hint style="success" %}
このステップを完了すると、次のステップで使用するためのすべてのNQL APIクエリのNQL IDを保存します。

NQL ID:

* \#get\_device\_basic\_infos
* \#diagnose\_device\_bad\_health
* \#get\_remote\_action\_result
  {% endhint %}

### **API資格情報を設定する** <a href="#chatbotusecases-authentication" id="chatbotusecases-authentication"></a>

NexthinkのウェブインターフェイスでAPI資格情報を作成して、Nexthinkとチャットボット間の安全な通信を確立します。 **Permissions**セクションから、**Remote Actions API**と**NQL API**を選択してください。 詳細については、[API認証情報](https://docs.nexthink.com/api)を参照してください。

{% hint style="success" %}
このステップを完了したら、Nexthinkウェブインターフェイスの資格情報作成中に取得したクライアントIDおよびクライアントシークレットを保存します。
{% endhint %}

***

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

{% hint style="info" %}
[#using-pre-built-content-to-configure-chatbot-integrations](#using-pre-built-content-to-configure-chatbot-integrations "mention")のドキュメントを参照して、利用可能なプレ構築コンテンツを適応し、チャットボット統合ロジックの設定を加速します。
{% endhint %}

Nexthink内で必要なAPI機能をすべて構成したら、次にチャットボットのサービス層内でNexthink REST APIコールを実装してください。

次のステージは、[ユーザーとチャットボットの対話設計](#designing-user-chatbot-interaction-with-api-technologies)を反映しています。

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

以下のAPI呼び出しを実行する前に、有効な認証トークンを取得する必要があります。 [Nexthink開発者](https://developer.nexthink.com/docs/api/getting-an-authentication-token)のドキュメントを参照し、生成した[API資格情報](https://docs.nexthink.com/api)を使用して有効なOAuthトークンを取得する方法を確認してください。

### チャットボットの第2ステージ：デバイスの識別

> 従業員（ユーザー）\
> \
> 私はデバイスに問題があります

デバイスを識別するために、前に作成した`#get_device_basic_infos` **NQL API**クエリを使用します（参照：[ユーザー名に基づいてユーザーデバイスを取得する](#get-user-devices-based-on-the-username-of-the-user)）。

{% hint style="warning" %}
チャットボットプラットフォームはAPI呼び出し間でセッションコンテキストを維持できる必要があります。 たとえば、このステップで取得したデバイス識別子は、後のステージである診断、修正、修正確認で保存して再利用する必要があります。
{% endhint %}

<details>

<summary><strong>APIリクエスト</strong></summary>

`POST /api/v1/nql/execute`

```
{
 "queryId": "#get_device_basic_infos",
 "parameters": {
 "username": "[チャットボットで識別されたユーザー名]"
  }
}
```

</details>

<details>

<summary><strong>例としてのAPI応答</strong></summary>

ステータス200

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

**注意:**

* ステータスコードが200以外の場合、リクエストが失敗したか、制限に達した可能性があります。 詳細については、[Nexthink開発者](https://developer.nexthink.com/docs/api/nql-api-overview)のドキュメントを参照してください。
* 返されたリストが空の場合、ユーザーは指定された期間（この例では`過去7日間`）内にデバイスをアクティブに使用していないことを意味します。 従業員がデバイスを使い始めた時間とそのデータがNexthinkデータプラットフォームで利用可能になる時間には、小さな遅延があります。

</details>

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

> (チャットボット)\
> \
> あなたのデバイスの中から次のものを見つけましたが、どれに問題がありますか？
>
> （1）ノートパソコン XN1231242-2142 (Lenovo)
>
> （2）ノートパソコン XCX124231-1231 (Apple)

> 従業員（ユーザー）\
> \
> 1

デバイス情報を取得するためには、前に作成した`#diagnose_device_bad_health` **NQL API**クエリを使用します（参照：[現在のトピックのために診断を行うためのデバイスデータを取得する](#get-device-data-to-perform-diagnostics-for-the-current-topic)）。

{% hint style="info" %}
**前のステップからの入力**

[第二ステージ：デバイスの識別](#chatbot-second-stage-identifying-the-device)でデバイス名を取得しました。
{% endhint %}

<details>

<summary><strong>APIリクエスト</strong></summary>

`POST /api/v1/nql/execute`

```
{
 "queryId": "#diagnose_device_bad_health",
 "parameters": {
 "device_name": "[チャットボットで識別されたデバイス名]"
  }
}
```

</details>

<details>

<summary><strong>例としてのAPI応答</strong></summary>

ステータス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 開発者プラットフォーム](https://developer.nexthink.com/docs/api/nql-api-overview) のドキュメントを参照してください。
* システムによって返されるリストが空の場合、デバイスは見つかりませんでした。
* 診断フィールドのいずれかがnullまたは空の場合、情報は利用できません。 空の値の主な理由は次の通りです:
  * データプラットフォームフィールドにおいて、そのフィールドがプラットフォームでサポートされていません。 詳細については、[NQLデータモデル](/platform/ja/understanding-key-data-platform-concepts/nql-data-model.md)ドキュメントを参照してください。
  * リモートアクションフィールドにおいて、システムはまだリモートアクションを正常に実行していません。 リモートアクションのスケジュールと対象のNQLクエリ、そしてリモートアクションダッシュボードをチェックし、実行エラーの可能性を見つけましょう。

</details>

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

> (チャットボット)\
> \
> ありがとうございます。あなたのデバイスには約2GBの空きディスクスペースしかないようです。
>
> *遅延を防ぐために不要なファイルをクリーンアップできます。*
>
> *続行しますか?*

> 従業員（ユーザー）\
> \
> はい

前のステップで設定したリモートアクションAPIを使用して、 **ディスククリーンアップ**リモートアクションを実行し、問題を解決します（参照：[修正リモートアクションの設定](#configure-remediation-remote-actions)）。

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

{% hint style="info" %}
前のステップからの入力

[第3ステージ：デバイスの診断](#chatbot-third-stage-diagnosing-the-device)では、`#diagnose_device_bad_health` [NQL API](#get-device-data-to-perform-diagnostics-for-the-current-topic) (またはデータエクスポート) を介して `collector.uid` を取得しました。
{% endhint %}

<details>

<summary><strong>APIリクエスト</strong></summary>

`POST /api/v1/act/execute`

```
{
 "remoteActionId": "disk_cleanup",
 "devices": ["e0aa796d-e3af-47b5-88d8-228cf5551fb6"]
}
```

</details>

<details>

<summary><strong>API応答の例</strong></summary>

ステータス 200

```
{
 "requestId":"f27efd0c-8cb2-4d00-aae0-261aa06729c7",
 "expiresInMinutes":10080
}
```

* 成功したAPI呼び出しは、リモートアクションがエンドポイントが準備でき次第、実行されるようにスケジュールされたことを示しています。
* 返されたリクエストIDを使用して実行ステータスをフォローアップすることができます。
* この呼び出しは非同期であるため、成功したAPI呼び出しがリモートアクションの実行開始や完了を示すわけではありません。

**注意:**

* ステータスコードが200以外の場合、リクエストが失敗したか、またはレート制限に達しています。 詳しくは、[Nexthink 開発者ポータル](https://developer.nexthink.com/) のドキュメントを参照してください。

</details>

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

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

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

(参照：[リモートアクションのステータスと結果を取得する](#get-the-remote-action-status-and-results)）。

{% hint style="warning" %}
NexthinkはAPIによってリモートアクションをトリガーした後、1分以内にリモートアクション結果を取得するための呼び出しを行うことを推奨しています。
{% endhint %}

{% hint style="info" %}
前のステップからの入力

[第四段階: 問題の是正](#chatbot-fourth-stage-remediating-the-issue) にて **リモートアクションAPI** 呼び出しを通じて `request_id` を取得しました。
{% endhint %}

<details>

<summary><strong>APIリクエスト</strong></summary>

`POST /api/v1/nql/execute`

```
{
 "queryId": "#get_remote_action_result",
 "parameters": {
 "request_id": "f27efd0c-8cb2-4d00-aae0-261aa06729c7"
  }
}
```

</details>

<details>

<summary><strong>API応答の例</strong></summary>

ステータス 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`。 リモートアクションのさまざまな状態についての詳細は、[リモートアクション](/platform/ja/user-guide/remote-actions/setting-up-and-managing-remote-actions.md)ドキュメントを参照してください。
* `remote_action.execution.status_details` はトラブルシューティングに役立つリモートアクション実行の詳細を含みます。 設計上、従業員に直接見せることはありません。
* `remote_action.execution.outputs` は、リモートアクションの出力値を含むJSONマップです。 **ディスククリーンアップ**リモートアクションでは、返される値は解放されたスペースの量（バイト単位）です。

**注意:**

* ステータスコードが200以外の場合、リクエストが失敗したか、またはレート制限に達しています。 詳しくは、[Nexthink 開発者ポータル](https://developer.nexthink.com/) のドキュメントを参照してください。
* システムが空のリストを返した場合、システムはまだリモートアクションの実行を作成していません。 これは、APIをトリガーした時間の直後にAPIを呼び出した場合や、実行が24時間以上前である場合に発生します（クエリで指定された時間枠）。

</details>

#### 会話の終了 <a href="#chatbotusecases-conversation-stage5" id="chatbotusecases-conversation-stage5"></a>

{% hint style="info" %}
このステップで取得したリモートアクションの`ステータス`と`出力`を表示します。
{% endhint %}

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

***

関連トピック

* [Nexthink REST APIを使用したチャットボットの統合](/platform/ja/solutions/chatbots/integrating-chatbots-with-nexthink.md)
* [ワークフローの作成](/platform/ja/user-guide/workflows/creating-workflows.md#optionally-make-the-workflow-available-in-nexthink-spark)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.nexthink.com/platform/ja/solutions/chatbots/integrating-chatbots-with-nexthink/chatbot-use-cases.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
