Le applicazioni moderne devono reagire istantaneamente ai cambiamenti. Che si tratti dell’arrivo di una nuova e-mail, dell’aggiornamento di un evento del calendario o dell’eliminazione di un elemento, gli utenti si aspettano che l’interfaccia rimanga sincronizzata senza dover ricorrere ad aggiornamenti manuali.
Per semplificare questo processo, 4D 21 R4 introduce in 4D NetKit un sistema di notifiche unificato sia per Google Workspace che per Microsoft 365. Grazie a un unico modello di programmazione, è possibile sottoscrivere notifiche relative alle modifiche alla posta e al calendario e reagire automaticamente ogni volta che i dati cambiano.
HDI Microsoft Google Notifiche
Uno dei principali vantaggi di 4D NetKit è che le API di notifica funzionano esattamente allo stesso modo indipendentemente dal provider.
Sia che si utilizzi Google o Microsoft 365, le API di notifica hanno lo stesso comportamento:
cs.NetKit.Google.new($myOAuth2Provider).mail.notifier($notification)
cs.NetKit.Office365.new($myOAuth2Provider).mail.notifier($notification)
Lo stesso principio si applica alle notifiche del calendario.
Cosa è possibile monitorare?
4D NetKit consente di sottoscrivere notifiche relative sia alle e-mail che agli eventi del calendario.
È possibile reagire a:
- Creazione
- Modifica
- Cancellazione
di:
- Eventi del calendario
Non appena viene rilevata una modifica, la tua applicazione riceve una notifica e può aggiornare l’interfaccia utente, aggiornare i dati, visualizzare avvisi o attivare una logica di business personalizzata.
Scelta di una modalità di ascolto
Prima di avviare un notificatore, è necessario definire in che modo 4D NetKitrileverà le modifiche.
Sono disponibili due modalità.
Notifiche Webhook in tempo reale
La prima opzione consiste nel consentire a Google o Microsoft di chiamare l’applicazione ogni volta che si verifica una modifica.
Per abilitare questa modalità, specificare una proprietà endPoint contenente l’URL di callback:
$parameter.endPoint:="https://mydomain.com/notifications"
L’endpoint deve:
- Essere accessibile pubblicamente
- Utilizzare un nome di dominio valido
- Essere protetto da un certificato SSL attendibile
- Disporre di un certificato corrispondente al nome di dominio
Una volta configurato, Google o Microsoft invieranno una notifica direttamente alla tua applicazione ogni volta che una risorsa sottoscritta subisce una modifica.
Questo approccio garantisce i tempi di reazione più rapidi possibili ed è ideale per le applicazioni web e le soluzioni ospitate nel cloud.
// 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"
}
]
Si noti che Gmail richiede un parametro aggiuntivo: topicName, che specifica l’argomento di Google Cloud Pub/Sub utilizzato dall’API di Gmail per pubblicare le notifiche relative alle modifiche alla casella di posta.
Monitoraggio basato su timer
Se non si specifica un endpoint, 4D NetKitpassa automaticamente al monitoraggio basato su timer.
In questa modalità, 4D NetKit interroga periodicamente le API di Google o Microsoft per rilevare eventuali modifiche.
$parameter.timer:=60
In questo esempio, 4D NetKit verifica la presenza di aggiornamenti ogni 60 secondi. Questo approccio è particolarmente utile quando: L’applicazione è in esecuzione su una rete locale Non è disponibile un endpoint HTTPS pubblico Si preferisce un modello di distribuzione più semplice
La modalità timer viene abilitata automaticamente ogni volta che non viene specificato alcun endpoint.
Definizione delle funzioni di callback
Che si tratti di monitorare e-mail o eventi del calendario, il modello di callback è identico.
Un approccio pratico consiste nel creare una classe dedicata che centralizzi la gestione di tutte le notifiche.
Ad esempio, è possibile creare una 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")
Nell’esempio sopra riportato, non è stata dichiarata alcuna proprietà endPoint. Le notifiche, pertanto, vengono eseguite in modalità di monitoraggio basata su timer, utilizzando l’intervallo predefinito di 30 secondi, a meno che non si imposti un valore personalizzato per il timer. Se si desidera utilizzare le notifiche webhook in tempo reale, è necessario definire 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")
Avvio di una sottoscrizione alle notifiche
Una volta definiti i callback, la creazione di un notificatore è semplice:
// 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()
Conclusione
Le notifiche di 4D NetKit semplificano la sincronizzazione della vostra applicazione con i dati di Google Workspace e Microsoft 365. Grazie al supporto sia per le modifiche alle e-mail che al calendario, potete sviluppare rapidamente applicazioni reattive che rispondono all’attività degli utenti in tempo reale.
Ma soprattutto, il modello di programmazione rimane identico per tutti i provider, consentendovi di scrivere la logica di notifica una sola volta e di utilizzarla ovunque.
Al momento non è possibile lasciare commenti su questo post.