Las aplicaciones modernas deben reaccionar al instante ante cualquier cambio. Ya sea que llegue un nuevo correo electrónico, se actualice un evento del calendario o se elimine un elemento, los usuarios esperan que la interfaz se mantenga sincronizada sin necesidad de actualizarla manualmente.
Para simplificar este proceso, 4D 21 R4 introduce un sistema de notificaciones unificado en 4D NetKit tanto para Google Workspace como para Microsoft 365. Con un único modelo de programación, puedes suscribirse a los cambios en el correo y el calendario y reaccionar automáticamente cada vez que los datos cambien.
HDI Microsoft Google Notificaciones
Una de las principales ventajas de 4D NetKit es que las API de notificación funcionan exactamente igual independientemente del proveedor.
Tanto si utiliza Google como Microsoft 365, las API de notificación comparten el mismo comportamiento:
cs.NetKit.Google.new($myOAuth2Provider).mail.notifier($notification)
cs.NetKit.Office365.new($myOAuth2Provider).mail.notifier($notification)
El mismo principio se aplica a las notificaciones de calendario.
¿Qué puede supervisar?
4D NetKit le permite suscribirse a los cambios tanto en correos electrónicos como en eventos del calendario.
Puede reaccionar ante:
- Creación
- Modificación
- Eliminación
de:
- Correos electrónicos
- Eventos del calendario
En cuanto se detecta un cambio, su aplicación recibe una notificación y puede actualizar la interfaz de usuario, refrescar los datos, mostrar alertas o activar lógica de negocio personalizada.
Elección de un modo de escucha
Antes de iniciar un notificador, debe definir cómo detectará 4D NetKit los cambios.
Hay dos modos disponibles.
Notificaciones de webhook en tiempo real
La primera opción consiste en permitir que Google o Microsoft llamen a su aplicación cada vez que se produzca un cambio.
Para activar este modo, especifica una propiedad `endPoint` que contenga la URL de retrollamada:
$parameter.endPoint:="https://mydomain.com/notifications"
El punto final debe:
- Ser de acceso público
- Utilizar un nombre de dominio válido
- Estar protegido con un certificado SSL de confianza
- Disponer de un certificado que coincida con el nombre de dominio
Una vez configurado, Google o Microsoft notificarán directamente a su aplicación cada vez que se produzca un cambio en un recurso suscrito.
Este enfoque ofrece el tiempo de respuesta más rápido posible y es ideal para aplicaciones web y soluciones alojadas en la nube.
// 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"
}
]
Tenga en cuenta que Gmail requiere un parámetro adicional: topicName, que especifica el tema de Google Cloud Pub/Sub utilizado por la API de Gmail para publicar notificaciones de cambios en el buzón.
Supervisión basada en temporizador
Si no se proporciona un punto final, 4D NetKit cambia automáticamente a la supervisión basada en temporizador.
En este modo, 4D NetKit consulta periódicamente las API de Google o Microsoft para detectar cambios.
$parameter.timer:=60
En este ejemplo, 4D NetKit comprueba si hay actualizaciones cada 60 segundos. Este enfoque resulta especialmente útil cuando:
- su aplicación se ejecuta en una red local
- no hay un punto final HTTPS público disponible
- prefiere un modelo de despliegue más sencillo
El modo de temporizador se activa automáticamente siempre que no se especifique ningún punto final.
Definición de las funciones de retrollamada
Tanto si supervisa correos electrónicos como eventos de calendario, el modelo de retrollamada es idéntico.
Un enfoque práctico consiste en crear una clase dedicada que centralice toda la gestión de notificaciones.
Por ejemplo, puede crear una clase `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")
En el ejemplo anterior, no se ha declarado ninguna propiedad endPoint. Por lo tanto, las notificaciones se ejecutan en modo de supervisión basado en temporizador, utilizando el intervalo predeterminado de 30 segundos, a menos que se defina un valor de temporizador personalizado. Si desea utilizar notificaciones webhook en tiempo real, es necesario definir un 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 una suscripción a notificaciones
Una vez definidas las funciones de retrollamada, crear un notificador es muy sencillo:
// 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()
Conclusión
Las notificaciones de 4D NetKit facilitan la sincronización de su aplicación con los datos de Google Workspace y Microsoft 365. Gracias a la compatibilidad tanto con los cambios en el correo electrónico como en el calendario, puede crear rápidamente aplicaciones receptivas que reaccionen a la actividad de los usuarios en tiempo real.
Y lo mejor de todo es que el modelo de programación es idéntico en todos los proveedores, lo que le permite escribir la lógica de notificaciones una sola vez y utilizarla en cualquier lugar.
Por el momento, no se pueden publicar comentarios en esta entrada.