Utilizzo di script e processi del server e Google Workspace per gestire i KPI: un caso di studio

Alcuni mesi fa, Vtiger ha introdotto il file Script e lavori del server funzionalità nella piattaforma VTAP. Questo articolo esplora un'applicazione pratica di questa funzionalità e mostra come il team Vtiger la utilizza internamente per mantenere informati i membri del team sui loro indicatori chiave di prestazione (KPI).

La sfida: mantenere i team aggiornati sui KPI

Il team di ingegneri Vtiger comprende unità più piccole focalizzate su prestazioni, sicurezza, esperienza dell'utente e problemi dei clienti. Ogni squadra ha il proprio set di KPI per monitorare i progressi rispetto agli obiettivi. Per garantire che tutti rimangano informati, volevamo un modo per aggiornare regolarmente i team sui loro obiettivi e sulle prestazioni attuali.

Soluzione: script e processi di Google Spaces e VTAP Server

Utilizziamo Google Workspace per le comunicazioni interne, inclusi Google Chat e Google Gruppi. Ogni team ha uno spazio Google dedicato con membri che influenzano direttamente le metriche e sono responsabili del raggiungimento degli obiettivi.

Google Chats offre webhook per l'invio di messaggi automatizzati a Spaces. Puoi configurare questi webhook accedendo a Impostazioni spazio > App e integrazioni > Webhook > Aggiungi webhook.

Per ogni squadra abbiamo creato uno Spazio dedicato. Ad esempio, il gruppo Ferrari tiene traccia dei problemi di performance rilevati dagli strumenti interni e segnalati dai clienti. Questi problemi sono classificati in base all’impatto e ai livelli di priorità assegnati con i pesi corrispondenti. I problemi critici che interessano più utenti o server ricevono il peso più alto (ad esempio, 10 punti), mentre i problemi limitati a utenti o funzionalità specifici ricevono un peso inferiore (ad esempio, 5 punti). Aggreghiamo tutti i problemi segnalati e calcoliamo un punteggio indice. Un punteggio più alto indica una maggiore necessità di risoluzione, mentre un punteggio più basso indica un progresso positivo.

La frequenza di aggiornamento per ciascun team varia in base al flusso di lavoro. I team a contatto con i clienti richiedono aggiornamenti giornalieri alle 10:00 per rimanere aggiornati sui problemi critici. I team addetti alle prestazioni, il cui lavoro prevede analisi e convalida, ricevono aggiornamenti due volte a settimana per consentire un'indagine approfondita prima di rilasciare le correzioni.

Creazione di un lavoro pianificato per gli aggiornamenti giornalieri

Ecco come configuriamo un lavoro lato server per ricordare al team a contatto con il cliente il proprio punteggio ogni giorno alle 10:00:

  1. Passare all'app Piattaforma nel menu principale e selezionare Lavori server.
  2. Crea un nuovo lavoro server. Funzionano in modo simile ai lavori cron e hanno un limite di esecuzione di due minuti.

Funzionalità del lavoro server

Requisito: invia una notifica giornaliera sull'indice dei problemi del cliente a Google Space.

Soluzione:

  • Abbiamo sfruttato le API dei servizi Web di Vtiger per accedere ai dati dei report. 
  • È stato creato un rapporto personalizzato in Vtiger per contare i problemi aperti classificati in base alla priorità.
  • I problemi sono stati segnalati nel modulo Attività di Vtiger.
  • Lo script del server utilizzava le API HTTP di VTAP per accedere al report e recuperare i dati in formato JSON.
  • I punteggi sono stati calcolati e aggregati ed è stato preparato un modello per inviare le informazioni al webhook Space.
  • Infine, le API HTTP di VTAP all'interno del lavoro del server hanno trasmesso i dettagli allo Space.
  • Nota: Nei prossimi mesi si discuterà di più sulle nuove API dei servizi Web.

Programmazione: La frequenza del lavoro del server garantisce la consegna tempestiva delle informazioni al gruppo.

Code


  

asyncfunctionmain() { //Type your code here let url = "https://YOUR_ACCOUNT_URL/api/records/data?module=Reports&id=REPORT_ID"; var USERNAME = 'VTIGER_USERNAME'; var PASSWORD = 'VTIGER_PASSWORD'; var authHeader = btoa(USERNAME+":"+PASSWORD); var options = {           headers: {Authorization: 'Basic '+authHeader}       } var response = await vtap.macro.http.get(url, options); var body = JSON.parse(response.body); //extract information from the report. let data = {}; for(let i in body){ if("Bug" === body[i]["Calendar.tasktype"]) {         data[body[i]["Calendar.taskpriority"]] = body[i]["record_count"];     } } if(!data["URGENT"]) data['URGENT']=0; if(!data["High"]) data['High']=0; if(!data["Medium"]) data['Medium']=0; if(!data["Low"]) data['Low']=0; let text = "\n\n Today's open bugs tasks count - "+ newDate().toDateString()+'\n -------------------------------------\n'; text = text + "URGENT Tasks - "+data["URGENT"]+"\n"; text = text + "High Tasks - "+data["High"]+"\n"; text = text + "Medium Tasks - "+data["Medium"]+"\n"; text = text + "Low Tasks - "+data["Low"]+"\n"; text = text + "Performance Index Score : "+ ((10 * parseInt(data["URGENT"])) + (5 * parseInt(data['High'])) + (3 * parseInt(data['Medium']))) + "\n"; var options = {         headers : { 'contentType': 'application/json'         }, 'body' : JSON.stringify({'text':text})     }; let chatWebhookURL = "https://chat.googleapis.com/v1/spaces/zz/messages?key=yyyyyy&token=xxxxx";     vtap.macro.http.post(chatWebhookURL,options); }


  

asyncfunctionmain() { //Type your code here let url = "https://YOUR_ACCOUNT_URL/api/records/data?module=Reports&id=REPORT_ID"; var USERNAME = 'VTIGER_USERNAME'; var PASSWORD = 'VTIGER_PASSWORD'; var authHeader = btoa(USERNAME+":"+PASSWORD); var options = {           headers: {Authorization: 'Basic '+authHeader}       } var response = await vtap.macro.http.get(url, options); var body = JSON.parse(response.body); //extract information from the report. let data = {}; for(let i in body){ if("Bug" === body[i]["Calendar.tasktype"]) {         data[body[i]["Calendar.taskpriority"]] = body[i]["record_count"];     } } if(!data["URGENT"]) data['URGENT']=0; if(!data["High"]) data['High']=0; if(!data["Medium"]) data['Medium']=0; if(!data["Low"]) data['Low']=0; let text = "\n\n Today's open bugs tasks count - "+ newDate().toDateString()+'\n -------------------------------------\n'; text = text + "URGENT Tasks - "+data["URGENT"]+"\n"; text = text + "High Tasks - "+data["High"]+"\n"; text = text + "Medium Tasks - "+data["Medium"]+"\n"; text = text + "Low Tasks - "+data["Low"]+"\n"; text = text + "Performance Index Score : "+ ((10 * parseInt(data["URGENT"])) + (5 * parseInt(data['High'])) + (3 * parseInt(data['Medium']))) + "\n"; var options = {         headers : { 'contentType': 'application/json'         }, 'body' : JSON.stringify({'text':text})     }; let chatWebhookURL = "https://chat.googleapis.com/v1/spaces/zz/messages?key=yyyyyy&token=xxxxx";     vtap.macro.http.post(chatWebhookURL,options); }

 

Vantaggi

Questo approccio ha automatizzato il processo di notifica ai team dei propri KPI. Attualmente, utilizziamo per garantire che tutti rimangano informati e concentrati sul raggiungimento dei propri obiettivi.

Aiuta anche a migliorare l'efficienza e la produttività dei tuoi team.

 

Vantaggi

Questo approccio ha automatizzato il processo di notifica ai team dei propri KPI. Attualmente, utilizziamo per garantire che tutti rimangano informati e concentrati sul raggiungimento dei propri obiettivi.

Aiuta anche a migliorare l'efficienza e la produttività dei tuoi team.

 
 
 

Prossimamente su VTAP

 
 

Il modulo Data Connector Designer offre un'interfaccia utente e aiuta l'integrazione con altre applicazioni.

È possibile visualizzare i dati dell'applicazione all'interno dell'interfaccia Vtiger senza memorizzare i dati in Vtiger. Puoi anche abilitare un modo più semplice e sicuro per implementare flussi di automazione che dipendono da dati esterni senza copiare i dati nel CRM.

Restate sintonizzati per saperne di più nei prossimi mesi.

 

Il modulo Data Connector Designer offre un'interfaccia utente e aiuta l'integrazione con altre applicazioni.

È possibile visualizzare i dati dell'applicazione all'interno dell'interfaccia Vtiger senza memorizzare i dati in Vtiger. Puoi anche abilitare un modo più semplice e sicuro per implementare flussi di automazione che dipendono da dati esterni senza copiare i dati nel CRM.

Restate sintonizzati per saperne di più nei prossimi mesi.

 
 

Iscriviti per ricevere gli ultimi aggiornamenti!