π¨ Visual Guide - Multi-Platform Bot¶
π Arquitetura em Camadas (ASCII)¶
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PLATAFORMAS DE MENSAGERIA β
β ββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
β βSlack β β Telegram β β WhatsApp β β Discord β β
β ββββ¬ββββ ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ β
βββββββͺββββββββββββͺββββββββββββββͺββββββββββββββͺβββββββββββββββββ
β β β β
β POST β POST β POST β POST
βΌ βΌ βΌ βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β WEBHOOK UNIFICADO β
β FastAPI (/webhook/*) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Router: Identifica plataforma pelo path β β
β β /slack/events β SlackAdapter β β
β β /telegram/webhook β TelegramAdapter β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββͺββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MESSAGING FRAMEWORK β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β AdapterFactory β β
β β β’ Registra adapters via env vars β β
β β β’ get_adapter(platform) β β
β β β’ get_adapter_by_webhook_path(path) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββ β
β β MessagingAdapter (Interface) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β SlackAdapter β TelegramAdapter β WhatsAppAdapterβ β
β β β
ProduΓ§Γ£o β β οΈ Exemplo β β οΈ Exemplo β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββ β
β β ConversationProcessor β β
β β β’ process_message(IncomingMessage, Adapter) β β
β β β’ Feedback visual (typing, tool status) β β
β β β’ DelegaΓ§Γ£o ao ADK Runner β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββͺββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ADK RUNNER + AGENT β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β’ root_agent (iFriend Agent) β β
β β β’ SessionService (Redis/CloudSQL) β β
β β β’ MemoryService (CloudSQL/Redis) β β
β β β’ Tools (booking, produtos, FAQ, etc.) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Fluxo de Mensagem (SequΓͺncia)¶
π€ UsuΓ‘rio Slack Webhook Factory Adapter Processor Runner Agent
β β β β β β β β
βββββ "OlΓ‘" ββββββββββββββββββββΆβ β β β β β β
β β β β β β β β
β ββββ POST /webhook/slack/events βββββββββββΆβ β β β β
β β β β β β β β
β β ββββ get_adapter_by_webhook_path() ββββΆβ β β β
β β β β β β β β
β β ββββββ SlackAdapter βββββββββββββββββββ β β β
β β β β β β β β
β β βββββββ parse_webhook_request() βββββββββββββββββββββββΆβ β β β
β β β β β β β β
β β βββββ IncomingMessage(platform="slack", text="OlΓ‘") ββββ β β β
β β β β β β β β
β β βββββββ process_message() ββββββββββββββββββββββββββββββββββββββββββββββΆβ β β
β β β β β β β β
β ββββββ "π Processando..." βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β β β β β
ββββββ "π Processando..." βββββ β β β β β β
β β β β β β β β
β β β β β βββββ run_async() ββββββββββββββΆβ
β β β β β β β β
β β β β β β ββββ process βββΆβ
β β β β β β β β
β β β β β ββββ Event βββββββββββββββββββββ
β β β β β β β β
β ββββββ "π Buscando produtos..." βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β β β β β
ββββββ "π Buscando..." ββββββββ β β β β β β
β β β β β β β β
β β β β β ββββ Final Event βββββββββββββββ
β β β β β β β β
β ββββββ (delete status) ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β β β β β
β ββββββ OutgoingMessage("Resposta final") βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β β β β β
ββββββ "Resposta final" ββββββββ β β β β β β
β β β β β β β β
π Estrutura de Dados (Classes)¶
ββββββββββββββββββββββββββββββββββ
β MessagingAdapter (ABC) β
ββββββββββββββββββββββββββββββββββ€
β + config: Dict β
β + platform_name: str β
β + webhook_path: str β
ββββββββββββββββββββββββββββββββββ€
β + setup() β
β + parse_webhook_request() β
β + send_message() β
β + format_text() β
ββββββββββββββ¬ββββββββββββββββββββ
β
β extends
β
ββββββββββ΄ββββββββββ¬βββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββ βββββββββββββββ βββββββββββββββ
βSlackAdapter β βTelegramAdp. β βWhatsAppAdp. β
βββββββββββββββ€ βββββββββββββββ€ βββββββββββββββ€
β-bot_app β β-bot β β-client β
β-bot_user_id β β-bot_usernameβ β β
βββββββββββββββ βββββββββββββββ βββββββββββββββ
βββββββββββββββββββββββββββ βββββββββββββββββββββββββββ
β IncomingMessage β β OutgoingMessage β
βββββββββββββββββββββββββββ€ βββββββββββββββββββββββββββ€
β + platform: str β β + text: str β
β + user_id: str β β + channel_id: str β
β + channel_id: str β β + thread_id: str β
β + thread_id: str β β + message_type: enum β
β + text: str β β + metadata: dict β
β + message_type: enum β βββββββββββββββββββββββββββ
β + is_direct_message:boolβ
β + metadata: dict β
βββββββββββββββββββββββββββ
ποΈ Estrutura de Arquivos (Tree)¶
ifriend-agents/
β
βββ π messaging/ β NOVO: Framework extensΓvel
β βββ __init__.py
β βββ base.py Interface abstrata
β βββ factory.py Factory de adaptadores
β βββ processor.py Processador central
β βββ README.md API reference
β βββ π adapters/
β βββ __init__.py
β βββ slack_adapter.py β
ProduΓ§Γ£o
β βββ telegram_adapter.py β οΈ Exemplo
β βββ whatsapp_adapter.py β οΈ Exemplo
β
βββ π ifriend_agent/ β CΓ³digo do agente (inalterado)
β βββ agent.py
β βββ tools/
β βββ config/
β βββ ...
β
βββ π docs/ β DocumentaΓ§Γ£o
β βββ MESSAGING_ARCHITECTURE.md
β βββ MESSAGING_EXAMPLES.md
β βββ MESSAGING_DIAGRAMS.md
β βββ ...
β
βββ π tests/ β Testes
β βββ test_messaging_examples.py
β βββ ...
β
βββ unified_bot.py β NOVO: Bot multi-plataforma
βββ slack_bot.py β MANTIDO: Bot antigo
β
βββ README.md β README principal
βββ MIGRATION_GUIDE.md β Guia de migraΓ§Γ£o
βββ QUICK_REFERENCE.md β ReferΓͺncia rΓ‘pida
βββ REFACTORING_SUMMARY.md β SumΓ‘rio executivo
βββ CHANGELOG.md β Changelog
β
βββ requirements-messaging.txt β Deps opcionais
βββ .env.example β Config exemplo
βββ docker-compose.yml
π― ComparaΓ§Γ£o: Antes vs Depois (Visual)¶
ANTES (MonolΓtico)¶
βββββββββββββββββββββββββββββββββββββββ
β slack_bot.py β
β ββββββββββββββββββββββββββββββββ β
β β β’ Webhook handling β β
β β β’ Parse eventos Slack β β
β β β’ Formatar texto β β
β β β’ Enviar mensagens β β
β β β’ Processar com Runner β β
β β β’ LΓ³gica de retry β β
β β β’ Filtros de bot β β
β β β’ Typing indicators β β
β β β β
β β π΄ TUDO MISTURADO β β
β β π΄ ACOPLADO AO SLACK β β
β ββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββ
β Adicionar WhatsApp = Reescrever tudo
DEPOIS (Modular)¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β unified_bot.py β
β ββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β’ Webhook routing (APENAS) β β
β β β’ Health check β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββ
β delega
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β messaging/ (Framework) β
β βββββββββββββββββββ ββββββββββββββββββββββββββββ β
β β AdapterFactory β β ConversationProcessor β β
β β β’ Auto-detect β β β’ OrquestraΓ§Γ£o β β
β β β’ Gerencia β β β’ AgnΓ³stico plataforma β β
β βββββββββββββββββββ ββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Adapters (PlugΓ‘veis) β β
β β β’ SlackAdapter β
β β
β β β’ TelegramAdapter β οΈ β β
β β β’ WhatsAppAdapter β οΈ β β
β β β’ DiscordAdapter π (futuro) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
Adicionar WhatsApp = 1 adapter (~100 linhas, 2 horas)
β
SeparaΓ§Γ£o clara de responsabilidades
β
TestΓ‘vel e extensΓvel
π MΓ©tricas de Sucesso¶
Tempo para Adicionar Nova Plataforma
ββββββββββββββββββββββββββββββββββββββββ
ANTES: ββββββββββββββββ 16 horas
DEPOIS: ββ 2 horas
ReduΓ§Γ£o: 87.5% β
Linhas de CΓ³digo Duplicado
ββββββββββββββββββββββββββββββββββββββββ
ANTES: ββββββββββββ 300+ linhas
DEPOIS: 0 linhas
ReduΓ§Γ£o: 100% β
Webhooks NecessΓ‘rios (3 plataformas)
ββββββββββββββββββββββββββββββββββββββββ
ANTES: βββ 3 webhooks
DEPOIS: β 1 webhook
ReduΓ§Γ£o: 66% β
π Roadmap Visual¶
2026-Q1 β
βββ Multi-Platform Framework
βββ Slack Adapter (ProduΓ§Γ£o)
βββ Telegram Adapter (Exemplo)
βββ WhatsApp Adapter (Exemplo)
βββ DocumentaΓ§Γ£o Completa
2026-Q2 π
βββ Discord Adapter
βββ Testes UnitΓ‘rios Completos
βββ CI/CD Pipeline
βββ MΓ©tricas (Prometheus)
2026-Q3 π
βββ Microsoft Teams
βββ Rich Messages (buttons, cards)
βββ Attachments Support
βββ Analytics Dashboard
2026-Q4 π
βββ Multi-tenancy
βββ A/B Testing Framework
βββ Voice Messages
βββ i18n Support
ASCII Art criado com amor β€οΈ