Skip to content

AnnA Active Notification (C#/.NET)

AnnA Active Notification is a resource that makes possible for you to send notifications through WhatsApp to a batch of phone numbers.

Using AnnaTemplate class

This class will provide you a simple way to send active notifications to your clients

Examples:

var template = new AnnaTemplate("YOUR_ANNA_ENVIRONMENT_BASE_URL");
template.CompanyHash = "YOURCOMPANYHASH";
template.EncryptionKey = "YOUR_TEMPLATES_ENCRYPTION_KEY";
template.DecryptionKey = "YOUR_TEMPLATES_DECRYPTION_KEY";
template.TemplateName = "TEMPLATE_NAME";
template.TemplateNamespace = "TEMPLATE_NAMESPACE";
template.Notifications = new List<AnnaNotification>(); // List of notification objects that contains PhoneList, PropKeys and PropParms

or

var template = new AnnaTemplate("YOUR_ANNA_ENVIRONMENT_BASE_URL", new AnnaTemplateConfig
{
CompanyHash = "YOURCOMPANYHASH",
EncryptionKey = "YOUR_TEMPLATES_ENCRYPTION_KEY",
DecryptionKey = "YOUR_TEMPLATES_DECRYPTION_KEY",
TemplateName = "TEMPLATE_NAME",
TemplateNamespace = "TEMPLATE_NAMESPACE",
Notifications = new List<AnnaNotification>() // List of notification objects that contains PhoneList, PropKeys and PropParms
});

Send notifications

What you will need:

  • Base URL of your AnnA environment
  • Company hash
  • Encryption and decryption key
  • Template name
  • Template namespace
  • List of phone numbers

Optionally you can set:

  • A media URL to send media files (IMAGE, VIDEO or DOCUMENT)
  • List with the values of variables from the template if your template has any
  • List with parameters for the template if your template has any
  • Delivery date when you want or need to schedule the notification
  • Reference to any notes about this notification
// Create notification
var notification = new AnnaNotification
{
PhoneList = new List<string> { "5511111111111", "5522222222222" }, // List of phonenumbers
MediaUrl = "https://example.com/image.png", // Set this property if you want to send media files (IMAGE, VIDEO or DOCUMENT)
PropKeys = new List<string> { "Variable 1" }, // List with the values of variables from the template
PropParms = new List<PropParm>
{
new PropParm { Alias = "parm1", Value = "value1" },
new PropParm { Alias = "parm2", Value = "value2" }
},
DeliveryDate = new DateTime(2023, 11, 02, 13, 20, 0), // Set this property if you want to schedule the notification
Reference = "Any description you want (max 100 characters)"
};
// Add notification to the list
var notificationsList = new List<AnnaNotification> { notification };
// Create the template, set the configurations and notifications list
// Example of AnnA environment base URL: https://learning.anna.center
var template = new AnnaTemplate("YOUR_ANNA_ENVIRONMENT_BASE_URL", new AnnaTemplateConfig
{
CompanyHash = "YOURCOMPANYHASH",
EncryptionKey = "YOUR_TEMPLATES_ENCRYPTION_KEY",
DecryptionKey = "YOUR_TEMPLATES_DECRYPTION_KEY",
TemplateName = "TEMPLATE_NAME",
TemplateNamespace = "TEMPLATE_NAMESPACE",
ReturnMode = TemplateReturnMode.DEFAULT, // Change to RESUME if you want information about the request instead of a phonelist when sending the notifications
Notifications = notificationsList
});
string response = template.SendNotifications(); // Send the notifications and returns a JSON

Get notification data

When sending notifications with ReturnMode as RESUME, the response will be a RequestID that you can use to get the notification data.

This service will return information about the number of notifications sent, processed and processing.

What you will need:

  • Base URL of your AnnA environment
  • Company hash
  • Encryption and decryption key
  • RequestID
// Create and configure AnnA Template
// Example of AnnA environment base URL: https://learning.anna.center
var template = new AnnaTemplate("YOUR_ANNA_ENVIRONMENT_BASE_URL", new AnnaTemplateConfig
{
CompanyHash = "YOURCOMPANYHASH",
EncryptionKey = "YOUR_TEMPLATES_ENCRYPTION_KEY",
DecryptionKey = "YOUR_TEMPLATES_DECRYPTION_KEY"
});
int requestId = 65; // RequestId from SendNotifications() reponse when ReturnMode is set to "RESUME"
string response = template.GetNotificationData(requestId); // JSON response with the notification data

GetNotificationData Response

The response will be a JSON with the following structure:

{
"RequestId": 1,
"RequestDate": "2023-06-05T16:00:00",
"RequestStatus": "PROCESSED",
"TotalNumberReceived": 4,
"TotalNumberValid": 4,
"TotalNumberSuccess": 4,
"TotalNumberError": 0,
"TotalNumberWaiting": 0,
"TotalNumberCanceled": 0,
"RequestResult": [
{
"RequestSeq": 1,
"RequestPhoneNumber":"111111111",
"RequestStatus":"sent",
"RequestMessage":"OK",
"RequestSentDatetime": "2024-08-05T16:00:00",
"RequestDeliveryDatetime": "2024-08-05T16:00:00",
"RequestReadDatetime": "2024-08-05T16:00:00",
"RequestHasButton": true,
"RequestUserAnswered": true,
"RequestUserAnswer": "Sim",
"SentKeys": [
{
"Description": "NOME",
"Value": "Giuliano"
}
],
"SentParms": [
{
"Cod": "CPF",
"Value": "11111111111"
},
{
"Cod": "RG",
"Value": "11111111-1"
},
]
},
{
"RequestSeq": 1,
"RequestPhoneNumber": "222222222",
"RequestStatus": "sent",
"RequestMessage": "OK",
"RequestSentDatetime": "2024-08-05T16:00:00",
"RequestDeliveryDatetime": "2024-08-05T16:00:00",
"RequestReadDatetime": "2024-08-05T16:00:00",
"RequestHasButton": true,
"RequestUserAnswered": true,
"RequestUserAnswer": "Sim",
"SentKeys": [
{
"Description": "NOME",
"Value": "Giuliano"
}
],
"SentParms": [
{
"Cod": "CPF",
"Value": "11111111111"
},
{
"Cod": "RG",
"Value": "11111111-1"
},
]
},
{
"RequestSeq": 2,
"RequestPhoneNumber": "333333333",
"RequestStatus": "sent",
"RequestMessage": "OK",
"RequestSentDatetime": "2024-08-05T16:00:00",
"RequestDeliveryDatetime": "2024-08-05T16:00:00",
"RequestReadDatetime": "2024-08-05T16:00:00",
"RequestHasButton": true,
"RequestUserAnswered": true,
"RequestUserAnswer": "Sim",
"SentKeys": [
{
"Description": "NOME",
"Value": "Giuliano"
}
],
"SentParms": [
{
"Cod": "CPF",
"Value": "11111111111"
},
{
"Cod": "RG",
"Value": "11111111-1"
},
]
},
{
"RequestSeq": 2,
"RequestPhoneNumber": "444444444",
"RequestStatus":"sent",
"RequestMessage":"OK",
"RequestSentDatetime": "2024-08-05T16:00:00",
"RequestDeliveryDatetime": "2024-08-05T16:00:00",
"RequestReadDatetime": "2024-08-05T16:00:00",
"RequestHasButton": true,
"RequestUserAnswered": true,
"RequestUserAnswer": "Sim",
"SentKeys": [
{
"Description": "NOME",
"Value": "Giuliano"
}
],
"SentParms": [
{
"Cod": "CPF",
"Value": "11111111111"
},
{
"Cod": "RG",
"Value": "11111111-1"
},
]
}
]
}
  • Possible values for base RequestStatus:
    • CANCELED
    • QUEUED
    • PROCESSED
    • PROCESSING
  • Possible values for RequestResult Status:
    • canceled
    • waiting
    • sent
    • delivered
    • failed