Выходные привязки Центров уведомлений Azure для Функции Azure
Эта статья объясняет, как отправлять push-уведомления с помощью привязок Центров уведомлений Azure в службе "Функции Azure". Служба "Функции Azure" поддерживает выходные привязки для Центров уведомлений.
Необходимо настроить Центры уведомлений для службы уведомлений платформы (PNS), которую вы хотите использовать. Дополнительные сведения о получении push-уведомлений в клиентском приложении из Центров уведомлений см . в кратком руководстве по настройке push-уведомлений в центре уведомлений.
Внимание
В компании Google отказались от устаревшего Google Cloud Messaging (GCM) в пользу Firebase Cloud Messaging (FCM). Однако выходные привязки для центров уведомлений не поддерживают FCM. Чтобы отправлять уведомления с помощью FCM, используйте API Firebase непосредственно в функции или же уведомления шаблона.
Пакеты: функции 1.x
Внимание
Поддержка будет завершена для среды выполнения Функции Azure версии 1.x 14 сентября 2026 г. Настоятельно рекомендуется перенести приложения в версию 4.x для полной поддержки.
Привязки Центров уведомлений доступны в пакете NuGet Microsoft.Azure.WebJobs.Extensions.NotificationHubs версии 1.х. Исходный код для пакета находится в репозитории GitHub azure-webjobs-sdk-extensions.
В следующей таблице показано, как добавить поддержку выходной привязки в каждой среде разработки.
Среда разработки | Добавление поддержки в Функциях 1.x |
---|---|
Локальная разработка: библиотека классов C# | Установка пакета |
Локальная разработка: скрипт C#, JavaScript, F# | Автоматически |
Разработка на портале | Автоматически |
Пакеты: функции 2.x и более поздние версии
Выходная привязка недоступна в Функциях 2.x и более поздних версиях.
Пример шаблона:
Можно отправлять собственные или шаблонные уведомления. Собственное уведомление предназначено для конкретной клиентской платформы, как указано в platform
свойстве выходной привязки. Шаблонное уведомление можно использовать для нескольких платформ.
Примеры шаблонов для каждого языка:
- Скрипт C#: параметр out
- Скрипт C#: асинхронный
- Скрипт C#: JSON
- Скрипт C#: типы библиотек
- F#
- JavaScript
Пример шаблона скрипта C#: параметр out
В этом примере отправляется уведомление о регистрации шаблона, содержащей message
заполнитель в шаблоне:
using System;
using System.Threading.Tasks;
using System.Collections.Generic;
public static void Run(string myQueueItem, out IDictionary<string, string> notification, TraceWriter log)
{
log.Info($"C# Queue trigger function processed: {myQueueItem}");
notification = GetTemplateProperties(myQueueItem);
}
private static IDictionary<string, string> GetTemplateProperties(string message)
{
Dictionary<string, string> templateProperties = new Dictionary<string, string>();
templateProperties["message"] = message;
return templateProperties;
}
Пример шаблона скрипта C#: асинхронный
Если вы используете асинхронный код, параметры не допускаются. В этом случае используйте IAsyncCollector
для возврата уведомления шаблона. Следующий код является асинхронным примером предыдущего примера:
using System;
using System.Threading.Tasks;
using System.Collections.Generic;
public static async Task Run(string myQueueItem, IAsyncCollector<IDictionary<string,string>> notification, TraceWriter log)
{
log.Info($"C# Queue trigger function processed: {myQueueItem}");
log.Info($"Sending Template Notification to Notification Hub");
await notification.AddAsync(GetTemplateProperties(myQueueItem));
}
private static IDictionary<string, string> GetTemplateProperties(string message)
{
Dictionary<string, string> templateProperties = new Dictionary<string, string>();
templateProperties["user"] = "A new user wants to be added : " + message;
return templateProperties;
}
Пример шаблона скрипта C#: JSON
В этом примере отправляется уведомление о регистрации шаблона, содержащей message
заполнитель в шаблоне с помощью допустимой строки JSON:
using System;
public static void Run(string myQueueItem, out string notification, TraceWriter log)
{
log.Info($"C# Queue trigger function processed: {myQueueItem}");
notification = "{\"message\":\"Hello from C#. Processed a queue item!\"}";
}
Пример шаблона скрипта C#: типы библиотек
В этом примере показано, как использовать типы, определенные в библиотеке центров уведомлений Microsoft Azure:
#r "Microsoft.Azure.NotificationHubs"
using System;
using System.Threading.Tasks;
using Microsoft.Azure.NotificationHubs;
public static void Run(string myQueueItem, out Notification notification, TraceWriter log)
{
log.Info($"C# Queue trigger function processed: {myQueueItem}");
notification = GetTemplateNotification(myQueueItem);
}
private static TemplateNotification GetTemplateNotification(string message)
{
Dictionary<string, string> templateProperties = new Dictionary<string, string>();
templateProperties["message"] = message;
return new TemplateNotification(templateProperties);
}
Пример шаблона F#
В этом примере отправляется уведомление о регистрации шаблона, содержащей location
и message
:
let Run(myTimer: TimerInfo, notification: byref<IDictionary<string, string>>) =
notification = dict [("location", "Redmond"); ("message", "Hello from F#!")]
Пример шаблона JavaScript
В этом примере отправляется уведомление о регистрации шаблона, содержащей location
и message
:
module.exports = async function (context, myTimer) {
var timeStamp = new Date().toISOString();
if (myTimer.IsPastDue)
{
context.log('Node.js is running late!');
}
context.log('Node.js timer trigger function ran!', timeStamp);
context.bindings.notification = {
location: "Redmond",
message: "Hello from Node!"
};
};
Пример: собственный APNS
В этом примере скрипта C# показано, как отправить собственное уведомление Службы push-уведомлений Apple (APNS):
#r "Microsoft.Azure.NotificationHubs"
#r "Newtonsoft.Json"
using System;
using Microsoft.Azure.NotificationHubs;
using Newtonsoft.Json;
public static async Task Run(string myQueueItem, IAsyncCollector<Notification> notification, TraceWriter log)
{
log.Info($"C# Queue trigger function processed: {myQueueItem}");
// In this example, the queue item is a new user to be processed in the form of a JSON string with
// a "name" value.
//
// The JSON format for a native Apple Push Notification Service (APNS) notification is:
// { "aps": { "alert": "notification message" }}
log.LogInformation($"Sending APNS notification of a new user");
dynamic user = JsonConvert.DeserializeObject(myQueueItem);
string apnsNotificationPayload = "{\"aps\": {\"alert\": \"A new user wants to be added (" +
user.name + ")\" }}";
log.LogInformation($"{apnsNotificationPayload}");
await notification.AddAsync(new AppleNotification(apnsNotificationPayload));
}
Пример: собственный WNS
В этом примере скрипта C# показано, как использовать типы, определенные в библиотеке Центров уведомлений Microsoft Azure для отправки всплывающего уведомления собственной службы push-уведомлений Windows (WNS):
#r "Microsoft.Azure.NotificationHubs"
#r "Newtonsoft.Json"
using System;
using Microsoft.Azure.NotificationHubs;
using Newtonsoft.Json;
public static async Task Run(string myQueueItem, IAsyncCollector<Notification> notification, TraceWriter log)
{
log.Info($"C# Queue trigger function processed: {myQueueItem}");
// In this example, the queue item is a new user to be processed in the form of a JSON string with
// a "name" value.
//
// The XML format for a native WNS toast notification is ...
// <?xml version="1.0" encoding="utf-8"?>
// <toast>
// <visual>
// <binding template="ToastText01">
// <text id="1">notification message</text>
// </binding>
// </visual>
// </toast>
log.Info($"Sending WNS toast notification of a new user");
dynamic user = JsonConvert.DeserializeObject(myQueueItem);
string wnsNotificationPayload = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<toast><visual><binding template=\"ToastText01\">" +
"<text id=\"1\">" +
"A new user wants to be added (" + user.name + ")" +
"</text>" +
"</binding></visual></toast>";
log.Info($"{wnsNotificationPayload}");
await notification.AddAsync(new WindowsNotification(wnsNotificationPayload));
}
Атрибуты
В библиотеках классов C# используйте атрибут NotificationHub.
Параметры и свойства конструктора атрибута описаны в разделе "Конфигурация ".
Настройка
В следующей таблице перечислены свойства конфигурации привязки, заданные в файле function.json и атрибуте NotificationHub
:
Свойство в function.json | Свойство атрибута | Описание |
---|---|---|
type | Н/Д | Задайте значение notificationHub . |
direction | Н/Д | Задайте значение out . |
name | Н/Д | Имя переменной, используемой в коде функции для сообщения Центра уведомлений. |
tagExpression | TagExpression | Выражения тегов позволяют указать, что уведомления доставляются набору устройств, зарегистрированных для получения уведомлений, соответствующих выражению тега. Дополнительные сведения см. в статье Маршрутизация и выражения тегов. |
hubName | HubName | Имя ресурса концентратора уведомлений в портал Azure. |
Подключение | ConnectionStringSetting | Имя параметра приложения, содержащего строку подключения Центров уведомлений. Задайте строка подключения значение DefaultFullSharedAccessSignature для центра уведомлений. Дополнительные сведения см. в разделе "Настройка строки подключения". |
platform | Платформа | Свойство platform указывает целевую клиентскую платформу для ваших уведомлений. По умолчанию, если свойство платформы отсутствует в выходной привязке, шаблонные уведомления могут использоваться для любой платформы, настроенной в концентраторе уведомлений Azure. Дополнительные сведения об использовании шаблонов для отправки кроссплатформенных уведомлений с помощью Центра уведомлений Azure см . в шаблонах Центров уведомлений. Если задана платформа , она должна быть одним из следующих значений:
|
Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values
.
Пример файла function.json
Ниже приведен пример привязки Центров уведомлений в файле function.json :
{
"bindings": [
{
"type": "notificationHub",
"direction": "out",
"name": "notification",
"tagExpression": "",
"hubName": "my-notification-hub",
"connection": "MyHubConnectionString",
"platform": "apns"
}
],
"disabled": false
}
Настройка строки подключения
Для использования привязки для вывода Центра уведомлений необходимо настроить отдельную строку подключения. Вы можете выбрать существующий центр уведомлений или создать новый на вкладке "Интеграция" в портал Azure. Кроме того, строку подключения можно настроить вручную.
Настройка строки подключения к имеющемуся Центру уведомлений
Перейдите к Центру уведомлений на портале Azure. Выберите Политики доступа, а затем нажмите кнопку копирования рядом с политикой DefaultFullSharedAccessSignature.
Строка подключения политики DefaultFullSharedAccessSignature копируется в центр уведомлений. Эта строка подключения позволяет функции отправлять сообщения центру уведомлений.
Перейдите к приложению-функции в портал Azure, разверните узел "Параметры" и выберите переменные среды.
На вкладке "Параметры приложения" нажмите кнопку +Добавить, чтобы добавить ключ, например MyHubConnectionString. Имя этого параметра приложения — это параметр подключения выходной привязки в function.json или атрибуте .NET. Дополнительные сведения см. в статье Конфигурация.
Для значения вставьте скопированные строка подключения DefaultFullSharedAccessSignature из центра уведомлений и нажмите кнопку "Применить".
Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values
.
Исключения и коды возврата
Привязка | Справочные материалы |
---|---|
Центр уведомлений | Руководство по операциям |