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

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 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 messaggi di testo.Twilio SMS enables your application to send and receive text 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 ricevono un'offerta speciale: $ 10 di credito Twilio quando si esegue l'aggiornamento dell'account Twilio.Azure customers receive a special offer $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). Riscattare il credito Twilio e iniziare a usare il servizio.Redeem this Twilio credit and get started.

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 Twilio Pricing (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 al linguaggio di markup Twilio.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.
  • <Pause>: attende in modo silenzioso per un numero di secondi specificato.<Pause>: Waits silently for a specified number of seconds.
  • <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.
  • <Record>: registra la voce del chiamante e restituisce l'URL del file contenente la registrazione.<Record>: Records the voice of the caller 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 generare le risposte TwiML. In alternativa, usare 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 relativa alla registrazione gratuita di Twilio.When you are 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 riceveranno il SID account e un token di autenticazione.When you sign up for a Twilio account, you receive an account SID 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. Il SID dell'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 SID and authentication token are viewable in the Twilio Console, in the fields labeled ACCOUNT SID and AUTH TOKEN, respectively.

Creare un'applicazione PythonCreate a Python Application

Un'applicazione Python che usa il servizio Twilio e viene eseguita in Azure non è diversa da qualsiasi altra applicazione Python che usa il servizio Twilio.A Python application that uses the Twilio service and is running in Azure is no different than any other Python application that uses the Twilio service. Benché i servizi Twilio siano basati su REST e possano essere chiamati da Python in diversi modi, questo articolo illustra solo come usare i servizi Twilio con la libreria Twilio per Python da GitHub.While Twilio services are REST-based and can be called from Python in several ways, this article will focus on how to use Twilio services with Twilio library for Python from GitHub. Per altre informazioni sull'uso della libreria Twilio per Python, vedere http://readthedocs.org/docs/twilio-python/en/latest/index.html.For more information about using the Twilio library for Python, see http://readthedocs.org/docs/twilio-python/en/latest/index.html.

In primo luogo, [configurare una nuova macchina virtuale Linux in Azure][azure_vm_setup] che funga da host per la nuova applicazione Web Python.First, [set-up a new Azure Linux VM][azure_vm_setup] to act as a host for your new Python web application. Quando la macchina virtuale è in esecuzione, è necessario esporla su una porta pubblica, come descritto di seguito.Once the Virtual Machine is running, you will need to expose your application on a public port as described below.

Aggiungere una regola in ingressoAdd An Incoming Rule

  1. Passare alla pagina [Gruppo di sicurezza di rete][azure_nsg].Go to the [Network Security Group][azure_nsg] page.
  2. Selezionare il gruppo di sicurezza di rete corrispondente alla macchina virtuale.Select the Network Security Group that corresponds with your Virtual Machine.
  3. Aggiungere una Regola in uscita per la porta 80.Add and Outgoing Rule for port 80. Verificare di consentire l'ingresso da qualsiasi indirizzo.Be sure to allow incoming from any address.

Impostare l'etichetta del nome DNSSet the DNS Name Label

  1. Passare alla pagina [Indirizzi IP pubblici][azure_ips].Go to the [The Public IP Adresses][azure_ips] page.
  2. Selezionare l'indirizzo IP corrispondente alla macchina virtuale.Select the Public IP that correspends with your Virtual Machine.
  3. Impostare Etichetta del nome DNS nella sezione Configurazione.Set the DNS Name Label in the Configuration section. Nel caso di questo esempio, verrà visualizzata una dicitura simile a etichetta-dominio.centralus.cloudapp.azure.com.In the case of this example it will look something like this your-domain-label.centralus.cloudapp.azure.com

Quando si è in grado di connettersi alla macchina virtuale tramite SSH, è possibile installare il framework Web scelto. In Python i due framework più noti sono Flask e Django.Once you are able to connect through SSH to the Virtual Machine you can install the Web Framework of your choice (the two most well known in Python being Flask and Django). Per installarne uno è sufficiente eseguire il comando pip install.You can install either of them just by running the pip install command.

Tenere presente che la macchina virtuale è stata configurata per consentire il traffico solo sulla porta 80.Keep in mind that we configured the Virtual Machine to allow traffic only on port 80. Di conseguenza, verificare di configurare l'applicazione per l'uso di questa porta.So make sure to configure the application to use this port.

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

È possibile configurare l'applicazione per l'uso della libreria Twilio per Python in due modi:You can configure your application to use the Twilio library for Python in two ways:

  • Installare la libreria Twilio per Python come pacchetto Pip.Install the Twilio library for Python as a Pip package. È possibile eseguire l'installazione tramite i comandi seguenti:It can be installed with the following commands:

      $ pip install twilio
    

    -OPPURE--OR-

  • Scaricare la libreria Twilio per Python da GitHub (https://github.com/twilio/twilio-python) e installarla nel modo seguente:Download the Twilio library for Python from GitHub (https://github.com/twilio/twilio-python) and install it like this:

      $ python setup.py install
    

Dopo avere installato la libreria Twilio per Python, è possibile usare il comando import per importarla nei file Python:Once you have installed the Twilio library for Python, you can then import it in your Python files:

    import twilio

Per altre informazioni, vedere https://github.com/twilio/twilio-python/blob/master/README.md.For more information, see https://github.com/twilio/twilio-python/blob/master/README.md.

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

Di seguito è illustrato come effettuare una chiamata in uscita.The following shows how to make an outgoing call. 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_number and to_number phone numbers, and ensure that you've verified the from_number phone number for your Twilio account before running the code.

from urllib.parse import urlencode

# Import the Twilio Python Client.
from twilio.rest import TwilioRestClient

# Set your account ID and authentication token.
account_sid = "your_twilio_account_sid"
auth_token = "your_twilio_authentication_token"

# The number of the phone initiating the the call.
# This should either be a Twilio number or a number that you've verified
from_number = "NNNNNNNNNNN"

# The number of the phone receiving call.
to_number = "NNNNNNNNNNN"

# Use the Twilio-provided site for the TwiML response.
url = "http://twimlets.com/message?"

# The phone message text.
message = "Hello world."

# Initialize the Twilio client.
client = TwilioRestClient(account_sid, auth_token)

# Make the call.
call = client.calls.create(to=to_number,
                           from_=from_number,
                           url=url + urlencode({'Message': message}))
print(call.sid)

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 Come fornire risposte TwiML dal proprio sito Web.You could instead use your own site to provide the TwiML response; for more information, see How to Provide TwiML Responses from Your Own Web Site.

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

La schermata seguente mostra come inviare un messaggio SMS tramite la classe TwilioRestClient.The following shows how to send an SMS message using the TwilioRestClient class. Il numero riportato in from_number per l'invio di messaggi SMS con gli account di valutazione è fornito da Twilio.The from_number number 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 di eseguire il codice.The to_number number must be verified for your Twilio account before running the code.

# Import the Twilio Python Client.
from twilio.rest import TwilioRestClient

# Set your account ID and authentication token.
account_sid = "your_twilio_account_sid"
auth_token = "your_twilio_authentication_token"

from_number = "NNNNNNNNNNN"  # With trial account, texts can only be sent from your Twilio number.
to_number = "NNNNNNNNNNN"
message = "Hello world."

# Initialize the Twilio client.
client = TwilioRestClient(account_sid, auth_token)

# Send the SMS message.
message = client.messages.create(to=to_number,
                                 from_=from_number,
                                 body=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, Twilio invia la richiesta a un URL che deve restituire una risposta TwiML.When your application initiates a call to the Twilio API, 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 è stato progettato per essere usato da Twilio, è possibile visualizzarlo nel browser.(While TwiML is designed for use by Twilio, you can view it 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 personalizzato che restituisce risposte HTTP.Instead of relying on the Twilio-provided URL, you can create your own site that returns HTTP responses. È possibile creare il sito in qualsiasi linguaggio che restituisca risposte XML. In questo argomento si presuppone che per la creazione di TwiML venga usato Python.You can create the site in any language that returns XML responses; this topic assumes you will be using Python to create the TwiML.

Negli esempi seguenti viene generata una risposta TwiML Hello World nella chiamata.The following examples will output a TwiML response that says Hello World on the call.

Con Flask:With Flask:

from flask import Response
@app.route("/")
def hello():
    xml = '<Response><Say>Hello world.</Say></Response>'
    return Response(xml, mimetype='text/xml')

Con Django:With Django:

from django.http import HttpResponse
def hello(request):
    xml = '<Response><Say>Hello world.</Say></Response>'
    return HttpResponse(xml, content_type='text/xml')

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 per Python contiene le classi che consentono di generare automaticamente le istruzioni TwiML.The Twilio library for Python contains classes that will generate TwiML for you. Nell'esempio seguente viene generata la stessa risposta descritta sopra, ma usando il modulo twiml nella libreria Twilio per Python:The example below produces the equivalent response as shown above, but uses the twiml module in the Twilio library for Python:

from twilio import twiml

response = twiml.Response()
response.say("Hello world.")
print(str(response))

Per altre 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 aver configurato l'applicazione Python in modo da fornire risposte TwiML, usare l'URL di tale applicazione come URL trasmesso nel metodo client.calls.create.Once you have your Python application set up to provide TwiML responses, use the URL of the application as the URL passed into the client.calls.create method. Se, ad esempio, si dispone di un'applicazione Web denominata MyTwiML distribuita in un servizio ospitato in Azure, è possibile usare il relativo URL come webhook, come mostrato nell'esempio seguente:For example, if you have a Web application named MyTwiML deployed to an Azure hosted service, you can use its url as webhook as shown in the following example:

from twilio.rest import TwilioRestClient

account_sid = "your_twilio_account_sid"
auth_token = "your_twilio_authentication_token"
from_number = "NNNNNNNNNNN"
to_number = "NNNNNNNNNNN"
url = "http://your-domain-label.centralus.cloudapp.azure.com/MyTwiML/"

# Initialize the Twilio client.
client = TwilioRestClient(account_sid, auth_token)

# Make the call.
call = client.calls.create(to=to_number,
                           from_=from_number,
                           url=url)
print(call.sid)

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

A questo punto, dopo aver appreso le nozioni di base del servizio Twilio, usare i collegamenti seguenti per altre informazioni:Now that you have learned the basics of the Twilio service, follow these links to learn more: