Привязки SendGrid для Функций Azure

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

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

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

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

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

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

Добавьте расширение в проект, установив пакет NuGet версии 3.x.

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

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

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

Пример

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

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

В настоящее время у нас нет примера использования привязки SendGrid в приложении-функции, работающем в изолированном рабочем процессе.

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

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

{
    "bindings": [
        {
            "name": "$return",
            "type": "sendGrid",
            "direction": "out",
            "apiKey" : "MySendGridKey",
            "to": "{ToEmail}",
            "from": "{FromEmail}",
            "subject": "SendGrid output bindings"
        }
    ]
}

В разделе Конфигурация описываются эти свойства.

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

module.exports = function (context, input) {
    var message = {
        "personalizations": [ { "to": [ { "email": "sample@sample.com" } ] } ],
        from: { email: "sender@contoso.com" },
        subject: "Azure news",
        content: [{
            type: 'text/plain',
            value: input
        }]
    };

    return message;
};

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

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

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "type": "httpTrigger",
      "authLevel": "function",
      "direction": "in",
      "name": "req",
      "methods": ["get", "post"]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    },
    {
      "type": "sendGrid",
      "name": "sendGridMessage",
      "direction": "out",
      "apiKey": "SendGrid_API_Key",
      "from": "sender@contoso.com"
    }
  ]
}

Следующая функция демонстрирует, как указать пользовательские значения для необязательных свойств.

import logging
import json
import azure.functions as func

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

    value = "Sent from Azure Functions"

    message = {
        "personalizations": [ {
          "to": [{
            "email": "user@contoso.com"
            }]}],
        "subject": "Azure Functions email with SendGrid",
        "content": [{
            "type": "text/plain",
            "value": value }]}

    sendGridMessage.set(json.dumps(message))

    return func.HttpResponse(f"Sent")

В следующем примере применяется аннотация @SendGridOutput из библиотеки среды выполнения функций Java, чтобы отправить сообщение электронной почты с использованием выходной привязки SendGrid.

package com.function;

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

public class HttpTriggerSendGrid {

    @FunctionName("HttpTriggerSendGrid")
    public HttpResponseMessage run(

        @HttpTrigger(
            name = "req",
            methods = { HttpMethod.GET, HttpMethod.POST },
            authLevel = AuthorizationLevel.FUNCTION)
                HttpRequestMessage<Optional<String>> request,

        @SendGridOutput(
            name = "message",
            dataType = "String",
            apiKey = "SendGrid_API_Key",
            to = "user@contoso.com",
            from = "sender@contoso.com",
            subject = "Azure Functions email with SendGrid",
            text = "Sent from Azure Functions")
                OutputBinding<String> message,

        final ExecutionContext context) {

        final String toAddress = "user@contoso.com";
        final String value = "Sent from Azure Functions";

        StringBuilder builder = new StringBuilder()
            .append("{")
            .append("\"personalizations\": [{ \"to\": [{ \"email\": \"%s\"}]}],")
            .append("\"content\": [{\"type\": \"text/plain\", \"value\": \"%s\"}]")
            .append("}");

        final String body = String.format(builder.toString(), toAddress, value);

        message.setValue(body);

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

Атрибуты

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

В изолированных приложениях-функциях SendGridOutputAttribute рабочих процессов поддерживаются следующие параметры:

Свойство в атрибуте или аннотации Description
ApiKey Имя параметра приложения, в котором содержится ваш ключ API. Если имя параметра приложения не указано, по умолчанию используется AzureWebJobsSendGridApiKey.
Кому (Необязательно) Введите адрес электронной почты получателя.
From (Необязательно) Введите адрес электронной почты отправителя.
Тема (Необязательно) Введите тему сообщения электронной почты.
Текст (Необязательно) Текст сообщения.

Заметки

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

Настройка

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

Свойство в function.json Описание
type Должен иметь значениеsendGrid.
direction Должен иметь значениеout.
name Имя переменной, из которой в коде функции можно получить запрос или текст запроса. Это значение равно $return при наличии только одного возвращаемого значения.
apiKey Имя параметра приложения, в котором содержится ваш ключ API. Если значение не задано, используется имя параметра приложения по умолчанию AzureWebJobsSendGridApiKey.
to (Необязательно) Введите адрес электронной почты получателя.
from (Необязательно) Введите адрес электронной почты отправителя.
subject (Необязательно) Введите тему сообщения электронной почты.
text (Необязательно) Текст сообщения.

Для необязательных свойств можно определить в привязке значения по умолчанию, а затем добавлять или переопределять их программно.

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

Параметры файла host.json

В этом разделе описываются параметры конфигурации, доступные для этой привязки в версии 2.x или новее. Параметры в файле host.json применяются ко всем функциям в экземпляре приложения-функции. В приведенном ниже примере файла host.json содержатся только параметры этой привязки для версии 2.x или новее. Дополнительные сведения о параметрах конфигурации приложения-функции в версии 2.x или более поздней см. в статье Справочник по файлу host.json для Функций Azure.

Примечание.

Чтобы получить дополнительные сведения о файле host.json в Функции 1.x, см. статью host.json reference for Azure Functions 1.x(Справочник по файлу host.json для службы "Функции Azure" версии 1.x.).

{
    "version": "2.0",
    "extensions": {
        "sendGrid": {
            "from": "Azure Functions <samples@functions.com>"
        }
    }
}
Свойство По умолчанию Description
from Н/Д Адрес электронной почты для всех функций.

Следующие шаги