Multi-Channel Bots

Run multiple bots on one platform — one per role (CFO, Ops, Content) — with per-channel tokens

python
from praisonaiagents import Agent

agent = Agent(name="multi-channel-bot", instructions="Respond across Telegram, Slack, and Discord.")
agent.start("Handle the same question from users on all three platforms.")

The user deploys role-specific bots on one platform; each token routes to its agent.

Deploy multiple specialized bots on the same platform with unique tokens and role-specific routing.

Diagram

Multi-Channel Bot Workforce

👤 User

🤖 @company_cfo_bot

🤖 @company_ops_bot

🤖 @company_content_bot

💼 CFO Agent

⚙️ Ops Agent

✏️ Content Agent

Quick Start

  1. Run onboard wizard

    Start the wizard and choose your platform:

    bash
    praisonai onboard

    Choose telegram for your first platform, then when prompted “Add another bot channel?” answer Yes and enter roles like cfo, ops, content.

  2. Configure tokens

    The wizard generates unique environment variables for each channel:

    bash
    # Tokens are saved to ~/.praisonai/.env automatically
    TELEGRAM_CFO_BOT_TOKEN=123456789:ABC...
    TELEGRAM_OPS_BOT_TOKEN=987654321:DEF...
    TELEGRAM_CONTENT_BOT_TOKEN=456789123:GHI...
    TELEGRAM_ALLOWED_USERS=123456789,987654321
  3. Start the gateway

    Launch all bots simultaneously:

    bash
    praisonai gateway start

    All configured bots will connect and route to their specialized agents.


How It Works

Diagram
CFO AgentGateway@company_cfo_botUserCFO AgentGateway@company_cfo_botUser“What’s our Q4 budget?”Route to cfo channelProcess with CFO instructionsFinancial analysis responseReturn responseCFO expertise reply

Multi-channel setup routes each bot to its specialized agent based on the channel configuration.


Environment Variable Convention

Follow this exact naming pattern for multiple bots on the same platform:

Channel keyEnvironment VariableBot Purpose
telegram_cfoTELEGRAM_CFO_BOT_TOKENCFO-related tasks
telegram_opsTELEGRAM_OPS_BOT_TOKENOperations tasks
telegram_contentTELEGRAM_CONTENT_BOT_TOKENContent creation
telegram_supportTELEGRAM_SUPPORT_BOT_TOKENCustomer support

Pattern: `

_

_BOT_TOKEN` (uppercase, role separated by underscore).


Example Configuration

This bot.yaml shows a complete multi-channel workforce setup:

yaml
gateway:
  host: "127.0.0.1"
  port: 8765

agents:
  cfo:
    instructions: "You are a CFO agent. Help with financial analysis, budget planning, and cost optimization."
    model: gpt-4o-mini
    memory: false
  ops:
    instructions: "You are an ops agent. Help with system monitoring, deployment, and infrastructure."
    model: gpt-4o-mini
    memory: false
  content:
    instructions: "You are a content agent. Help with writing, editing, and content strategy."
    model: gpt-4o-mini
    memory: false

channels:
  telegram_cfo:
    platform: telegram
    token: ${TELEGRAM_CFO_BOT_TOKEN}
    group_policy: mention_only
    allowed_users: ${TELEGRAM_ALLOWED_USERS}
    routes:
      default: cfo
  telegram_ops:
    platform: telegram
    token: ${TELEGRAM_OPS_BOT_TOKEN}
    group_policy: mention_only
    allowed_users: ${TELEGRAM_ALLOWED_USERS}
    routes:
      default: ops
  telegram_content:
    platform: telegram
    token: ${TELEGRAM_CONTENT_BOT_TOKEN}
    group_policy: mention_only
    allowed_users: ${TELEGRAM_ALLOWED_USERS}
    routes:
      default: content

Common Patterns

Single platform, multiple roles

Deploy multiple specialized bots on one platform:

yaml
channels:
  telegram_finance:
    platform: telegram
    token: ${TELEGRAM_FINANCE_BOT_TOKEN}
    routes:
      default: finance_agent

  telegram_hr:
    platform: telegram
    token: ${TELEGRAM_HR_BOT_TOKEN}
    routes:
      default: hr_agent

  telegram_marketing:
    platform: telegram
    token: ${TELEGRAM_MARKETING_BOT_TOKEN}
    routes:
      default: marketing_agent

Cross-platform workforce

Distribute roles across different platforms:

yaml
channels:
  telegram_cfo:
    platform: telegram
    token: ${TELEGRAM_CFO_BOT_TOKEN}
    routes:
      default: cfo

  discord_ops:
    platform: discord
    token: ${DISCORD_OPS_BOT_TOKEN}
    routes:
      default: ops

  slack_content:
    platform: slack
    token: ${SLACK_CONTENT_BOT_TOKEN}
    routes:
      default: content

Local + remote continuity

Add the built-in local channel next to a remote one — start a conversation in your terminal and keep the same session going from your phone.

yaml
channels:
  local: {}
  telegram:
    platform: telegram
    token: ${TELEGRAM_BOT_TOKEN}

agents:
  assistant:
    instructions: "You are a helpful assistant."
bash
praisonai-bot gateway start

Both surfaces share one resolved session id via the identity resolver and delivery router. See Local (Terminal) Channel.


Validation with praisonai doctor

The multi_channel_tokens check validates your setup:

PASS Conditions

  • Each channel has a unique environment variable
  • Each environment variable resolves to a unique token value
  • Follows `PLATFORM_

_BOT_TOKEN` naming convention

WARN Conditions

  • Environment variable doesn’t follow naming convention
  • Environment variable is unset but referenced in config

FAIL Conditions

  • Two channels point to the same environment variable
  • Two environment variables resolve to the same token value

Sample output:

bash
$ praisonai doctor
✓ Multi-Channel Token Configuration: Multi-channel configuration looks good (3 channels)

Remediation: Each channel must have a unique bot token. Create separate bots in @BotFather and use unique environment variables.


Best Practices

Use unique tokens per role

Create a separate bot in @BotFather for each role. Never reuse the same token across multiple channels as this will cause conflicts and validation failures.

Follow naming convention

Stick to the `PLATFORM_

_BOT_TOKEN` pattern so the doctor check passes. This makes it clear which token belongs to which channel and role.

Secure token storage

Keep all role tokens in ~/.praisonai/.env with chmod 600 permissions. Never commit tokens to version control or share them publicly.

Role-specific access control

Each role can have its own allowed_users environment variable for granular access control. For example, only finance team members should access the CFO bot.


When to Use Multi-Channel

Diagram

Yes

No

Yes

Need multiple bots?

Same platform?

Use Multi-Channel
Multiple roles, one platform

Use Multi-Platform
One bot per platform

• Department-specific bots
• Role-based expertise
• Workflow separation

• Reach different audiences
• Platform-specific features
• Redundancy across platforms

Just one bot?

Standard single bot setup


Related