Verifica OTP via SMS

Panoramica
Questa guida mostra come integrare Twilio Verify con il tuo agente ElevenLabs per inviare un OTP al numero di telefono di un chiamante e verificare il codice che ti comunica durante una conversazione vocale in tempo reale.
Imparerai a:
- Creare un servizio Twilio Verify e codificare in Base64 le tue credenziali per l’autenticazione.
- Configurare due strumenti webhook (
send_SMS_verificationecheck_SMS_verification) nella dashboard, con la CLI Agents o usando l’API ElevenLabs. - Autenticare entrambe le chiamate webhook usando un header
Authorizationcon un valore segreto. - Abilitare lo strumento di sistema
skip_turnaffinché l’agente attenda quando il chiamante non ha ancora ricevuto il codice.
Prerequisiti
- Un account Twilio con Twilio Verify abilitato. Se Verify non è disponibile nella Twilio Console, richiedi l’accesso tramite il supporto Twilio o il team responsabile del tuo account Twilio.
- Se il tuo account Twilio è in modalità di prova, il numero di telefono di destinazione deve essere un ID chiamante verificato in Twilio.
Crea un servizio Authenticate (Verify)
Nella barra laterale sinistra, scegli Add + e crea un servizio Authenticate (Verify).
Copia il Verify Service SID
Apri la pagina Settings del servizio e copia il Verify Service SID. Inizia con VA ed è diverso dal tuo Account SID.
Errore comune: usa il tuo Verify Service SID (VA...) del servizio Authenticate (Verify) negli URL degli strumenti qui sotto. Non inserire il tuo Account SID (AC...) nel path. L’API Verify richiede il SID del servizio nell’URL; usando l’Account SID si generano errori 4xx relativi a parametri non validi.
Puoi usare Twilio API Explorer nella console per testare le richieste prima di collegarle al tuo agente.
Codifica le credenziali e configura gli strumenti webhook
Codifica le tue credenziali Twilio per l'autenticazione Basic
Twilio Verify usa l’autenticazione HTTP Basic con il tuo Account SID come nome utente e l’Auth Token come password. Trovi entrambi in Account Info nella home page della Twilio Console.
Nella shell, codifica in Base64 ACCOUNT_SID:AUTH_TOKEN (separati da due punti, senza spazi):
Copia l’output. Il valore completo dell’header Authorization è la parola Basic, un singolo spazio e quella stringa Base64. Salvala come secret dello strumento nei passaggi successivi.
Configura gli strumenti send_SMS_verification e check_SMS_verification
send_SMS_verification chiama Twilio Verify per inviare un OTP via SMS. check_SMS_verification invia le cifre pronunciate dal chiamante. Entrambi richiedono lo stesso Verify Service SID e lo stesso secret Authorization.
Aggiungi dalla dashboard
Aggiungi tramite CLI
Aggiungi tramite l'API
send_SMS_verification

Nella sezione Agent delle impostazioni dell’agente, scegli Add Tool e seleziona Webhook.
Sostituisci YOUR_VERIFY_SERVICE_SID con il SID VA... del primo passaggio.
Header di autenticazione: in Headers, aggiungi Authorization come tipo Secret e incolla il valore completo (Basic più Base64). Vedi Strumenti webhook.
Parametri del body: imposta Content type su URL-encoded (application/x-www-form-urlencoded). Aggiungi i parametri con LLM Prompt come tipo di valore:
check_SMS_verification
Aggiungi un secondo strumento webhook:
Usa lo stesso Verify Service SID e lo stesso secret Authorization di send_SMS_verification.
Parametri del body: URL-encoded. Aggiungi To (E.164) e Code (cifre OTP) con LLM Prompt.
Se configuri Channel come campo compilato dall’LLM nella dashboard, aggiungi istruzioni nel prompt di sistema affinché il modello passi sempre sms. Gli esempi CLI e API qui sopra fissano sms con constant_value / constantValue, quindi il modello non sceglie il canale.
Abilita lo strumento di sistema skip_turn
Spesso chi chiama ha bisogno di un momento per ricevere l’SMS prima di poter leggere il codice. Senza skip_turn, l’agente potrebbe parlare durante la pausa o ripetere i prompt.
Aggiungi dalla dashboard
Aggiungi tramite CLI
Aggiungi tramite l'API
In Tools, scegli Add Tool, seleziona System tool e abilita Skip turn. Non è necessaria alcuna ulteriore configurazione.
Aggiungi indicazioni al prompt di sistema affinché il modello sappia quando chiamarlo, ad esempio:
Per i dettagli, vedi Skip turn.
Risoluzione dei problemi
Twilio 60200 — Parametro non valido (HTTP 400)
Twilio può restituire un body come questo quando l’URL o il body della richiesta non corrisponde a quanto previsto dall’API Verify:
Cosa verificare: il path deve usare il tuo Verify Service SID (VA...) dalle impostazioni del servizio Authenticate (Verify). Inserire il tuo Account SID (AC...) in .../Services/{Sid}/... è una causa frequente di 60200. Consulta la documentazione Twilio per 60200 per altri casi di parametri non validi.
Twilio 20003 — Errore di autenticazione — Nessuna credenziale fornita (HTTP 401)
Quando l’header Authorization è assente, non valido o non viene inviato, Twilio può rispondere con:
Cosa verificare: lo strumento deve inviare un header Authorization il cui valore sia la stringa completa Basic <base64> (inclusa la parola Basic e un singolo spazio prima dell’output Base64). L’input Base64 deve essere esattamente ACCOUNT_SID:AUTH_TOKEN, senza spazi aggiuntivi né nuove righe. Verifica che il secret sia associato a questo header in entrambi gli strumenti webhook. Vedi 20003.
Altri problemi
- Numero rifiutato in modalità di prova: nella Twilio Console, apri Verified phone numbers e assicurati che il numero di destinazione sia elencato prima del test.
- L’agente parla sopra il chiamante: verifica che Skip turn sia abilitato e che il prompt di sistema indichi al modello di usare
skip_turnquando chi chiama ha bisogno di tempo.