b578ea5951
# Fireflies Automatically (with cli util : webhook not working and no cron added) captures meeting notes with AI-generated summaries and insights from Fireflies.ai into your Twenty CRM. ## Current Status - Doesn't work with Fireflies webhook yet due to missing headers forwarding in twenty serverless func - Meeting ingestion utility script are available for individual meeting insertion and historical meetings with filters with yarn meeting:all - You have to push the secrets as application.config.ts values (despite env variables in .env in docker compose or container I couldn't push the secrets with the cli) ## Current Platform Limitation (Headers) - Twenty serverless route triggers currently do **not forward HTTP headers** to functions. Fireflies signatures sent in headers are stripped, so header-based verification does not work in production. - Workaround: the provided test script also includes the signature inside the payload; the handler falls back to that payload signature. Use this only for testing until header forwarding is supported. ## Utilities for meeting insertion (workarounds) - Ingest a specific Fireflies meeting into Twenty: `yarn meeting:ingest <meetingId>` or `MEETING_ID=... yarn meeting:ingest` - Fetch all/historical Fireflies meetings into Twenty: `yarn meeting:all [--from 2024-01-01] [--to 2024-02-01] [--organizer a@x.com] [--participant b@x.com] [--channel <channelId>] [--mine] [--dry-run]` - Filters (combine as needed): - `--from` / `--to`: ISO or date string range filter - `--organizer` / `--participant`: comma-separated emails - `--channel`: Fireflies channel id - `--mine`: only meetings for the current Fireflies user - Controls: - `--dry-run`: list and transform without writing to Twenty - `--page-size`: pagination size (default 50) - `--max-records`: stop after N transcripts (default 500) I am closing previous #16378 as this one includes it all
110 lines
4.6 KiB
Bash
110 lines
4.6 KiB
Bash
# Fireflies Integration Environment Variables
|
|
# Copy this file to .env and fill in your actual values
|
|
|
|
# =============================================================================
|
|
# REQUIRED: Authentication & API Keys
|
|
# =============================================================================
|
|
|
|
# Secret key for HMAC signature verification of Fireflies webhooks
|
|
# This must match the secret configured in your Fireflies webhook settings
|
|
# Get this from: https://app.fireflies.ai/settings#DeveloperSettings
|
|
FIREFLIES_WEBHOOK_SECRET=your_webhook_secret_here
|
|
|
|
# Fireflies API key for fetching meeting data from GraphQL API
|
|
# Get this from: https://app.fireflies.ai/settings#DeveloperSettings
|
|
FIREFLIES_API_KEY=your_fireflies_api_key_here
|
|
|
|
# Fireflies plan level - affects which fields are available
|
|
# Options: free, pro, business, enterprise
|
|
# This controls which GraphQL fields are requested to avoid 403 errors
|
|
FIREFLIES_PLAN=free
|
|
|
|
# Twenty CRM API key for authentication
|
|
# Generate this from your Twenty instance: Settings > Developers > API Keys
|
|
TWENTY_API_KEY=your_twenty_api_key_here
|
|
|
|
# =============================================================================
|
|
# Server Configuration
|
|
# =============================================================================
|
|
|
|
# Twenty CRM server URL
|
|
# Use http://localhost:3000 for local development
|
|
# Use your production URL for deployed instances
|
|
SERVER_URL=http://localhost:3000
|
|
|
|
# =============================================================================
|
|
# Contact Management
|
|
# =============================================================================
|
|
|
|
# Automatically create contacts for unknown participants (true/false)
|
|
# If true, new Person records will be created for meeting participants not found in CRM
|
|
# If false, only meetings with existing contacts will be fully processed
|
|
AUTO_CREATE_CONTACTS=true
|
|
|
|
# =============================================================================
|
|
# Summary Processing Configuration
|
|
# =============================================================================
|
|
|
|
# Strategy for handling async summary generation
|
|
# Options:
|
|
# - immediate_with_retry: Attempts immediate fetch with retry logic (RECOMMENDED)
|
|
# - delayed_polling: Schedules background polling for summaries
|
|
# - basic_only: Creates records without waiting for summaries
|
|
FIREFLIES_SUMMARY_STRATEGY=immediate_with_retry
|
|
|
|
# Number of retry attempts when fetching summary data
|
|
# Used with immediate_with_retry strategy
|
|
# Recommended: 3-5 attempts (summaries can take up to 10 minutes but rate limit is low)
|
|
FIREFLIES_RETRY_ATTEMPTS=5
|
|
|
|
# Delay in milliseconds between retry attempts (with exponential backoff)
|
|
# Each retry will wait: RETRY_DELAY * attempt_number
|
|
# Example: 120000ms means 2min, 4min, 6min... for extended backoff
|
|
# Total max time with 5 attempts: ~15 minutes
|
|
FIREFLIES_RETRY_DELAY=120000
|
|
|
|
# Polling interval in milliseconds for delayed_polling strategy
|
|
# How often to check if summary is ready
|
|
# Recommended: 60000 (60 seconds) for extended processing
|
|
FIREFLIES_POLL_INTERVAL=120000
|
|
|
|
# Maximum number of polling attempts for delayed_polling strategy
|
|
# Total max time = POLL_INTERVAL * MAX_POLLS
|
|
# Example: 2min * 5 = 10 minutes maximum
|
|
FIREFLIES_MAX_POLLS=5
|
|
|
|
# =============================================================================
|
|
# Debugging & Logging
|
|
# =============================================================================
|
|
|
|
# Log level: silent, error, warn, info, debug (default: error)
|
|
# Controls verbosity of console output
|
|
# - silent: No console output
|
|
# - error: Only errors (production default)
|
|
# - warn: Warnings and errors
|
|
# - info: Info, warnings, and errors
|
|
# - debug: All logs including detailed debugging
|
|
LOG_LEVEL=error
|
|
|
|
# =============================================================================
|
|
# Configuration Notes
|
|
# =============================================================================
|
|
#
|
|
# Webhook Setup:
|
|
# 1. Configure your Fireflies webhook at: https://app.fireflies.ai/settings#DeveloperSettings
|
|
# 2. Webhook URL: https://your-twenty-instance.com/s/webhook/fireflies
|
|
# 3. Event Type: "Transcription completed"
|
|
# 4. Secret: Same value as FIREFLIES_WEBHOOK_SECRET above, genereate it there
|
|
#
|
|
# Summary Strategy Guide:
|
|
# - immediate_with_retry: Best for most use cases - fast with reliability
|
|
# - delayed_polling: Use if your server is heavily loaded
|
|
# - basic_only: Use if you only need transcript links without AI summaries
|
|
#
|
|
# Performance Tuning:
|
|
# - Fireflies summaries can take 5-15 minutes to generate after transcription
|
|
# - Use 30+ retry attempts with 30s delay for 15-minute coverage
|
|
# - Consider delayed_polling strategy for heavily loaded servers
|
|
# - Monitor DEBUG_LOGS to tune timing for your Fireflies account
|
|
#
|