56 lines
1.3 KiB
Markdown
56 lines
1.3 KiB
Markdown
# AgentMail WebSockets
|
|
|
|
Use WebSockets when a local agent process needs realtime inbound mail. After an
|
|
event arrives, use the CLI for inbox, send, reply, label, and attachment work.
|
|
|
|
## Python
|
|
|
|
The Python example needs the separate AgentMail Python SDK, not the CLI:
|
|
|
|
```bash
|
|
pip install agentmail
|
|
```
|
|
|
|
`AgentMail()` reads `AGENTMAIL_API_KEY` from the environment. If the SDK is
|
|
unavailable, use the `Raw` WebSocket below instead.
|
|
|
|
```python
|
|
from agentmail import AgentMail, MessageReceivedEvent, Subscribe
|
|
|
|
client = AgentMail()
|
|
|
|
with client.websockets.connect() as socket:
|
|
socket.send_subscribe(Subscribe(
|
|
inbox_ids=["agent@agentmail.to"],
|
|
event_types=["message.received"],
|
|
))
|
|
for event in socket:
|
|
if isinstance(event, MessageReceivedEvent):
|
|
print(event.message.subject, event.message.from_)
|
|
```
|
|
|
|
## Raw
|
|
|
|
```text
|
|
wss://ws.agentmail.to/v0?api_key=$AGENTMAIL_API_KEY
|
|
```
|
|
|
|
EU region:
|
|
|
|
```text
|
|
wss://ws.agentmail.eu/v0?api_key=$AGENTMAIL_API_KEY
|
|
```
|
|
|
|
Subscribe frame:
|
|
|
|
```json
|
|
{ "type": "subscribe", "event_types": ["message.received"], "inbox_ids": ["agent@agentmail.to"] }
|
|
```
|
|
|
|
Omit `inbox_ids` and `pod_ids` for the API key scope.
|
|
|
|
## Loop Rules
|
|
|
|
- Dedupe every event by `event_id`.
|
|
- Reconnect with backoff and resubscribe after reconnecting.
|