> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jinba.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 高度な入力ツール

> Webhook、Slackイベント、画像ファイル、テキストファイル用の高度な入力ツール

## 概要

高度な入力ツールは、Webhook、Slackイベント、画像ファイル、テキストファイルなど、さまざまなタイプのデータソースを処理するための特別な入力機能を提供します。これらのツールは、外部システムと統合する包括的なワークフローを構築するために不可欠です。

## 主な機能

### INPUT\_WEBHOOK

* 各種サービスからのWebhookリクエストを受信
* 公開可能URLへのHTTP POSTリクエストを処理
* JSONとフォームデータを自動解析
* API統合に不可欠

### INPUT\_SLACK\_EVENT

* Slack Appイベントサブスクリプションを受信
* リアルタイムSlackワークスペースイベントを処理
* メッセージ、リアクション、ユーザーインタラクションを処理
* Slack App設定が必要

### INPUT\_IMAGE\_FILE

* 直接ダウンロードURLから画像ファイルを入力
* 画像をbase64エンコード文字列に変換
* 各種画像フォーマットをサポート
* AI処理ワークフロー用に最適化

### INPUT\_FILE\_AS\_TEXT

* URLからテキストファイルを入力
* 複数のテキストフォーマット（CSV、JSON、XML、YAML、HTML）をサポート
* ファイルアクセス用の事前署名URLを返す
* 自動エンコーディング検出

## セットアップ手順

**注意**: INPUT\_ツールは、MCP（Model Context Protocol）とAPI統合にとって重要です。それらのIDは、MCP設定とAPIエンドポイントで正確に一致する必要があります。

## 例: Webhook処理ワークフロー

```yaml theme={null}
- id: receive_webhook
  name: receive_webhook
  tool: INPUT_WEBHOOK
  input:
    - name: description
      value: "Eコマースプラットフォームからの注文通知を受信"
    - name: use_as_input
      value: true

- id: process_order
  name: process_order
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4
  input:
    - name: prompt
      value: |
        この注文データを処理し、重要な情報を抽出してください：
        {{steps.receive_webhook.result.body}}
        
        抽出する項目: 顧客情報、注文アイテム、合計金額、配送詳細
```

## 例: Slackイベント処理

```yaml theme={null}
- id: slack_listener
  name: slack_listener
  tool: INPUT_SLACK_EVENT
  input:
    - name: description
      value: "Slackでのメンションイベントをリッスン"
    - name: use_as_input
      value: true

- id: respond_to_mention
  name: respond_to_mention
  tool: SLACK_POST_MESSAGE
  input:
    - name: channel
      value: "{{steps.slack_listener.result.channel}}"
    - name: text
      value: "メンションありがとうございます！リクエストを処理します。"
```

## 例: 画像分析パイプライン

```yaml theme={null}
- id: input_image
  name: input_image
  tool: INPUT_IMAGE_FILE
  input:
    - name: file_url
      value: "https://example.com/image.jpg"
    - name: description
      value: "分析用製品画像"

- id: analyze_image
  name: analyze_image
  tool: GEMINI_INVOKE_WITH_IMAGE
  config:
    - name: version
      value: gemini-1.5-flash
  input:
    - name: prompt
      value: "この製品画像を分析し、その特徴を説明してください"
    - name: base64_image
      value: "{{steps.input_image.result.base64_content}}"
```

## 例: テキストファイル処理

```yaml theme={null}
- id: input_config_file
  name: input_config_file
  tool: INPUT_FILE_AS_TEXT
  input:
    - name: value
      value: "https://example.com/config.json"
    - name: description
      value: "処理用設定ファイル"
    - name: use_as_input
      value: true

- id: parse_configuration
  name: parse_configuration
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: code
      value: |
        import json
        import requests
        
        # 設定ファイルをダウンロードして解析
        file_url = "{{steps.input_config_file.result}}"
        response = requests.get(file_url)
        config = json.loads(response.text)
        
        print("設定が読み込まれました:")
        for key, value in config.items():
            print(f"  {key}: {value}")
        
        # 特定の設定を抽出
        database_url = config.get('database_url', '見つかりません')
        api_key = config.get('api_key', '見つかりません')
        
        print(f"\nデータベースURL: {database_url}")
        print(f"APIキー: {'*' * len(api_key) if api_key != '見つかりません' else '見つかりません'}")

- id: validate_config
  name: validate_config
  tool: CHECKER_CHECK_BY_JSON
  input:
    - name: text
      value: "{{steps.parse_configuration.result.stdout | join(' ')}}"
    - name: task_name
      value: "設定検証"
    - name: rules
      value: |
        [
          {
            "rule": "データベースURLの存在",
            "pattern": "database_url.*://",
            "required": true
          },
          {
            "rule": "APIキーの設定",
            "pattern": "api_key.*\\*+",
            "required": true
          }
        ]
```

## 例: CSVデータインポート

```yaml theme={null}
- id: import_csv_data
  name: import_csv_data
  tool: INPUT_FILE_AS_TEXT
  input:
    - name: value
      value: "https://example.com/sales_data.csv"
    - name: description
      value: "月次売上データCSVファイル"

- id: process_csv
  name: process_csv
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: code
      value: |
        import csv
        import requests
        from io import StringIO
        
        # CSVファイルをダウンロード
        file_url = "{{steps.import_csv_data.result}}"
        response = requests.get(file_url)
        csv_content = response.text
        
        # CSVを解析
        csv_reader = csv.DictReader(StringIO(csv_content))
        rows = list(csv_reader)
        
        print(f"CSVから{len(rows)}行を読み込みました")
        print(f"カラム: {', '.join(csv_reader.fieldnames)}")
        
        # 要約統計を計算
        if 'amount' in csv_reader.fieldnames:
            amounts = [float(row['amount']) for row in rows if row['amount']]
            total = sum(amounts)
            average = total / len(amounts) if amounts else 0
            
            print(f"\n売上サマリー:")
            print(f"  総売上: ¥{total:,.2f}")
            print(f"  平均売上: ¥{average:,.2f}")
            print(f"  売上件数: {len(amounts)}")

- id: generate_report
  name: generate_report
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4
  input:
    - name: prompt
      value: |
        以下のCSV処理結果に基づいて売上レポートを生成してください:
        
        {{steps.process_csv.result.stdout | join('\n')}}
        
        以下を含むマークダウンレポートを作成してください:
        1. エグゼクティブサマリー
        2. 主要指標
        3. トレンドとインサイト
        4. 推奨事項
```

## ファイル形式サポート

### INPUT\_FILE\_AS\_TEXTがサポートする形式:

* **text/plain**: プレーンテキストファイル (.txt)
* **text/csv**: カンマ区切り値 (.csv)
* **text/html**: HTMLドキュメント (.html)
* **text/xml**: XMLドキュメント (.xml)
* **text/json**: JSONファイル (.json)
* **text/yaml**: YAML設定ファイル (.yml, .yaml)

## 使用例

* **API統合**: Webhookを介して外部サービスからデータを受信
* **リアルタイム処理**: Slackイベントと通知を処理
* **画像処理**: AIモデルで画像を分析
* **文書処理**: テキストファイルと文書を処理
* **イベント駆動ワークフロー**: 外部イベントに基づいてワークフローをトリガー
