# Spark Agent2Agent 統合

{% hint style="warning" %}
このドキュメントは外部ソースを参照しています。 Nexthink はサードパーティのドキュメントの正確性や、このページに記載されている情報に矛盾を生じさせる可能性のある外部の更新または変更を制御することはできません。 エラーや矛盾を[Nexthink サポート](https://support.nexthink.com/)に報告してください。
{% endhint %}

[Agent-to-Agent (A2A)](https://a2a-protocol.org/latest/) プロトコルを使用して Spark を既存のエンタープライズ向け AI ボットと統合することで、従業員は既に使用して信頼しているツールや会話型インターフェースで引き続き作業できます。

A2A プロトコルは、AI エージェント間のシームレスな通信と協調を可能にするオープン標準です。 A2A を通じて、サードパーティのエージェントは、豊富なデバイスおよびユーザーインサイトのクエリ、安全かつガードレール付きのアクションの実行、非同期コールバックの受信、明確で人が読みやすい結果の提示など、Spark の各種機能を検出、呼び出し、追跡できます。

その結果、従業員は既存のワークフローを中断することなく、Spark のインテリジェンスと Nexthink のコンテキストによってそれらをシームレスに拡張できます。

このページでは、公開されたベンダー中立の API を使用して、エージェント間通信を設定するための手順を順を追って説明します。

{% hint style="info" %}
組織が A2A プロトコルをサポートする AI エージェントを使用していない場合でも、既存のチャットの入り口から従業員が Spark にアクセスできるようにしたい場合は、Spark API と直接連携する軽量なチャットボットインテグレーションを実装できます。

詳細については、[Spark Handoff API](https://docs.nexthink.com/api/spark/handoff-api) を参照してください。
{% endhint %}

## 主なメリット

* 標準化されたプロトコルを使用して、外部AIエージェントを **Spark API** と統合する
* 既存のチャットボットやオーケストレーションのワークフローを、Nexthink の機能で拡張する
* コンテキストを認識した対話により、マルチターンの会話を可能にします
* メタデータとタスク追跡を活用して、会話間でユーザーコンテキストを維持する
* 認証されたサービス間通信により、エンタープライズのセキュリティを確保する

## Spark A2A ワークフローの理解

統合が完了すると、ワークフローは次のとおりです:

1. 従業員は、既存のチャットボット（プライマリAIエージェント）を使用して、問題を報告したり、サービスをリクエストしたり、質問したりします。
2. Spark はそのプライマリ AI エージェントに自分のエージェントカードを公開します。
3. プライマリAIエージェントはエージェントカードを読み取り、Spark を適切なサブエージェントとして特定します。
4. プライマリ AI エージェントは、`contextId` と `taskId` の値を含めて従業員リクエストを Spark に送信します（マルチターンの会話では、これらの値は前の応答から再利用する必要があります）。
5. Spark は高度な機能とドメイン固有のインテリジェンスを使用してリクエストを処理し、設定されたウェブフックに非同期でレスポンスを送信します。
6. 主AIエージェントが応答を受け取り、従業員に返します。
7. 会話のコンテキストを維持するために、同じ `contextId` と `taskId` を再利用してサイクルが繰り返されます。

***

## Agent2Agent 統合の構成

### 前提条件

既存のAIボットをA2Aプロトコルを使用してSparkと統合するには、次の前提条件が満たされていることを確認してください。

* Spark はお使いの環境で構成され、統合されています。 詳細については、[Spark のセットアップと管理](/platform/ja/user-guide/spark/setting-up-and-managing-spark.md) のドキュメントを参照してください。
* Nexthink Infinity で **Administrator** ロールを保持している必要があります。 詳細については、[https://github.com/nexthink/documentation.online-product-documentation/blob/develop/ja\_docs/configuring\_nexthink/configuring-your-platform/administration/account-management/roles/README.md](https://github.com/nexthink/documentation.online-product-documentation/blob/develop/ja_docs/configuring_nexthink/configuring-your-platform/administration/account-management/roles/README.md "mention") のドキュメントをご参照ください。

エージェントのインテグレーションを完了するために、次の手順に従ってください。

{% stepper %}
{% step %}
**Spark API 資格情報を構成する**

他のエージェントから認証済みリクエストを送信できるようにするには、まず Nexthink のウェブインターフェイスで Spark API 資格情報を構成します。

* **Administration > API Credential** で、**New OAuth client credentials** ボタンを選択します。
* 名前と任意の説明を入力し、**Spark API** 権限を選択します。
* 認証情報を保存すると、OAuth クライアント認証情報を含む新しいモーダルが表示されます。 セキュリティ上の理由から、認証情報は一度しか表示されません。 ここより先では再び参照できないため、安全な場所にコピーして保存してください。
  {% endstep %}

{% step %}
**HTTPS 用のコネクタ資格情報を構成する**

Spark が非同期のプッシュ通知を送信できるようにするには、**コネクタ認証情報**を、ウェブフックエンドポイントを指すように構成します。

* **Administration > Connector credentials** から、**New credentials** ボタンを選択します。
* 一意の認証情報名を指定し、**Protocol** ドロップダウンメニューから **Hypertext Transfer Protocol Secure (HTTPS)** を選択します。
* メッセージペイロード内で外部エージェントによって公開されている正確な **URL アドレス** を指定してください。 「https\://{host}:{port}/」形式に従っていることを確認してください。
  * リクエストを送信する際に `pushNotification.url` フィールドで指定するものと同じ URL です。
* 使用する認可を選択します。
  {% endstep %}

{% step %}
**A2A クライアント SDK を使用して外部エージェント統合を有効にする**

Spark A2A API と通信するために、A2A クライアント SDK を使用して外部エージェントを構成します。

* SDK を次のベース URL で構成します:\
  `https://[instance].api.[continent].nexthink.cloud/api/spark/a2a`
* 手順1で設定したOAuthクライアント資格情報を使用して、すべてのリクエストを認証します。
* `message:send` エンドポイントを使用して、SDK を通じてメッセージを送信します。
* 各リクエストには、ペイロードの `metadata` フィールドに `userPrincipalName`（メールアドレス）を設定して、ユーザー ID を含めてください。
* 各リクエストには以下を含めてください：
  * クライアントによって生成される一意の `messageId`
  * マルチターン会話用の `contextId` と `taskId`（クライアントは Spark から返された値を再利用する必要があります。後続のリクエストでそれらが指定されていない場合、Spark は新しい値を生成し、新しいコンテキストが開始されます）
* Spark からの非同期プッシュ通知を受信するためのウェブフック URL を構成します。

{% hint style="info" %}
プッシュ通知のコールバックは認証されません。
{% endhint %}

* 会話の継続性を保つため、最初のレスポンスで返される `contextId` と `taskId` を保存して再利用してください。
* 応答内の task オブジェクトを評価して、会話のステータスを判断します。
  {% endstep %}
  {% endstepper %}

{% hint style="info" %}
現在サポートされているのは `agent card` と `message:send` API のみです。
{% endhint %}


---

# Agent Instructions: 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:

```
GET https://docs.nexthink.com/platform/ja/configuring_nexthink/bringing-data-into-your-nexthink-instance/integrating-nexthink-with-third-party-tools/spark-agent2agent-integration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
