Saltearse al contenido

Enviando notificaciones activas

Este servicio ejecuta plantillas de notificación y las envía a los usuarios a través de WhatsApp.

Variables POST

  • HASH: Hash de la empresa donde el template está registrado.
  • ANNAEXEC: El IV que se generó, debe utilizarse para encriptar los valores de otras variables.
  • Name: Nombre de la plantilla que se enviará.
  • Namespace: Espacio de nombres de la plantilla que se enviará.
  • TemplateData: Contiene la lista de números de teléfono y macros/variables para la plantilla que se enviará.
    • DeliveryDate: (Opcional) Use esta propiedad para programar el envío. El formato debe ser completado como YYYYMMDDHHMMSS
    • Reference: (Opcional) Utiliza este campo para tomar notas sobre el envío.
    • PhoneList: Lista de teléfonos separados por punto y coma, por ejemplo, “551199999999;551388888888”
    • Prop_Keys: Contiene la lista de macros que serán reemplazadas y sus valores.
      • PropName: ID de la macro. Puede ser usada como {{0}}, {{1}}, {{2}},…
        NOTA: El espacio {{0}} está reservado para archivos de medios y el valor debe ser una URL
      • PropValue: Valor que reemplazará a macro.
    • Prop_Parms: Contiene la lista de parámetros que se agregarán a la ejecución.
      • PropName: Nombre del parámetro
      • PropValue: Valor del parámetro
  • ReturnMode: (Opcional) Define el tipo de retorno. Si no se proporciona, se considerará el valor por defecto.
    • DEFAULT: Retorna una lista de teléfonos con sus respectivos estados de envío.
    • RESUME: Devuelve un JSON con datos del envío.
      • RequestStatus: Estado del envío
        • CANCELED: Todas las notificaciones han sido canceladas.
        • QUEUED: En cola para enviar
        • PROCESSED: Todas las notificaciones han sido enviadas.
        • PROCESSING: El sistema está enviando las notificaciones.

Ejemplos

Algunos ejemplos de cómo implementar el envío de notificaciones de AnnA:

public static string Execute_WebService()
{
string DecKey = "DECRYPTION_KEY";
string EncKey = "ENCRYPTION_KEY";
string Hash = "COMPANY_HASH";
// Generate new IV
TripleDESCryptoServiceProvider auxTdes = new TripleDESCryptoServiceProvider();
auxTdes.GenerateIV();
byte[] IVArray = auxTdes.IV;
string IV = Convert.ToBase64String(IVArray);
string templateName = "TEMPLATE_NAME";
string encryptedTemplateName = Encrypt(templateName, EncKey, IV);
string templateNamespace = "TEMPLATE_NAMESPACE";
string encryptedTemplateNamespace = Encrypt(templateNamespace, EncKey, IV);
string json = "[{";
json += "\"PhoneList\":\"950691561;914694745\",";
json += "\"Prop_Keys\":";
json += " [";
json += " {";
json += " \"PropName\":\"{{1}}\",";
json += " \"PropValue\":\"AnnA\"";
json += " },";
json += " {";
json += " \"PropName\":\"{{2}}\",";
json += " \"PropValue\":\"10/07/2021\"";
json += " }";
json += " ],";
json += "\"Prop_Parms\":";
json += " [";
json += " {";
json += " \"PropName\":\"var\",";
json += " \"PropValue\":\"AnnA\"";
json += " }";
json += " ]},";
json += " {";
json += "\"PhoneList\":\"977225248;971195982\",";
json += "\"Prop_Keys\":";
json += " [";
json += " {";
json += " \"PropName\":\"{{2}}\",";
json += " \"PropValue\":\"10/08/2021\"";
json += " }";
json += " ],";
json += "\"Prop_Parms\":";
json += " [";
json += " {";
json += " \"PropName\":\"var\",";
json += " \"PropValue\":\"AnnA\"";
json += " }";
json += " ]";
json += "}]";
string encryptedTemplateData = Encrypt(json, EncKey, IV);
string postData = "HASH=" + Uri.EscapeDataString(Hash);
postData += "&ANNAEXEC=" + Uri.EscapeDataString(IV);
postData += "&Name=" + Uri.EscapeDataString(encryptedTemplateName);
postData += "&Namespace=" + Uri.EscapeDataString(encryptedTemplateNamespace);
postData += "&TemplateData=" + Uri.EscapeDataString(encryptedTemplateData);
byte[] data = Encoding.UTF8.GetBytes(postData);
string url = "https://YOUR_ANNA_URL/aannatemplatenotification.aspx";
WebRequest requisicaoWeb = WebRequest.Create(url);
requisicaoWeb.Method = "POST";
requisicaoWeb.ContentType = "application/x-www-form-urlencoded";
requisicaoWeb.ContentLength = data.Length;
Stream dataStream = requisicaoWeb.GetRequestStream();
dataStream.Write(data, 0, data.Length);
dataStream.Close();
WebResponse response = requisicaoWeb.GetResponse();
using (dataStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
if (responseFromServer.Contains(IV))
{
string newEncryptedIv = responseFromServer.Substring(responseFromServer.IndexOf(IV));
newEncryptedIv = newEncryptedIv.Replace(IV, "");
string encryptedResponse = responseFromServer.Substring(0, responseFromServer.IndexOf(IV));
string newIv = Decrypt(newEncryptedIv, EncKey, IV);
string responseData = Decrypt(encryptedResponse, DecKey, newIv);
response.Close();
return responseData;
}
else
{
response.Close();
return responseFromServer;
}
}
}