mirror of
https://github.com/arkorty/B.Tech-Project-III.git
synced 2026-04-19 12:41:48 +00:00
511 lines
13 KiB
Markdown
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`
|