# EMQXエージェントをNotionに接続する

Notionコネクターを使用すると、EMQXエージェントがNotionのページ、データベース、データソース、ブロック、コメント、およびファイルアップロードの作成、検索、読み取り、更新を行えます。このコネクターを活用して、仕様書、ナレッジベース、プロジェクトデータ、Notionに保存された構造化レコードを中心としたワークフローを構築できます。

## よくあるユースケース

- エージェントを生成または更新する前に仕様書を読み取る。
- MQTTイベントやチャットの判断からデータベースの行を作成する。
- 自動化ワークフロー完了後にステータスプロパティを更新する。
- 運用ページに分析結果を追記する。

チャットプロンプトの例：

```text
product-notionコネクターを使ってDevice Operationsデータベースを検索し、繰り返し発生した切断アラートの行を作成してください。デバイスID、重大度、現在の日付を含めてください。
```

## 前提条件

コネクターを追加する前に以下を準備してください：

- 必要なワークスペースにアクセス可能なNotionアカウント
- Composioに必要なNotionページへのアクセス権を付与する権限
- ワークフローで必要なページおよびデータベースへのアクセス

## Notionコネクターの追加方法

1. 左側のナビゲーションメニューで **Connectors** をクリックします。
2. **Available** タブで **Notion** を探し、**Add** をクリックします。
3. 説明的なコネクター名を入力します。
4. **Confirm** をクリックすると、Notionの認証フローがダイアログで開きます。
5. 複数のNotionワークスペースにアクセスできる場合は、接続するワークスペースを選択します。
6. Composioが要求するアクセス権を確認します。選択したページの閲覧・編集、ページ内でのコンテンツおよびコメントの作成、コメントの閲覧、ワークスペースユーザーとそのメールアドレスの閲覧が含まれます。
7. **Select pages** をクリックします。
8. Composioがアクセス可能なページを選択します。必要に応じて検索ボックスでページを検索し、ワークフローに必要なページのみを選択してください。
9. **Allow access** をクリックします。
10. 認証ダイアログが閉じてEMQXエージェントに戻るまで待ちます。
11. **Added** タブでコネクターのステータスが **Authorized** になっていることを確認します。

<!-- TODO: Notion OAuthのスコープや作成されたコンテンツがユーザーまたは統合IDに帰属するかを確認する。 -->

## 対応ツール

### コンテンツの書き込み

| ツール | アクセス | 説明 |
|---|---|---|
| `NOTION_APPEND_TEXT_BLOCKS` | 書き込み | ページまたはブロックに段落、見出し、リストなどのテキストブロックを追記します。 |
| `NOTION_CREATE_COMMENT` | 書き込み | ページまたはディスカッションにコメントを作成します。 |
| `NOTION_CREATE_DATABASE` | 書き込み | Notionデータベースを作成します。 |
| `NOTION_CREATE_NOTION_PAGE` | 書き込み | Notionページを作成します。 |
| `NOTION_DELETE_BLOCK` | 破壊的操作 | Notionブロックを削除します。 |
| `NOTION_DUPLICATE_PAGE` | 書き込み | Notionページを複製します。 |
| `NOTION_INSERT_ROW_DATABASE` | 書き込み | Notionデータベースに行を挿入します。 |
| `NOTION_UPDATE_BLOCK` | 書き込み | ブロックの内容を更新します。 |
| `NOTION_UPDATE_PAGE` | 書き込み | ページのプロパティを更新します。 |
| `NOTION_UPDATE_ROW_DATABASE` | 書き込み | データベースの行を更新します。 |
| `NOTION_UPDATE_SCHEMA_DATABASE` | 書き込み | データベースのスキーマを更新します。 |

### コンテンツの読み取りおよびクエリ

| ツール | アクセス | 説明 |
|---|---|---|
| `NOTION_FETCH_ALL_BLOCK_CONTENTS` | 読み取り | ブロック配下のすべてのコンテンツを再帰的に取得します。 |
| `NOTION_FETCH_BLOCK_CONTENTS` | 読み取り | ブロックの直下の子ブロックを取得します。 |
| `NOTION_FETCH_COMMENTS` | 読み取り | ページまたはブロックのコメントを取得します。 |
| `NOTION_FETCH_DATABASE` | 読み取り | データベース情報を取得します。 |
| `NOTION_FETCH_ROW` | 読み取り | データベースの行を取得します。 |
| `NOTION_GET_ABOUT_USER` | 読み取り | Notionユーザーの情報を取得します。 |
| `NOTION_GET_PAGE_MARKDOWN` | 読み取り | ページの内容をMarkdown形式で取得します。 |
| `NOTION_GET_PAGE_PROPERTY_ACTION` | 読み取り | ページのプロパティ値を取得します。 |
| `NOTION_LIST_USERS` | 読み取り | Notionワークスペースのユーザー一覧を取得します。 |
| `NOTION_QUERY_DATA_SOURCE` | 読み取り | Notionのデータソースをクエリします。 |
| `NOTION_QUERY_DATABASE` | 読み取り | データベースの行をクエリします。 |
| `NOTION_QUERY_DATABASE_WITH_FILTER` | 読み取り | フィルター条件付きでデータベースをクエリします。 |
| `NOTION_RETRIEVE_COMMENT` | 読み取り | Notionコメントを取得します。 |
| `NOTION_RETRIEVE_DATABASE_PROPERTY` | 読み取り | データベースのプロパティ情報を取得します。 |
| `NOTION_RETRIEVE_PAGE` | 読み取り | ページのプロパティおよびメタデータを取得します。 |
| `NOTION_SEARCH_NOTION_PAGE` | 読み取り | Notionのページおよびデータベースを検索します。 |

### ファイルアップロード

| ツール | アクセス | 説明 |
|---|---|---|
| `NOTION_CREATE_FILE_UPLOAD` | 書き込み | Notionのファイルアップロードタスクを作成します。 |
| `NOTION_LIST_FILE_UPLOADS` | 読み取り | ファイルアップロードの記録一覧を取得します。 |
| `NOTION_RETRIEVE_FILE_UPLOAD` | 読み取り | ファイルアップロードの状態および情報を取得します。 |
| `NOTION_SEND_FILE_UPLOAD` | 書き込み | ファイルアップロードタスクにファイル内容を送信します。 |

::: warning 重要なお知らせ
ページ、データベース、スキーマ、行、ブロックの更新ツールはNotionのコンテンツを変更します。ブロック削除ツールはコンテンツを削除します。書き込み操作を行う前に対象のページ、データベース、ブロックを必ず確認してください。
:::

## チャットでのコネクター利用方法

1. チャット入力欄でコネクターアイコンをクリックします。
2. 認証済みの **Notion** コネクターを選択します。
3. プロンプト内でエージェントが使用する外部リソースと操作を指定します。
4. 生成されたエージェント定義を確認し、必要なツールのみが含まれていることを確認します。

## 権限とデータアクセス

コネクターは認証済みのNotionアカウントおよび統合の権限を使用します。選択されたページ、ワークスペースのメンバーシップ、リソース共有設定により、コネクターがアクセスできるページ、データベース、データソースが決まります。追加のページにアクセス権を付与するには、コネクターの再認証が必要です。

チャットプロンプトやエージェントの指示に外部サービスの認証情報やアクセストークンを含めないでください。

## 制限事項

- Notion APIのレート制限およびワークスペースのポリシーが適用されます。
- ブロックタイプやプロパティスキーマはページやデータベースによって異なります。
- ファイルアップロードの利用可否やサイズ制限はNotion APIに依存します。

<!-- TODO: サービス固有の結果サイズ制限、ファイル制限、APIレート制限、プラン制限、非対応リソースタイプを確認する。 -->

## トラブルシューティング

| 症状 | 解決策 |
|---|---|
| コネクターが **Unauthorized** のままになる。 | 認証を再試行し、意図したワークスペースを選択し、必要なページを少なくとも1つ選択してから **Allow access** をクリックしてください。 |
| ツールが権限エラーを返す。 | 認証済みアカウントが対象リソースにアクセス可能か、認証時にそのリソースを含むページが選択されているかを確認してください。追加ページへのアクセス権付与が必要な場合はコネクターを再認証してください。 |
| 必要なツールが利用できない。 | ツールがこのコネクターでサポートされているか承認されているかを確認し、チャットで再度コネクターを選択してください。 |
| リクエストが断続的に拒否される。 | 外部サービスのステータス、APIクォータ、レート制限、アカウントプランを確認してください。 |

## 関連リンク

- [Connectors](../connectors.md)
- [Start a Chat](../chats.md)
- [Manage Agents](../agents.md)
