Los senders son los encargados de realizar la entrega de una nofificación a su canal de destino. Todos los Senders implementan la interface NotificationServer.Core.ISender, que está definida así:
Método | Propósito | Tipo de Retorno |
---|---|---|
Send(Notification) | Envíar notificaciones sincrónicamente. | void |
SendAsync(Notification) | Envíar notificaciones asincrónicamente. | void |
El parámetro de entrada para los métodos Send y SendAsync es una instancia de Notification. Este objeto está definido así:
Propiedad | Descripción | Tipo de Dato |
---|---|---|
PartitionKey | Guid | |
TemplateName | String | |
From | Cadena de quién envía la notificación. | String |
Subject | El asunto de la notificación. | String |
To | Colección de direcciones a la que se debe enviar la notificación. | IList |
CC | Colección de direcciones a la que se debe enviar en copia la notificación. | IList |
BCC | Colección de direcciones a la que se debe enviar en copia oculta la notificación. | IList |
ReplyTo | Colección de direcciones a las que se debe contestar la notificación. | IList |
Attachments | Colección de adjuntos que se deben enviar con la notificación. | Collection |
Properties | A collection of properties that should be used to render body template. | IList |
Type | String | |
Tags | String |
Propiedad | Descripción | Tipo de Dato |
---|---|---|
ContentStream | Representa el flujo de datos del adjunto. | System.IO.Stream |
Content | Representa el flujo de datos del adjunto representado en bas64. | String |
ContentDisposition | Proporciona la información de presentación para los adjuntos. | System.Net.Mime.ContentDisposition |
Name | MIME content type name value in the content type associated with this attachment. | string |
NameEncoding | An System.Text.Encoding value that specifies the type of name encoding. The default value is determined from the name of the attachment. | System.Text.Encoding |
Propiedad | Descripción | Tipo de Dato |
---|---|---|
Key | Cadena que será utilizada como el nombre del la propiedad. | String |
Value | Valor de la propiedad de la notificación. | Object |
Define el contrato requerido para implementar un servicio de motor de plantilla. Los motores de plantilla son los responsables de traducir una notificación en un mensaje que el canal de destino pueda interpretar. Todos los Template Engines implementan la interface NotificationServer.Core.ITemplateEngineService, que está definida así:
Los Interceptors permiten leer y manipular mensajes antes y después de su transferencia mediante un sender. Todos los Interceptors implementan la interface NotificationServer.Core.INotificationInterceptor, que está definida así:
Método | Propósito | Tipo de Retorno |
---|---|---|
OnNotificationSending(NotificationSendingContext) | Este método será llamado antes de enviar cada mensaje. | void |
OnNotificationSent(NotificationSentContext) | Este método será llamado después de que se envía cada mensaje. | void |
Es el objeto de contexto enviado en el evento OnMailSending para permitir que inspeccione la Notification subyacente antes de que se envía. Este objeto está definido así:
Propiedad | Descripción | Tipo de Dato |
---|---|---|
Sender | El Sender que se está usando para enviar la notificación. | Guid |
Notification | La notificación que se está enviando. | NotificationServer.Contract.Notification |
Parameters | Parámetros con los que la notificación fue generada. | Dictionary<String, Object> |
Cancel | Indicador que puede ser activado para evitar que se envíe la notificación. | Boolean |
Es el objeto de contexto enviado en el evento OnMailSent para permitir que inspeccione la Notification subyacente después de que se envía. Este objeto está definido así:
Propiedad | Descripción | Tipo de Dato |
---|---|---|
Notification | La notificación que se está enviando. | NotificationServer.Contract.Notification |
Parameters | Parámetros con los que la notificación fue generada. | Dictionary<String, Object> |
Response | Indicador que puede ser activado para evitar que se envíe la notificación. | Object |
HostSender | Indicador que puede ser activado para evitar que se envíe la notificación. | String |
Los providers son los encargados de implementar las características del Notification Server específicas en una tecnología. Por ejemplo, la implementación SQL Server de la persistencia. Existen los siguientes tipos de providers:
Una vez la notificación es recibida por el Host, este debe resolver cada uno de los Senders que procesarán esa notificación y la configuración para cada uno de ellos. Todos los Settings Repository implementan la interface NotificationServer.Service.Repositories.IConfigurationsRepository, que está definida así:
Método | Propósito | Tipo de Retorno |
---|---|---|
GetNotificationSpecsFor(NotifyCommand) | Devuelve una lista de especificaciones de emisión, con las instrucciones de como procesar la notificación para cada uno de los Senders solicitados. | IEnumerable |
Una vez la notificación es son resueltos las instrucciones de procesamiento para cada uno de los Senders, se resuelven las plantillas que procesaran el mensaje para cada uno de los Senders solicitados. Todos los Template Repository implementan la interface NotificationServer.Core.ITemplateResolver, que está definida así:
Método | Propósito | Tipo de Retorno |
---|---|---|
Resolve(String, IDictionary<String, Object>) | Devuelve una plantilla dada su nombre. Los paramétros son de uso opcional y pueden ser utilizados para soportar escenarios mas complejos. | String |
Una vez la notificación es procesada por el Host esta es persistida con el fin de poder reanudar el proceso en caso de que algo falle antes de que la notificación sea entregada. Todos los Notifications Repository implementan la interface NotificationServer.Service.Repositories.INotificationsRepository, que está definida así:
Método | Propósito | Tipo de Retorno |
---|---|---|
Save(NotifyCommand) | Guarda una tarea de notificacion. Devuelve un identificador de la notificación. | Guid |
Get(Guid) | Devuelve una tarea de notificación dado su id. | NotifyCommand |
AddToBatch(Guid,Guid) | Agrega una notificación a una lista de procesamiento en lote. Devuelve un identificador para el trabajo en lote. | Guid |
GetBatch(Guid) | Devuelve una lista de tareas de notificación dado un id de trabajo en lote. | IList |
CancelBatch(Guid) | Devuelve una tarea de notificación dado su id. | void |
ReportNotificationStatus(ReportNotificationStatusCommand) | Guarda los eventos ocurridos en la entrega de una notificación. | void |
El Notific ation Server dispone de un dashboard para el monitoreo de las tareas notificación recibidas. Este acceso está protegido por los usuario y clave entregados por este provider. Todos los Users Repository implementan la interface NotificationServer.Service.Repositories.IUsersRepository, que está definida así:
Método | Propósito | Tipo de Retorno |
---|---|---|
Exists(String) | Devuelve si un nombre de usuario existe. | Boolean |
Get(String) | Devuelve un usuario dado su nombre. | User |
Get(Guid) | Devuelve un usuario dado su id. | User |
Get(String,String) | Devuelve un usuario dado su usuario y contraseña. La contraseña será enviada encriptada utilizando el IEncryptionService configurado. | User |
Insert(User) | Guarda un nuevo usuario. | void |
ChangePassword(String,String) | Cambia la contraseña de un usuario. La contraseña será enviada encriptada utilizando el IEncryptionService configurado. | void |
El Scheduler es quien se encarga de realizar el agendamiento y control de las tareas de notificación. Todos los Scheduler implementan la interface NotificationServer.Service.Repositories.INotificationsScheduler, que está definida así:
Método | Propósito | Tipo de Retorno |
---|---|---|
Startup(IAppBuilder) | Este método es llamado junto a las tareas de arranque del Notification Server. Debe ser utilizado como un sustitudo del Global.asax. | void |
Add(NotificationRunner) | Este método será llamado por cada tarea que se cree a partir de una notificación. | void |
Ejecuta código CSScript. La plantilla configurada para este sender debe devolver una aplicación de consola clásica de C#, asi:
using System;
namespace HelloWorld
{
class Hello
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
Se debe evitar hacer lecturas de teclado. Todos los parámetros de configuración serán pasados como argumentos en el mismo orden en que fueron guardados en el Settings Repository.
Entrega la notificación vía Dotnetnuke. Los parametros de configuración de este Sender son:
Nombre | Descripción | Valor por Defecto |
---|---|---|
Host | URL de sitio de DNN. | |
Resource | URI de API de notificaciones. | /DesktopModules/InternalServices/API/MessagingService/Create |
User | Usuario de DNN con permisos para la API de notificaciones. | |
Password | Contraseña del usuario de DNN con permisos para la API de notificaciones. | |
ModuleId | Identificador de DNN para el módulo de notificación. | 511 |
TabId | Identificador de DNN para el Tab de notificación. | 98 |
RequestVerificationToken | Valor de Header provisto por DNN para autenticación de la API. | |
CookieRequestVerificationToken | Valor de Cookie provisto por DNN para evitar CSRF. |
Entrega la notificación vía SMTP. Los parametros de configuración de este Sender son:
Nombre | Descripción | Valor por Defecto |
---|---|---|
Host | SMTP Host. | |
Port | SMTP Port. | |
Usuario | SMTP Username. | |
Password | SMTP Password. | |
SSL | Indicador si el SMTP requiere SSL. | |
From | Valor de from por defecto. |
Ejecuta código Powershell. La plantilla configurada para este sender debe devolver una script powershell, asi:
Write-Host "Hello, World!"
Se debe evitar hacer lecturas de teclado. Todos los parámetros de configuración serán pasados como argumentos nombrados. Solo los módulos built-in estan cargados por defecto.
Entrega la notificación vía REST. Los parametros de configuración de este Sender son:
Nombre | Descripción | Valor por Defecto |
---|---|---|
Enabled | Indica si el endpoint REST está habilitado. | |
Host | URL del endpoint REST. | |
Port | Puerto del endpoint REST. | 80 |
Resource | Recurso REST a consumir. | |
Method | Método HTTP a invocar. | POST |
ContentType | Tipo de contenido a enviar. Esta parámetro esta directamente relacionado a la forma en como la plantilla entrega el contenido. | application/json |
Headers | Parámetros a enviar por cabecera. | |
Query | Parámetros a enviar por QueryString. |
Entrega la notificación vía Send Grid. Los parametros de configuración de este Sender son:
Nombre | Descripción | Valor por Defecto |
---|---|---|
Usuario | Usuario de API de Sendgrid. | |
Password | Contraseña de API de Sendgrid. |
Entrega la notificación vía Twitter. Los parametros de configuración de este Sender son:
Nombre | Descripción | Valor por Defecto |
---|---|---|
AccessToken | Información provista por Twitter API. | |
AccessTokenSecret | Información provista por Twitter API. | |
ConsumerKey | Información provista por Twitter API. | |
ConsumerSecret | Información provista por Twitter API. |
- Razor Template Engines
- Reply Interceptor
- Options Token Replacing Interceptor
- SQL Server Notifications Repository Provider
- SQL Server Settings Repository Provider
- SQL Server Template Repository Provider
- Azure Table Storage Notifications Repository Provider
- Azure Table Storage Settings Repository Provider
- Azure Table Storage Template Repository Provider
- Hangfire Scheduler