Invia messaggi WhatsApp con Python
Invia testi, immagini e file WhatsApp da uno script Python, dal tuo numero collegato a WbizTool come WhatsApp Web. Usa il pacchetto ufficiale wbiztool-client oppure una semplice chiamata con requests allo stesso endpoint.
Prova gratuita: 50 messaggi in qualsiasi arco di 30 giorni, senza carta.
Come funziona
Ottieni la chiave API e collega il tuo numero
Registrati, poi collega il tuo numero WhatsApp nella pagina Numeri WhatsApp con un codice QR o un codice di abbinamento, come WhatsApp Web. In Impostazioni → Chiavi API, crea una chiave e copia il tuo Client ID (la guida Chiavi API qui sotto mostra dove). L'ID sulla scheda del numero (come ID 678) è il tuo
whatsapp_client.Installa il client, o usa requests
Esegui
pip install wbiztool-clientper il client ufficiale. Se preferisci non aggiungere un pacchetto, la libreria requests funziona altrettanto bene – gli esempi qui sotto mostrano entrambi.Invia il messaggio
Invia con una POST le credenziali, il numero di telefono e il testo a
https://wbiztool.com/api/v1/send_msg/. Una risposta con"status": 1e unmsg_idsignifica che il messaggio è in coda sul tuo numero.Controlla che sia partito
Passa un URL
webhookper sapere quando il messaggio viene inviato o fallisce, oppure interroga l'endpoint Stato del messaggio con ilmsg_id.
Esempi di codice Python
pip install wbiztool-clientfrom wbiztool_client import WbizToolClient
client = WbizToolClient(api_key="YOUR_API_KEY", client_id="12345")
result = client.send_message(
phone="9876543210",
country_code="91",
msg="Hi Aman, your order #4821 has shipped.",
whatsapp_client=678,
)
print(result)import requests
response = requests.post(
"https://wbiztool.com/api/v1/send_msg/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 0,
"country_code": "91",
"phone": "9876543210",
"msg": "Hi Aman, your order #4821 has shipped and will arrive on Thursday.",
},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 400
if result.get("status") == 1:
print("Queued with msg_id", result["msg_id"])
else:
print("Failed:", result.get("message")){"status": 1, "message": "Created", "msg_id": 9817263}import requests
with open("invoice-4821.pdf", "rb") as f:
response = requests.post(
"https://wbiztool.com/api/v1/send_msg/",
data={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 2,
"country_code": "91",
"phone": "9876543210",
"msg": "Your invoice for order #4821 is attached.",
"file_name": "invoice-4821.pdf",
},
files={"file": f},
timeout=120,
)
print(response.json())import requests
msg_id = 9817263
response = requests.post(
f"https://wbiztool.com/api/v1/message/status/{msg_id}/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 400
if result.get("message") == "Unknown message id":
print("No message with this ID in your workspace")
elif "status_text" not in result:
print("Request failed:", result.get("message", "no message in response"))
elif result["status"] == 1:
print("Sent")
elif result["status"] == 2:
print("Failed:", result["error"])
else:
print("Status:", result["status_text"])from datetime import datetime, timedelta
from zoneinfo import ZoneInfo
import requests
send_at = datetime.now(ZoneInfo("Asia/Kolkata")) + timedelta(hours=2)
response = requests.post(
"https://wbiztool.com/api/v1/schedule_msg/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 0,
"country_code": "91",
"phone": "9876543210",
"msg": "Hi Aman, a reminder that your appointment starts in 30 minutes.",
"date": send_at.strftime("%d/%m/%Y"),
"time": send_at.strftime("%H:%M"),
"timezone": "Asia/Kolkata",
},
timeout=60,
)
result = response.json() # schedule errors come back with HTTP 200 and "status": 0
if result.get("status") == 1:
print("Scheduled with msg_id", result["msg_id"])
else:
print("Failed:", result.get("message", "no message in response"))from flask import Flask, request
app = Flask(__name__)
@app.post("/wbiztool-webhook")
def wbiztool_webhook():
# WbizTool posts form fields, not JSON.
msg_id = request.form["msg_id"]
status = request.form["status"] # SENT, FAILED, CANCELLED or EXPIRED
print(msg_id, status)
return "", 200Cosa puoi fare
Testi, immagini e file
Imposta
msg_typea 0 per il testo, 1 per un'immagine o 2 per un file. Indica unimg_urlo unfile_urlpubblico, oppure carica il file stesso confiles=in requests.Messaggi personali dai tuoi dati
Costruisci
msgdai tuoi dati – un nome, un numero d'ordine, una scadenza. La formattazione di WhatsApp come *grassetto* e _corsivo_ funziona, fino a 3.000 caratteri.Stato via webhook o su richiesta
Un webhook riceve una POST con il
msg_ideSENT,FAILED,CANCELLEDoEXPIRED. Oppure chiama Stato del messaggio: un messaggio fallito arriva con il suo errore, comePhone number invalid.Pianifica per più tardi
Fai una POST a
/api/v1/schedule_msg/condate(gg/mm/aaaa),time(HH:MM) e untimezonecomeAsia/Kolkata.strftime("%d/%m/%Y")estrftime("%H:%M")li costruiscono per te.Scarta i messaggi che arrivano troppo tardi
expire_after_secondssegna un messaggio come scaduto se non è partito in tempo, utile per i messaggi urgenti come gli orari di consegna previsti.Promemoria ricorrenti
L'API Promemoria ripete un messaggio con una pianificazione cron, ad esempio alle 10:00 del 1° di ogni mese. I promemoria richiedono un piano a pagamento.
Buono a sapersi
"status": 1significa che il messaggio è in coda, non consegnato. Inviato è lo stato finale di successo; l'API non segnala se il messaggio è stato consegnato o letto.- Gli errori di Invia messaggio arrivano con HTTP 400 (429 al limite giornaliero); quelli di Pianifica messaggio arrivano di solito con HTTP 200 e
"status": 0, quindi leggiresponse.json()e controllastatusinvece del codice HTTP. Il client ufficiale sollevarequests.HTTPError: leggi il motivo cone.response.json()["message"]. - Il client ufficiale non copre ancora correttamente tutti gli endpoint: i suoi
schedule_messageecheck_credentials()non funzionano con l'API attuale. Chiama/api/v1/schedule_msg/con requests come mostrato sopra, e/api/v1/me/allo stesso modo. - Tieni la chiave API sul tuo server, ad esempio in una variabile d'ambiente. Chiunque la possieda può inviare dai tuoi numeri, quindi non metterla mai in JavaScript eseguito nel browser, in un'app mobile o in codice che pubblichi.
- La prova gratuita offre 50 messaggi in qualsiasi arco di 30 giorni e 1 numero, senza carta. I piani a pagamento partono da $25 al mese negli USA (il tuo prezzo è nella pagina Prezzi) e inviano messaggi illimitati con uso corretto: fino a 1.000 al giorno per numero.
- I messaggi partono dal tuo numero WhatsApp, quindi valgono le regole di WhatsApp: scrivi a persone che si aspettano di sentirti.
Domande
- Esiste una libreria Python ufficiale per l'API di WbizTool?
- Sì:
wbiztool-clientsu PyPI (pip install wbiztool-client). Usa i suoisend_messageeget_message_status. Per pianificare e verificare le credenziali, chiama gli endpoint con requests. - Come invio un PDF o un'immagine da Python?
- Usa
msg_type1 conimg_urlper un'immagine, oppuremsg_type2 confile_urlper un file. Per inviare un file dal disco, caricalo come multipart form data in un campo chiamatofilee impostafile_namecon la sua estensione, comeinvoice-4821.pdf. - Come faccio a sapere che il messaggio è stato inviato?
- Una risposta con
"status": 1e unmsg_idsignifica che è in coda. Passa un URLwebhookper ricevere una POST conSENT,FAILED,CANCELLEDoEXPIRED, oppure chiama l'endpoint Stato del messaggio con ilmsg_id. Inviato è lo stato finale: l'API non segnala se il messaggio è stato consegnato o letto. - In che formato devo inviare il numero di telefono?
- Invia il numero con il prefisso internazionale (393471234567), oppure senza (3471234567) insieme a
country_code(39). Spazi, +, trattini e parentesi vengono rimossi per te, quindi funziona anche +39 347-123 4567. - Mi servono la WhatsApp Business API o l'approvazione di Meta?
- No. WbizTool invia dal tuo numero WhatsApp o WhatsApp Business, collegato come WhatsApp Web. Non serve l'approvazione di Meta e non ci sono template di messaggio da far approvare.
- Si paga per ogni messaggio?
- No. La prova gratuita include 50 messaggi in qualsiasi arco di 30 giorni. I piani a pagamento inviano messaggi illimitati con uso corretto, fino a 1.000 al giorno per numero: Lite $25, Standard $59 e Advanced $149 al mese negli USA; la pagina Prezzi mostra il prezzo del tuo Paese.
Leggi le guide
- API Invia messaggio
- API Stato del messaggio
- API Pianifica messaggio
- API Verifica credenziali
- Chiavi API e Client ID
- Collega il tuo numero WhatsApp
Pagine correlate
- Node.jsInvia messaggi WhatsApp da Node.js con il client ufficiale o con il fetch integrato.
- cURLInvia, pianifica e segui i messaggi WhatsApp con un solo comando cURL.
- API PromemoriaCrea, elenca e annulla promemoria WhatsApp ricorrenti con una pianificazione cron.
- Aggiornamenti sugli ordiniConferme d'ordine, aggiornamenti di spedizione e avvisi di nuovi ordini per Shopify, WooCommerce e altro.
Invia oggi il tuo primo messaggio WhatsApp automatizzato
Crea un account, scansiona il codice QR e invia un messaggio in meno di cinque minuti.
Inizia gratisI piani a pagamento partono da $25 al mese negli USA. Prezzi
