Ескерім
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Эта статья объясняет, как отправлять 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
}
Настройка строки подключения
Для использования привязки для вывода Центра уведомлений необходимо настроить отдельную строку подключения.
Внимание
Привязка Центров уведомлений не поддерживает проверку подлинности и управляемые удостоверения Microsoft Entra. Azure Key Vault можно использовать для централизованного управления строка подключения концентратора уведомлений и поддержки смены ключей. Дополнительные сведения см. в разделе "Управление подключениями".
Вы можете выбрать существующий центр уведомлений или создать новый на вкладке "Интеграция" в портал Azure. Кроме того, строку подключения можно настроить вручную.
Настройка строки подключения к имеющемуся Центру уведомлений
Перейдите к Центру уведомлений на портале Azure. Выберите Политики доступа, а затем нажмите кнопку копирования рядом с политикой DefaultFullSharedAccessSignature.
Строка подключения политики DefaultFullSharedAccessSignature копируется в центр уведомлений. Эта строка подключения позволяет функции отправлять сообщения центру уведомлений.
Перейдите к приложению-функции в портал Azure, разверните узел "Параметры" и выберите переменные среды.
На вкладке "Параметры приложения" нажмите кнопку +Добавить, чтобы добавить ключ, например MyHubConnectionString. Имя этого параметра приложения — это параметр подключения выходной привязки в function.json или атрибуте .NET. Дополнительные сведения см. в статье Конфигурация.
Для значения вставьте скопированные строка подключения DefaultFullSharedAccessSignature из центра уведомлений и нажмите кнопку "Применить".
Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values
.
Исключения и коды возврата
Привязка | Справочные материалы |
---|---|
Центр уведомлений | Руководство по операциям |