Espera-se que as aplicações modernas reajam instantaneamente às alterações. Quer seja a chegada de um novo e-mail, a atualização de um evento do calendário ou a eliminação de um elemento, os utilizadores esperam que a interface se mantenha sincronizada sem necessidade de atualizações manuais.
Para simplificar este processo, o 4D 21 R4 introduz um sistema de notificações unificado no 4D NetKit, tanto para o Google Workspace como para o Microsoft 365. Com um único modelo de programação, pode subscrever alterações no e-mail e no calendário e reagir automaticamente sempre que os dados forem alterados.
HDI Microsoft Google Notificações
Uma das principais vantagens do 4D NetKit é que as APIs de notificação funcionam exatamente da mesma forma, independentemente do fornecedor.
Quer utilize o Google ou o Microsoft 365, as APIs de notificação partilham o mesmo comportamento:
cs.NetKit.Google.new($myOAuth2Provider).mail.notifier($notification)
cs.NetKit.Office365.new($myOAuth2Provider).mail.notifier($notification)
O mesmo princípio aplica-se às notificações de calendário.
O que pode monitorizar?
O 4D NetKit permite-lhe subscrever alterações tanto em e-mails como em eventos de calendário.
Pode reagir a:
- Criação
- Modificação
- Eliminação
de:
- E-mails
- Eventos do calendário
Assim que for detetada uma alteração, a sua aplicação recebe uma notificação e pode atualizar a interface do utilizador, atualizar dados, apresentar alertas ou acionar lógica de negócio personalizada.
Escolher um modo de escuta
Antes de iniciar um notificador, é necessário definir como o 4D NetKitirá detetar alterações.
Estão disponíveis dois modos.
Notificações Webhook em tempo real
A primeira opção consiste em permitir que a Google ou a Microsoft contactem a sua aplicação sempre que ocorrer uma alteração.
Para ativar este modo, forneça uma propriedade endPoint que contenha o URL de callback:
$parameter.endPoint:="https://mydomain.com/notifications"
O endpoint deve:
- Estar acessível ao público
- Utilizar um nome de domínio válido
- Estar protegido por um certificado SSL fiável
- Ter um certificado que corresponda ao nome de domínio
Quando configurado, a Google ou a Microsoft notificará diretamente a sua aplicação sempre que um recurso subscrito sofrer alterações.
Esta abordagem proporciona o tempo de resposta mais rápido possível e é ideal para aplicações web e soluções alojadas na nuvem.
// Microsoft Graph webhook handler
[
{
"class": "NetKit.GraphNotificationHandler",
"method": "getResponse",
"regexPattern": "/4dnk-graph-notification",
"verbs": "post"
}
]
// Google webhook handler
[
{
"class": "NetKit.GraphNotificationHandler",
"method": "getResponse",
"regexPattern": "/4dnk-google-notification",
"verbs": "post"
}
]
Note que o Gmail requer um parâmetro adicional: topicName, que especifica o tópico do Google Cloud Pub/Sub utilizado pela API do Gmail para publicar notificações de alterações na caixa de correio.
Monitorização baseada em temporizador
Se não fornecer um endpoint, o 4D NetKitmuda automaticamente para a monitorização baseada em temporizador.
Neste modo, o 4D NetKit consulta periodicamente as APIs do Google ou da Microsoft para detetar alterações.
$parameter.timer:=60
Neste exemplo, o 4D NetKit verifica se há atualizações a cada 60 segundos. Esta abordagem é particularmente útil quando: A sua aplicação está a ser executada numa rede local Não está disponível um ponto de extremidade HTTPS público Prefere um modelo de implementação mais simples
O modo de temporizador é ativado automaticamente sempre que não for fornecido nenhum ponto de extremidade.
Definição de funções de callback
Quer esteja a monitorizar e-mails ou eventos do calendário, o modelo de callback é idêntico.
Uma abordagem prática consiste em criar uma classe dedicada que centralize todo o tratamento de notificações.
Por exemplo, pode criar uma classe NetKitEventNotification:
// This function is triggered when a mail or calendar event is created
Function onCreate($provider : Object; $event : Object)
var $resource:=$event.type="mailCreated" ? "Email" : "Calendar event"
ALERT("You have a new "+$resource+" event")
// This function is triggered when a mail or calendar event is deleted
Function onDelete($provider : Object; $event : Object)
var $resource:=$event.type="mailDeleted" ? "Email" : "Calendar event"
ALERT("A "+$resource+" has been deleted")
// This function is triggered when a mail or calendar event is modified
Function onModify($provider : Object; $event : Object)
var $resource:=$event.type="mailModified" ? "Email" : "Calendar event"
ALERT("A "+$resource+" event has been modified")
No exemplo acima, não é declarada nenhuma propriedade endPoint. As notificações, portanto, são executadas no modo de monitorização baseado em temporizador, utilizando o intervalo predefinido de 30 segundos, a menos que defina um valor personalizado para o temporizador. Se pretender utilizar Notificações Webhook em Tempo Real, é necessário definir um endPoint:
// Set this URL to use Real-Time Webhook Notifications
property endPoint:="https://mydomain.com/googlenotifications"
// Gmail webhook mode only: Google Cloud Pub/Sub topic used for mailbox notifications
property topicName:="projects/my-project/topics/gmail-notifications"
// This function is triggered when a mail or calendar event is created
Function onCreate($provider : Object; $event : Object)
var $resource:=$event.type="mailCreated" ? "Email" : "Calendar event"
ALERT("You have a new "+$resource+" event")
// This function is triggered when a mail or calendar event is deleted
Function onDelete($provider : Object; $event : Object)
var $resource:=$event.type="mailDeleted" ? "Email" : "Calendar event"
ALERT("A "+$resource+" has been deleted")
// This function is triggered when a mail or calendar event is modified
Function onModify($provider : Object; $event : Object)
var $resource:=$event.type="mailModified" ? "Email" : "Calendar event"
ALERT("A "+$resource+" event has been modified")
Iniciar uma subscrição de notificações
Depois de definidas as suas chamadas de retorno, criar um notificador é simples:
// Create a notification handler instance.
var $notification:=cs.NetKitEventNotification.new()
// Create a Gmail notifier using the OAuth2 provider and the handler.
var $gmailNotification:=cs.NetKit.Google.new($myOAuth2Provider).mail.notifier($notification)
// Start listening for Gmail notifications.
$gmailNotification.start()
// Create a Google Calendar notifier using the same handler.
var $calendarNotification:=cs.NetKit.Google.new($myOAuth2Provider).calendar.notifier($notification)
// Start listening for Calendar notifications.
$calendarNotification.start()
Conclusão
As notificações do 4D NetKit facilitam a sincronização da sua aplicação com os dados do Google Workspace e do Microsoft 365. Com suporte tanto para alterações de e-mail como de calendário, pode criar rapidamente aplicações responsivas que reagem à atividade do utilizador em tempo real.
O melhor de tudo é que o modelo de programação permanece idêntico em todos os fornecedores, permitindo-lhe escrever a sua lógica de notificação uma única vez e utilizá-la em qualquer lugar.
De momento, não é possível deixar comentários nesta publicação.