NotificationServices 1.0.9
See the version list below for details.
dotnet add package NotificationServices --version 1.0.9
NuGet\Install-Package NotificationServices -Version 1.0.9
<PackageReference Include="NotificationServices" Version="1.0.9" />
paket add NotificationServices --version 1.0.9
#r "nuget: NotificationServices, 1.0.9"
// Install NotificationServices as a Cake Addin #addin nuget:?package=NotificationServices&version=1.0.9 // Install NotificationServices as a Cake Tool #tool nuget:?package=NotificationServices&version=1.0.9
The current version supports the following functionalities:
AWS: Send Email, SMS & Push Notification using a Basic AWS Authentication method.
PLIVO: Send SMS
TWILIO: Send SMS
FCM: Send Push Notifications using a Firebase Server Key
OneSignal: Send text Push Notifications with segments, filters or player ids
Configuration
To start with setting the credentials use the Configuration class:
AWS
NotificationServices.Configuration.Instance.AWSAccessKey = "<your access key>";
NotificationServices.Configuration.Instance.AWSSecretKey = "<your secret key>";
NotificationServices.Configuration.Instance.AWSFCMPNSARN = "<your arn for fcm>";
NotificationServices.Configuration.Instance.AWSIOSPNSARN = "<your arn for ios>";
NotificationServices.Configuration.Instance.AWSRegionEndPoint = "<your region endpoint>";
Firebase Push notifications
NotificationServices.Configuration.Instance.FirebaseServerKey = "<your firebase server key>";
TWILIO
NotificationServices.Configuration.Instance.TwilioAccountSID = "<your twilio account sid>";
NotificationServices.Configuration.Instance.TwilioAuthToken = "<your twilio auth token>";
NotificationServices.Configuration.Instance.TwilioFromNumber = "<your twilio number from which to send>";
PLIVO
NotificationServices.Configuration.Instance.PlivoAuthID = "<your plivo auth id>";
NotificationServices.Configuration.Instance.PlivoAuthToken = "<your plivo auth token>";
NotificationServices.Configuration.Instance.PlivoFromPhoneNumber = "<your twilio number from which to send>";
*OneSignal
NotificationServices.Configuration.Instance.OneSignalAppId = "<your OneSignal App Id>";
NotificationServices.Configuration.Instance.OneSignalAPIKey = "<your OneSignal Rest api key>";
Email
To send out emails get an instance of IEmailSender via EmailSenderFactory. You can then send the email by calling SendAWSEmailAsync. It expects 4 parameters.
- Source: The source/sender of the email. This needs to be verified in the Simple Email Service
- ToEmail: The recipient of the email
- TemplateName: The name of the template to use. You can create templates from cli and can learn more from here. https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html
- TemplateData: The data to substitute in the Template. See the above link to see how to pass the data.
var EmailSender = EmailSenderFactory.GetAWSEmailSender();
EmailSender.SendAWSEmailAsync("noreply@services.com", "recipient@services.com", "ConfirmEmailTemplate", $"{{ \"Link\":\"{EmailCallbackUrl}\", \"Name\": \"{FirstName}\" }}");
SMS
To send out sms get an instance of ISMSSender via SMSSenderFactory. You can then send the email by calling SendSmsAsync. It expects 4 parameters.
- number: The recipient number to which the sms needs to be sent.
- message: Text Message to be sent.
- SenderId: This is an optional parameter whose default value is "Notif". The sender id to be displayed when the sms is received.
- SMSType: This is an optional parameter whose default value is "Transactional". The type of sms either it is "Promotional" or "Transactional".
AWS
var SMSSender = SMSSenderFactory.GetAWSSMSSender();
SMSSender.SendSmsAsync("<your number with country code", "Hello World");
Twilio
var SMSSender = SMSSenderFactory.GetTwilioSMSSender();
SMSSender.SendSmsAsync("<your number with country code", "Hello World");
Plivo
var SMSSender = SMSSenderFactory.GetPlivoSMSSender();
SMSSender.SendSmsAsync("<your number with country code", "Hello World");
Push Notifications
To send out push notifications get an instance of IPushNotificationSender via PushNotificationSenderFactory.
FCM
You can then send the push notification by calling SendFirebasePushNotification for Firebase. It expects 4 parameters.
- deviceTokens: An array of fcm device tokens to which the notifications need to be sent.
- title: The title of the push notification
- body: The body of the notification.
- data: A custom object to send in the push notifcation
var PushNotificationSender = PushNotificationSenderFactory.GetFirebasePushNotificationSender();
PushNotificationSender.SendFirebasePushNotification(["<your device token>"], "Hello Title", "Hello Body", new {Id = "<some id>"});
AWS
Before sending out a push notification via AWS a topic needs to be created for each user using CreateAWSEndpointAsync. It takes 3 parameters:
- topic: You can pass your user id here. The function will create a topic with this name in AWS.
- token: The device token which is retrieved from ios & Android installations. For iOS it will be a hexadecimal string.
- platform: Either iOS or Android. If 'iOS' an endpoint will be created in AWSIOSPNSARN. For Android an endpoint will be created in AWSFCMPNSARN
var PushNotificationSender = PushNotificationSenderFactory.GetAWSPushNotificationSender();
PushNotificationSender.CreateAWSEndpointAsync("<topic name>","<your device token>", "<platform>");
CreateAWSEndpointAsync will create a Topic with the given 'topic', Create an endpoint in the given 'platform' with the given 'token'. Internally it will also create a subscription in the topic with the newly created endpoint. The reason is explained later on. CreateAWSEndpointAsync returns a PushNotificationResponseDto which return the ARN's for Topic, Subscription & Endpoint.
You will be able to then send a push notification to a particular topic using SendAWSPushNotificationAsync. It takes 2 parameters
- TopicArn: An array of fcm device tokens to which the notifications need to be sent.
- Payload: The payload is of type SNS. The payload will be converted to a json format: { "APNS": "{"aps":{"alert": "Check out these awesome deals!","url":"www.amazon.com"} }", "APNS_SANDBOX": "{"aps":{"alert": "Check out these awesome deals!","url":"www.amazon.com"} }", "FCM": "{"data":{"message":"Check out these awesome deals!","url":"www.amazon.com"}}", }
PushNotificationSender.SendAWSPushNotificationAsync("<topic arn>", <payload>);
One Signal Sending out Text Push Notifications can be done via 3 ways. Here is a sample for sending out with Filters. You can similarly send for segments or player ids.
PushNotificationSenderFactory.GetOneSignalPushNotificationSender()
.SendOneSignalPushNotificationWithFilters(
new object[]{
new {
field = "tag",
key="email",
relation="=",
value="hello@hello.com"
}
}, // The filters to which push notifications to be sent out
new { en = "Hello Title" }, // The title for the push notification
new { en = "Hello Sub Title" }, // The sub-title for the push notification
new { en = "Hello Message" }, // The message for the push notification
new { path = "/login" }, // Any Other data to be passed in
);
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.1 is compatible. |
-
.NETCoreApp 3.1
- AWSSDK.Core (>= 3.3.103.35)
- AWSSDK.SimpleEmail (>= 3.3.101.41)
- AWSSDK.SimpleNotificationService (>= 3.3.101.60)
- Newtonsoft.Json (>= 12.0.2)
- Plivo (>= 4.7.0)
- Twilio (>= 5.36.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.