Meta Tech Provider

Invia e ricevi WhatsApp da Python

La ricezione è una route del tuo framework web che risponde al GET di verifica di Meta e accetta i POST. L'invio è una richiesta HTTPS all'Cloud API con il `phone number id` e il token del numero. Nessun SDK nostro e nulla da installare.

2 handlers

Un GET per la verifica di Meta e un POST per gli eventi. Questa è la parte di ricezione.

24 hours

Finestra successiva al messaggio di un cliente in cui puoi inviare testo libero.

131047

L'errore restituito quando invii testo libero fuori da questa finestra.

Come si ricevono messaggi in Python?

Con due gestori su una route, usando il framework che già utilizzi.

Il gestore GET risponde alla verifica di Meta. Legge `hub.mode`, `hub.verify_token` e `hub.challenge` dalla stringa di query, confronta il token con il tuo e restituisce la challenge nel corpo grezzo. Restituire JSON qui è l'errore più comune e fallisce senza segnali evidenti.

Il gestore POST riceve gli eventi. Restituisci rapidamente 200 e svolgi il lavoro dopo, perché Meta considera lenta una risposta lenta e ritenta, causando la gestione dello stesso messaggio due volte. Accodalo oppure passalo a un'attività in background, invece di elaborarlo direttamente.

I messaggi arrivano con un ID messaggio `wamid`. Deduplicare usando questo ID conviene fin dall'inizio, perché i nuovi tentativi sono normali, non eccezionali.

Come si inviano i messaggi?

Con un POST all'endpoint `messages` della Cloud API per il `phone number id`, usando un token bearer.

Entrambi i valori provengono dalla connessione: la dashboard li mostra e `get_api_credentials` li restituisce se preferisci farli recuperare a un assistente. La chiamata non ha nulla di specifico per noi, quindi funziona con qualsiasi libreria HTTP e la richiesta è identica a quella descritta nella documentazione di Meta.

A cambiare in base al tempo è il corpo. Entro 24 ore dall'ultimo messaggio del cliente invii un oggetto testo. Dopo 24 ore invii un oggetto template con il nome di un template approvato e la relativa lingua. Un client che conosce solo il primo formato funziona perfettamente nei test, ma fallisce al primo messaggio notturno e restituisce l'errore 131047.

Di cosa ha bisogno un gestore in produzione oltre a questo?

Di tre cose facili da trascurare e costose da aggiungere in seguito.

Deduplica usando l'ID del messaggio, perché Meta ritenta. Verifica la firma della richiesta se il tuo servizio è esposto pubblicamente, altrimenti chiunque conosca il tuo URL può inviare dati. Infine, controlla quanto tempo è passato dall'ultimo messaggio del contatto, così il percorso di invio sceglie testo o template senza intervento umano.

Niente di tutto questo richiede un framework o una libreria. Servono un insieme, un controllo e un confronto: configurarli prima del primo cliente fa la differenza tra un'integrazione che funziona senza rumore e una che ti costringe a intervenire.

Errori comuni

  • Restituire JSON dal GET di verifica invece del valore grezzo della challenge.
  • Elaborare inline prima di restituire 200. Meta ritenta le risposte lente e gestisci il messaggio due volte.
  • Inviare testo libero senza controllare la finestra. Restituisce 131047 e sembra che non sia successo nulla.
Farlo con EasyCoexistence

Collega il numero su easycoexistence.com, imposta la destinazione del webhook sulla tua route e leggi il `phone number id` e il token dalla dashboard. Da US$ 9 per numero connesso al mese, fino a US$ 2 sui volumi, con i primi 7 giorni gratuiti.

Domande frequenti

Esiste un SDK Python?

Non da parte nostra e non ti serve. L'API è di Meta, documentata da Meta e accessibile con qualsiasi libreria HTTP.

Quale framework dovrei usare?

Qualsiasi. Serve una route che risponda a un GET e accetti un POST, cosa che ogni framework web Python consente.

Come evito di gestire due volte lo stesso messaggio?

Deduplica usando l'ID messaggio `wamid` nel payload. Meta ritenta per progettazione, quindi è un comportamento previsto, non un caso raro.

Il team può continuare a usare il telefono?

Sì. Coexistence mantiene attiva l'app WhatsApp Business sullo stesso numero e il tuo gestore vede ciò che inviano come evento echo.

Continua a leggere

Pronto per iniziare?

Configura WhatsApp Coexistence in pochi minuti, non in mesi. L'app continua a funzionare sul telefono.

Inizia la prova gratuita

Verificato il

Invia WhatsApp da Python