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

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

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

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

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

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

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

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

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

Начиная с версии 2.x, расширение HTTP входит в пакет расширений, указанный в файле проекта host.json. Дополнительные сведения см. в разделе Пакет расширений.

Эта версия расширения уже должна быть доступна для приложения-функции после установки пакета расширений версии 2.x.

Пример

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

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

  • Изолированная рабочая модель: скомпилированная функция C#, которая выполняется в рабочем процессе, изолированном от среды выполнения. Изолированный рабочий процесс требуется для поддержки функций C#, работающих в версиях LTS и не в LTS .NET и платформа .NET Framework.
  • Внутрипроцессная модель: скомпилированная функция C#, которая выполняется в том же процессе, что и среда выполнения Функций.
  • Скрипт 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 в настоящее время недоступны.

В следующем примере показано, как отправлять текстовые сообщения с помощью выходной привязки, определенной в следующем файле 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 для отправки текстового сообщения. Значения для 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();
    }
}

Атрибуты

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

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

Заметки

Аннотация TwilioSmsOutput позволяет декларативно настроить привязку SendGrid, указав для нее следующие значения конфигурации.

+

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

Конфигурация

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

свойство function.json Описание
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.

Дальнейшие действия