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)
- Adicione o app em
INSTALLED_APPS:
INSTALLED_APPS = [
# ...
"django_whatsapp_api_wrapper",
]
- Inclua as URLs no
urls.pyprincipal:
from django.urls import path, include
urlpatterns = [
# ...
path("whatsapp-api-wrapper/", include("django_whatsapp_api_wrapper.urls")),
]
- 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_HANDLERou escute o signalwebhook_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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_whatsapp_api_wrapper-0.2.1.tar.gz.
File metadata
- Download URL: django_whatsapp_api_wrapper-0.2.1.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24cea187da29b770d23dd3e450b5395be604d6a3700ef2223901961bfd28ea28
|
|
| MD5 |
a632ced9663427c0935a058c4c6644aa
|
|
| BLAKE2b-256 |
b457549fde8ab199120a7390eb286042135e8b19402b959f4f5d0f5034c0dcd1
|
File details
Details for the file django_whatsapp_api_wrapper-0.2.1-py3-none-any.whl.
File metadata
- Download URL: django_whatsapp_api_wrapper-0.2.1-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f74980ebdc007919c86399658335c51f9df40427cf9073894f6e8a3b0489313
|
|
| MD5 |
95a9009e4c785b76359efd5f0440689d
|
|
| BLAKE2b-256 |
fb8c8d619986de490b61837e306d8d8e8e96e375f968f35fbb064656a0cf8943
|