Привязка Twilio для службы "Функции Azure"
В этой статье описано, как отправлять текстовые сообщения с помощью привязок Twilio в службу "Функции Azure". Служба "Функции Azure" поддерживают выходные привязки для Twilio.
Это справочные сведения для разработчиков функций Azure. Если вы новичок в функциях Azure, начните со следующих ресурсов:
Ссылки для разработчиков C#:
Установка расширения
Устанавливаемый пакет расширения 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.
Внимание
Поддержка будет завершена для модели в процессе 10 ноября 2026 г. Настоятельно рекомендуется перенести приложения в изолированную рабочую модель для полной поддержки.
Привязка 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-сообщения. |
текст | Это значение можно использовать для жесткого кодирования текстового SMS-сообщения, если его не нужно задавать динамически в коде функции. |
В версии 2.x значение to
задается в программном коде.
Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values
.