
Panoramica
Un report telefonico viene generato ogni volta che un nodo del workflow esegue la funzionalità di Verifica telefonica. Ciascun report rappresenta una procedura di verifica OTP associata a un singolo numero di telefono e contiene:- Il numero di telefono suddiviso in prefisso, numero nazionale e formato E.164 completo, oltre al codice paese ISO e al nome del paese.
- Metadati dell’operatore (
name,type) ricavati dalla rete di destinazione. - Flag di rischio booleani (
is_disposable,is_virtual) derivati dall’analisi della tipologia di linea. - L’effettivo canale di consegna utilizzato (
verification_method) e il conteggio dei tentativi di invio dell’OTP. - Un registro cronologico
lifecycle[]di ogni invio, nuovo tentativo, evento di consegna e tentativo di verifica del codice. - Un array
matches[]che evidenzia lo stesso numero presente in altre sessioni — in qualsiasi stato, tra KYC, KYB e verifiche API autonome — o nella tua blocklist. - Un array
warnings[]— eventi di rischio generati durante la verifica (consulta gli Avvisi di Verifica telefonica). - Un
node_idche identifica quale nodo del grafo del workflow ha generato il report (solo per sessioni V3).
POST /v3/phone/send/ per recapitare il codice e POST /v3/phone/check/ per convalidare l’inserimento dell’utente. Un OTP in attesa è valido per 5 minuti dal primo invio (i nuovi tentativi non estendono l’intervallo). Nelle sessioni del workflow gli utenti hanno a disposizione per impostazione predefinita 2 tentativi di invio dell’OTP (phone_max_retries) e 2 tentativi di inserimento del codice (phone_max_check_attempts), entrambi configurabili per singolo nodo del workflow; l’esaurimento di uno di questi limiti conclude il passaggio come Declined con VERIFICATION_CODE_ATTEMPTS_EXCEEDED. L’API telefonica autonoma consente 3 tentativi di inserimento del codice per verifica.
Dove appare nelle risposte API
L’endpoint di decisione (GET /v3/session/{sessionId}/decision/) restituisce i report telefonici con la chiave di array al plurale phone_verifications. L’array contiene una voce per ciascun nodo di Verifica telefonica presente nel grafo del workflow — in genere una sola, ma i flussi di step-up possono generarne diverse.
null indica che nessun passaggio di Verifica telefonica è stato ancora eseguito. Itera sull’array (invece di leggere solo phone_verifications[0]) quando il tuo workflow può raccogliere più di un numero di telefono.
Schema
Lo schema canonico campo per campo si trova nella pagina Modelli di dati.Valori di stato
Tipi di eventi del ciclo di vita
lifecycle[] è ordinato cronologicamente. Ciascun evento include type, timestamp, details e un importo fatturabile fee (quando applicabile):
Il payload
details dipende dalla famiglia di eventi:
- Eventi di invio (
PHONE_VERIFICATION_MESSAGE_SENT,PHONE_VERIFICATION_RETRY_MESSAGE_SENT,PHONE_VERIFICATION_BLOCKED) —{ status, reason, channel, actual_channel }.statusèSuccess,RetryoBlocked;reasonènulla meno che l’invio non sia stato bloccato (invalid_phone_number,repeated_attempts,suspicious,spam,unknown);channelè il canale richiesto eactual_channelè il canale che ha effettivamente consegnato il messaggio (ad esempio un invio WhatsApp deviato su SMS in fallback). - Eventi di consegna (
PHONE_DELIVERY_DELIVERED,PHONE_DELIVERY_UNDELIVERABLE) —{ channel, status }constatusimpostato sudeliveredoundeliverable. - Eventi di controllo (
VALID_CODE_ENTERED,INVALID_CODE_ENTERED) —{ code_tried, status }constatusimpostato suApproved,Declined,FailedoExpired or Not Found. - Eventi di stato finale —
null, trannePHONE_VERIFICATION_DECLINED/PHONE_VERIFICATION_IN_REVIEW, che contengono{ "reason": "<risk code>" }(ad esempioPHONE_NUMBER_IN_BLOCKLIST).
fee su un evento di invio rappresenta il prezzo totale di quell’invio: il prezzo dell’operatore o di WhatsApp più la commissione Didit di $0.02, oppure solo la commissione Didit di $0.02 per un codice WhatsApp inviato dal tuo numero WhatsApp Business. È il prezzo stimato fino alla conferma della consegna, dopodiché diventa l’importo effettivo fatturato. Solo gli invii con stato Blocked sono garantiti come gratuiti: qualsiasi altro invio viene addebitato quando la verifica viene finalizzata o scade, anche se la consegna non è mai stata confermata o il messaggio è risultato non recapitabile. Gli eventi di consegna, di verifica e di stato presentano sempre fee: 0.
Corrispondenze tra sessioni
matches[] registra le altre sessioni nella stessa applicazione in cui è stato rilevato lo stesso numero — tra verifiche KYC, KYB e verifiche tramite API autonoma, indipendentemente dal loro stato — oltre ai riscontri di blocklist configurati nelle liste dell’API di gestione. Le sessioni che condividono il valore vendor_data della sessione corrente vengono escluse (lo stesso utente finale non genera corrispondenze con se stesso) e l’array è limitato a un massimo di 5 voci. Quando il numero è presente nella tua blocklist ma nessuna delle sessioni corrispondenti è inserita in blocklist, viene anteposta all’array una voce sintetica con source: "list_entry" (con tutti i campi della sessione impostati su null).
Esempi
Approvata — OTP WhatsApp, operatore mobile
Rifiutata — numero VoIP in blocklist
L’utente ha inserito un OTP valido, ma la finalizzazione ha rilevato il numero nella blocklist dell’applicazione (rifiuto automatico) e ha segnalato il tipo di linea VoIP (voip_number_action è rimasto impostato su NO_ACTION, quindi viene registrato come information). Poiché nessuna sessione corrispondente è inserita in blocklist, il riscontro della blocklist appare come una corrispondenza sintetica list_entry.
Risorse correlate
- Panoramica sulla Verifica telefonica — comportamento della funzionalità, prezzi, canali supportati.
- Avvisi della Verifica telefonica — tutti i codici di rischio, trigger di rifiuto e azioni configurabili.
- Modelli di dati — verifica telefonica — schema canonico campo per campo.
- API telefonica autonoma — endpoint
POST /v3/phone/send/ePOST /v3/phone/check/. - API di gestione — Liste — gestione della blocklist telefonica che alimenta
matches[]consource: list_entry.