UC-025 — Gestire Numeri WhatsApp Business
| Campo | Valore |
|---|---|
| ID | UC-025 |
| Obiettivo | Verificare e gestire i numeri WhatsApp Business disponibili |
| Canale | |
| Complessità | ⭐ Base |
| Tempo stimato | 10 minuti |
| API coinvolte | GET /api/message-server/whatsapp/phone-numbers, GET /api/message-server/whatsapp/phone-numbers/{phoneNumberId} |
Scenari reali
- ShopItalia — Verificare numeri disponibili: Prima di lanciare una campagna, il team marketing verifica quali numeri WhatsApp Business sono attivi e pronti per l'invio.
- MultiStore — Controllare onboarding: L'azienda ha richiesto l'attivazione di un nuovo numero per il brand "SportZone" e vuole verificare lo stato di onboarding.
- AgenziaViaggi — Scegliere numero per campagna: Con 3 numeri attivi (uno per brand), il team seleziona il numero corretto da associare alla campagna estiva.
Flusso di gestione numeri
Il diagramma mostra i tre stati possibili di un numero WhatsApp Business e le azioni conseguenti: usare per invio, attendere onboarding o contattare il supporto.
Prerequisiti
- API Key attiva con permessi WhatsApp
- Almeno un numero WhatsApp Business registrato sulla piattaforma
Step 1 — Recupera la lista dei numeri disponibili
Interroga l'endpoint per ottenere tutti i numeri WhatsApp Business associati al tuo account.
curl -X GET https://lora-api.agiletelecom.com/api/message-server/whatsapp/phone-numbers \
-H "X-Api-Key: YOUR_API_KEY"
Response — Lista numeri
{
"phoneNumbers": [
{
"phoneNumberId": "waba-num-001",
"phoneNumber": "+390212345678",
"displayName": "ShopItalia",
"qualityRating": "GREEN",
"status": "ACTIVE",
"messagingLimit": "TIER_10K",
"verifiedName": "ShopItalia S.r.l.",
"platform": "CLOUD_API"
},
{
"phoneNumberId": "waba-num-002",
"phoneNumber": "+390287654321",
"displayName": "SportZone",
"qualityRating": "UNKNOWN",
"status": "PENDING",
"messagingLimit": "TIER_1K",
"verifiedName": "SportZone by ShopItalia",
"platform": "CLOUD_API"
},
{
"phoneNumberId": "waba-num-003",
"phoneNumber": "+390211223344",
"displayName": "ShopItalia Support",
"qualityRating": "GREEN",
"status": "ACTIVE",
"messagingLimit": "TIER_100K",
"verifiedName": "ShopItalia S.r.l.",
"platform": "CLOUD_API"
}
],
"total": 3
}
Dietro le quinte — Quality rating e messaging limit
- Quality rating: Meta assegna un punteggio di qualita basato sul feedback degli utenti. I valori possibili sono
GREEN(buono),YELLOW(attenzione) eRED(critico). Un rating RED puo portare alla sospensione del numero. - Messaging limit: Il tier determina quanti messaggi unici puoi inviare in 24 ore:
TIER_1K(1.000),TIER_10K(10.000),TIER_100K(100.000),UNLIMITED. Il tier sale automaticamente con un buon quality rating. - Status PENDING: Un numero in stato PENDING sta completando il processo di verifica con Meta. Il processo include la verifica OTP e la revisione del display name.
- Platform CLOUD_API: Indica che il numero usa la Cloud API di Meta (gestita da Meta). L'alternativa e
ON_PREMISEper installazioni locali del Business API. - Verified name: Il nome verificato da Meta che appare nell'intestazione della chat WhatsApp del destinatario. Non puo essere modificato senza una nuova richiesta di verifica.
Step 2 — Verifica il dettaglio di un numero specifico
Per ottenere informazioni dettagliate su un singolo numero, usa l'ID restituito nello step precedente.
curl -X GET https://lora-api.agiletelecom.com/api/message-server/whatsapp/phone-numbers/waba-num-001 \
-H "X-Api-Key: YOUR_API_KEY"
Response — Dettaglio numero
{
"phoneNumberId": "waba-num-001",
"phoneNumber": "+390212345678",
"displayName": "ShopItalia",
"qualityRating": "GREEN",
"status": "ACTIVE",
"messagingLimit": "TIER_10K",
"verifiedName": "ShopItalia S.r.l.",
"platform": "CLOUD_API",
"nameStatus": "APPROVED",
"accountMode": "LIVE",
"lastOnboardedAt": "2025-11-15T10:00:00+01:00",
"wabaId": "waba-acct-shopitalia-001"
}
:::tip Controlla quality rating e tier prima delle campagne
Prima di lanciare campagne di grandi dimensioni, verifica che il qualityRating sia GREEN e che il messagingLimit sia sufficiente per il volume previsto. Un tier TIER_1K non puo gestire una campagna da 5.000 destinatari.
:::
Risultato atteso
| Step | Azione | Risultato |
|---|---|---|
| 1 | GET /phone-numbers | Lista completa dei numeri con stato e tier |
| 2 | GET /phone-numbers/{id} | Dettaglio completo di un numero specifico |
Esempio completo end-to-end
# 1. Recupera tutti i numeri disponibili
echo "=== Numeri WhatsApp Business ==="
curl -s -X GET https://lora-api.agiletelecom.com/api/message-server/whatsapp/phone-numbers \
-H "X-Api-Key: YOUR_API_KEY" | jq '.phoneNumbers[] | {phoneNumberId, displayName, status, qualityRating, messagingLimit}'
# 2. Trova numeri attivi con tier sufficiente per la campagna
echo "=== Numeri pronti per campagna (ACTIVE + TIER >= 10K) ==="
curl -s -X GET https://lora-api.agiletelecom.com/api/message-server/whatsapp/phone-numbers \
-H "X-Api-Key: YOUR_API_KEY" | jq '[.phoneNumbers[] | select(.status == "ACTIVE" and (.messagingLimit == "TIER_10K" or .messagingLimit == "TIER_100K" or .messagingLimit == "UNLIMITED"))]'
# 3. Dettaglio del numero scelto
PHONE_ID="waba-num-001"
echo "=== Dettaglio numero ${PHONE_ID} ==="
curl -s -X GET "https://lora-api.agiletelecom.com/api/message-server/whatsapp/phone-numbers/${PHONE_ID}" \
-H "X-Api-Key: YOUR_API_KEY" | jq .
Varianti
Filtrare numeri per stato
Per trovare rapidamente solo i numeri attivi lato client:
curl -s -X GET https://lora-api.agiletelecom.com/api/message-server/whatsapp/phone-numbers \
-H "X-Api-Key: YOUR_API_KEY" \
| jq '[.phoneNumbers[] | select(.status == "ACTIVE")]'
Monitorare lo stato di onboarding
Per un numero in stato PENDING, esegui un polling periodico:
# Controlla ogni 30 secondi fino a quando lo stato cambia
PHONE_ID="waba-num-002"
while true; do
STATUS=$(curl -s -X GET "https://lora-api.agiletelecom.com/api/message-server/whatsapp/phone-numbers/${PHONE_ID}" \
-H "X-Api-Key: YOUR_API_KEY" | jq -r '.status')
echo "$(date): Status = $STATUS"
if [ "$STATUS" != "PENDING" ]; then
echo "Onboarding completato con stato: $STATUS"
break
fi
sleep 30
done
Errori comuni
404 Not Found — Numero non trovato
{
"status": "fail",
"data": {
"phoneNumberId": "Phone number not found: waba-num-999"
}
}
Soluzione: Verifica l'ID del numero con una GET sulla lista completa. L'ID potrebbe essere cambiato dopo una riconfigurazione.
401 Unauthorized — API Key mancante o non valida
{
"status": "fail",
"data": {
"authentication": "Invalid or missing API key"
}
}
Soluzione: Verifica che l'header X-Api-Key sia presente e che la chiave sia attiva nel pannello della piattaforma.
403 Forbidden — Permessi insufficienti
{
"status": "fail",
"data": {
"authorization": "API key does not have permission to access WhatsApp phone numbers"
}
}
Soluzione: La tua API Key potrebbe non avere i permessi per il canale WhatsApp. Verifica i permessi nel pannello della piattaforma o contatta l'amministratore.
Prossimi passi
- UC-003 — Invio WhatsApp Template: Invia un singolo messaggio WhatsApp
- UC-022 — Campagna Bulk WhatsApp: Usa il numero scelto per una campagna bulk
- UC-013 — WhatsApp Template Workflow: Crea template per il numero selezionato
- UC-024 — Template con Link Tracciati: Aggiungi tracking ai template
Riferimenti
- API Reference — WhatsApp Phone Numbers: Documentazione completa endpoint numeri
- Guida WhatsApp: Specifiche del canale WhatsApp e onboarding
- Guida Autenticazione: Dettagli su API Key e Basic Auth