Speaking Bots API

Conversational AI Agents for Meetings

The Speaking Bots API lets you deploy conversational AI agents (personas) into Google Meet, Microsoft Teams, and Zoom meetings. These bots can speak, listen, and interact in real time, powered by Pipecat and Meeting BaaS.

  • Deploy bots with custom personalities and voices
  • Real-time audio streaming and speech-to-text
  • Support for multiple platforms and multiple bots per meeting
  • OpenAPI and HTTP endpoints for easy integration

The API is open source and can be self-hosted or used via the public endpoint.

Key Features

  • Conversational AI: Bots can speak, listen, and interact in meetings
  • Custom Personas: Define unique personalities, voices, and entry messages
  • Multi-Platform: Google Meet, Microsoft Teams, Zoom
  • WebSocket Audio: Real-time audio streaming with Pipecat
  • Open Source: Full codebase available for customization
  • Easy Deployment: Launch bots with a simple HTTP POST

API Endpoints

  • POST /bots — Deploy a speaking bot to a meeting
  • DELETE /bots/{bot_id} — Remove a bot from a meeting
  • GET /health — Health check

See the API docs and OpenAPI spec for full details.

Setup and Installation

Prerequisites

  • Python 3.11+
  • grpc_tools for protocol buffer compilation
  • Ngrok for local development
  • Poetry for dependency management

Quick Setup

  1. Clone the repository:

    git clone https://github.com/Meeting-Baas/speaking-meeting-bot.git
    cd speaking-meeting-bot
  2. Install dependencies:

    # Install Poetry
    curl -sSL https://install.python-poetry.org | python3 -
    
    # Configure Poetry and install dependencies
    poetry env use python3.11
    poetry install
    poetry shell
  3. Configure environment:

    cp env.example .env

    Edit .env with your API keys:

    • MEETING_BAAS_API_KEY: For meeting platform integration
    • OPENAI_API_KEY: For the conversation LLM
    • CARTESIA_API_KEY: For text-to-speech
    • GLADIA_API_KEY or DEEPGRAM_API_KEY: For speech-to-text
  4. Run the server:

    poetry run uvicorn app:app --reload --host 0.0.0.0 --port 8766

For detailed setup instructions, see the official setup guide.

API Usage Examples

Deploy a Speaking Bot

basic_speaking_bot.sh
curl -X POST https://speaking.meetingbaas.com/bots \
  -H "Content-Type: application/json" \
  -d '{
    "meeting_url": "https://us06web.zoom.us/j/123456789?pwd=example",
    "personas": ["baas_onboarder"],
    "meeting_baas_api_key": "your-api-key"
  }'
advanced_speaking_bot.sh
curl -X POST "https://speaking.meetingbaas.com/bots" \
  -H "x-meeting-baas-api-key: <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "bot_image": "https://example.com/bot-avatar.png",
    "bot_name": "Meeting Assistant",
    "enable_tools": true,
    "entry_message": "Hello! I\'m here to assist with the meeting.",
    "extra": {
      "company": "ACME Corp",
      "meeting_purpose": "Weekly sync"
    },
    "meeting_url": "https://meet.google.com/abc-defg-hij",
    "personas": [
      "helpful_assistant",
      "meeting_facilitator"
    ],
    "prompt": "You are Meeting Assistant, a concise and professional AI bot that helps summarize key points and keep the meeting on track. Speak clearly and stay on topic."
  }'
speaking_bot.py
import requests
import json

def deploy_speaking_bot():
    url = "https://speaking.meetingbaas.com/bots"
    headers = {
        "Content-Type": "application/json",
        "x-meeting-baas-api-key": "your-api-key"
    }
    
    payload = {
        "meeting_url": "https://meet.google.com/abc-defg-hij",
        "bot_name": "AI Assistant",
        "personas": ["helpful_assistant"],
        "entry_message": "Hello! I'm your AI assistant for this meeting.",
        "bot_image": "https://example.com/bot-avatar.png",
        "enable_tools": True,
        "extra": {
            "company": "Your Company",
            "meeting_purpose": "Team sync"
        }
    }
    
    response = requests.post(url, headers=headers, json=payload)
    return response.json()

# Deploy the speaking bot
result = deploy_speaking_bot()
print(result)

Remove a Bot from Meeting

remove_bot.sh
curl -X DELETE "https://speaking.meetingbaas.com/bots/{bot_id}" \
  -H "x-meeting-baas-api-key: your-api-key"

Personas: Custom Conversational Agents

Define your own personas with unique prompts, voices, and behaviors. See the personas directory for examples.

  • Each persona is a folder with Markdown files for prompt, context, and rules
  • Assign a persona by name when launching a bot
  • Supports custom entry messages, images, and voice IDs

Example Persona Configuration

persona_config.yaml
# Example persona structure
personas/
├── helpful_assistant/
│   ├── prompt.md          # Main personality prompt
│   ├── context.md         # Background context
│   └── rules.md           # Behavioral rules
├── meeting_facilitator/
│   ├── prompt.md
│   ├── context.md
│   └── rules.md
└── interviewer/
    ├── prompt.md
    ├── context.md
    └── rules.md

Available Personas

  • helpful_assistant: General meeting assistance and note-taking
  • meeting_facilitator: Helps guide meetings and keep discussions on track
  • interviewer: Conducts structured interviews and asks follow-up questions
  • baas_onboarder: Specialized for customer onboarding meetings

Local Development

For local development and testing:

# Run in local development mode with ngrok auto-configuration
poetry run python run.py --local-dev

# Access interactive API docs
open http://localhost:8766/docs

# Test with CLI tools
poetry run python scripts/batch.py -c 1 --meeting-url YOUR_MEETING_URL
Meeting BaaS API Preview Features

Get Started

Ready to deploy conversational AI agents in your meetings? Check out our comprehensive resources: