Skip to content

Doctorspeppers/Whatsapp-for-business

Repository files navigation

WhatsApp Manager

Sistema completo de gerenciamento de WhatsApp Business API desenvolvido em Laravel.

📋 Índice

🎯 Visão Geral

O WhatsApp Manager é uma aplicação Laravel completa para gerenciar interações do WhatsApp Business API, incluindo:

  • Gerenciamento de fluxos interativos
  • Sistema de mensagens
  • Gestão de contatos
  • Analytics e relatórios
  • Templates de mensagens
  • Configurações da API

✨ Recursos

Principais Funcionalidades

  • Fluxos Interativos: Crie e gerencie fluxos do WhatsApp com interface visual
  • Mensagens: Sistema completo de conversas e mensagens
  • Contatos: Gestão completa de contatos com tags e campos personalizados
  • Analytics: Dashboards e relatórios detalhados
  • Templates: Biblioteca de templates reutilizáveis
  • Webhooks: Integração completa com webhooks do WhatsApp

Recursos Técnicos

  • Arquitetura MVC com Laravel
  • Interface responsiva com Tailwind CSS
  • Gráficos interativos com Chart.js
  • Sistema de autenticação completo
  • API RESTful documentada
  • Migrations e seeders completos

🔧 Requisitos

  • PHP >= 8.1
  • Composer
  • MySQL >= 5.7 ou PostgreSQL >= 10
  • Node.js >= 16
  • NPM ou Yarn
  • WhatsApp Business API Account

📦 Instalação

1. Clone o repositório

git clone https://github.com/seu-usuario/whatsapp-manager.git
cd whatsapp-manager

2. Instale as dependências PHP

composer install

3. Instale as dependências JavaScript

npm install

4. Configure o ambiente

cp .env.example .env
php artisan key:generate

5. Configure o banco de dados

Edite o arquivo .env com suas credenciais:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=whatsapp_manager
DB_USERNAME=seu_usuario
DB_PASSWORD=sua_senha

6. Configure o WhatsApp Business API

WHATSAPP_PHONE_NUMBER_ID=seu_phone_number_id
WHATSAPP_BUSINESS_ACCOUNT_ID=seu_business_account_id
WHATSAPP_ACCESS_TOKEN=seu_access_token
WHATSAPP_API_VERSION=v17.0
WHATSAPP_WEBHOOK_VERIFY_TOKEN=seu_webhook_verify_token

7. Execute as migrations

php artisan migrate

8. Execute os seeders (opcional)

php artisan db:seed

9. Compile os assets

npm run build

10. Inicie o servidor

php artisan serve

📁 Estrutura do Projeto

Banco de Dados

Tabelas Principais

  • whatsapp_flows - Fluxos interativos
  • whatsapp_flow_responses - Respostas dos fluxos
  • whatsapp_templates - Templates de mensagens
  • whatsapp_contacts - Contatos
  • whatsapp_conversations - Conversas
  • whatsapp_messages - Mensagens
  • whatsapp_media - Arquivos de mídia
  • whatsapp_webhooks - Logs de webhooks
  • whatsapp_analytics - Dados de analytics
  • whatsapp_settings - Configurações

Models

app/Models/
├── WhatsAppFlow.php
├── WhatsAppFlowResponse.php
├── WhatsAppContact.php
├── WhatsAppConversation.php
├── WhatsAppMessage.php
├── WhatsAppMedia.php
└── WhatsAppAnalytic.php

Controllers

app/Http/Controllers/
├── DashboardController.php
├── FlowController.php
├── TemplateController.php
├── MessageController.php
├── ContactController.php
├── AnalyticsController.php
└── SettingsController.php

Views

resources/views/
├── layouts/
│   ├── app.blade.php
│   ├── guest.blade.php
│   ├── navigation.blade.php
│   └── whatsapp.blade.php
├── dashboard/
│   └── index.blade.php
├── flows/
│   ├── index.blade.php
│   └── create.blade.php
├── templates/
│   └── index.blade.php
├── messages/
│   └── index.blade.php
├── contacts/
│   └── index.blade.php
├── analytics/
│   └── index.blade.php
└── settings/
    └── index.blade.php

Rotas

// Rotas principais do WhatsApp Manager
Route::prefix('whatsapp')->name('whatsapp.')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
    
    // Fluxos
    Route::resource('flows', FlowController::class);
    Route::post('flows/{flow}/publish', [FlowController::class, 'publish'])->name('flows.publish');
    
    // Templates
    Route::resource('templates', TemplateController::class);
    
    // Mensagens
    Route::get('messages', [MessageController::class, 'index'])->name('messages.index');
    Route::get('messages/{conversation}', [MessageController::class, 'conversation'])->name('messages.conversation');
    Route::post('messages/send', [MessageController::class, 'send'])->name('messages.send');
    
    // Contatos
    Route::resource('contacts', ContactController::class);
    Route::post('contacts/{contact}/block', [ContactController::class, 'block'])->name('contacts.block');
    Route::post('contacts/{contact}/unblock', [ContactController::class, 'unblock'])->name('contacts.unblock');
    
    // Analytics
    Route::prefix('analytics')->name('analytics.')->group(function () {
        Route::get('/', [AnalyticsController::class, 'index'])->name('index');
        Route::get('/messages', [AnalyticsController::class, 'messages'])->name('messages');
        Route::get('/flows', [AnalyticsController::class, 'flows'])->name('flows');
        Route::get('/contacts', [AnalyticsController::class, 'contacts'])->name('contacts');
    });
    
    // Configurações
    Route::get('settings', [SettingsController::class, 'index'])->name('settings.index');
    Route::post('settings/whatsapp', [SettingsController::class, 'updateWhatsApp'])->name('settings.whatsapp');
    Route::post('settings/webhooks', [SettingsController::class, 'updateWebhooks'])->name('settings.webhooks');
    Route::post('settings/test-connection', [SettingsController::class, 'testConnection'])->name('settings.test-connection');
});

⚙️ Configuração

Configuração do WhatsApp Business API

  1. Acesse o Meta for Developers
  2. Crie um app business
  3. Configure o WhatsApp Business API
  4. Obtenha suas credenciais:
    • Phone Number ID
    • Business Account ID
    • Access Token
  5. Configure o Webhook URL no Meta:
    https://seu-dominio.com/api/whatsapp/webhook
    

Configuração de Webhooks

No painel do Meta, configure os seguintes eventos:

  • messages
  • message_status
  • message_template_status_update

🚀 Uso

Dashboard

Acesse /dashboard para ver o painel principal com métricas e atividades recentes.

Fluxos

  1. Acesse Fluxos no menu lateral
  2. Clique em Criar Novo Fluxo
  3. Escolha um template ou crie do zero
  4. Configure as telas e campos
  5. Publique o fluxo

Mensagens

  1. Acesse Mensagens para ver conversas
  2. Clique em uma conversa para ver detalhes
  3. Envie mensagens diretamente pela interface

Contatos

  1. Gerencie contatos em Contatos
  2. Adicione tags e campos personalizados
  3. Bloqueie ou desbloqueie contatos

Analytics

Visualize métricas detalhadas em Analytics:

  • Mensagens por período
  • Taxa de engajamento
  • Performance dos fluxos
  • Crescimento de contatos

📚 Documentação

Documentação Adicional

Estrutura da API WhatsApp

O módulo principal do WhatsApp está em:

packages/whatsapp-automation/
├── src/
│   ├── WhatsApp/
│   │   ├── Client.php
│   │   ├── Flow/
│   │   ├── Message/
│   │   └── Template/
│   ├── Http/
│   └── Laravel/
├── config/
├── database/
└── routes/

🤝 Contribuindo

  1. Fork o projeto
  2. Crie sua feature branch (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📝 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

👥 Autores

🙏 Agradecimentos

  • Laravel Framework
  • Tailwind CSS
  • Alpine.js
  • Chart.js
  • Meta WhatsApp Business API

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages