I'm looking for a framework/service that would allow me to define messages/notifications in code and send them to specific users. How the message is delivered would depend on what notification services the user has connected and maybe preferences of the user.
Users will work with the application both via a web-interface and mobile clients. Supported notification systems should include:
- real time toast in the web application
- push notification for Android and iOS
- maybe SMS
Importantly, if a message is addressed to user Charlie and Charlie has, for example, turned on email, push and web notifications, then:
- if he is logged into the web application, the notification appears there, but no push notification or email is sent
- if he is logged into the mobile app, the notification appears there, but no web or email notification is sent
- if he is not logged in anywhere, then an email or a push notification or both are sent, depending on Charlie's preferences/settings
- if he is logged into both web application and mobile app, he gets notifications in both
Further criteria are:
- API should be consumable from .NET (as the application backend is written with ASP.NET)
- it should be possible to send a message to multiple receivers (but small numbers, never more than 10; also, most often it will be 1 or 2 receivers)
- it should be scaleable to huge notification load (if te application happens to be successful ;)
- there should be some sort of templating support for the different delivery methods; so I can define "if the message is sent by email, use this text template" etc.)
I looked into Azure Notification Hubs, but they allow only push notifications for mobile clients (and Chrome apps), no email, no web applications.
I could roll my own using a combination of Notification Hubs, some email sender service and SignalR - but obviously I do not want to reinvent the wheel.