Come usare Twilio per le funzionalità voce ed SMS in JavaHow to Use Twilio for Voice and SMS Capabilities in Java

In questa guida viene illustrato come eseguire attività di programmazione comuni con il servizio API Twilio in Azure.This guide demonstrates how to perform common programming tasks with the Twilio API service on Azure. Gli scenari presentati includono la composizione di una chiamata telefonica e l'invio di un messaggio SMS (Short Message Service).The scenarios covered include making a phone call and sending a Short Message Service (SMS) message. Per altre informazioni su Twilio e sull'utilizzo delle funzionalità voce ed SMS nelle applicazioni, vedere la sezione Passaggi successivi .For more information on Twilio and using voice and SMS in your applications, see the Next Steps section.

Informazioni su TwilioWhat is Twilio?

Twilio è un'API per servizi Web di telefonia che consente di usare le competenze e i linguaggi Web esistenti per sviluppare applicazioni SMS e vocali.Twilio is a telephony web-service API that lets you use your existing web languages and skills to build voice and SMS applications. Twilio è un servizio di terze parti. Non si tratta di una funzionalità di Azure, né di un prodotto Microsoft.Twilio is a third-party service (not an Azure feature and not a Microsoft product).

Twilio Voice consente alle applicazioni di effettuare e ricevere chiamate telefoniche.Twilio Voice allows your applications to make and receive phone calls. Twilio SMS consente alle applicazioni di inviare e ricevere SMS.Twilio SMS allows your applications to make and receive SMS messages. Twilio Client consente alle applicazioni di abilitare le comunicazioni vocali utilizzando le connessioni Internet esistenti, comprese le connessioni mobili.Twilio Client allows your applications to enable voice communication using existing Internet connections, including mobile connections.

Prezzi e offerte speciali di TwilioTwilio Pricing and Special Offers

Per altre informazioni, vedere la pagina Twilio Pricing (Prezzi di Twilio).Information about Twilio pricing is available at Twilio Pricing. Per i clienti di Azure è disponibile un'offerta speciale: un credito gratuito per 1000 SMS o 1000 minuti di connessioni in entrata.Azure customers receive a special offer: a free credit of 1000 texts or 1000 inbound minutes. Per avvalersi dell'offerta o per altre informazioni, visitare il sito Web all'indirizzo http://ahoy.twilio.com/azure.To sign up for this offer or get more information, please visit http://ahoy.twilio.com/azure.

ConcettiConcepts

L'API Twilio è un'API RESTful che fornisce funzionalità voce ed SMS per le applicazioni.The Twilio API is a RESTful API that provides voice and SMS functionality for applications. Le librerie client sono disponibili in più lingue. Per un elenco, vedere Twilio API Libraries (Librerie dell'API Twilio).Client libraries are available in multiple languages; for a list, see Twilio API Libraries.

I concetti principali dell'API Twilio sono costituiti dai verbi Twilio e dal linguaggio di markup Twilio (Twilio Markup Language, TwiML).Key aspects of the Twilio API are Twilio verbs and Twilio Markup Language (TwiML).

Verbi TwilioTwilio Verbs

Nell'API vengono usati i verbi di Twilio: il verbo <Say>, ad esempio, indica a Twilio di recapitare un messaggio acustico in una chiamata.The API makes use of Twilio verbs; for example, the <Say> verb instructs Twilio to audibly deliver a message on a call.

Di seguito è riportato un elenco dei verbi Twilio.The following is a list of Twilio verbs.

  • <Dial>: connette il chiamante a un altro telefono.<Dial>: Connects the caller to another phone.
  • <Gather>: raccoglie i numeri digitati sulla tastiera del telefono.<Gather>: Collects numeric digits entered on the telephone keypad.
  • <Hangup>: termina una chiamata.<Hangup>: Ends a call.
  • <Play>: riproduce un file audio.<Play>: Plays an audio file.
  • <Queue>: aggiunge l'elemento a una coda di chiamanti.<Queue>: Add the to a queue of callers.
  • <Pause>: attende in modo silenzioso per un numero di secondi specificato.<Pause>: Waits silently for a specified number of seconds.
  • <Record>: registra la voce del chiamante e restituisce l'URL del file contenente la registrazione.<Record>: Records the caller's voice and returns a URL of a file that contains the recording.
  • <Redirect>: trasferisce il controllo di una chiamata o di un SMS al codice TwiML presso un URL diverso.<Redirect>: Transfers control of a call or SMS to the TwiML at a different URL.
  • <Reject>: rifiuta una chiamata in arrivo al numero Twilio senza alcun addebito.<Reject>: Rejects an incoming call to your Twilio number without billing you.
  • <Say>: effettua la sintesi vocale del testo durante una chiamata.<Say>: Converts text to speech that is made on a call.
  • <Sms>: invia un SMS.<Sms>: Sends an SMS message.

TwiMLTwiML

TwiML è un set di istruzioni basate su XML e sui verbi Twilio che indicano a Twilio come elaborare una chiamata o un SMS.TwiML is a set of XML-based instructions based on the Twilio verbs that inform Twilio of how to process a call or SMS.

Ad esempio, il codice TwiML seguente effettua la sintesi vocale del testo Hello World!As an example, the following TwiML would convert the text Hello World! .to speech.

    <?xml version="1.0" encoding="UTF-8" ?>
    <Response>
       <Say>Hello World!</Say>
    </Response>

Quando l'applicazione chiama l'API Twilio, uno dei parametri dell'API è l'URL che restituisce la risposta TwiML.When your application calls the Twilio API, one of the API parameters is the URL that returns the TwiML response. Ai fini dello sviluppo, è possibile utilizzare gli URL offerti da Twilio per fornire le risposte TwiML utilizzate dalle applicazioni.For development purposes, you can use Twilio-provided URLs to provide the TwiML responses used by your applications. È inoltre possibile ospitare gli URL per produrre le risposte TwiML oppure utilizzare l'oggetto TwiMLResponse .You could also host your own URLs to produce the TwiML responses, and another option is to use the TwiMLResponse object.

Per altre informazioni sui verbi Twilio, i relativi attributi e il codice TwiML, vedere TwiML.For more information about Twilio verbs, their attributes, and TwiML, see TwiML. Per altre informazioni sull'API Twilio, vedere Twilio API (API Twilio).For additional information about the Twilio API, see Twilio API.

Creare un account TwilioCreate a Twilio Account

Se si desidera creare un account Twilio, iscriversi nella pagina Try Twilio (Provare Twilio).When you're ready to get a Twilio account, sign up at Try Twilio. È possibile iniziare con un account gratuito ed eseguire l'aggiornamento in un secondo momento.You can start with a free account, and upgrade your account later.

Quando si effettua l'iscrizione a un account Twilio, si riceverà un ID account e un token di autenticazione.When you sign up for a Twilio account, you'll receive an account ID and an authentication token. Entrambe queste informazioni sono necessarie per effettuare chiamate all'API Twilio.Both will be needed to make Twilio API calls. Per prevenire accessi autorizzati all'account, conservare il token di autenticazione in un luogo sicuro.To prevent unauthorized access to your account, keep your authentication token secure. L'ID account e il token di autorizzazione sono visualizzabili nella console di Twilio, rispettivamente nei campi ACCOUNT SID (SID ACCOUNT) e AUTH TOKEN (TOKEN AUTORIZZAZIONE).Your account ID and authentication token are viewable at the Twilio Console, in the fields labeled ACCOUNT SID and AUTH TOKEN, respectively.

Creare un'applicazione JavaCreate a Java Application

  1. Ottenere il file JAR di Twilio e aggiungerlo al percorso di compilazione Java e all'assembly di distribuzione del file WAR.Obtain the Twilio JAR and add it to your Java build path and your WAR deployment assembly. Dall'indirizzo https://github.com/twilio/twilio-java è possibile scaricare i file di origine disponibili in GitHub e creare un file JAR personalizzato o scaricarne uno precompilato, con o senza dipendenze.At https://github.com/twilio/twilio-java, you can download the GitHub sources and create your own JAR, or download a pre-built JAR (with or without dependencies).
  2. Verificare che l'archivio chiavi cacerts del JDK contenga il certificato Equifax Secure Certificate Authority con ID digitale MD5 67:CB:9D:C0:13:24:8A:82:9B:B2:17:1E:D1:1B:EC:D4 (il numero di serie è 35:DE:F4:CF e l'ID digitale SHA1 è D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A).Ensure your JDK's cacerts keystore contains the Equifax Secure Certificate Authority certificate with MD5 fingerprint 67:CB:9D:C0:13:24:8A:82:9B:B2:17:1E:D1:1B:EC:D4 (the serial number is 35:DE:F4:CF and the SHA1 fingerprint is D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A). Si tratta del certificato dell'Autorità di certificazione (CA) per il servizio https://api.twilio.com, che viene chiamato quando si usano le API Twilio.This is the certificate authority (CA) certificate for the https://api.twilio.com service, which is called when you use Twilio APIs. Per informazioni su come verificare che l'archivio chiavi cacerts del JDK contenga il certificato CA corretto, vedere Aggiunta di un certificato all'archivio certificati CA Java.For information about ensuring your JDK's cacerts keystore contains the correct CA certificate, see Adding a Certificate to the Java CA Certificate Store.

Per istruzioni dettagliate sull'uso della libreria client Twilio per Java, vedere Come effettuare una chiamata tramite Twilio in un'applicazione Java in Azure.Detailed instructions for using the Twilio client library for Java are available at How to Make a Phone Call Using Twilio in a Java Application on Azure.

Configurare l'applicazione per l'uso delle librerie TwilioConfigure Your Application to Use Twilio Libraries

All'interno del codice è possibile aggiungere istruzioni import nella parte superiore dei file di origine per i pacchetti o le classi Twilio da utilizzare nell'applicazione.Within your code, you can add import statements at the top of your source files for the Twilio packages or classes you want to use in your application.

Per i file di origine Java:For Java source files:

    import com.twilio.*;
    import com.twilio.rest.api.*;
    import com.twilio.type.*;
    import com.twilio.twiml.*;

Per i file di origine JSP (Java Server Page):For Java Server Page (JSP) source files:

    import="com.twilio.*"
    import="com.twilio.rest.api.*"
    import="com.twilio.type.*"
    import="com.twilio.twiml.*"

Le istruzioni import possono variare in base ai pacchetti o alle classi Twilio che si desidera utilizzare.Depending on which Twilio packages or classes you want to use, your import statements may be different.

Procedura: Effettuare una chiamata in uscitaHow to: Make an outgoing call

Di seguito è illustrato come effettuare una chiamata in uscita usando la classe Call.The following shows how to make an outgoing call using the Call class. Questo codice utilizza inoltre un sito fornito da Twilio per restituire la risposta TwiML (Twilio Markup Language).This code also uses a Twilio-provided site to return the Twilio Markup Language (TwiML) response. Sostituire i valori di from_number e to_number relativi ai numeri di telefono e, prima di eseguire il codice, verificare il numero di telefono specificato in from_number per l'account Twilio.Substitute your values for the from and to phone numbers, and ensure that you verify the from phone number for your Twilio account prior to running the code.

    // Use your account SID and authentication token instead
    // of the placeholders shown here.
    String accountSID = "your_twilio_account_SID";
    String authToken = "your_twilio_authentication_token";

    // Initialize the Twilio client.
    Twilio.init(accountSID, authToken);

    // Use the Twilio-provided site for the TwiML response.
    URI uri = new URI("http://twimlets.com/message" +
            "?Message%5B0%5D=Hello%20World%21");

    // Declare To and From numbers
    PhoneNumber to = new PhoneNumber("NNNNNNNNNN");
    PhoneNumber from = new PhoneNumber("NNNNNNNNNN");

    // Create a Call creator passing From, To and URL values
    // then make the call by executing the create() method
    Call.creator(to, from, uri).create();

Per altre informazioni sui parametri passati al metodo Call.creator, vedere http://www.twilio.com/docs/api/rest/making-calls.For more information about the parameters passed in to the Call.creator method, see http://www.twilio.com/docs/api/rest/making-calls.

Come indicato in precedenza, questo codice utilizza un sito fornito da Twilio per restituire la risposta TwiML.As mentioned, this code uses a Twilio-provided site to return the TwiML response. Per fornire la risposta TwiML è inoltre possibile usare il proprio sito. Per altre informazioni, vedere Procedura per fornire risposte TwiML in un'applicazione Java in Azure.You could instead use your own site to provide the TwiML response; for more information, see How to Provide TwiML Responses in a Java Application on Azure.

Procedura: Inviare un messaggio SMSHow to: Send an SMS message

La schermata seguente mostra come inviare un messaggio SMS usando la classe Message.The following shows how to send an SMS message using the Message class. Il numero riportato in from_number, 4155992671, è fornito da Twilio per l'invio di messaggi SMS con gli account di valutazione.The from number, 4155992671, is provided by Twilio for trial accounts to send SMS messages. Il numero riportato in to_number deve essere verificato per l'account Twilio prima dell'esecuzione del codice.The to number must be verified for your Twilio account prior to running the code.

    // Use your account SID and authentication token instead
    // of the placeholders shown here.
    String accountSID = "your_twilio_account_SID";
    String authToken = "your_twilio_authentication_token";

    // Initialize the Twilio client.
    Twilio.init(accountSID, authToken);

    // Declare To and From numbers and the Body of the SMS message
    PhoneNumber to = new PhoneNumber("+14159352345"); // Replace with a valid phone number for your account.
    PhoneNumber from = new PhoneNumber("+14158141829"); // Replace with a valid phone number for your account.
    String body = "Where's Wallace?";

    // Create a Message creator passing From, To and Body values
    // then send the SMS message by calling the create() method
    Message sms = Message.creator(to, from, body).create();

Per altre informazioni sui parametri passati al metodo Message.creator, vedere http://www.twilio.com/docs/api/rest/sending-sms.For more information about the parameters passed in to the Message.creator method, see http://www.twilio.com/docs/api/rest/sending-sms.

Procedura: Fornire risposte TwiML dal proprio sito WebHow to: Provide TwiML Responses from your own Website

Quando l'applicazione avvia una chiamata all'API Twilio, ad esempio tramite il metodo CallCreator.create, Twilio invia la richiesta a un URL che deve restituire una risposta TwiML.When your application initiates a call to the Twilio API, for example via the CallCreator.create method, Twilio will send your request to a URL that is expected to return a TwiML response. Nell'esempio precedente viene usato l'URL fornito da Twilio http://twimlets.com/message.The example above uses the Twilio-provided URL http://twimlets.com/message. Poiché TwiML è progettato per essere usato da servizi Web, è possibile visualizzare il codice TwiML nel browser.(While TwiML is designed for use by Web services, you can view the TwiML in your browser. Ad esempio, fare clic su http://twimlets.com/message per visualizzare un elemento <Response> vuoto oppure fare clic su http://twimlets.com/message?Message%5B0%5D=Hello%20World%21 per visualizzare un elemento <Response> contenente un elemento <Say>.For example, click http://twimlets.com/message to see an empty <Response> element; as another example, click http://twimlets.com/message?Message%5B0%5D=Hello%20World%21 to see a <Response> element that contains a <Say> element.)

Anziché utilizzare l'URL fornito da Twilio, è possibile creare un sito Web personalizzato che restituisce risposte HTTP.Instead of relying on the Twilio-provided URL, you can create your own URL site that returns HTTP responses. È possibile creare il sito in qualsiasi linguaggio che restituisca risposte XML. In questo argomento si presuppone che l'URL sarà ospitato in una pagina JSP.You can create the site in any language that returns HTTP responses; this topic assumes you'll be hosting the URL in a JSP page.

La pagina JSP seguente genera una risposta TwiML Hello World!The following JSP page results in a TwiML response that says Hello World! nella chiamata.on the call.

    <%@ page contentType="text/xml" %>
    <Response>
        <Say>Hello World!</Say>
    </Response>

La pagina JSP seguente crea una risposta TwiML che pronuncia del testo, contiene diverse pause e pronuncia informazioni sulla versione dell'API Twilio e sul nome del ruolo di Azure.The following JSP page results in a TwiML response that says some text, has several pauses, and says information about the Twilio API version and the Azure role name.

    <%@ page contentType="text/xml" %>
    <Response>
        <Say>Hello from Azure!</Say>
        <Pause></Pause>
        <Say>The Twilio API version is <%= request.getParameter("ApiVersion") %>.</Say>
        <Say>The Azure role name is <%= System.getenv("RoleName") %>.</Say>
        <Pause></Pause>
        <Say>Good bye.</Say>
    </Response>

Il parametro ApiVersion è disponibile nelle richieste vocali Twilio, non nelle richieste SMS.The ApiVersion parameter is available in Twilio voice requests (not SMS requests). Per visualizzare i parametri di richiesta disponibili per le richieste vocali e SMS di Twilio, vedere rispettivamente https://www.twilio.com/docs/api/twiml/twilio_request e https://www.twilio.com/docs/api/twiml/sms/twilio_request.To see the available request parameters for Twilio voice and SMS requests, see https://www.twilio.com/docs/api/twiml/twilio_request and https://www.twilio.com/docs/api/twiml/sms/twilio_request, respectively. La variabile di ambiente RoleName è disponibile come parte di una distribuzione Azure.The RoleName environment variable is available as part of an Azure deployment. Se si vuole aggiungere variabili di ambiente personalizzate in modo che possano essere recuperate da System.getenv, vedere la sezione relativa alle variabili di ambiente in Impostazioni varie di configurazione dei ruoli.(If you want to add custom environment variables so they could be picked up from System.getenv, see the environment variables section at Miscellaneous Role Configuration Settings.)

Dopo aver configurato la pagina JSP in modo che vengano fornite risposte TwiML, usare l'URL della pagina JSP come URL passato nel metodo Call.creator.Once you have your JSP page set up to provide TwiML responses, use the URL of the JSP page as the URL passed into the Call.creator method. Se, ad esempio, si dispone di un'applicazione Web denominata MyTwiML distribuita in un servizio ospitato in Azure e il nome della pagina JSP è mytwiml.jsp, è possibile passare l'URL a Call.creator come illustrato nell'esempio di codice seguente:For example, if you have a Web application named MyTwiML deployed to an Azure hosted service, and the name of the JSP page is mytwiml.jsp, the URL can be passed to Call.creator as shown in the following:

    // Declare To and From numbers and the URL of your JSP page
    PhoneNumber to = new PhoneNumber("NNNNNNNNNN");
    PhoneNumber from = new PhoneNumber("NNNNNNNNNN");
    URI uri = new URI("http://<your_hosted_service>.cloudapp.net/MyTwiML/mytwiml.jsp");

    // Create a Call creator passing From, To and URL values
    // then make the call by executing the create() method
    Call.creator(to, from, uri).create();

Un'altra possibilità per rispondere con TwiML consiste nell'usare la classe VoiceResponse, disponibile nel pacchetto com.twilio.twiml.Another option for responding with TwiML is via the VoiceResponse class, which is available in the com.twilio.twiml package.

Per altre informazioni sull'uso di Twilio in Azure con Java, vedere Come effettuare una chiamata tramite Twilio in un'applicazione Java in Azure.For additional information about using Twilio in Azure with Java, see How to Make a Phone Call Using Twilio in a Java Application on Azure.

Procedura: Utilizzare servizi Twilio aggiuntiviHow to: Use Additional Twilio Services

Oltre agli esempi illustrati in questa pagina, Twilio offre API basate su Web che è possibile utilizzare per sfruttare altre funzionalità di Twilio dall'applicazione Azure.In addition to the examples shown here, Twilio offers web-based APIs that you can use to leverage additional Twilio functionality from your Azure application. Per informazioni dettagliate, vedere la documentazione sull'API Twilio.For full details, see the Twilio API documentation.

Passaggi successiviNext Steps

Dopo aver appreso le nozioni di base sul servizio Twilio, utilizzare i collegamenti seguenti per ulteriori informazioni:Now that you've learned the basics of the Twilio service, follow these links to learn more: