Come effettuare una chiamata tramite Twilio in un ruolo Web in AzureHow to make a phone call using Twilio in a web role on Azure

In questa guida viene illustrato come usare Twilio per effettuare una chiamata da una pagina Web ospitata in Azure.This guide demonstrates how to use Twilio to make a call from a web page hosted in Azure. L'applicazione risultante chiede all'utente di eseguire una chiamata con il numero e il messaggio specificati, come illustrato nella schermata seguente.The resulting application prompts the user to make a call with the given number and message, as shown in the following screenshot.

Modulo di chiamata di Azure con Twilio e ASP.NET

PrerequisitiPrerequisites

Per usare il codice in questo argomento è necessario eseguire le operazioni seguenti:You will need to do the following to use the code in this topic:

  1. Ottenere un account Twilio e un token di autenticazione dalla console di Twilio.Acquire a Twilio account and authentication token from the Twilio Console. Per iniziare a usare Twilio, effettuare l'iscrizione alla pagina https://www.twilio.com/try-twilio.To get started with Twilio, sign up at https://www.twilio.com/try-twilio. Per informazioni sui prezzi di Twilio, visitare la pagina http://www.twilio.com/pricing.You can evaluate pricing at http://www.twilio.com/pricing. Per informazioni sull'API fornita da Twilio, vedere http://www.twilio.com/voice/api.For information about the API provided by Twilio, see http://www.twilio.com/voice/api.
  2. Aggiungere la libreria .NET di Twilio al ruolo Web.Add the Twilio .NET libary to your web role. Vedere Per aggiungere le librerie Twilio al progetto di ruolo Web più avanti in questo argomento.See To add the Twilio libraries to your web role project, later in this topic.

È necessario conoscere le modalità di creazione di un ruolo Web di base in Azure.You should be familiar with creating a basic Web Role on Azure.

Procedura: Creare un modulo Web per effettuare una chiamataHow to: Create a web form for making a call

Per aggiungere le librerie Twilio al progetto di ruolo Web:To add the Twilio libraries to your web role 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 Manage NuGet Packages.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.

Nel codice seguente viene illustrato come creare un modulo Web per recuperare i dati utente per l'esecuzione di una chiamata.The following code shows how to create a web form to retrieve user data for making a call. In questo esempio viene creato un ruolo Web ASP.NET denominato TwilioCloud .In this example, an ASP.NET Web Role named TwilioCloud is created.

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master"
    AutoEventWireup="true" CodeBehind="Default.aspx.cs"
    Inherits="WebRole1._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <div>
        <asp:BulletedList ID="varDisplay" runat="server" BulletStyle="NotSet">
        </asp:BulletedList>
    </div>
    <div>
        <p>Fill in all fields and click <b>Make this call</b>.</p>
        <div>
            To:<br /><asp:TextBox ID="toNumber" runat="server" /><br /><br />
            Message:<br /><asp:TextBox ID="message" runat="server" /><br /><br />
            <asp:Button ID="callpage" runat="server" Text="Make this call"
                onclick="callpage_Click" />
        </div>
    </div>
</asp:Content>

Procedura: Creare il codice per effettuare la chiamataHow to: Create the code to make the call

Il codice seguente, chiamato quando l'utente completa il modulo, crea il messaggio di chiamata e genera la chiamata.The following code, which is called when the user completes the form, creates the call message and generates the call. In questo esempio, il codice viene eseguito sul gestore dell'evento onclick del pulsante del modulo.In this example, the code is run in the onclick event handler of the button on the form. Nel codice seguente sostituire i valori segnaposto assegnati a accountSID e authToken con il proprio account e il token di autenticazione Twilio.(Use your Twilio account and authentication token instead of the placeholder values assigned to accountSID and authToken in the code below.)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Twilio;
using Twilio.Http;
using Twilio.Types;
using Twilio.Rest.Api.V2010;

namespace WebRole1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void callpage_Click(object sender, EventArgs e)
        {
            // Call porcessing happens here.

            // Use your account SID and authentication token instead of
            // the placeholders shown here.
            var accountSID = "ACNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN";
            var authToken =  "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN";

            // Instantiate an instance of the Twilio client.
            TwilioClient.Init(accountSID, authToken);

            // Retrieve the account, used later to retrieve the
            var account = AccountResource.Fetch(accountSID);

            this.varDisplay.Items.Clear();

            if (this.toNumber.Text == "" || this.message.Text == "")
            {
                this.varDisplay.Items.Add(
                        "You must enter a phone number and a message.");
            }
            else
            {
                // Retrieve the values entered by the user.
                var to = PhoneNumber(this.toNumber.Text);
                var from = new PhoneNumber("+14155992671");
                var myMessage = this.message.Text;

                // Create a URL using the Twilio message and the user-entered
                // text. You must replace spaces in the user's text with '%20'
                // to make the text suitable for a URL.
                var url = $"http://twimlets.com/message?Message%5B0%5D={myMessage.Replace(" ", "%20")}";
                var twimlUri = new Uri(url);

                // Display the endpoint, API version, and the URL for the message.
                this.varDisplay.Items.Add($"Using Twilio endpoint {
                }");
                this.varDisplay.Items.Add($"Twilioclient API Version is {apiVersion}");
                this.varDisplay.Items.Add($"The URL is {url}");

                // Place the call.
                var call = CallResource.create(to, from, url: twimlUri);
                this.varDisplay.Items.Add("Call status: " + call.Status);
            }
        }
    }
}

La chiamata viene effettuata e vengono visualizzati l'endpoint Twilio, la versione dell'API e lo stato della chiamata.The call is made, and the Twilio endpoint, API version, and the call status are displayed. Nella schermata seguente viene illustrato l'output di un'esecuzione di esempio.The following screenshot shows output from a sample run.

Risposta a chiamata di Azure tramite Twilio e ASP.NET

Per altre informazioni su TwiML, vedere http://www.twilio.com/docs/api/twiml.More information about TwiML can be found at http://www.twilio.com/docs/api/twiml. Per altre informazioni su <Say> e altri verbi TwiML, vedere http://www.twilio.com/docs/api/twiml/say.More information about <Say> and other Twilio verbs can be found at http://www.twilio.com/docs/api/twiml/say.

Passaggi successiviNext steps

Questo codice ha lo scopo di illustrare le funzionalità di base dell'utilizzo di Twilio in un ruolo Web ASP.NET in Azure.This code was provided to show you basic functionality using Twilio in an ASP.NET web role on Azure. Prima di eseguire la distribuzione in Azure in produzione, può essere necessario aggiungere ulteriori funzionalità per la gestione degli errori o per altri scopi.Before deploying to Azure in production, you may want to add more error handling or other features. Ad esempio:For example:

Vedere ancheSee also