# Agent 연결 상태 Webhook (/docs/webhooks/agent)

Voice Agent SDK 의 상시 연결(Control WebSocket)이 **15초 이상 끊기면** `agent.disconnected`,
다시 연결되면 `agent.connected` 이벤트를 구독한 webhook URL 로 보냅니다. 15초 미만의 순간
끊김·재연결은 통지하지 않습니다(노이즈 방지).

## 이벤트

| 이벤트 | 발생 시점 |
| --- | --- |
| `agent.disconnected` | 번호의 Agent 연결이 15초 이상 끊긴 것이 확정됐을 때 |
| `agent.connected` | 끊겼던 Agent 연결이 복구됐을 때 |

## 페이로드 (application/x-www-form-urlencoded, POST)

### agent.disconnected
| 필드 | 예시 | 설명 |
| --- | --- | --- |
| `Event` | `agent.disconnected` | 이벤트 타입 |
| `AccountId` | `AC...` | 계정 ID |
| `PhoneNumber` | `07052358015` | 연결이 끊긴 번호 |
| `Status` | `disconnected` | 상태 |
| `Reason` | `heartbeat_timeout` / `closed` / `error` | 끊김 유형 |
| `DisconnectedAt` | `2026-06-04T01:49:45.000Z` | 실제 끊긴 순간(UTC) |
| `Timestamp` | `2026-06-04T01:50:00.000Z` | 발송 시각(디바운스 후) |

### agent.connected
| 필드 | 예시 | 설명 |
| --- | --- | --- |
| `Event` | `agent.connected` | 이벤트 타입 |
| `AccountId` | `AC...` | 계정 ID |
| `PhoneNumber` | `07052358015` | 복구된 번호 |
| `Status` | `connected` | 상태 |
| `DisconnectedAt` | `2026-06-04T01:49:45.000Z` | 끊겼던 순간 |
| `ReconnectedAt` | `2026-06-04T02:58:24.000Z` | 복구된 순간 |
| `DurationDownSec` | `4119` | 총 다운 지속 시간(초) |
| `Timestamp` | `2026-06-04T02:58:24.000Z` | 발송 시각 |

서명 검증은 다른 webhook 과 동일합니다 — [서명 검증](/docs/webhooks/signature-verification) 참고.
