Skip to main content

Biblioteca Python para WhatsApp Web corporativo baseada em sidecar Node.js com whatsapp-web.js

Project description

PyWhatsWeb 🚀 v0.2.1

Biblioteca Python pura para WhatsApp Web corporativo, baseada em sidecar Node.js com whatsapp-web.js.

🎯 O QUE É

PyWhatsWeb é uma biblioteca Python que pode ser usada em qualquer projeto Python:

  • Scripts Python simples
  • FastAPI
  • Flask
  • Django (opcional)
  • Qualquer outro framework Python

NÃO é um projeto Django - é uma biblioteca Python que pode ser integrada em projetos Django se você quiser.

CARACTERÍSTICAS

  • 🔐 Autenticação QR Code via sidecar Node.js
  • 📡 Eventos WebSocket em tempo real
  • 🎯 Multi-sessão com isolamento por sessionId
  • 📊 Sistema Kanban (NEW/ACTIVE/DONE) para roteamento
  • 💾 Storage pluggable (FileSystem + Django opcional)
  • 🌐 API HTTP para controle de sessões
  • 🔒 Autenticação por API Key
  • 📱 Suporte completo ao whatsapp-web.js

🚀 INSTALAÇÃO

PyPI Oficial

pip install pywhatsweb

Com suporte Django (opcional)

pip install pywhatsweb[django]

Desenvolvimento

git clone https://github.com/llongaray/pywhatsweb.git
cd pywhatsweb
pip install -e .

📖 USO BÁSICO (SEM Django)

1. Script Python Simples

from pywhatsweb import WhatsWebManager, FileSystemStore

# Criar manager com storage de filesystem
manager = WhatsWebManager(
    sidecar_host="localhost",
    sidecar_port=3000,
    api_key="sua-api-key",
    storage=FileSystemStore("./whatsapp_data")  # Storage local
)

# Criar sessão
session = manager.create_session("sessao_123")

# Configurar eventos
@session.on("qr")
def on_qr(data):
    print(f"🔍 QR Code: {data['qr'][:50]}...")

@session.on("message")
def on_message(data):
    print(f"📨 Nova mensagem: {data['body']}")

# Iniciar sessão
session.start()

2. FastAPI

from fastapi import FastAPI
from pywhatsweb import WhatsWebManager, FileSystemStore

app = FastAPI()

# Criar manager global
manager = WhatsWebManager(
    sidecar_host="localhost",
    sidecar_port=3000,
    api_key="sua-api-key",
    storage=FileSystemStore("./whatsapp_data")
)

@app.post("/whatsapp/session/{session_id}/start")
async def start_session(session_id: str):
    session = manager.create_session(session_id)
    session.start()
    return {"message": "Sessão iniciada"}

@app.post("/whatsapp/session/{session_id}/send")
async def send_message(session_id: str, to: str, message: str):
    session = manager.get_session(session_id)
    session.send_text(to, message)
    return {"message": "Mensagem enviada"}

3. Flask

from flask import Flask, request, jsonify
from pywhatsweb import WhatsWebManager, FileSystemStore

app = Flask(__name__)

# Criar manager global
manager = WhatsWebManager(
    sidecar_host="localhost",
    sidecar_port=3000,
    api_key="sua-api-key",
    storage=FileSystemStore("./whatsapp_data")
)

@app.route('/whatsapp/session/<session_id>/start', methods=['POST'])
def start_session(session_id):
    session = manager.create_session(session_id)
    session.start()
    return jsonify({"message": "Sessão iniciada"})

@app.route('/whatsapp/session/<session_id>/send', methods=['POST'])
def send_message(session_id):
    data = request.get_json()
    session = manager.get_session(session_id)
    session.send_text(data['to'], data['message'])
    return jsonify({"message": "Mensagem enviada"})

🔧 INTEGRAÇÃO COM DJANGO (OPCIONAL)

Se você quiser usar em um projeto Django, pode usar o DjangoORMStore:

from pywhatsweb import WhatsWebManager, DjangoORMStore
from .models import (WhatsAppSession, WhatsAppMessage, WhatsAppContact,
                     WhatsAppGroup, WhatsAppChat, WhatsAppSessionEvent)

# Criar manager com storage Django
manager = WhatsWebManager(
    sidecar_host="localhost",
    sidecar_port=3000,
    api_key="sua-api-key",
    storage=DjangoORMStore()
)

# Configurar models Django (você deve implementar)
manager.storage.set_models(
    session_model=WhatsAppSession,
    message_model=WhatsAppMessage,
    contact_model=WhatsAppContact,
    group_model=WhatsAppGroup,
    chat_model=WhatsAppChat,
    event_model=WhatsAppSessionEvent
)

# Usar normalmente
session = manager.create_session("sessao_123")
session.start()

NOTA: Django NÃO é obrigatório! A biblioteca funciona perfeitamente sem Django usando FileSystemStore.

🏗️ ARQUITETURA

┌─────────────────┐    HTTP + WebSocket    ┌─────────────────┐
│   Seu App       │ ◄────────────────────► │   Sidecar       │
│   Python        │                        │   Node.js       │
│                 │                        │                 │
│  PyWhatsWeb    │                        │ whatsapp-web.js │
│  (SDK)         │                        │                 │
└─────────────────┘                        └─────────────────┘
  • Seu App Python: Usa a biblioteca PyWhatsWeb
  • Sidecar Node.js: Gerencia conexões WhatsApp via whatsapp-web.js
  • Comunicação: HTTP (ações) + WebSocket (eventos)

📱 SIDECAR NODE.JS

A biblioteca precisa do sidecar Node.js rodando. Veja a pasta sidecar/ para instalação:

cd sidecar
npm install
npm start

🎯 SISTEMA KANBAN

A biblioteca fornece enums para roteamento de conversas:

from pywhatsweb.enums import KanbanStatus

# Status disponíveis
KanbanStatus.NEW      # Aguardando
KanbanStatus.ACTIVE   # Em atendimento  
KanbanStatus.DONE     # Concluído

# Nomes de exibição
KanbanStatus.get_display_name(KanbanStatus.NEW)  # "Aguardando"

💾 STORAGE PLUGGABLE

FileSystemStore (padrão)

from pywhatsweb import FileSystemStore

storage = FileSystemStore("./whatsapp_data")
# Salva tudo em arquivos JSON

DjangoORMStore (opcional)

from pywhatsweb import DjangoORMStore

storage = DjangoORMStore()
# Salva no banco Django (se disponível)

🔌 EVENTOS WEBSOCKET

@session.on("qr")
def on_qr(data):
    # QR Code gerado
    qr_data_url = data['qr']  # data:image/png;base64,...

@session.on("authenticated")
def on_authenticated(data):
    # Autenticação bem-sucedida

@session.on("ready")
def on_ready(data):
    # Cliente WhatsApp pronto

@session.on("message")
def on_message(data):
    # Nova mensagem recebida
    chat_id = data['chatId']
    message_body = data['body']
    sender = data['from']

@session.on("disconnected")
def on_disconnected(data):
    # Cliente desconectado

📡 API HTTP

Sessões

  • POST /session/:id/start - Iniciar sessão
  • POST /session/:id/stop - Parar sessão
  • GET /session/:id/status - Status da sessão

Mensagens

  • POST /session/:id/send-message - Enviar mensagem

Health Check

  • GET /health - Status do sidecar

🚨 IMPORTANTE

  • PyWhatsWeb é uma BIBLIOTECA Python, não um projeto Django
  • Funciona em qualquer projeto Python usando FileSystemStore
  • Django é opcional - use DjangoORMStore se quiser
  • Sidecar Node.js é obrigatório para funcionar
  • Não abre navegador - tudo via whatsapp-web.js headless

🧪 EXEMPLOS

Veja a pasta examples/ para exemplos completos:

  • basic_usage.py - Uso básico
  • django_integration.py - Integração com Django (opcional)
  • django_models_example.py - Models Django de exemplo

📚 DOCUMENTAÇÃO

🤝 CONTRIBUIÇÃO

Contribuições são bem-vindas! Veja CONTRIBUTING.md.

📄 LICENÇA

MIT License - veja LICENSE.


PyWhatsWeb - Biblioteca Python para WhatsApp Web corporativo 🚀

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pywhatsweb-0.4.1.tar.gz (45.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pywhatsweb-0.4.1-py3-none-any.whl (33.1 kB view details)

Uploaded Python 3

File details

Details for the file pywhatsweb-0.4.1.tar.gz.

File metadata

  • Download URL: pywhatsweb-0.4.1.tar.gz
  • Upload date:
  • Size: 45.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for pywhatsweb-0.4.1.tar.gz
Algorithm Hash digest
SHA256 80bbd303ed06acddc4946fb2ac4d6a718d61148b0dfeab3efbbae0141fc096d1
MD5 d1167945c2eeff30c656ab942a694f2c
BLAKE2b-256 4b01c0cedd0fdc954c210bbd4351b6352a36066980982d5f402d5e70c0572472

See more details on using hashes here.

File details

Details for the file pywhatsweb-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: pywhatsweb-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 33.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for pywhatsweb-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2d45831825b188a253f479f079fe780280f408599c84d593e73a9414a7bf87bb
MD5 4c93aa549b0ae1ab526006a1b5077121
BLAKE2b-256 230cd74fec75e57b460c69fb40ee7f1b20acb671f64fefa08068053ddba1c0bb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page