Setup e autenticazione
Usa la libreria requests per le chiamate HTTP a Chat API: pip install requests. Crea un client wrapper che gestisce l'autenticazione, i retry automatici e il logging delle chiamate. Conserva l'API key come variabile d'ambiente (CHAT_API_KEY) e accedila tramite os.environ.
Con Django, crea una classe ChatAPIClient nel file services.py della tua app. Usa Django settings per la configurazione delle credenziali e implementa il pattern Singleton per avere un'unica istanza del client per processo.
Invio messaggi con Python
La funzione base per inviare un messaggio template accetta il numero del destinatario, il nome del template, la lingua e i parametri. Gestisci i casi di errore: numero non su WhatsApp, template non approvato, rate limit raggiunto.
Per i task asincroni in Django, usa Celery per accodare gli invii di messaggi: crea un task send_whatsapp_message che accetta il numero e il payload del messaggio. Configura Redis o RabbitMQ come broker di Celery per la produzione.
Webhook con Django
Crea una view Django per ricevere i webhook di Chat API. Usa django.views.decorators.csrf.csrf_exempt perche i webhook non hanno il token CSRF. Verifica la firma del webhook nell'header X-Chat-API-Signature prima di processare il payload. Processa i webhook in modo asincrono con Celery per evitare timeout.
Testing e sviluppo locale
Per testare i webhook in locale, usa ngrok per esporre la porta Django a un URL pubblico: ngrok http 8000. Configura questo URL come webhook endpoint in Chat API per i test.
Scrivi unit test che mockano le chiamate a Chat API usando unittest.mock. Testa sia il path di successo (200 OK, messaggio inviato) che i casi di errore (429 rate limit, 400 numero non valido).