Pular para o conteúdo

Notificações Ativas AnnA

AnnA Active Notification é um recurso que possibilita o envio de notificações via WhatsApp para um grupo de números de telefone.

Utilizando a classe AnnaTemplate

Esta classe oferecerá a você uma maneira simples de enviar notificações ativas para seus clientes.

ArrayList<AnnaNotification> notifications = new ArrayList<>();
AnnaTemplate template = new AnnaTemplate("YOUR_ANNA_ENVIRONMENT_BASE_URL",
AnnaTemplateConfig.builder()
.companyHash("YOURCOMPANYHASH")
.encryptionKey("YOUR_TEMPLATES_ENCRYPTION_KEY")
.decryptionKey("YOUR_TEMPLATES_DECRYPTION_KEY")
.templateName("TEMPLATE_NAME")
.templateNamespace("TEMPLATE_NAMESPACE")
.notifications(notifications)
.build()
);

Enviando notificações

O que você vai precisar:

  • URL base do seu ambiente AnnA
  • Hash da empresa
  • Chave de criptografia e descriptografia
  • Nome do template
  • Namespace do template
  • Lista de números de telefone

Opcionalmente, você pode definir:

  • Lista com os valores das variáveis do template, se o seu template tiver alguma
  • Lista com parâmetros para o template, se o seu template tiver algum
  • Data de entrega para agendar a notificação, se desejado ou necessário
  • Referência para quaisquer notas sobre esta notificação
// Lista de números de telefone
var phoneList = new ArrayList<String>();
phoneList.add("5511111111111");
phoneList.add("5522222222222");
// Lista com os valores das variáveis do template (opcional)
var propKeys = new ArrayList<String>();
propKeys.add("var1");
propKeys.add("var2");
// Lista com parâmetros para o template (opcional)
var propParms = new ArrayList<PropParm>();
propParms.add(
PropParm.builder()
.alias("parm1")
.value("Hello")
.build()
);
// Criar a notificação
var notification = AnnaNotification.builder()
.phoneList(phoneList)
.propKeys(propKeys)
.propParms(propParms)
.DeliveryDate(LocalDateTime.of(2033, 10, 30, 12, 30))
.Reference("Any annotations you want, if you want")
.build();
// Adicionar a notificação à lista
ArrayList<AnnaNotification> notifications = new ArrayList<>();
notifications.add(notification);
// Configurar o template
AnnaTemplate template = new AnnaTemplate("YOUR_ANNA_ENVIRONMENT_BASE_URL",
AnnaTemplateConfig.builder()
.companyHash("YOURCOMPANYHASH")
.encryptionKey("YOUR_TEMPLATES_ENCRYPTION_KEY")
.decryptionKey("YOUR_TEMPLATES_DECRYPTION_KEY")
.templateName("TEMPLATE_NAME")
.templateNamespace("TEMPLATE_NAMESPACE")
.returnMode(TemplateReturnMode.DEFAULT)
.notifications(notifications)
.build()
);
// Enviar as notificações
String result = template.sendNotifications();
// Exibir o resultado
System.out.println(result);

Como obter os dados da notificação

Ao enviar notificações com ReturnMode como RESUME, a resposta será um RequestID que você pode usar para obter os dados da notificação.

Este serviço fornecerá informações sobre o número de notificações enviadas, processadas e em processamento.

O que você vai precisar

  • URL base do seu ambiente AnnA
  • Hash da empresa
  • Chave de criptografia e descriptografia
  • RequestID
// Crie e configure um template AnnA
// Exemplo de URL base do ambiente AnnA: https://learning.anna.center
AnnaTemplate template = new AnnaTemplate("YOUR_ANNA_ENVIRONMENT_BASE_URL",
AnnaTemplateConfig.builder()
.companyHash("YOURCOMPANYHASH")
.encryptionKey("YOUR_TEMPLATES_ENCRYPTION_KEY")
.decryptionKey("YOUR_TEMPLATES_DECRYPTION_KEY")
.build()
);
int requestId = 65; // RequestId da resposta do sendNotifications() quando ReturnMode é definido como "RESUME"
String response = template.getNotificationData(requestId); // Resposta JSON com os dados da notificação
System.out.println(response);

GetNotificationData - Resposta

A resposta do método GetNotificationData é uma string JSON com a seguinte estrutura:

{
"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"
},
]
}
]
}
  • Valores possíveis para o RequestStatus base:
    • CANCELED
    • QUEUED
    • PROCESSED
    • PROCESSING
  • Valores possíveis para o status do RequestResult:
    • canceled
    • waiting
    • sent
    • delivered
    • failed