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

13 KiB

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

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

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

curl http://localhost:8000/health

Expected response:

{"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:

curl http://localhost:8000/api/meet/meetings

Expected response:

{
  "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

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:
python scripts/debug_meet.py
  1. Check if signals exist but in wrong group:
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")
  1. Check if meeting_id is stored in metadata:
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

curl http://localhost:8000/api/meet/meetings

Get Signals for Specific Meeting

curl http://localhost:8000/api/meet/meetings/abc-defg-hij/signals

Manual Ingest Test (without extension)

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:

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:

# 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