Files
tlw-database-tool/docs/whatsapp.md
T

41 lines
1.7 KiB
Markdown

# whatsapp — WhatsApp Reminder System
Sends personalized WhatsApp reminders to users who haven't submitted their bets before the deadline. Uses OpenAI GPT-3.5 to generate natural-language reminder messages.
## Classes
### WhatsAppNotifier
Orchestrates the reminder workflow:
1. Queries DB for upcoming reminders at 2 checkpoints: **24 hours** and **2 hours** before deadline
2. For each reminder, generates a message via `OpenAIConnector`
3. Sends via WhatsApp API (HTTP POST to configurable host:port)
4. Marks sent reminders in DB to avoid duplicates
Requires env vars: `TLW_WHATSAPP_HOST`, `TLW_WHATSAPP_PORT`, `TLW_WHATSAPP_API_KEY`.
### OpenAIConnector
Caches and generates reminder text via OpenAI Chat Completions API (model `gpt-3.5-turbo-0125`).
Prompt structure:
- **System prompt** (German): "Generate a message reminding someone to submit missing tips. Must sound like a friend. Use correct singular/plural."
- **User input**: JSON with league name, matchday name, delivery day, time
- **Output template** has 2 variants — 24h deadline uses a friendly intro, 2h deadline emphasizes urgency
Message format:
```
Hey <username>,
<AI-generated intro>
Bitte gib die fehlenden Tipps bis <today/morgen> um <HH:MM> ab.
Du kannst deine Tipps wie immer unter https://tippliga-wuerzburg.de/app.php/football/bet abgeben.
Viele Grüße
Die Tippliga Admins
```
Messages are cached per (league + matchday + delivery) key to avoid repeated API calls.
### WhatsAppReminder
Java `record` with fields: season, league, leagueName, matchday, matchdayName, deliveryDate, todayTomorrow, time, remainingHours, userId, username, phoneNumber, missingBets.
Maps directly to the SQL query result from `TippligaSQLConnector.getNextWhatsAppReminders()`.