Поделиться через


Привязка Twilio для службы "Функции Azure"

В этой статье объясняется, как отправлять текстовые сообщения с помощью привязок Twilio в Функциях Azure. Служба "Функции Azure" поддерживают выходные привязки для Twilio.

Это справочные сведения для разработчиков функций Azure. Если вы новичок в функциях Azure, начните со следующих ресурсов:

Установка расширения

Устанавливаемый пакет расширения NuGet зависит от режима C#, который используется в приложении-функции:

Функции выполняются в изолированном рабочем процессе C#. Дополнительные сведения см. в руководстве по запуску Функции Azure C# в изолированном рабочем процессе.

Функциональные возможности расширения отличаются в зависимости от версии расширения:

В настоящее время нет поддержки Twilio для изолированного приложения рабочего процесса.

Установка пакета

Чтобы использовать это расширение привязки в приложении, убедитесь, что файл host.json в корне проекта содержит следующую extensionBundle ссылку:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

В этом примере значение указывает узлу version функций использовать версию пакета, которая по крайней мере [4.0.0, 5.0.0) меньше4.0.0, чем , которая включает все потенциальные версии 4.x.5.0.0 Эта нотация эффективно поддерживает ваше приложение в последней доступной дополнительной версии пакета расширений версии 4.x.

По возможности следует использовать последнюю версию пакета расширений и разрешить среде выполнения автоматически поддерживать последнюю дополнительную версию. Содержимое последнего пакета можно просмотреть на странице выпуска пакетов расширений. Дополнительные сведения см. в пакетах расширений функций Azure.

Example

Если не указано иное, эти примеры относятся к версии среды выполнения Функций 2.x и более поздним.

Вы можете создать функцию C# с помощью одного из следующих режимов C#:

  • Изолированная рабочая модель: скомпилированная функция C#, которая выполняется в рабочем процессе, изолированном от среды выполнения. Изолированный рабочий процесс необходим для поддержки функций C#, работающих в долгосрочной поддержке (LTS) и версиях, отличных от LTS для .NET и .NET Framework.
  • Модель в процессе: скомпилированная функция C#, которая выполняется в том же процессе, что и среда выполнения Функций Azure.
  • Скрипт C#: используется в основном при создании функций C# на портале Azure.

Привязка Twilio в настоящее время не поддерживается для приложения-функции, работающего в изолированном рабочем процессе.

В следующем примере показана выходная привязка Twilio в файле function.json и функция JavaScript , использующая привязку.

Данные привязки в файле function.json:

Пример файла function.json:

{
  "type": "twilioSms",
  "name": "message",
  "accountSidSetting": "TwilioAccountSid",
  "authTokenSetting": "TwilioAuthToken",
  "from": "+1425XXXXXXX",
  "direction": "out",
  "body": "Azure Functions Testing"
}

Ниже показан код JavaScript.

module.exports = async 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 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. The "To" number 
    // must be specified in code. 
    context.bindings.message = {
        body : msg,
        to : myQueueItem.mobileNumber
    };
};

Полные примеры PowerShell для привязок SendGrid в настоящее время недоступны.

В следующем примере показано, как отправить SMS-сообщение с помощью выходной привязки, как определено в следующем function.json.

    {
      "type": "twilioSms",
      "name": "twilioMessage",
      "accountSidSetting": "TwilioAccountSID",
      "authTokenSetting": "TwilioAuthToken",
      "from": "+1XXXXXXXXXX",
      "direction": "out",
      "body": "Azure Functions Testing"
    }

Вы можете передать сериализованный объект JSON в параметр func.Out, чтобы отправить текстовое сообщение.

import logging
import json
import azure.functions as func

def main(req: func.HttpRequest, twilioMessage: func.Out[str]) -> func.HttpResponse:

    message = req.params.get('message')
    to = req.params.get('to')

    value = {
      "body": message,
      "to": to
    }

    twilioMessage.set(json.dumps(value))

    return func.HttpResponse(f"Message sent")

В следующем примере показано, как использовать заметку TwilioSmsOutput для отправки SMS-сообщения. Значения для to , from и body обязательны в определении атрибута, даже если они переопределяются программным способом.

package com.function;

import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;

public class TwilioOutput {

    @FunctionName("TwilioOutput")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", methods = { HttpMethod.GET, HttpMethod.POST },
                authLevel = AuthorizationLevel.FUNCTION) HttpRequestMessage<Optional<String>> request,
            @TwilioSmsOutput(
                name = "twilioMessage",
                accountSid = "AzureWebJobsTwilioAccountSID",
                authToken = "AzureWebJobsTwilioAuthToken",
                to = "+1XXXXXXXXXX",
                body = "From Azure Functions",
                from = "+1XXXXXXXXXX") OutputBinding<String> twilioMessage,
            final ExecutionContext context) {

        String message = request.getQueryParameters().get("message");
        String to = request.getQueryParameters().get("to");

        StringBuilder builder = new StringBuilder()
            .append("{")
            .append("\"body\": \"%s\",")
            .append("\"to\": \"%s\"")
            .append("}");

        final String body = String.format(builder.toString(), message, to);

        twilioMessage.setValue(body);

        return request.createResponseBuilder(HttpStatus.OK).body("Message sent").build();
    }
}

Attributes

Библиотеки C# в процессе и изолированном рабочем процессе используют атрибуты для определения выходной привязки. Вместо этого в скрипте C# используется файл конфигурации function.json.

Привязка Twilio в настоящее время не поддерживается для приложения-функции, работающего в изолированном рабочем процессе.

Annotations

Заметка TwilioSmsOutput позволяет декларативно настроить выходную привязку Twilio, указав следующие значения конфигурации:

+

Поместите заметку TwilioSmsOutput в OutputBinding<T> параметр, где T может быть любой собственный тип Java, например int, Stringbyte[]или тип POJO.

Configuration

В следующей таблице описываются свойства конфигурации привязки, заданные в файле function.json , который отличается версией среды выполнения:

свойство function.json Description
type Нужно задать значение twilioSms.
direction Нужно задать значение out.
name Имя переменной, используемое в коде функции для текстового SMS-сообщения Twilio.
accountSidSetting Требуемое значение: имя параметра приложения, содержащего идентификатор безопасности учетной записи Twilio (TwilioAccountSid). Если имя параметра приложения не указано, по умолчанию используется AzureWebJobsTwilioAccountSid.
authTokenSetting Требуемое значение: имя параметра приложения, содержащего токен аутентификации Twilio (TwilioAccountAuthToken). Если имя параметра приложения не указано, по умолчанию используется AzureWebJobsTwilioAuthToken.
from Требуемое значение: номер телефона, с которого отправляется текст SMS-сообщения.
body Это значение можно использовать для жесткого кодирования текстового SMS-сообщения, если его не нужно задавать динамически в коде функции.

В версии 2.x значение to задается в программном коде.

При локальной разработке добавьте параметры приложения в файлlocal.settings.json в Values коллекции.

Дальнейшие шаги