Como usar o Twilio para funcionalidades de voz e SMS do AzureHow to use Twilio for voice and SMS capabilities from Azure

Este guia demonstra como executar tarefas comuns de programação com o serviço de API do Twilio no Azure.This guide demonstrates how to perform common programming tasks with the Twilio API service on Azure. Os cenários abrangidos incluem fazer uma chamada telefônica e enviar uma mensagem serviço de mensagem curta (SMS).The scenarios covered include making a phone call and sending a Short Message Service (SMS) message. Para obter mais informações sobre o Twilio e o uso de voz e SMS em seus aplicativos, consulte a seção Próximas etapas .For more information on Twilio and using voice and SMS in your applications, see the Next steps section.

O que é Twilio?What is Twilio?

Twilio é alimentar o futuro das comunicações de negócios, que permite aos desenvolvedores incorporar voz, VoIP e mensagens em aplicativos.Twilio is powering the future of business communications, enabling developers to embed voice, VoIP, and messaging into applications. Eles virtualizam toda a infra-estrutura necessária em um ambiente baseado em nuvem, global, expondo-as por meio da plataforma de comunicações API Twilio.They virtualize all infrastructure needed in a cloud-based, global environment, exposing it through the Twilio communications API platform. Os aplicativos são simples de criar e dimensionável.Applications are simple to build and scalable. Aproveite a flexibilidade com preço pré-pago e se beneficie da confiabilidade da nuvem.Enjoy flexibility with pay-as-you-go pricing, and benefit from cloud reliability.

Twilio Voice permite que seus aplicativos façam e recebam chamadas telefônicas.Twilio Voice allows your applications to make and receive phone calls. Twilio SMS permite que seus aplicativos enviem e recebam mensagens SMS.Twilio SMS enables your applications to send and receive SMS messages. Cliente de Twilio permite que você faça chamadas VoIP de qualquer telefone, tablet ou navegador e oferece suporte a WebRTC.Twilio Client allows you to make VoIP calls from any phone, tablet, or browser and supports WebRTC.

Preços e ofertas especiais da TwilioTwilio Pricing and Special Offers

Os clientes do Azure recebem uma oferta especial: US$ 10 de cortesia de crédito da Twilio quando atualizam a sua conta da Twilio.Azure customers receive a special offer: complimentary $10 of Twilio Credit when you upgrade your Twilio Account. Esse crédito de Twilio pode ser aplicado a qualquer uso de Twilio (equivalente a até 1.000 mensagens SMS de envio ou recebimento de até 1000 minutos de voz entrados, dependendo da localização do seu destino de chamada e mensagem ou número de telefone de crédito de US $10).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). Resgate este crédito de twilio e comece a usar o twilio.com/Azure.Redeem this Twilio credit and get started at twilio.com/azure.

Twilio é um serviço flexível.Twilio is a pay-as-you-go service. Não há nenhuma taxa de configuração e você pode fechar sua conta a qualquer momento.There are no set-up fees, and you can close your account at any time. Você pode encontrar mais detalhes em Preços da Twilio.You can find more details at Twilio Pricing.

ConceitosConcepts

A API do Twilio é uma API RESTful que fornece os recursos de voz e SMS para aplicativos.The Twilio API is a RESTful API that provides voice and SMS functionality for applications. As bibliotecas de cliente estão disponíveis em vários idiomas; para obter uma lista, consulte bibliotecas de API do twilio.Client libraries are available in multiple languages; for a list, see Twilio API Libraries.

Principais aspectos da API do Twilio são Twilio verbos e linguagem de marcação de Twilio (TwiML).Key aspects of the Twilio API are Twilio verbs and Twilio Markup Language (TwiML).

Verbos da TwilioTwilio verbs

A API usa os verbos do Twilio; por exemplo, o verbo <Say> instrui o Twilio a fornecer de forma audível uma mensagem em uma chamada.The API makes use of Twilio verbs; for example, the <Say> verb instructs Twilio to audibly deliver a message on a call.

A seguir está uma lista de verbos do Twilio.The following is a list of Twilio verbs. Saiba mais sobre os outros verbos e recursos na Documentação da linguagem de marcação da Twilio.Learn about the other verbs and capabilities via Twilio Markup Language documentation.

  • <Dial>: Conecta o chamador a outro telefone.<Dial>: Connects the caller to another phone.
  • <Gather>: Coleta os dígitos numéricos inseridos no teclado do telefone.<Gather>: Collects numeric digits entered on the telephone keypad.
  • <Hangup>: Encerra uma chamada.<Hangup>: Ends a call.
  • <Play>: Reproduz um arquivo de áudio.<Play>: Plays an audio file.
  • <Pause>: Espera silenciosamente por um número especificado de segundos.<Pause>: Waits silently for a specified number of seconds.
  • <Record>: Grava a voz do chamador e retorna uma URL de um arquivo que contém a gravação.<Record>: Records the caller's voice and returns an URL of a file that contains the recording.
  • <Redirect>: Transfere o controle de uma chamada ou SMS para o TwiML em uma URL diferente.<Redirect>: Transfers control of a call or SMS to the TwiML at a different URL.
  • <Reject>: Rejeita uma chamada recebida para o número do Twilio sem cobrança<Reject>: Rejects an incoming call to your Twilio number without billing you
  • <Say>: Faz conversão de texto em fala realizada em uma chamada.<Say>: Converts text to speech that is made on a call.
  • <Sms>: Envia uma mensagem SMS.<Sms>: Sends an SMS message.

TwiMLTwiML

TwiML é um conjunto de instruções em XML com base nos verbos do Twilio que informam o Twilio como processar uma chamada ou 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.

Por exemplo, o seguinte TwiML converteria a mensagem Olá, mundo em fala.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 o aplicativo chama a API Twilio, um dos parâmetros a API é a URL que retorna a resposta TwiML.When your application calls the Twilio API, one of the API parameters is the URL that returns the TwiML response. Para fins de desenvolvimento, você pode usar URLs fornecidos Twilio para fornecer as respostas de TwiML usadas por seus aplicativos.For development purposes, you can use Twilio-provided URLs to provide the TwiML responses used by your applications. Você também pode hospedar seus próprio URLs para produzir as respostas TwiML e outra opção é usar o TwiMLResponse objeto.You could also host your own URLs to produce the TwiML responses, and another option is to use the TwiMLResponse object.

Para obter mais informações sobre verbos twilio, seus atributos e TwiML, consulte TwiML.For more information about Twilio verbs, their attributes, and TwiML, see TwiML. Para obter informações adicionais sobre a API do twilio, consulte API do twilio.For additional information about the Twilio API, see Twilio API.

Criar uma conta na TwilioCreate a Twilio Account

Quando estiver pronto para obter uma conta do twilio, Inscreva-se em experimentar o twilio.When you're ready to get a Twilio account, sign up at Try Twilio. Você pode começar com uma conta gratuita e atualizá-la depois.You can start with a free account, and upgrade your account later.

Quando você se inscrever para uma conta de Twilio, você receberá uma ID de conta e um token de autenticação.When you sign up for a Twilio account, you'll receive an account ID and an authentication token. Eles serão necessários para fazer chamadas de API do Twilio.Both will be needed to make Twilio API calls. Para evitar o acesso não autorizado em sua conta, mantenha o token da autenticação seguro.To prevent unauthorized access to your account, keep your authentication token secure. A ID da conta e o token de autenticação são visíveis na página da conta do twilio, nos campos ROTULAdos SID da conta e token de autenticação, respectivamente.Your account ID and authentication token are viewable at the Twilio account page, in the fields labeled ACCOUNT SID and AUTH TOKEN, respectively.

Criar um aplicativo AzureCreate an Azure Application

Um aplicativo do Azure que hospeda um aplicativo Twilio habilitado não é diferente de qualquer outro aplicativo do Azure.An Azure application that hosts a Twilio enabled application is no different from any other Azure application. Adicione a biblioteca .NET do Twilio e configure a função para usar as bibliotecas .NET do Twilio.You add the Twilio .NET library and configure the role to use the Twilio .NET libraries. Para obter informações sobre como criar um projeto inicial do Azure, consulte criando um projeto do Azure com o Visual Studio.For information on creating an initial Azure project, see Creating an Azure project with Visual Studio.

Configurar seu aplicativo para usar as bibliotecas do TwilioConfigure Your Application to use Twilio Libraries

Twilio fornece um conjunto de bibliotecas do .NET auxiliar que encapsular vários aspectos de Twilio para fornecer maneiras simples e fáceis de interagir com o API REST de Twilio e Twilio cliente para gerar respostas de 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 fornece cinco bibliotecas para desenvolvedores .NET:Twilio provides five libraries for .NET developers:

BibliotecaLibrary DescriçãoDescription
Twilio.APITwilio.API A biblioteca de Twilio de núcleo que encapsula a API REST Twilio em uma biblioteca .NET amigável.The core Twilio library that wraps the Twilio REST API in a friendly .NET library. Essa biblioteca está disponível para o .NET, Silverlight e Windows Phone 7.This library is available for .NET, Silverlight, and Windows Phone 7.
Twilio.TwiMLTwilio.TwiML Fornece uma maneira amigável do .NET para gerar marcação de TwiML.Provides a .NET friendly way to generate TwiML markup.
Twilio.MVCTwilio.MVC Para os desenvolvedores que usam o ASP.NET MVC, esta biblioteca inclui um TwilioController, o TwiML ActionResult e o atributo de validação de solicitação.For developers using ASP.NET MVC, this library includes a TwilioController, TwiML ActionResult, and request validation attribute.
Twilio.WebMatrixTwilio.WebMatrix Para os desenvolvedores usando a ferramenta de desenvolvimento do WebMatrix gratuita da Microsoft, esta biblioteca contém auxiliares de sintaxe do Razor para várias ações de 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 Contém o gerador de token de capacidade para uso com o SDK do Twilio cliente JavaScript.Contains the Capability token generator for use with the Twilio Client JavaScript SDK.

Importante

Todas as bibliotecas exigem o .NET 3.5, o Silverlight 4 ou o Windows Phone 7 ou posterior.All libraries require .NET 3.5, Silverlight 4, or Windows Phone 7 or later.

Os exemplos fornecidos neste guia usam a biblioteca Twilio.API.The samples provided in this guide use the Twilio.API library.

As bibliotecas podem ser instaladas usando a extensão do gerenciador de pacotes NuGet disponíveis para o Visual Studio 2010 a 2015.The libraries can be installed using the NuGet package manager extension available for Visual Studio 2010 up to 2015. O código-fonte é hospedado no GitHub, que inclui um wiki que contém a documentação completa para usar as bibliotecas.The source code is hosted on GitHub, which includes a Wiki that contains complete documentation for using the libraries.

Por padrão, o Microsoft Visual Studio 2010 instala a versão 1.2 do NuGet.By default, Microsoft Visual Studio 2010 installs version 1.2 of NuGet. As bibliotecas de Twilio a instalação requer a versão 1.6 do NuGet ou superior.Installing the Twilio libraries requires version 1.6 of NuGet or higher. Para obter informações sobre como instalar ou atualizar o https://nuget.org/NuGet, consulte.For information on installing or updating NuGet, see https://nuget.org/.

Observação

Para instalar a versão mais recente do NuGet, primeiro desinstale a versão carregada usando o Gerenciador de extensões do Visual Studio.To install the latest version of NuGet, you must first uninstall the loaded version using the Visual Studio Extension Manager. Para fazer isso, você deve executar o Visual Studio como administrador.To do so, you must run Visual Studio as administrator. Caso contrário, o botão Desinstalar é desabilitado.Otherwise, the Uninstall button is disabled.

Para adicionar as bibliotecas Twilio ao seu projeto do Visual Studio:To add the Twilio libraries to your Visual Studio project:

  1. Abra sua solução no Visual Studio.Open your solution in Visual Studio.
  2. Clique com o botão direito do mouse em Referências.Right-click References.
  3. Clique em Gerenciar Pacotes NuGet...Click Manage NuGet Packages...
  4. Clique em Online.Click Online.
  5. Na caixa Pesquisar Online, digite tiwlio.In the search online box, type twilio.
  6. Clique em Instalar no pacote Twilio.Click Install on the Twilio package.

Como: Como fazer uma chamada de saídaHow to: Make an outgoing call

A seguir é demonstrado como fazer uma chamada externa usando a classe CallResource.The following shows how to make an outgoing call using the CallResource class. Esse código também usa um site fornecido pelo Twilio para retornar a resposta TwiML (Linguagem de Marcação do Twilio).This code also uses a Twilio-provided site to return the Twilio Markup Language (TwiML) response. Substitua os valores dos números telefônicos para e de e certifique-se de verificar o número telefônico de da sua conta do Twilio antes de executar o código.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 = "https://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));
    }

Para obter mais informações sobre os parâmetros passados para o método CallResource. Create , consulte https://www.twilio.com/docs/api/rest/making-calls.For more information about the parameters passed in to the CallResource.Create method, see https://www.twilio.com/docs/api/rest/making-calls.

Como mencionado, esse código utiliza um site fornecido pelo Twilio para retornar a resposta de TwiML.As mentioned, this code uses a Twilio-provided site to return the TwiML response. Em vez disso, você pode usar seu próprio site para fornecer a resposta TwiML.You could instead use your own site to provide the TwiML response. Para obter mais informações, consulte Como: Fornecer respostas TwiML de seu próprio site.For more information, see How to: Provide TwiML responses from your own website.

Como: Enviar uma mensagem SMSHow to: Send an SMS message

A seguinte captura de tela mostra como enviar uma mensagem de SMS usando a classe MessageResource.The following screenshot shows how to send an SMS message using the MessageResource class. O número de é fornecido pelo Twilio para contas de avaliação para envio de mensagens SMS.The from number is provided by Twilio for trial accounts to send SMS messages. O número para deve ser verificado para sua conta de Twilio antes de você executar o código.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);
}

Como: Fornecer respostas TwiML de seu próprio siteHow to: Provide TwiML Responses from your own website

Quando o aplicativo iniciar uma chamada para a API do Twilio, por exemplo, por meio do método CallResource.Create, o Twilio enviará a solicitação para uma URL que deverá retornar uma resposta em 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. O exemplo em Como: Fazer uma chamada de saída usa a URL https://twimlets.com/message fornecida pelo twilio para retornar a resposta.The example in How to: Make an outgoing call uses the Twilio-provided URL https://twimlets.com/message to return the response.

Observação

Enquanto TwiML destina-se ao uso pelos serviços Web, é possível exibir o TwiML no seu navegador.While TwiML is designed for use by web services, you can view the TwiML in your browser. Por exemplo, clique https://twimlets.com/message para ver um elemento <Response> vazio; como outro exemplo, clique https://twimlets.com/message?Message%5B0%5D=Hello%20World para ver um <Response> elemento que contém um < elemento> de digamos.For example, click https://twimlets.com/message to see an empty <Response> element; as another example, click https://twimlets.com/message?Message%5B0%5D=Hello%20World to see a <Response> element that contains a <Say> element.

Em vez de contar com a URL fornecida pela Twilio, você pode criar seu próprio site URL que retorna respostas HTTP.Instead of relying on the Twilio-provided URL, you can create your own URL site that returns HTTP responses. Você pode criar o site em qualquer linguagem que retorna respostas HTTP.You can create the site in any language that returns HTTP responses. Este tópico pressupõe que você irá hospedando a URL de um manipulador genérico do ASP.NET.This topic assumes you'll be hosting the URL from an ASP.NET generic handler.

O seguinte manipulador de ASP.NET monta uma resposta de TwiML, diz Hello World na chamada.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;
            }
        }
    }
}

Como você pode ver no exemplo acima, a resposta de TwiML é simplesmente um documento XML.As you can see from the example above, the TwiML response is simply an XML document. A biblioteca do Twilio.TwiML contém classes que irão gerar TwiML para você.The Twilio.TwiML library contains classes that will generate TwiML for you. O exemplo a seguir produz a resposta equivalente como mostrado acima, mas usa a 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;
            }
        }
    }
}

Para obter mais informações sobre TwiML, consulte https://www.twilio.com/docs/api/twiml.For more information about TwiML, see https://www.twilio.com/docs/api/twiml.

Depois que você configurar uma forma de fornecer respostas TwiML, você poderá passar essa URL para o método CallResource.Create.Once you have set up a way to provide TwiML responses, you can pass that URL to the CallResource.Create method. Por exemplo, se você tiver um aplicativo Web chamado MyTwiML implantado em um serviço de nuvem do Azure e o nome de seu manipulador ASP.NET for mytwiml.ashx, a URL poderá ser passada para CallResource.Create conforme mostrado no exemplo de código a seguir: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"));
    }

Para obter informações adicionais sobre como usar o twilio no Azure com ASP.NET, consulte como fazer uma chamada telefônica usando o twilio em uma função Web no 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.

Como: Usar serviços adicionais do TwilioHow to: Use additional Twilio services

Além dos exemplos mostrados aqui, o Twilio oferece APIs baseadas na Web que podem ser usadas para aproveitar a funcionalidade adicional do Twilio do aplicativo 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. Para obter detalhes completos, consulte a Documentação da API do Twilio.For full details, see the Twilio API documentation.

Próximas etapasNext steps

Agora que você já conhece os princípios do serviço Twilio, acesse estes links para saber mais:Now that you've learned the basics of the Twilio service, follow these links to learn more: