Associazione di Twilio per Funzioni di AzureTwilio binding for Azure Functions

In questo articolo viene illustrato come inviare messaggi di testo tramite associazioni di Twilio in Funzioni di Azure.This article explains how to send text messages by using Twilio bindings in Azure Functions. Funzioni di Azure supporta associazioni di output per Twilio.Azure Functions supports output bindings for Twilio.

Informazioni di riferimento per gli sviluppatori delle Funzioni di Azure.This is reference information for Azure Functions developers. Se non si ha familiarità con le Funzioni di Azure, iniziare con le seguenti risorse:If you're new to Azure Functions, start with the following resources:

EsempioExample

Vedere l'esempio specifico per ciascun linguaggio:See the language-specific example:

Esempio in C#C# example

L'esempio seguente mostra una funzione in C# precompilato che invia un messaggio di testo quando viene attivata da un messaggio in coda.The following example shows a precompiled C# function that sends a text message when triggered by a queue message.

[FunctionName("QueueTwilio")]
[return: TwilioSms(AccountSidSetting = "TwilioAccountSid", AuthTokenSetting = "TwilioAuthToken", From = "+1425XXXXXXX" )]
public static SMSMessage Run(
    [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] JObject order,
    TraceWriter log)
{
    log.Info($"C# Queue trigger function processed: {order}");

    var message = new SMSMessage()
    {
        Body = $"Hello {order["name"]}, thanks for your order!",
        To = order["mobileNumber"].ToString()
    };

    return message;
}

Questo esempio usa l'attributo TwilioSms con valore restituito del metodo.This example uses the TwilioSms attribute with the method return value. In alternativa è possibile usare l'attributo con un parametro out SMSMessage o un parametro ICollector<SMSMessage> o IAsyncCollector<SMSMessage>.An alternative is to use the attribute with an out SMSMessage parameter or an ICollector<SMSMessage> or IAsyncCollector<SMSMessage> parameter.

Esempio di script C#C# script example

L'esempio seguente mostra un'associazione di output di Twilio in un file function.json e una funzione script C# che usa l'associazione.The following example shows a Twilio output binding in a function.json file and a C# script function that uses the binding. La funzione usa un parametro out per inviare un messaggio di testo.The function uses an out parameter to send a text message.

Ecco i dati di associazione nel file function.json:Here's binding data in the function.json file:

Function.json di esempio:Example function.json:

{
  "type": "twilioSms",
  "name": "message",
  "accountSid": "TwilioAccountSid",
  "authToken": "TwilioAuthToken",
  "to": "+1704XXXXXXX",
  "from": "+1425XXXXXXX",
  "direction": "out",
  "body": "Azure Functions Testing"
}

Ecco il codice script C#:Here's C# script code:

#r "Newtonsoft.Json"
#r "Twilio.Api"

using System;
using Newtonsoft.Json;
using Twilio;

public static void Run(string myQueueItem, out SMSMessage message,  TraceWriter log)
{
    log.Info($"C# Queue trigger function processed: {myQueueItem}");

    // In this example the queue item is a JSON string representing an order that contains the name of a 
    // customer and a mobile number to send text updates to.
    dynamic order = JsonConvert.DeserializeObject(myQueueItem);
    string msg = "Hello " + order.name + ", thank you for your order.";

    // Even if you want to use a hard coded message and number in the binding, you must at least 
    // initialize the SMSMessage variable.
    message = new SMSMessage();

    // A dynamic message can be set instead of the body in the output binding. In this example, we use 
    // the order information to personalize a text message to the mobile number provided for
    // order status updates.
    message.Body = msg;
    message.To = order.mobileNumber;
}

Non è possibile usare parametri out nel codice asincrono.You can't use out parameters in asynchronous code. Ecco un esempio di codice script C# asincrono:Here's an asynchronous C# script code example:

#r "Newtonsoft.Json"
#r "Twilio.Api"

using System;
using Newtonsoft.Json;
using Twilio;

public static async Task Run(string myQueueItem, IAsyncCollector<SMSMessage> message,  TraceWriter log)
{
    log.Info($"C# Queue trigger function processed: {myQueueItem}");

    // In this example the queue item is a JSON string representing an order that contains the name of a 
    // customer and a mobile number to send text updates to.
    dynamic order = JsonConvert.DeserializeObject(myQueueItem);
    string msg = "Hello " + order.name + ", thank you for your order.";

    // Even if you want to use a hard coded message and number in the binding, you must at least 
    // initialize the SMSMessage variable.
    SMSMessage smsText = new SMSMessage();

    // A dynamic message can be set instead of the body in the output binding. In this example, we use 
    // the order information to personalize a text message to the mobile number provided for
    // order status updates.
    smsText.Body = msg;
    smsText.To = order.mobileNumber;

    await message.AddAsync(smsText);
}

Esempio JavaScriptJavaScript example

L'esempio seguente illustra un'associazione di output di Twilio in un file function.json e una funzione JavaScript che usa l'associazione.The following example shows a Twilio output binding in a function.json file and a JavaScript function that uses the binding.

Ecco i dati di associazione nel file function.json:Here's binding data in the function.json file:

Function.json di esempio:Example function.json:

{
  "type": "twilioSms",
  "name": "message",
  "accountSid": "TwilioAccountSid",
  "authToken": "TwilioAuthToken",
  "to": "+1704XXXXXXX",
  "from": "+1425XXXXXXX",
  "direction": "out",
  "body": "Azure Functions Testing"
}

Ecco il codice JavaScript:Here's the JavaScript code:

module.exports = function (context, myQueueItem) {
    context.log('Node.js queue trigger function processed work item', myQueueItem);

    // In this example the queue item is a JSON string representing an order that contains the name of a 
    // customer and a mobile number to send text updates to.
    var msg = "Hello " + myQueueItem.name + ", thank you for your order.";

    // Even if you want to use a hard coded message and number in the binding, you must at least 
    // initialize the message binding.
    context.bindings.message = {};

    // A dynamic message can be set instead of the body in the output binding. In this example, we use 
    // the order information to personalize a text message to the mobile number provided for
    // order status updates.
    context.bindings.message = {
        body : msg,
        to : myQueueItem.mobileNumber
    };

    context.done();
};

AttributiAttributes

Per funzioni in C# precompilato usare l'attributo TwilioSms, definito nel pacchetto NuGet Microsoft.Azure.WebJobs.Extensions.Twilio.For precompiled C# functions, use the TwilioSms attribute, which is defined in NuGet package Microsoft.Azure.WebJobs.Extensions.Twilio.

Per informazioni sulle proprietà degli attributi che è possibile configurare, vedere la sezione Configurazione.For information about attribute properties that you can configure, see Configuration. Di seguito è riportato un esempio dell'attributo TwilioSms in una firma del metodo:Here's a TwilioSms attribute example in a method signature:

[FunctionName("QueueTwilio")]
[return: TwilioSms(
    AccountSidSetting = "TwilioAccountSid", 
    AuthTokenSetting = "TwilioAuthToken", 
    From = "+1425XXXXXXX" )]
public static SMSMessage Run(
    [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] JObject order,
    TraceWriter log)
{
    ...
}

Per un esempio completo, vedere Esempio in C# precompilato.For a complete example, see Precompiled C# example.

ConfigurazioneConfiguration

Nella tabella seguente sono illustrate le proprietà di configurazione dell'associazione impostate nel file function.json e nell'attributo TwilioSms.The following table explains the binding configuration properties that you set in the function.json file and the TwilioSms attribute.

Proprietà di function.jsonfunction.json property Proprietà dell'attributoAttribute property DescrizioneDescription
typetype deve essere impostato su twilioSms.must be set to twilioSms.
directiondirection deve essere impostato su out.must be set to out.
nomename Nome della variabile usato nel codice della funzione per il messaggio SMS di Twilio.Variable name used in function code for the Twilio SMS text message.
accountSidaccountSid AccountSidAccountSid Questo valore deve essere impostato sul nome di un'impostazione dell'app che contiene il SID account di Twilio.This value must be set to the name of an app setting that holds your Twilio Account Sid.
authTokenauthToken AuthTokenAuthToken Questo valore deve essere impostato sul nome di un'impostazione dell'app che contiene il token di autenticazione di Twilio.This value must be set to the name of an app setting that holds your Twilio authentication token.
toto ToTo Questo valore è impostato sul numero di telefono a cui viene inviato il messaggio SMS.This value is set to the phone number that the SMS text is sent to.
fromfrom FromFrom Questo valore è impostato sul numero di telefono da cui viene inviato il messaggio SMS.This value is set to the phone number that the SMS text is sent from.
bodybody CorpoBody Questo valore può essere usato per impostare come hardcoded il messaggio SMS se non è necessario impostarlo dinamicamente nel codice per la funzione.This value can be used to hard code the SMS text message if you don't need to set it dynamically in the code for your function.

Quando si sviluppa in locale, le impostazioni dell'app vengono inserite nel file local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Passaggi successiviNext steps