130 lines
3.0 KiB
Markdown
130 lines
3.0 KiB
Markdown
# Natural Language Processing - Feature Added! 🎉
|
|
|
|
## ✅ What Changed
|
|
|
|
The Telegram bot now understands **natural language** - no need for commands!
|
|
|
|
### Before (Commands Only)
|
|
```
|
|
/deck add Review reports by Friday
|
|
/email search train ticket
|
|
/ask What's the weather?
|
|
```
|
|
|
|
### After (Natural Language)
|
|
```
|
|
add a deck called cleaning
|
|
tell me when my train leaves today
|
|
what's the weather like?
|
|
create a task to call mom tomorrow
|
|
find my invoice from last week
|
|
```
|
|
|
|
## 🧠 How It Works
|
|
|
|
1. **Message received** → Bot checks if it starts with `/`
|
|
2. **If no `/`** → Sends to OpenAI for intent classification
|
|
3. **AI analyzes** and returns one of:
|
|
- `deck_add` - Create task in Nextcloud Deck
|
|
- `email_search` - Search emails via IMAP
|
|
- `general_chat` - Answer question with AI
|
|
4. **Converts to command format** and routes to appropriate workflow
|
|
5. **Processes normally** like a slash command
|
|
|
|
## 📝 Example Inputs
|
|
|
|
### Deck Tasks
|
|
```
|
|
add a deck called cleaning
|
|
create task review quarterly reports
|
|
remind me to call the dentist tomorrow
|
|
add card: finish the presentation by Friday
|
|
task for übermorgen: grocery shopping
|
|
```
|
|
|
|
### Email Search
|
|
```
|
|
tell me when my train leaves today
|
|
find my train ticket
|
|
search for invoice from November
|
|
show me emails about the project
|
|
where's my booking confirmation?
|
|
```
|
|
|
|
### General Chat
|
|
```
|
|
what's the weather like?
|
|
explain quantum computing
|
|
how do I convert Celsius to Fahrenheit?
|
|
tell me a joke
|
|
what's 15% of 250?
|
|
```
|
|
|
|
## 🔧 Technical Details
|
|
|
|
**AI Prompt** classifies intent with examples:
|
|
- Extracts task name, due date for deck commands
|
|
- Extracts search query for email commands
|
|
- Passes full question for general chat
|
|
- Supports German dates (morgen, übermorgen)
|
|
- Returns structured JSON for routing
|
|
|
|
**OpenAI Model:** `gpt-4o-mini` (fast, cost-effective)
|
|
**Temperature:** 0.3 (focused, consistent)
|
|
**Max Tokens:** 150 (quick classification)
|
|
|
|
## 🚀 Usage
|
|
|
|
Just chat naturally with your bot:
|
|
|
|
✅ **"add a deck called cleaning"**
|
|
→ Creates Nextcloud Deck card with title "cleaning"
|
|
|
|
✅ **"tell me when my train leaves today"**
|
|
→ Searches emails for "train" and shows results
|
|
|
|
✅ **"what's the capital of Germany?"**
|
|
→ AI answers: "Berlin"
|
|
|
|
## ⚡ Next Steps
|
|
|
|
1. **Activate workflow** in n8n (already imported)
|
|
2. **Test in Telegram** - just send a message without `/`
|
|
3. **Monitor** first few uses to verify classification accuracy
|
|
|
|
## 📊 Classification Examples
|
|
|
|
```json
|
|
// Input: "add a deck called cleaning"
|
|
{
|
|
"intent": "deck_add",
|
|
"task": "cleaning",
|
|
"duedate": null
|
|
}
|
|
|
|
// Input: "find my train ticket"
|
|
{
|
|
"intent": "email_search",
|
|
"query": "train ticket"
|
|
}
|
|
|
|
// Input: "what's the weather?"
|
|
{
|
|
"intent": "general_chat",
|
|
"question": "what's the weather?"
|
|
}
|
|
```
|
|
|
|
## 🐛 Fallback Behavior
|
|
|
|
If AI classification fails or is unclear:
|
|
- Defaults to `general_chat`
|
|
- Sends original message to OpenAI
|
|
- User still gets a helpful response
|
|
|
|
---
|
|
|
|
**Updated:** 2025-12-02
|
|
**Workflow:** telegram-receiver.json (re-imported)
|
|
**Status:** ✅ Ready to use - activate in n8n UI
|