API di messaggistica
API Annulla messaggio
Annulla un messaggio WhatsApp che non è ancora stato inviato. Usala per fermare un promemoria pianificato dopo che un appuntamento è stato disdetto, o per ritirare un messaggio in coda inviato per errore.
https://wbiztool.com/api/v1/cancel_msg/Corpo: JSON o campi di un modulo
Puoi annullare qualsiasi messaggio ancora in attesa di invio (stato 0, Created): i messaggi pianificati e i messaggi messi in coda da Invia messaggio, Invia a un gruppo o Invia a più numeri. Un messaggio già inviato non può essere richiamato. Se un bot sta già inviando il messaggio in quel momento, potrebbe comunque partire: per gli annullamenti critici, verifica con Stato del messaggio.
Esempio rapido#
curl -X POST https://wbiztool.com/api/v1/cancel_msg/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"msg_id": 9817263
}'import requests
response = requests.post(
"https://wbiztool.com/api/v1/cancel_msg/",
json={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"msg_id": 9817263,
},
timeout=60,
)
result = response.json() # read the body even when the HTTP code is 400
if result.get("status") == 1:
print("Message cancelled")
else:
print("Not cancelled:", result.get("message", "no message in response"))// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/cancel_msg/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
client_id: 12345,
api_key: "YOUR_API_KEY",
msg_id: 9817263,
}),
});
const result = await response.json(); // read the body even when the HTTP code is 400
if (result.status === 1) {
console.log("Message cancelled");
} else {
console.error("Not cancelled:", result.message ?? "no message in response");
}<?php
$payload = [
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'msg_id' => 9817263,
];
$ch = curl_init('https://wbiztool.com/api/v1/cancel_msg/');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? 0) === 1) {
echo 'Message cancelled';
} else {
echo 'Not cancelled: ' . ($result['message'] ?? 'no message in response');
}Sostituisci 12345 e YOUR_API_KEY con i tuoi valori, e 9817263 con il msg_id che hai ricevuto quando hai inviato o pianificato il messaggio.
Parametri della richiesta#
client_idintegerobbligatorioIl tuo ID Client API, da Impostazioni → Chiavi API.
api_keystringobbligatorioLa tua chiave API, dalla stessa pagina.
msg_idintegerobbligatorioIl
msg_idrestituito dalla richiesta di invio o di pianificazione. Deve appartenere allo spazio di lavoro della tua chiave API.
Questo endpoint non richiede whatsapp_client.
Usare i client ufficiali#
I client per Python e Node.js chiamano questo endpoint per te.
from wbiztool_client import WbizToolClient
client = WbizToolClient(api_key="YOUR_API_KEY", client_id=12345)
result = client.cancel_message(msg_id=9817263)
print(result)const { WbizToolClient } = require("wbiztool-client");
const client = new WbizToolClient({
clientId: 12345,
apiKey: "YOUR_API_KEY",
whatsappClient: 678, // required by the client's constructor, not used by this endpoint
});
(async () => {
const result = await client.cancelMessage(9817263);
console.log(result);
})().catch(console.error);Entrambi i client generano un'eccezione sugli errori di autenticazione (HTTP 400/403): Python solleva requests.HTTPError e Node.js lancia API error: 400 - {…}. Una risposta Msg has been … viene restituita come risultato normale con status: 0.
Risposta#
Una richiesta riuscita restituisce HTTP 200:
{
"message": "Cancelled",
"status": 1
}
| Campo | Tipo | Descrizione |
|---|---|---|
status | integer | 1 se il messaggio è stato annullato, 0 in caso contrario. |
message | string | Cancelled in caso di successo, altrimenti il motivo. |
Dopo l'annullamento, Stato del messaggio riporta il messaggio come 3 (Cancelled). Un messaggio annullato non viene inviato, non attiva il suo webhook e non viene più conteggiato sui tuoi crediti rimanenti.
Errori#
La maggior parte degli errori restituisce HTTP 200 con status impostato su 0, quindi controlla sempre status nel corpo:
{ "message": "Msg has been Sent", "status": 0 }
| Messaggio | Come risolvere |
|---|---|
Msg has been Sent | Il messaggio è già stato inviato. Non può essere annullato. |
Msg has been Failed | L'invio del messaggio è già fallito, quindi non c'è nulla da annullare. |
Msg has been Cancelled | Il messaggio è stato annullato in precedenza. |
Msg has been Expired | Il messaggio è scaduto prima di essere inviato, quindi non c'è nulla da annullare. |
No msg found for given msg_id | Controlla il msg_id. Deve essere un numero e appartenere allo stesso spazio di lavoro della tua chiave API. |
Msg_id cant be null | Aggiungi msg_id. |
Auth Error | Invia sia client_id sia api_key. |
Invalid Client Id | Invia client_id come numero. Restituito con HTTP 403. |
Auth Error: invalid api key | Verifica che la chiave esista, non sia stata eliminata e appartenga a questo client_id. Restituito con HTTP 400. |
Invalid JSON format: … | Il corpo JSON non è valido, spesso a causa di una virgola finale, oppure hai inviato campi di un modulo senza client_id. |
Oggetto vuoto {} | È stato inviato un corpo JSON con un metodo diverso da POST. |
Suggerimenti#
- Salva ogni
msg_id: ti serve per annullare. Per Invia a più numeri, annulla separatamente ognimsg_iddella risposta. - Annulla per tempo: una volta inviato, un messaggio resta inviato, quindi annulla i messaggi pianificati non appena sai che non servono più.
- Ripianificazione: non esiste un endpoint per modificare un orario pianificato. Annulla il messaggio e pianificane uno nuovo.
- Considera concluso un messaggio già in stato finale: una risposta
Msg has been …significa che il messaggio non è più in coda, quindi non serve riprovare.
