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