Files
B.Tech-Project-III/thirdeye/docs/TESTING_WITH_MEET_TELEGRAM.md
2026-04-05 00:43:23 +05:30

511 lines
13 KiB
Markdown

# Testing ThirdEye with Actual Google Meet & Telegram
This guide walks you through testing the full Meet + Telegram integration end-to-end.
---
## Prerequisites
1. **Chrome browser** with Developer mode enabled
2. **Google account** for Google Meet
3. **Telegram account** and bot token (already configured)
4. **ThirdEye backend + bot** both running
---
## Step 1: Start Your Services
Open **two terminals** and run both services:
### Terminal 1: FastAPI Backend
```bash
cd c:\Projects\binary_hack
python run_api.py
```
You should see:
```
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000
```
### Terminal 2: Telegram Bot
```bash
cd c:\Projects\binary_hack
python -m backend.bot.bot
```
You should see:
```
INFO:thirdeye.bot:ThirdEye bot starting...
```
**Keep both running throughout the test.**
---
## Step 2: Verify Services Are Running
### Check API Health
```bash
curl http://localhost:8000/health
```
Expected response:
```json
{"status":"ok","service":"thirdeye"}
```
### Check Telegram Bot
Send `/start` to your bot in Telegram. You should see the welcome message with all available commands including:
- `/meetsum [id]` — Summarize a meeting
- `/meetask [id] [q]` — Ask about a meeting
- `/meetmatch [id]` — Match meeting to team chats
---
## Step 3: Load the Chrome Extension
1. Open Chrome and navigate to `chrome://extensions/`
2. Enable **Developer mode** (toggle in top-right corner)
3. Click **Load unpacked**
4. Navigate to `c:\Projects\binary_hack\meet_extension\`
5. Click **Select Folder**
You should see "ThirdEye Meet Recorder" in your extensions list.
---
## Step 4: Configure the Extension
1. Click the ThirdEye extension icon in Chrome toolbar
2. In the popup, scroll to the bottom section
3. Enter these settings:
- **Backend URL**: `http://localhost:8000`
- **Group ID**: `meet_sessions`
- **Ingest Secret**: `thirdeye_meet_secret_change_me`
4. Click **Save Settings**
You should see "✓ Saved" confirmation.
---
## Step 5: Start a Test Google Meet
### 5.1 Create or Join a Meeting
Go to https://meet.google.com and either:
- Create a new meeting (click "New meeting" → "Start an instant meeting")
- Join an existing meeting using a code
### 5.2 Start Recording
1. Once in the meeting, click the ThirdEye extension icon
2. You should see the popup UI with "▶ Start Recording" button
3. Click **Start Recording**
4. Chrome will prompt for microphone access - click **Allow**
### 5.3 Verify Recording Started
The extension popup should show:
- A pulsing **red dot** next to "Recording..."
- The **Meeting ID** (e.g., `abc-defg-hij`)
- **"0 chunks sent"** (this will increment)
### 5.4 Speak Some Test Content
Say things like:
- "We decided to use PostgreSQL for the database"
- "Alex will complete the migration by Friday"
- "The API timeout is blocking us from deploying"
- "Should we move the deadline? I'm not sure."
The extension will capture this and transcribe it using Chrome's Web Speech API.
---
## Step 6: Check Backend is Receiving Data
### 6.1 Watch FastAPI Logs
In Terminal 1 (where `run_api.py` is running), you should see:
```
INFO: 127.0.0.1:xxxxx - "POST /api/meet/start HTTP/1.1" 200 OK
INFO: 127.0.0.1:xxxxx - "POST /api/meet/ingest HTTP/1.1" 200 OK
INFO:thirdeye.agents.meet_ingestor:Processing meet chunk 0 for meeting abc-defg-hij (245 chars)
INFO:thirdeye.agents.meet_ingestor:Stored 5 signals for meeting abc-defg-hij chunk 0
```
### 6.2 Check API Endpoint
While recording or after:
```bash
curl http://localhost:8000/api/meet/meetings
```
Expected response:
```json
{
"meetings": [
{
"meeting_id": "abc-defg-hij",
"signal_count": 8,
"types": {
"meet_chunk_raw": 2,
"meet_decision": 2,
"meet_action_item": 2,
"meet_blocker": 1,
"meet_started": 1
}
}
]
}
```
### 6.3 Run Diagnostic Script
```bash
python scripts/debug_meet.py
```
This shows all meet signals in ChromaDB and which meetings have been recorded.
---
## Step 7: Stop Recording & Generate Summary
1. Click the extension icon
2. Click **■ Stop Recording**
3. This sends the final chunk with `is_final=True`, which triggers full meeting summary generation
Watch the backend logs - you should see:
```
INFO:thirdeye.agents.meet_ingestor:Processing meet chunk N for meeting abc-defg-hij (final)
```
---
## Step 8: Query the Meeting in Telegram
Now go to your Telegram bot chat:
### 8.1 Get Meeting Summary
```
/meetsum
```
or with specific meeting ID:
```
/meetsum abc-defg-hij
```
Expected response:
```
📋 Meeting Summary
ID: abc-defg-hij
Overview: Sprint planning meeting to finalize database choice and assign action items.
Key Decisions:
• PostgreSQL selected for primary database
• ...
Action Items:
• Alex: Complete migration by Friday
• ...
Blockers:
• API timeout blocking deployment
• ...
```
### 8.2 Ask Questions About the Meeting
```
/meetask abc-defg-hij What did we decide about the database?
```
Expected response:
```
🎙️ Meet Q&A — abc-defg-hij
Q: What did we decide about the database?
A: The team decided to use PostgreSQL for the primary database...
```
### 8.3 Cross-Reference with Chat History
First, make sure you have some Telegram chat messages in a monitored group. Then:
```
/meetmatch abc-defg-hij
```
Expected response:
```
🔗 Meet ↔ Chat Cross-Reference
Meeting: abc-defg-hij
⚡ Contradictions (1) — ACTION NEEDED
🔴 Meeting decided: We will use PostgreSQL for the database
BUT [your_dev_group] says: We should use MySQL, it's simpler
Impact: Database choice inconsistency may cause confusion
✅ Confirmations (1)
🟡 Meeting: API timeout blocking deployment
Matches [your_dev_group]: API timeout still happening
🔦 Blind Spots (1) — Teams may not know
🟠 OAuth refactor marked as high risk in meeting discussion
→ Consider notifying product team about deployment risks
```
---
## Step 9: Debugging Common Issues
### Issue 1: Extension Shows "Not on Google Meet"
**Cause**: You're not on a `meet.google.com` URL
**Fix**: Navigate to https://meet.google.com and join/start a meeting
### Issue 2: Extension Recording But No Chunks Sent
**Symptoms**:
- Popup shows "Recording..." with red dot
- But "chunks sent" stays at 0
**Debugging**:
1. Open Chrome DevTools (F12) on the Meet page
2. Go to Console tab
3. Look for `[ThirdEye]` messages
4. You should see: `[ThirdEye] Content script loaded` and `[ThirdEye] Speech recognition started`
**Common causes**:
- Microphone permission denied - check Chrome settings
- Backend URL incorrect in extension settings - verify it's `http://localhost:8000`
- Backend not running - check Terminal 1
### Issue 3: Backend Returning 403 Forbidden
**Cause**: Secret mismatch
**Fix**:
1. Check your `.env` file: `MEET_INGEST_SECRET=thirdeye_meet_secret_change_me`
2. Check extension settings (click icon → scroll down) - secret must match exactly
3. Save settings and try recording again
### Issue 4: Telegram Commands Say "No meetings found"
**Debugging steps**:
1. Run the diagnostic script:
```bash
python scripts/debug_meet.py
```
2. Check if signals exist but in wrong group:
```python
from backend.db.chroma import get_group_ids, get_all_signals
for group in get_group_ids():
signals = get_all_signals(group)
meet_sigs = [s for s in signals if s.get("metadata", {}).get("lens") == "meet"]
if meet_sigs:
print(f"{group}: {len(meet_sigs)} meet signals")
```
3. Check if meeting_id is stored in metadata:
```python
from backend.db.chroma import get_all_signals
signals = get_all_signals("meet_sessions")
for s in signals[:5]:
meta = s.get("metadata", {})
print(f"Type: {meta.get('type')}, MeetingID: {meta.get('meeting_id')}")
```
### Issue 5: /meetmatch Returns No Connections
**Cause**: No cross-reference groups configured or no signals in those groups
**Fix**:
1. Check `.env`: `MEET_CROSS_REF_GROUPS=your_telegram_group_id`
2. Make sure you have actual Telegram chat signals in those groups
3. Send some test messages in your Telegram group and wait 30s for processing
4. Verify with `/digest` in Telegram that signals exist
---
## Step 10: Full Integration Test Scenario
Here's a complete test scenario to verify everything works:
### Day 1: Seed Telegram Chat History
In your Telegram group, send these messages:
```
Alex: I think we should use MySQL for the new database
Sam: The checkout endpoint is timing out again
Priya: Let's just push OAuth changes directly to main
```
Wait 60 seconds for the bot to process these into signals.
### Day 2: Record a Google Meet
1. Start recording with extension
2. During meeting, say (or have participants say):
- "We've decided - PostgreSQL is the database we're using"
- "The checkout timeout is blocking the entire deploy"
- "OAuth refactor is risky, we need a feature branch first"
3. Stop recording after 2-3 minutes
### Day 3: Query and Cross-Reference
In Telegram:
```
/meetsum
```
Should show summary with decisions, actions, blockers.
```
/meetask abc-defg-hij What database did we choose?
```
Should answer: PostgreSQL
```
/meetmatch
```
Should show:
- **Contradiction**: PostgreSQL (meet) vs MySQL (chat)
- **Confirmation**: Checkout timeout mentioned in both
- **Contradiction**: Feature branch (meet) vs direct push (chat)
---
## API Endpoints Reference
For debugging, you can also hit the API directly:
### List All Meetings
```bash
curl http://localhost:8000/api/meet/meetings
```
### Get Signals for Specific Meeting
```bash
curl http://localhost:8000/api/meet/meetings/abc-defg-hij/signals
```
### Manual Ingest Test (without extension)
```bash
curl -X POST http://localhost:8000/api/meet/ingest \
-H "Content-Type: application/json" \
-H "X-ThirdEye-Secret: thirdeye_meet_secret_change_me" \
-d '{
"meeting_id": "manual-test",
"group_id": "meet_sessions",
"chunk_index": 0,
"text": "We decided to use PostgreSQL. Alex will set up the schema by Friday.",
"speaker": "Test User",
"timestamp": "2026-03-21T10:00:00Z",
"is_final": false
}'
```
Then check:
```bash
curl http://localhost:8000/api/meet/meetings
```
You should see `manual-test` in the list.
---
## Troubleshooting Checklist
Before asking for help, verify:
- [ ] Both services running (API on :8000, bot polling Telegram)
- [ ] Extension loaded in Chrome (check `chrome://extensions/`)
- [ ] Extension settings saved with correct backend URL and secret
- [ ] You're on `meet.google.com` (not hangouts)
- [ ] Microphone permission granted in Chrome
- [ ] Extension popup shows "Recording..." with red pulsing dot
- [ ] Backend logs show "Processing meet chunk..." messages
- [ ] `http://localhost:8000/api/meet/meetings` returns your meeting
- [ ] Telegram bot responds to `/start` command
- [ ] `.env` has `MEET_INGEST_SECRET` that matches extension
---
## Quick Smoke Test (No Meeting Required)
To test the backend without recording a real meeting:
```bash
# Terminal 1
python run_api.py
# Terminal 2 (new window)
python scripts/test_m14.py
```
This simulates the extension and verifies:
- API endpoints work
- Secret validation works
- Signals are stored correctly
- Meetings are queryable
If this passes, your backend is working. If Chrome extension still doesn't work, the issue is in the browser/extension setup.
---
## Expected Timeline
- **Chunk sent every**: 30 seconds while recording
- **Signal extraction**: 2-5 seconds after chunk received
- **Meeting summary**: Generated when you stop recording (takes 5-10 seconds)
- **Telegram query**: Instant (ChromaDB is fast)
- **Cross-reference**: 5-15 seconds (LLM analysis)
---
## Success Indicators
You'll know it's working when:
1. ✅ Extension popup shows incrementing "chunks sent" counter
2. ✅ Backend logs show "Stored N signals for meeting..."
3.`/api/meet/meetings` returns your meeting ID
4.`/meetsum` in Telegram shows your meeting summary
5.`/meetmatch` finds connections to your chat history
---
## Document Upload Best Practices
When uploading documents to Telegram:
- The bot will respond immediately with "📄 Processing..."
- Processing happens in the background (won't block other commands)
- You'll get a follow-up message when processing completes
- Large files (PDFs, DOCX) may take 30-60 seconds
- Maximum file size: 10 MB
If document processing fails, check:
- File format is supported (.pdf, .docx, .txt, .md, .csv, .json, .log)
- File is under 10 MB
- Backend API keys are configured (GROQ, CEREBRAS, etc.)
---
## Contact & Support
If you're stuck:
1. Run `python scripts/debug_meet.py` and share output
2. Check backend logs (Terminal 1) for errors
3. Check browser console (F12 on Meet page) for `[ThirdEye]` errors
4. Share the output of `curl http://localhost:8000/api/meet/meetings`