An integrated user notification service Abp module, supporting email, SMS, PM, and more other methods.
-
Install the following NuGet packages. (see how)
- EasyAbp.NotificationService.Application
- EasyAbp.NotificationService.Application.Contracts
- EasyAbp.NotificationService.Domain
- EasyAbp.NotificationService.Domain.Shared
- EasyAbp.NotificationService.EntityFrameworkCore
- EasyAbp.NotificationService.HttpApi
- EasyAbp.NotificationService.HttpApi.Client
- (Optional) EasyAbp.NotificationService.MongoDB
- (Optional) EasyAbp.NotificationService.Web
- (Optional) EasyAbp.NotificationService.Provider.Mailing
- (Optional) EasyAbp.NotificationService.Provider.PrivateMessaging
- (Optional) EasyAbp.NotificationService.Provider.Sms
- (Optional) EasyAbp.NotificationService.Provider.WeChatOfficial
-
Add
DependsOn(typeof(NotificationServiceXxxModule))
attribute to configure the module dependencies. (see how) -
Add
builder.ConfigureNotificationService();
to theOnModelCreating()
method in MyProjectMigrationsDbContext.cs. -
Add EF Core migrations and update your database. See: ABP document.
You can create a notification using a notification factory or manually.
-
Create a factory.
public class UserWelcomeNotificationFactory : NotificationFactory<UserWelcomeNotificationDataModel, CreateSmsNotificationEto>, ITransientDependency { public override async Task<CreateSmsNotificationEto> CreateAsync( UserWelcomeNotificationDataModel model, IEnumerable<Guid> userIds) { var text = $"Hello, {model.UserName}, here is a gift card code for you: {model.GiftCardCode}"; return new CreateSmsNotificationEto(CurrentTenant.Id, userIds, text, new Dictionary<string, object>()); } }
-
Use the factory to create a notification and publish it.
var eto = await userWelcomeNotificationFactory.CreateAsync( model: new UserWelcomeNotificationDataModel(userData.UserName, giftCardCode), userId: userData.Id ); // use the distributed event bus to create notifications and send them in the background await distributedEventBus.PublishAsync(eto); // or use the integration service to create notifications and send them in the background var notifications = await notificationIntegrationService.CreateAsync(eto); // or use the integration service to create notifications and send it them immediately var notifications = await notificationIntegrationService.QuickSendAsync(eto);
Publish the notification.
await distributedEventBus.PublishAsync(
new CreateEmailNotificationEto(CurrentTenant.Id, userIds, subject, body));
- Mailing
- PrivateMessaging
- Sms
- WeChatOfficial
You can override the IdentityUserEmailAddressProvider and the IdentityUserPhoneNumberProvider.
You can use the ABP Text Templating feature, see the demo.
- Private messaging notification provider.
- WeChat official template message notification provider.
- WeChat mini-program subscribe message notification provider.
- Notification management UI.