1 line
55 KiB
Markdown
1 line
55 KiB
Markdown
|
|
# Integration Automation Scripts\n\n## Rust Meetup 2025 - Complete Data Pipeline & Automation\n\nThis document provides complete automation scripts for integrating Typebot, Formbricks, Claper, and Baserow for seamless event management.\n\n---\n\n## 🏗️ **Architecture Overview**\n\n```plaintext\n┌─────────────┐ ┌─────────────┐ ┌─────────────┐\n│ Typebot │ │ Formbricks │ │ Claper │\n│(Conversational)│ │ (Surveys) │ │(Live Polls) │\n└──────┬──────┘ └──────┬──────┘ └──────┬──────┘\n │ │ │\n ▼ ▼ ▼\n┌─────────────────────────────────────────────────────┐\n│ Webhook Processor │\n│ (Python FastAPI Service) │\n└─────────────────────┬───────────────────────────────┘\n │\n ▼\n┌─────────────────────────────────────────────────────┐\n│ Baserow │\n│ (Central Database) │\n└─────────────────────────────────────────────────────┘\n```\n\n---\n\n## 🐍 **Webhook Processor Service**\n\n### **webhook-processor.py**\n\n```python\n#!/usr/bin/env python3\n"""\nWebhook Processor for Rust Meetup 2025\nHandles data integration between Typebot, Formbricks, Claper, and Baserow\n"""\n\nfrom fastapi import FastAPI, HTTPException, BackgroundTasks, Depends\nfrom fastapi.security import HTTPBearer, HTTPAuthorizationCredentials\nfrom pydantic import BaseModel, Field, validator\nfrom typing import Dict, List, Optional, Any\nimport httpx\nimport json\nimport logging\nimport os\nfrom datetime import datetime, timedelta\nimport asyncio\nimport hashlib\nimport hmac\nfrom enum import Enum\n\n# Configure logging\nlogging.basicConfig(\n level=logging.INFO,\n format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'\n)\nlogger = logging.getLogger(__name__)\n\n# Initialize FastAPI app\napp = FastAPI(\n title="Rust Meetup 2025 - Webhook Processor",\n description="Central webhook processor for event management data pipeline",\n version="1.0.0"\n)\n\n# Security\nsecurity = HTTPBearer()\n\n# Configuration\nclass Config:\n BASEROW_API_URL = os.getenv("BASEROW_API_URL", "https://baserow.rustmeetup.com/api")\n BASEROW_API_TOKEN = os.getenv("BASEROW_API_TOKEN")\n WEBHOOK_SECRET = os.getenv("WEBHOOK_SECRET")\n\n # Table IDs in Baserow\n ATTENDEES_TABLE_ID = int(os.getenv("ATTENDEES_TABLE_ID", "1"))\n PRE_EVENT_TABLE_ID = int(os.getenv("PRE_EVENT_TABLE_ID", "2"))\n LIVE_ENGAGEMENT_TABLE_ID = int(os.getenv("LIVE_ENGAGEMENT_TABLE_ID", "3"))\n POST_EVENT_TABLE_ID = int(os.getenv("POST_EVENT_TABLE_ID", "4"))\n FOLLOW_UP_TABLE_ID = int(os.getenv("FOLLOW_UP_TABLE_ID", "5"))\n\n # Email configuration\n SMTP_HOST = os.getenv("SMTP_HOST", "smtp.gmail.com")\n SMTP_PORT = int(os.getenv("SMTP_PORT", "587"))\n SMTP_USER = os.getenv("SMTP_USER")\n SMTP_PASSWORD = os.getenv("SMTP_PASSWORD")\n\n # External service URLs\n DISCORD_WEBHOOK_URL = os.getenv("DISCORD_WEBHOOK_URL")\n SLACK_WEBHOOK_URL = os.getenv("SLACK_WEBHOOK_URL")\n\nconfig = Config()\n\n# Pydantic Models\nclass SourceSystem(str, Enum):\n TYPEBOT = "typebot"\n FORMBRICKS = "formbricks"\n CLAPER = "claper"\n MANUAL = "manual"\n\nclass WebhookPayload(BaseModel):\n source: SourceSystem\n
|