Come usare Twilio per le funzionalità voce ed SMS da AzureHow to use Twilio for voice and SMS capabilities from Azure

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 è una tecnologia all'avanguardia per le comunicazioni aziendali che consente agli sviluppatori di incorporare funzionalità voce, VoIP e di messaggistica nelle applicazioni.Twilio is powering the future of business communications, enabling developers to embed voice, VoIP, and messaging into applications. Consente di virtualizzare tutta l'infrastruttura necessaria in un ambiente globale basato su cloud, esponendolo attraverso la piattaforma API per le comunicazioni Twilio.They virtualize all infrastructure needed in a cloud-based, global environment, exposing it through the Twilio communications API platform. Le applicazioni sono scalabili e facili da compilare.Applications are simple to build and scalable. Offre flessibilità, grazie a un modello di prezzi con pagamento in base al consumo, e l'affidabilità del cloud.Enjoy flexibility with pay-as-you-go pricing, and benefit from cloud reliability.

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 enables your applications to send and receive SMS messages. Twilio Client consente di effettuare chiamate VoIP da qualsiasi telefono, tablet o browser e supporta WebRTC.Twilio Client allows you to make VoIP calls from any phone, tablet, or browser and supports WebRTC.

Prezzi e offerte speciali di TwilioTwilio Pricing and Special Offers

I clienti di Azure riceveranno un' offerta speciale: $ 10 di credito Twilio all'aggiornamento dell'account Twilio.Azure customers receive a special offer: complimentary $10 of Twilio Credit when you upgrade your Twilio Account. Il credito Twilio può essere applicato a qualsiasi utilizzo di Twilio ($ 10 di credito equivalgono all'invio di 1.000 SMS o a 1.000 minuti voce per le chiamate in entrata, a seconda della località del numero di telefono, del messaggio o della destinazione della chiamata).This Twilio Credit can be applied to any Twilio usage ($10 credit equivalent to sending as many as 1,000 SMS messages or receiving up to 1000 inbound Voice minutes, depending on the location of your phone number and message or call destination). Per riscattare il credito Twilio e iniziare a utilizzare il servizio, visitare la pagina all'indirizzo ahoy.twilio.com/azure.Redeem this Twilio credit and get started at ahoy.twilio.com/azure.

Twilio è un servizio con pagamento in base al consumo.Twilio is a pay-as-you-go service. Non prevede spese iniziali ed è possibile chiudere l'account in qualsiasi momento.There are no set-up fees, and you can close your account at any time. Per altre informazioni, vedere la pagina relativa ai prezzi di Twilio.You can find more details at Twilio Pricing.

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. Per altre informazioni su altri verbi e funzionalità, vedere la documentazione relativa a Twilio Markup Language.Learn about the other verbs and capabilities via Twilio Markup Language documentation.

  • <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.
  • <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 an 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 pagina dell'account Twilio, rispettivamente nei campi ACCOUNT SID (SID ACCOUNT) e AUTH TOKEN (TOKEN AUTORIZZAZIONE).Your account ID and authentication token are viewable at the Twilio account page, in the fields labeled ACCOUNT SID and AUTH TOKEN, respectively.

Creare un'applicazione AzureCreate an Azure Application

Un'applicazione Azure che ospita un'applicazione compatibile con Twilio non è diversa da qualsiasi altra applicazione Azure.An Azure application that hosts a Twilio enabled application is no different from any other Azure application. Aggiungere la libreria Twilio .NET e configurare il ruolo per l'uso delle librerie Twilio .NET.You add the Twilio .NET library and configure the role to use the Twilio .NET libraries. Per informazioni sulla creazione di un progetto Azure iniziale, vedere Creazione di un progetto Azure con Visual Studio.For information on creating an initial Azure project, see Creating an Azure project with Visual Studio.

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

Twilio fornisce un set di librerie helper .NET che copre vari aspetti di Twilio per fornire modi semplici e pratici per interagire con l'API REST di Twilio e il client Twilio per generare risposte TwiML.Twilio provides a set of .NET helper libraries that wrap various aspects of Twilio to provide simple and easy ways to interact with the Twilio REST API and Twilio Client to generate TwiML responses.

Twilio offre cinque librerie per sviluppatori .NET:Twilio provides five libraries for .NET developers:

LibreriaLibrary DescrizioneDescription
Twilio.APITwilio.API La libreria Twilio di base che include l'API REST Twilio in una libreria .NET intuitiva.The core Twilio library that wraps the Twilio REST API in a friendly .NET library. Questa libreria è disponibile per .NET, Silverlight e Windows Phone 7.This library is available for .NET, Silverlight, and Windows Phone 7.
Twilio.TwiMLTwilio.TwiML Fornisce un modo intuitivo per generare il markup TwiML in .NET.Provides a .NET friendly way to generate TwiML markup.
Twilio.MVCTwilio.MVC Per gli sviluppatori che usano ASP.NET MVC, questa libreria include un controller TwilioController, una classe ActionResult TwiML e un attributo di convalida della richiesta.For developers using ASP.NET MVC, this library includes a TwilioController, TwiML ActionResult, and request validation attribute.
Twilio.WebMatrixTwilio.WebMatrix Per gli sviluppatori che utilizzano lo strumento di sviluppo WebMatrix gratuito di Microsoft, questa libreria contiene gli helper della sintassi Razor per varie azioni Twilio.For developers using Microsoft's free WebMatrix development tool, this library contains Razor syntax helpers for various Twilio actions.
Twilio.Client.CapabilityTwilio.Client.Capability Contiene il generatore di token Capability per l'utilizzo con l'SDK JavaScript per il client Twilio.Contains the Capability token generator for use with the Twilio Client JavaScript SDK.

Si noti che tutte le librerie richiedono .NET 3.5, Silverlight 4 o Windows Phone 7 o versioni successive.Note that all libraries require .NET 3.5, Silverlight 4, or Windows Phone 7 or later.

Nell'esempio illustrato in questa guida viene usata la libreria Twilio.API.The samples provided in this guide use the Twilio.API library.

Le librerie possono essere installate tramite l'estensione Gestione pacchetti NuGet disponibile per Visual Studio da 2010 a 2015.The libraries can be installed using the NuGet package manager extension available for Visual Studio 2010 up to 2015. Il codice sorgente è ospitato in GitHub, che include un wiki contenente la documentazione completa per l'uso delle librerie.The source code is hosted on GitHub, which includes a Wiki that contains complete documentation for using the libraries.

Per impostazione predefinita, con Microsoft Visual Studio 2010 viene installata la versione 1.2 di NuGet.By default, Microsoft Visual Studio 2010 installs version 1.2 of NuGet. L'installazione delle librerie Twilio richiede NuGet 1.6 o versioni successive.Installing the Twilio libraries requires version 1.6 of NuGet or higher. Per informazioni sull'installazione o l'aggiornamento di NuGet, vedere http://nuget.org/.For information on installing or updating NuGet, see http://nuget.org/.

Nota

Per installare la versione più recente di NuGet, è innanzitutto necessario disinstallare la versione caricata tramite Gestione estensioni di Visual Studio.To install the latest version of NuGet, you must first uninstall the loaded version using the Visual Studio Extension Manager. A questo scopo, è necessario eseguire Visual Studio come amministratore.To do so, you must run Visual Studio as administrator. In caso contrario, il pulsante Disinstalla è disabilitato.Otherwise, the Uninstall button is disabled.

Per aggiungere le librerie Twilio al progetto di Visual Studio:To add the Twilio libraries to your Visual Studio project:

  1. Aprire la soluzione in Visual Studio.Open your solution in Visual Studio.
  2. Fare clic con il pulsante destro del mouse su Riferimenti.Right-click References.
  3. Scegliere Gestisci pacchetti NuGet...Click Manage NuGet Packages...
  4. Fare clic su Online.Click Online.
  5. Nella casella di ricerca online digitare twilio.In the search online box, type twilio.
  6. Fare clic su Install sul pacchetto Twilio.Click Install on the Twilio package.

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

Di seguito è illustrato come effettuare una chiamata in uscita usando la classe CallResource.The following shows how to make an outgoing call using the CallResource 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 to e from relativi ai numeri di telefono e, prima di eseguire il codice, verificare il numero di telefono specificato in from per l'account Twilio.Substitute your values for the to and from phone numbers, and ensure that you verify the from phone number for your Twilio account before running the code.

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

// Initialize the TwilioClient.
TwilioClient.Init(accountSID, authToken);

// Use the Twilio-provided site for the TwiML response.
var url = "http://twimlets.com/message";
url = $"{url}?Message%5B0%5D=Hello%20World";

// Set the call From, To, and URL values to use for the call.
// This sample uses the sandbox number provided by
// Twilio to make the call.
var call = CallResource.Create(
    to: new PhoneNumber("+NNNNNNNNNN"),
    from: new PhoneNumber("NNNNNNNNNN"),
    url: new Uri(url));
    }

Per altre informazioni sui parametri passati al metodo CallResource.Create, vedere http://www.twilio.com/docs/api/rest/making-calls.For more information about the parameters passed in to the CallResource.Create 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, è tuttavia possibile utilizzare il proprio sito.You could instead use your own site to provide the TwiML response. Per altre informazioni, vedere How to: Provide TwiML responses from your own website (Procedura: Fornire risposte TwiML dal proprio sito Web).For more information, see How to: Provide TwiML responses from your own website.

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

Nella schermata seguente è illustrato come inviare un messaggio SMS tramite la classe MessageResource.The following screenshot shows how to send an SMS message using the MessageResource class. Il numero in from per l'invio di messaggi SMS con gli account di valutazione è fornito da Twilio.The from number is provided by Twilio for trial accounts to send SMS messages. Il numero in to deve essere verificato per l'account Twilio prima di eseguire il codice.The to number must be verified for your Twilio account before you run the code.

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

// Initialize the TwilioClient.
TwilioClient.Init(accountSID, authToken);

try
{
    // Send an SMS message.
    var message = MessageResource.Create(
        to: new PhoneNumber("+12069419717"),
        from: new PhoneNumber("+14155992671"),
        body: "This is my SMS message.");
}
catch (TwilioException ex)
{
    // An exception occurred making the REST call
    Console.WriteLine(ex.Message);
}

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 CallResource.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 CallResource.Create method - Twilio sends your request to an URL that is expected to return a TwiML response. L'esempio in Procedura: Effettuare una chiamata in uscita usa l'URL fornito da Twilio http://twimlets.com/message per restituire la risposta.The example in How to: Make an outgoing call uses the Twilio-provided URL http://twimlets.com/message to return the response.

Nota

Poiché TwiML è progettato per essere utilizzato 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 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 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. Il sito può essere creato in un linguaggio qualsiasi purché restituisca risposte HTTP.You can create the site in any language that returns HTTP responses. In questo argomento si presuppone che l'URL verrà ospitato da un gestore generico ASP.NET.This topic assumes you'll be hosting the URL from an ASP.NET generic handler.

Il gestore ASP.NET seguente crea una risposta TwiML che pronuncia Hello World nella chiamata.The following ASP.NET Handler crafts a TwiML response that says Hello World on the call.

using System.Text;
using System.Web;

namespace WebRole1
{
    /// <summary>
    /// Summary description for Handler1
    /// </summary>
    public class Handler1 : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            const string twiMLResponse =
                "<Response><Say>Hello World.</Say></Response>";

            context.Response.Clear();
            context.Response.ContentType = "text/xml";
            context.Response.ContentEncoding = Encoding.UTF8;
            context.Response.Write(twiMLResponse);
            context.Response.End();
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

Come si evince dal codice riportato sopra, la risposta TwiML è semplicemente un documento XML.As you can see from the example above, the TwiML response is simply an XML document. La libreria Twilio.TwiML contiene le classi che consentono di generare automaticamente le istruzioni TwiML.The Twilio.TwiML library contains classes that will generate TwiML for you. Nell'esempio seguente viene creata la stessa risposta descritta sopra, ma usando la classe VoiceResponse.The example below produces the equivalent response as shown above, but uses the VoiceResponse class.

using System.Web;
using Twilio.TwiML;

namespace WebRole1
{
    /// <summary>
    /// Summary description for Handler1
    /// </summary>
    public class Handler1 : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            var twiml = new VoiceResponse();
            twiml.Say("Hello World.");

            context.Response.Clear();
            context.Response.ContentType = "text/xml";
            context.Response.Write(twiml.ToString());
            context.Response.End();
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

Per ulteriori informazioni su TwiML, vedere https://www.twilio.com/docs/api/twiml.For more information about TwiML, see https://www.twilio.com/docs/api/twiml.

Dopo avere configurato un modo per fornire risposte TwiML, è possibile passare l'URL nel metodo CallResource.Create .Once you have set up a way to provide TwiML responses, you can pass that URL to the CallResource.Create method. Se, ad esempio, si dispone di un'applicazione Web denominata MyTwiML distribuita in un servizio cloud di Azure e il nome del gestore ASP.NET è mytwiml.ashx, è possibile passare l'URL a CallResource.Create come illustrato nell'esempio di codice seguente:For example, if you have a web application named MyTwiML deployed to an Azure cloud service, and the name of your ASP.NET Handler is mytwiml.ashx, the URL can be passed to CallResource.Create as shown in the following code sample:

// This sample uses the sandbox number provided by Twilio to make the call.
// Place the call.
var call = CallResource.Create(
    to: new PhoneNumber("+NNNNNNNNNN"),
    from: new PhoneNumber("NNNNNNNNNN"),
    url: new Uri("http://<your_hosted_service>.cloudapp.net/MyTwiML/mytwiml.ashx"));
    }

Per altre informazioni sull'utilizzo di Twilio in Azure con ASP.NET, vedere Come effettuare una chiamata tramite Twilio in un ruolo Web in Azure.For additional information about using Twilio on Azure with ASP.NET, see How to make a phone call using Twilio in a web role 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: