Skip to main content

No project description provided

Project description

django-whatsapp-api-wrapper

Um wrapper simples para enviar mensagens via WhatsApp Cloud API e expor um endpoint de webhook, pronto para integrar em qualquer projeto Django.

Instalação

python -m pip install django-whatsapp-api-wrapper

Configuração (Django)

  1. Adicione o app em INSTALLED_APPS:
INSTALLED_APPS = [
    # ...
    "django_whatsapp_api_wrapper",
]
  1. Inclua as URLs no urls.py principal:
from django.urls import path, include

urlpatterns = [
    # ...
    path("whatsapp-api-wrapper/", include("django_whatsapp_api_wrapper.urls")),
]
  1. Defina as variáveis de ambiente (ou no seu .env):
WHATSAPP_CLOUD_API_TOKEN=
WHATSAPP_CLOUD_API_PACKAGE_VERSION=0.1.1
WHATSAPP_CLOUD_API_VERSION=v23.0
WHATSAPP_CLOUD_API_PHONE_NUMBER_ID=
WHATSAPP_CLOUD_API_WABA_ID=
WHATSAPP_CLOUD_API_VERIFY_TOKEN=

O endpoint de webhook ficará disponível em:

  • GET/POST: /whatsapp-api-wrapper/webhook/
  • Verificação (GET): /whatsapp-api-wrapper/webhook/?hub.mode=subscribe&hub.verify_token=<TOKEN>&hub.challenge=123

Extensibilidade do Webhook

Você pode customizar o processamento do webhook no projeto hospedeiro de duas formas:

  • Via setting com handler plugável:
# settings.py
WHATSAPP_WEBHOOK_HANDLER = "meuapp.whatsapp.handle_webhook"
# meuapp/whatsapp.py
from django.http import JsonResponse

def handle_webhook(request, payload):
    # sua lógica aqui (salvar eventos, acionar tasks, etc)
    return JsonResponse({"ok": True})
  • Via signal webhook_event_received:
from django.dispatch import receiver
from django_whatsapp_api_wrapper.signals import webhook_event_received

@receiver(webhook_event_received)
def on_whatsapp_event(sender, payload, request, **kwargs):
    # sua lógica aqui
    pass

Mensagens

Envio e recebimento de mensagens via Cloud API.

Envio (Python)

from django_whatsapp_api_wrapper import WhatsApp

wp = WhatsApp()

# Template
language = {"code": "pt_BR"}
template = {"name": "opa", "language": language}
m = wp.build_message(to="551199999999", type="template", data=template)
m.send()

# Texto
data = {"preview_url": False, "body": "olá do wrapper"}
m2 = wp.build_message(to="551199999999", type="text", data=data)
m2.send()

Webhook

  • Recebe eventos (mensagens/atualizações de status) em GET/POST /whatsapp-api-wrapper/webhook/.
  • Verificação (GET): /whatsapp-api-wrapper/webhook/?hub.mode=subscribe&hub.verify_token=<TOKEN>&hub.challenge=123.
  • Personalize via setting WHATSAPP_WEBHOOK_HANDLER ou escute o signal webhook_event_received (veja seção Extensibilidade do Webhook acima).

Templates

Endpoints REST (DRF) para gerenciar Message Templates do WhatsApp (proxy para Graph API). Todos os endpoints abaixo partem do prefixo que você incluir no projeto, por exemplo: .../whatsapp-api-wrapper/.

Requisitos de ambiente: WHATSAPP_CLOUD_API_TOKEN, WHATSAPP_CLOUD_API_VERSION, WHATSAPP_CLOUD_API_WABA_ID.

Aqui a documentação OFICIAL:

https://www.postman.com/meta/whatsapp-business-platform/folder/2ksdd2s/whatsapp-cloud-api

Listar e criar

  • GET GET /templates/?limit=&after=&before=
  • POST POST /templates/ com payload conforme a Graph API.

Exemplo de criação:

curl -X POST \
  "$BASE/whatsapp-api-wrapper/templates/" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "authentication_code_copy_code_button",
    "language": "en_US",
    "category": "AUTHENTICATION",
    "components": [
      {"type": "BODY", "add_security_recommendation": true},
      {"type": "FOOTER", "code_expiration_minutes": 10},
      {"type": "BUTTONS", "buttons": [{"type": "OTP", "otp_type": "COPY_CODE", "text": "Copy Code"}]}
    ]
  }'

Buscar por ID e editar

  • GET GET /templates/<template_id>/
  • POST POST /templates/<template_id>/ para editar (mesmo formato do corpo de criação).

Buscar e excluir por nome

  • GET GET /templates/by-name/?name=<TEMPLATE_NAME>
  • DELETE DELETE /templates/by-name/?name=<TEMPLATE_NAME>

Excluir por ID (hsm_id) e nome

  • DELETE DELETE /templates/delete-by-id/?hsm_id=<HSM_ID>&name=<NAME>

Obter namespace

  • GET GET /templates/namespace/

Notas:

  • Os payloads aceitos seguem a documentação oficial de Message Templates da Meta (Graph API). Este wrapper só valida campos básicos e encaminha a requisição.
  • As respostas retornadas são as mesmas da Graph API (status code e corpo JSON), para facilitar troubleshooting.

Notas

  • Nome do pacote no PyPI: django-whatsapp-api-wrapper
  • Nome do módulo/import: django_whatsapp_api_wrapper

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

django_whatsapp_api_wrapper-0.2.2.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

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

django_whatsapp_api_wrapper-0.2.2-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

Details for the file django_whatsapp_api_wrapper-0.2.2.tar.gz.

File metadata

File hashes

Hashes for django_whatsapp_api_wrapper-0.2.2.tar.gz
Algorithm Hash digest
SHA256 ce1152ceddeed7cba9b851fab9564a0fc5f093fa458b31fbea64c264f950ca05
MD5 f07ca5cdd34f9a65f96ef42d1e3eadbe
BLAKE2b-256 72d4eeef262f885c1ff13a6bc814c75d7ff54144e947057398bc26163d2f74e2

See more details on using hashes here.

File details

Details for the file django_whatsapp_api_wrapper-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for django_whatsapp_api_wrapper-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 12c93e7ae1aa0585e0b27bcb46aeea72da38ec1f38722a6a2e175390e233ac90
MD5 6b317d58db1c35bdab554d48dba11951
BLAKE2b-256 3ea839117c5ca1747f6518b5e128538af07169a1fafa782fae3dda9b376da381

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