Pular para o conteúdo

Buscar informações do envio

Quando o envio de notificações é feito com ReturnMode em RESUME, a resposta será um RequestID que poderá ser utilizado para buscar os dados das notificações

Esse serviço irá retornar informações sobre o número de notificações enviadas, processadas e que ainda estão processando

Variáveis POST

  • HASH: Hash da empresa onde o template está registrado
  • ANNAEXEC: O IV que foi gerado, esse deve ser utilizado para encriptação dos valores de outras variáveis
  • SentId: O ID que foi retornado ao enviar as notificações com ReturnMode = RESUME

Resposta

  • A resposta é uma string encriptada da seguinte forma:
    • DadosEncriptados + IV + NovoIvEncriptado
  • A estrutura desencriptada será a seguinte:
    {
    "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"
    },
    {
    "RequestSeq": 1,
    "RequestPhoneNumber": "222222222",
    "RequestStatus": "sent",
    "RequestMessage": "OK"
    },
    {
    "RequestSeq": 2,
    "RequestPhoneNumber": "333333333",
    "RequestStatus": "sent",
    "RequestMessage": "OK"
    },
    {
    "RequestSeq": 2,
    "RequestPhoneNumber": "444444444",
    "RequestStatus":"sent",
    "RequestMessage":"OK"
    }
    ]
    }
  • Valores para o RequestStatus base:
    • CANCELED
    • QUEUED
    • PROCESSED
    • PROCESSING
  • Valores para o status de RequestResult:
    • canceled
    • waiting
    • sent
    • delivered
    • failed

Exemplos

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 sentId = "NOTIFICATION_ID";
string sentIdEncriptado = Encrypt3DES(sentId, EncKey, IV);
string dadosPost = "HASH=" + Uri.EscapeDataString(Hash);
dadosPost += "&ANNAEXEC=" + Uri.EscapeDataString(IV);
dadosPost += "&sentId=" + Uri.EscapeDataString(sentIdEncriptado);
byte[] dados = Encoding.UTF8.GetBytes(dadosPost);
string url = "https://YOUR_ANNA_URL/aannagetnotificationdata.aspx";
WebRequest requisicaoWeb = WebRequest.Create(url);
requisicaoWeb.Method = "POST";
requisicaoWeb.ContentType = "application/x-www-form-urlencoded";
requisicaoWeb.ContentLength = dados.Length;
Stream dataStream = requisicaoWeb.GetRequestStream();
dataStream.Write(dados, 0, dados.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 novoIVEncriptado = responseFromServer.Substring(responseFromServer.IndexOf(IV));
novoIVEncriptado = novoIVEncriptado.Replace(IV, "");
string retornoEncriptado = responseFromServer.Substring(0, responseFromServer.IndexOf(IV));
string novoIV = Decrypt3DES(novoIVEncriptado, EncKey, IV);
string retorno = Decrypt3DES(retornoEncriptado, DecKey, novoIV);
response.Close();
return retorno;
}
else
{
response.Close();
return responseFromServer;
}
}
}