Associação de saída dos Hubs de Notificação para Azure Functions
Este artigo explica como enviar notificações por push usando associações de Hubs de Notificação do Azure no Azure Functions. O Azure Functions oferece suporte a uma associação de saída para os Hubs de Notificação.
Os Hubs de Notificação do Azure devem ser configurados para os PNS (Serviços de Notificações de Plataforma) que você deseja usar. Para saber como obter notificações por push em seu aplicativo cliente desde Hubs de Notificação, veja Introdução aos Hubs de Notificação e selecione a plataforma de cliente de destino na lista suspensa na parte superior da página.
Importante
O Google preteriu Google Cloud Messaging (GCM) em favor do Firebase Cloud Messaging (FCM). Esta associação de saída não dá suporte a FCM. Para enviar notificações usando o FCM, use a API do Firebase diretamente em sua função ou use notificações de modelo.
Pacotes - Functions 1. x
Importante
O suporte da versão 1.x do runtime do Azure Functions terminará em 14 de setembro de 2026. É recomendável que você migre seus aplicativos para a versão 4.x para receber suporte completo.
As associações de Hubs de notificação são fornecidas no Microsoft.Azure.WebJobs.Extensions.NotificationHubs pacote NuGet, versão 1. x. O código-fonte do pacote está no repositório GitHub azure-webjobs-sdk-extensions.
A tabela a seguir informa como adicionar suporte para essa associação em cada ambiente de desenvolvimento.
Ambiente de desenvolvimento | Para adicionar suporte em Funções 1.x |
---|---|
Desenvolvimento local - biblioteca de classes do C# | Instalar o pacote |
Desenvolvimento local - Script do C#, JavaScript, F# | Automática |
Desenvolvimento de portal | Automática |
Pacotes – Functions 2.x e posteriores
Essa associação não está disponível em Functions 2.x e posteriores.
Exemplo - modelo
As notificações enviadas podem ser notificações nativas ou notificações de modelo. As notificações nativas são destinadas a uma plataforma específica de cliente, conforme configurado na propriedade platform
da associação de saída. Uma notificação de modelo pode ser usada para ter como destino várias plataformas.
Consulte o exemplo específico a um idioma:
- Script do C# - parâmetro out
- Script do C# - assíncrono
- Script do C# - JSON
- Script do C# - tipos de biblioteca
- F#
- JavaScript
Exemplo de modelo de script do C# - parâmetro out
Este exemplo envia uma notificação para um registro de modelo que contém um espaço reservado no modelo.
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;
}
Exemplo de modelo de script do C# - assíncrono
Se você estiver usando o código assíncrono, os parâmetros de saída não serão permitidos. Nesse caso, use IAsyncCollector
para retornar a notificação de modelo. O código a seguir é um exemplo de código assíncrono acima.
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;
}
Exemplo de modelo de script do C# - JSON
Este exemplo envia uma notificação para um registro de modelo que contém um espaço reservado no modelo usando uma cadeia de caracteres 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!\"}";
}
Exemplo de modelo script do C# - tipos de biblioteca
Este exemplo mostra como usar tipos definidos na Biblioteca de Hubs de Notificações do 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);
}
Exemplo de modelo F#
Este exemplo envia uma notificação para um registro de modelo que contém e message
.
let Run(myTimer: TimerInfo, notification: byref<IDictionary<string, string>>) =
notification = dict [("location", "Redmond"); ("message", "Hello from F#!")]
Exemplo de modelo JavaScript
Este exemplo envia uma notificação para um registro de modelo que contém e 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!"
};
};
Exemplo - APNS nativo
Este exemplo de script C# mostra como enviar uma notificação nativa do 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 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));
}
Exemplo - WNS nativo
Este exemplo de script C# mostra como usar tipos definidos na Biblioteca de Hubs de Notificação do Microsoft Azure para enviar uma notificação nativa WNS do sistema.
#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));
}
Atributos
Em bibliotecas de classes de C#, utilize o atributo NotificationHub.
Os parâmetros e as propriedades do construtor do atributo são descritos na seção Configuração.
Configuração
A tabela a seguir explica as propriedades de configuração de associação que você define no arquivo function.json e no atributo :
Propriedade function.json | Propriedade de atributo | Descrição |
---|---|---|
tipo | n/d | Deve ser definido como notificationHub . |
direction | n/d | Deve ser definido como out . |
name | n/d | Nome da variável usada no código de função para a mensagem do hub de notificação. |
tagExpression | TagExpression | As expressões de marca permitem que você especifique que as notificações sejam entregues a um conjunto de dispositivos registrados para receber notificações que correspondem à expressão de marca. Para saber mais, veja Expressões de marca e de roteamento. |
hubName | HubName | Nome do recurso de hub de notificação no portal do Azure. |
connection | ConnectionStringSetting | O nome de uma configuração de aplicativo que contém uma cadeia de conexão de Hubs de Notificação. A cadeia de caracteres de conexão deve ser definida como o valor DefaultFullSharedAccessSignature para o hub de notificação. Veja Configuração da cadeia de conexão posteriormente neste artigo. |
platform | Plataforma | A propriedade platform indica a plataforma de cliente à qual sua notificação se destina. Por padrão, se a propriedade da plataforma é omitida da associação de saída, as notificações de modelo podem ser usadas para atingir qualquer plataforma configurada no Hub de Notificação do Azure. Para obter mais informações sobre como usar modelos em geral para enviar várias notificações de plataforma com um Hub de Notificação do Azure, consulte Modelos. Quando definida, platform deve ser um dos seguintes valores:
|
Quando você estiver desenvolvendo localmente, adicione as configurações do aplicativo no arquivo local.settings.json na coleção Values
.
Exemplo de arquivo function.json
Aqui está um exemplo de uma associação de Hubs de Notificação em um arquivo function.json.
{
"bindings": [
{
"type": "notificationHub",
"direction": "out",
"name": "notification",
"tagExpression": "",
"hubName": "my-notification-hub",
"connection": "MyHubConnectionString",
"platform": "apns"
}
],
"disabled": false
}
Configuração de cadeia de conexão
Para usar uma associação de saída de um hub de notificação, você deve configurar a cadeia de conexão para o hub. Você pode selecionar um hub de notificação existente ou criar um novo diretamente na guia Integrar no portal do Azure. Você também pode configurar a cadeia de conexão manualmente.
Para configurar a cadeia de conexão em um hub de notificação existente:
- Navegue até seu hub de notificação no portal do Azure, escolha Políticas de acesso e selecione o botão Copiar ao lado da política DefaultFullSharedAccessSignature. Isso copia a cadeia de conexão para a política DefaultFullSharedAccessSignature ao hub de notificação. Essa cadeia de conexão permite que a função envie mensagens de notificação para o hub.
- Navegue até seu aplicativo de funções no portal do Azure, escolha Configurações do aplicativo, adicione uma chave como MyHubConnectionString, cole o DefaultFullSharedAccessSignature copiado em seu hub de notificação como o valor e, em seguida, clique em Salvar.
O nome dessa configuração de aplicativo é o que está na configuração de conexão de associação de saída em function.json ou mo atributo do .NET. Veja a seção Configuração anteriormente neste artigo.
Quando você estiver desenvolvendo localmente, adicione as configurações do aplicativo no arquivo local.settings.json na coleção Values
.
Exceções e códigos de retorno
Associação | Referência |
---|---|
Hub de notificação | Guia de Operações |