Installazione e configurazione
Per integrare Chat API in un progetto PHP, aggiungi la dipendenza guzzlehttp/guzzle via Composer per le chiamate HTTP. Per Laravel, usa il client HTTP integrato (Http facade) disponibile dalla versione 7.x.
Configura le credenziali nel file .env: CHAT_API_KEY=tua_api_key. In Laravel, accedi alla chiave tramite config('services.chatapi.key') dopo averla aggiunta al file config/services.php.
Invio di messaggi e template
Per inviare un messaggio WhatsApp da PHP, esegui una richiesta POST all'endpoint di Chat API con le credenziali nell'header. Il payload include il numero del destinatario, il tipo di messaggio e il contenuto.
In Laravel, puoi creare un servizio dedicato ChatApiService con metodi sendMessage e sendTemplate che incapsulano la logica di chiamata API. Questo servizio puo essere iniettato tramite dependency injection nei controller o nei job che ne hanno bisogno.
Per i template con variabili, costruisci il payload JSON con il nome del template, la lingua e l'array dei componenti con i valori delle variabili. L'API di Chat API restituisce l'ID del messaggio inviato che puoi salvare nel database per il tracciamento.
Gestione webhook in Laravel
Per ricevere i webhook di stato di Chat API in Laravel, crea un route POST e un WebhookController. Verifica la firma del webhook nell'header prima di processare il payload. Usa le Jobs di Laravel per processare i webhook in modo asincrono nella coda, evitando timeout nella risposta al webhook.
Best practice per ambienti PHP
Implementa un sistema di retry per le chiamate API fallite: salva il messaggio non inviato nel database con stato 'pending', poi un job schedulato ritenta l'invio. Questo pattern e robusto rispetto alle problematiche di rete transitori.
Per i volumi alti, usa le Queue di Laravel per accodare i messaggi invece di inviarli in modo sincrono. Questo evita i timeout nelle richieste HTTP e permette di scalare il sistema orizzontalmente aggiungendo worker.
Logga tutte le chiamate API (request e response) in un channel dedicato per il debug. In produzione, configura il livello di log su 'error' per evitare di riempire i log di informazioni non necessarie.