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

# イベントカタログ

> ThunderPhone が送信するすべてのWebhookイベントタイプ。

すべての webhook 本文には `type` フィールドがあり、その値はこのページにあるイベント
タイプのいずれかです。[エンドポイント](/ja/webhooks/endpoints)を
サブスクライブする場合、`events` 配列には必要なイベントタイプを含める必要があります
（すべてをサブスクライブする場合は空にします）。

これらのイベントには、次の 2 つの配信形式があります。

* **エンドポイント配信**は常に**非ブロッキング**通知であり、
  [再試行](/ja/webhooks/overview)が行われます。任意の 2xx で応答してください。
  エンベロープには、重複排除に使用する `event_id` が含まれます。
* **ブロッキング**交換は、
  [レガシー単一 URL webhook](/ja/webhooks/overview)でのみ実行されます。対象は
  [`telephony.incoming` / `web.incoming`](/ja/webhooks/call-incoming)
  設定リクエスト（webhook モードの番号とウィジェットキー、タイムアウトは 10 秒）と、webhook モードの
  [ツールディスパッチ](/ja/tools/overview)です。応答が
  ライブ通話の内容を決定します。

以下のペイロード例は、ワイヤー順のエンドポイントエンベロープ
（キーはアルファベット順：`data`、`event_id`、`type`）を示しています。レガシー配信には
`event_id` を含まない同じ `data` が含まれます。

## 通話イベント

### `telephony.incoming`

着信通話が設定した[電話番号](/api-reference/phone-numbers)のいずれかに到達したときに送信されます。エンドポイント配信は、番号がエージェント設定済みか webhook 設定済みかにかかわらず、**すべての**着信通話に対して送信されるファイアアンドフォーゲット通知です。エージェントが割り当てられていない番号には、レガシー webhook で **ブロッキング**構成リクエストも送信されます。完全なリクエスト / レスポンススキーマについては、[`telephony.incoming` / `web.incoming`](/ja/webhooks/call-incoming)を参照してください。

```json theme={null}
{
  "data": {
    "call_id": 987654321,
    "from_number": "+14155550199",
    "to_number": "+15551234567"
  },
  "event_id": "3f6b2ad0-1c9e-4a57-9f2b-8f6f0f9d2f11",
  "type": "telephony.incoming"
}
```

### `telephony.complete`

着信または発信の電話通話が終了したときに送信されます。非ブロッキングです。完全なトランスクリプト、録音 URL、請求概要が含まれます。ペイロードスキーマについては、[`telephony.complete` / `web.complete`](/ja/webhooks/call-complete)を参照してください。

### `telephony.tool`

電話通話で[関数ツール](/ja/tools/overview)が呼び出された後に送信されます。非ブロッキングの監査通知です。このイベントが配信される時点でツールはすでに実行済みです。対象となるのは独自の関数ツールであり、組み込みツール、ナレッジベース、アプリ接続、MCP ツールは対象外です。

```json theme={null}
{
  "data": {
    "arguments": { "date": "2026-04-21" },
    "call_id": 987654321,
    "from_number": "+14155550199",
    "response": {
      "response": { "available_slots": ["9:00 AM", "2:00 PM"] },
      "status": 200
    },
    "to_number": "+15551234567",
    "tool_name": "search_appointments"
  },
  "event_id": "1f0a7c3e-52d4-4a0e-8f4b-b1a6a1c0d9e2",
  "type": "telephony.tool"
}
```

`response` は実行結果です。成功時は `{"status": <http status>,
"response": <your endpoint's JSON>}`、失敗時は
`{"status": <status>, "error": "<message>"}` です。

### `web.incoming`

`telephony.incoming` の Web チャネル版であり、[Web ウィジェット](/ja/widget/overview)セッションまたはビルダーのマイクテスト通話が開始されたときに送信されます。エンドポイント配信は、すべての Web セッションに対するファイアアンドフォーゲット通知です。`mode="webhook"` の公開可能キーには、レガシー webhook で **ブロッキング**構成リクエストも送信されます。このブロッキングリクエストは形式が異なり（`origin_domain`、`publishable_key_prefix`、電話番号なし）、詳細については[`telephony.incoming` / `web.incoming`](/ja/webhooks/call-incoming)を参照してください。

```json theme={null}
{
  "data": {
    "call_id": 987654322,
    "from_number": "web",
    "origin_domain": "https://example.com",
    "publishable_key_prefix": "pk_live_a1b2",
    "to_number": "+15551234567"
  },
  "event_id": "9a2b4c6d-8e0f-4a1b-9c2d-3e4f5a6b7c8d",
  "type": "web.incoming"
}
```

`from_number` は常にリテラル値 `"web"` です。webhook モードのウィジェットセッションでは `to_number` は空です（セッションのエージェント番号は構成後に割り当てられます）。ビルダーのマイクテスト通話では `origin_domain` と `publishable_key_prefix` は空です。

### `web.complete`

`telephony.complete` の Web チャネル版であり、Web ウィジェット通話（`direction: "web"`）とビルダーのマイクテスト通話（`direction: "test"`）を対象とします。非ブロッキングです。ペイロード形式は[`telephony.complete`](/ja/webhooks/call-complete)と同じで、`origin_domain` が追加され、`from_number` は `"web"` に設定されます。

<Note>
  レガシーの単一 URL webhook では、ビルダーのマイクテスト通話は従来 `telephony.complete` として報告されます。この場合、`web.complete` タイプを使用するのは `direction:
      "web"` の通話のみです。エンドポイントシステムでは、Web 通話とテスト通話の両方を `web.*` にマッピングします。過去のペイロードには、レガシーの `direction` 値 `widget` または `mic` が含まれる場合があります。
</Note>

### `web.tool`

`telephony.tool` の Web チャネル版です。`data` には `from_number` / `to_number` ではなく `origin_domain` が含まれます。

***

## 品質イベント

### `call.graded`

通話の[AI評価実行](/api-reference/calls#ai-call-grading)が完了するたびに送信されます。ブロッキングではありません。

```json theme={null}
{
  "data": {
    "call_id": 987654321,
    "grade": {
      "call_outcome": "success",
      "created_at": "2026-04-20T18:25:11.002Z",
      "detected_issues": [],
      "graded_at": "2026-04-20T18:25:11.002Z",
      "grader_model": "heuristic-v1",
      "id": 5512,
      "score": 92,
      "status": "completed",
      "summary": "Caller asked about their policy and got a full answer…"
    }
  },
  "event_id": "7c1d2e3f-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
  "type": "call.graded"
}
```

| フィールド                                 | 型               | 説明                                                  |
| ------------------------------------- | --------------- | --------------------------------------------------- |
| `grade.id`                            | integer         | 評価 ID                                               |
| `grade.score`                         | integer \| null | 0～100                                               |
| `grade.call_outcome`                  | string          | `success`、`failure`、`unknown`、または `no_conversation` |
| `grade.summary`                       | string          | 1段落の要約                                              |
| `grade.detected_issues`               | array           | 評価ツールが検出した問題の文字列                                    |
| `grade.status`                        | string          | 常に `completed` — 完了した実行のみが送信されます                    |
| `grade.grader_model`                  | string          | 結果を生成した評価モデル（例: `heuristic-v1`）                     |
| `grade.graded_at`, `grade.created_at` | timestamp       |                                                     |

<Note>
  通話は複数回評価される場合があります。録音が利用可能になると、高速なヒューリスティック評価の後に完全なモデル評価が実行されることが多く、手動で再評価することもできます。完了した各実行はそれぞれ独自の `call.graded` イベントを送信します。最新の `graded_at` を正としてください。
</Note>

### `issue.reported`

[問題レポート](/api-reference/issue-reports)が作成されると送信されます。ダッシュボードからユーザーが報告した場合（`source: "user"`）と、通話評価によって自動作成された場合（`source: "system"`）の両方が対象です。ブロッキングではありません。

```json theme={null}
{
  "data": {
    "call_id": 987654321,
    "issue_report": {
      "created_at": "2026-04-20T18:25:11.002Z",
      "description": "Five-second silence before responding to the main question.",
      "id": 4321,
      "severity": "warning",
      "source": "system",
      "status": "open",
      "title": "Agent paused too long"
    }
  },
  "event_id": "5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b",
  "type": "issue.reported"
}
```

| フィールド                   | 型      | 説明                                        |
| ----------------------- | ------ | ----------------------------------------- |
| `issue_report.severity` | string | `critical`、`warning`、または `info`           |
| `issue_report.status`   | string | `open` または `resolved`                     |
| `issue_report.source`   | string | `user`（ダッシュボードから報告）または `system`（評価によって作成） |

<Note>
  通話を再評価すると、システム生成の問題レポートが再構築され、再作成されたレポートごとに `issue.reported` が再送信されます。根本的な問題ごとに通知を1件だけにする場合は、`call_id` + `title` で重複を排除してください。
</Note>

***

## テスト通話イベント

### `test-call.completed`

[テスト通話実行](/api-reference/test-calls#test-call-run-object)が終了ステータス（`completed` または `failed`）に達すると送信されます。起動時に失敗し、通話が一度も生成されなかった実行も含まれます。ブロッキングではありません。バッチ CI 実行をチャットや通知システムに連携する際に役立ちます。

```json theme={null}
{
  "data": {
    "test_call_run": {
      "call_id": 987654321,
      "completed_at": "2026-04-20T18:25:04.822Z",
      "error_message": "",
      "id": 7110,
      "status": "completed",
      "target_id": 12,
      "target_type": "agent"
    }
  },
  "event_id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
  "type": "test-call.completed"
}
```

| フィールド                         | 型               | 説明                                                |
| ----------------------------- | --------------- | ------------------------------------------------- |
| `test_call_run.target_type`   | string          | `agent` または `phone_number`                        |
| `test_call_run.target_id`     | integer         | `target_type` に対応する、実行の対象となったエージェント ID または電話番号 ID |
| `test_call_run.status`        | string          | `completed` または `failed`                          |
| `test_call_run.call_id`       | integer \| null | 通話が開始される前に実行が失敗した場合は `null`                       |
| `test_call_run.error_message` | string          | 成功時は空文字列                                          |

***

## アラートイベント

### `alert.triggered`

**開発者Webhookに配信**チャネルを有効にした[アラートルール](/ja/guides/alerts)がしきい値を超えたときに送信されます。
ブロッキングされません。ルールは一度発火するとクールダウンに従うため、継続的なしきい値超過ではクールダウンウィンドウごとに1つのイベントが生成されます。

```json theme={null}
{
  "data": {
    "comparator": "lt",
    "event_id": "b8e6a1d4-2c3f-4a5b-9c8d-7e6f5a4b3c2d",
    "fired_at": "2026-04-20T18:00:00+00:00",
    "metric": "success_rate",
    "metric_value": 71.4,
    "rule_id": "d2c3b4a5-6f7e-4d8c-9b0a-1c2d3e4f5a6b",
    "rule_name": "Success rate below 80%",
    "threshold": 80.0,
    "window_hours": 24
  },
  "event_id": "4d5e6f7a-8b9c-4d0e-9f1a-2b3c4d5e6f7a",
  "type": "alert.triggered"
}
```

| フィールド                  | 型        | 説明                                                                            |
| ---------------------- | -------- | ----------------------------------------------------------------------------- |
| `event_id`（`data`内）    | UUID     | アラートの**発火**ID。エンベロープの配信`event_id`とは異なります                                      |
| `rule_id`, `rule_name` | UUID、文字列 | 発火したルール                                                                       |
| `metric`               | 文字列      | `success_rate`、`failure_rate`、`avg_score`、`call_volume`、または`suite_regression` |
| `comparator`           | 文字列      | `lt`、`lte`、`gt`、または`gte`                                                      |
| `metric_value`         | 数値       | ルールが発火した時点のウィンドウ内のメトリクス値                                                      |
| `threshold`            | 数値       | 設定されたしきい値                                                                     |
| `window_hours`         | 整数       | 直近の評価ウィンドウ                                                                    |
| `fired_at`             | タイムスタンプ  |                                                                               |

ルール、メトリクス、クールダウン、メール / Slackチャネルの作成については、[アラートガイド](/ja/guides/alerts)を参照してください。

***

## 関連項目

<CardGroup cols={2}>
  <Card title="telephony.incoming / web.incoming" icon="phone" href="/ja/webhooks/call-incoming">
    応答が必要な、ブロッキングされる着信通話ペイロード。
  </Card>

  <Card title="telephony.complete / web.complete" icon="phone-slash" href="/ja/webhooks/call-complete">
    通話後の文字起こしとメトリクス。
  </Card>

  <Card title="Webhookエンドポイント" icon="bolt" href="/ja/webhooks/endpoints">
    これらのイベントの一部をURLにサブスクライブします。
  </Card>

  <Card title="関数ツール" icon="screwdriver-wrench" href="/ja/tools/overview">
    `telephony.tool` / `web.tool`イベントが生成される仕組み。
  </Card>
</CardGroup>
