116 lines
2.7 KiB
Markdown
116 lines
2.7 KiB
Markdown
|
|
# Trips Email Worker
|
||
|
|
|
||
|
|
Forward booking confirmation emails to your Trips app for automatic parsing.
|
||
|
|
|
||
|
|
## How It Works
|
||
|
|
|
||
|
|
1. Email arrives at `travel@quadjourney.com`
|
||
|
|
2. Cloudflare Email Routing forwards to this Worker
|
||
|
|
3. Worker extracts email content and attachments
|
||
|
|
4. Sends to Trips API for AI parsing
|
||
|
|
5. You get a Telegram notification with parsed details
|
||
|
|
|
||
|
|
## Setup Steps
|
||
|
|
|
||
|
|
### 1. Generate an API Key
|
||
|
|
|
||
|
|
Generate a secure random key:
|
||
|
|
```bash
|
||
|
|
openssl rand -hex 32
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2. Add API Key to Trips Docker
|
||
|
|
|
||
|
|
In your `docker-compose.yml`, add the environment variable:
|
||
|
|
```yaml
|
||
|
|
services:
|
||
|
|
trips:
|
||
|
|
environment:
|
||
|
|
- EMAIL_API_KEY=your-generated-key-here
|
||
|
|
- TELEGRAM_BOT_TOKEN=your-bot-token # Optional
|
||
|
|
- TELEGRAM_CHAT_ID=your-chat-id # Optional
|
||
|
|
```
|
||
|
|
|
||
|
|
Restart the container:
|
||
|
|
```bash
|
||
|
|
docker compose up -d
|
||
|
|
```
|
||
|
|
|
||
|
|
### 3. Create Cloudflare Worker
|
||
|
|
|
||
|
|
1. Go to [Cloudflare Dashboard](https://dash.cloudflare.com) → Workers & Pages
|
||
|
|
2. Click "Create Worker"
|
||
|
|
3. Name it `trips-email-worker`
|
||
|
|
4. Paste the contents of `worker.js`
|
||
|
|
5. Click "Deploy"
|
||
|
|
|
||
|
|
### 4. Add Worker Secrets
|
||
|
|
|
||
|
|
In the Worker settings, add these environment variables:
|
||
|
|
|
||
|
|
| Variable | Value |
|
||
|
|
|----------|-------|
|
||
|
|
| `TRIPS_API_URL` | `https://trips.quadjourney.com` |
|
||
|
|
| `TRIPS_API_KEY` | Your generated API key |
|
||
|
|
| `FORWARD_TO` | (Optional) Backup email address |
|
||
|
|
|
||
|
|
Or via CLI:
|
||
|
|
```bash
|
||
|
|
cd email-worker
|
||
|
|
npm install wrangler
|
||
|
|
wrangler secret put TRIPS_API_KEY
|
||
|
|
```
|
||
|
|
|
||
|
|
### 5. Set Up Email Routing
|
||
|
|
|
||
|
|
1. Go to Cloudflare Dashboard → quadjourney.com → Email → Email Routing
|
||
|
|
2. Click "Routing Rules" → "Create address"
|
||
|
|
3. Set:
|
||
|
|
- Custom address: `travel`
|
||
|
|
- Action: "Send to Worker"
|
||
|
|
- Destination: `trips-email-worker`
|
||
|
|
4. Click "Save"
|
||
|
|
|
||
|
|
### 6. Verify DNS
|
||
|
|
|
||
|
|
Cloudflare should auto-configure MX records. Verify:
|
||
|
|
- MX record pointing to Cloudflare's email servers
|
||
|
|
- SPF/DKIM records if sending replies
|
||
|
|
|
||
|
|
## Testing
|
||
|
|
|
||
|
|
Forward a booking confirmation email to `travel@quadjourney.com`.
|
||
|
|
|
||
|
|
Check your Telegram for the parsed result, or check server logs:
|
||
|
|
```bash
|
||
|
|
docker logs trips --tail 50
|
||
|
|
```
|
||
|
|
|
||
|
|
## Supported Email Types
|
||
|
|
|
||
|
|
- Flight confirmations (airlines, booking sites)
|
||
|
|
- Hotel/lodging reservations
|
||
|
|
- Car rental confirmations
|
||
|
|
- Activity bookings
|
||
|
|
|
||
|
|
## Attachments
|
||
|
|
|
||
|
|
The worker can process:
|
||
|
|
- PDF attachments (itineraries, e-tickets)
|
||
|
|
- Image attachments (screenshots)
|
||
|
|
- Plain text/HTML email body
|
||
|
|
|
||
|
|
## Troubleshooting
|
||
|
|
|
||
|
|
**Worker not receiving emails:**
|
||
|
|
- Check Email Routing is enabled for domain
|
||
|
|
- Verify MX records are configured
|
||
|
|
- Check Worker logs in Cloudflare dashboard
|
||
|
|
|
||
|
|
**API returns 401:**
|
||
|
|
- Verify API key matches in Worker and Docker
|
||
|
|
|
||
|
|
**No Telegram notification:**
|
||
|
|
- Check TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID are set
|
||
|
|
- Verify bot has permission to message the chat
|