Använda serverskript och jobb och Google Workspace för att hantera KPI:er - en fallstudie

För några månader sedan introducerade Vtiger Serverskript och jobb funktion i VTAP-plattformen. Den här artikeln utforskar en praktisk tillämpning av den här funktionen och visar hur Vtiger-teamet använder den internt för att hålla teammedlemmarna informerade om deras Key Performance Indicators (KPI:er).

Utmaning: Hålla team uppdaterade om nyckeltal

Vtigers ingenjörsteam består av mindre enheter med fokus på prestanda, säkerhet, användarupplevelse och kundfrågor. Varje team har sin egen uppsättning nyckeltal för att spåra framsteg mot mål. För att säkerställa att alla håller sig informerade ville vi ha ett sätt att uppdatera teamen om sina mål och nuvarande prestationer regelbundet.

Lösning: Google Spaces och VTAP-serverskript och jobb

Vi använder Google Workspace för intern kommunikation, inklusive Google Chats och Google Groups. Varje team har ett dedikerat Google Space med medlemmar som direkt påverkar mätvärdena och ansvarar för att uppnå målen.

Google Chats erbjuder webhooks för att skicka automatiska meddelanden till Spaces. Du kan konfigurera dessa webhooks genom att navigera till Space Settings > Appar och integrationer > Webhooks > Add Webhook.

För varje lag skapade vi ett dedikerat utrymme. Till exempel spårar Ferrari-gruppen prestandaproblem som fångas upp av interna verktyg och rapporteras av kunder. Dessa frågor är kategoriserade efter påverkan och tilldelas prioritetsnivåer med motsvarande viktning. Kritiska problem som påverkar flera användare eller servrar får den högsta vikten (t.ex. 10 poäng), medan problem som är begränsade till specifika användare eller funktioner får lägre vikt (t.ex. 5 poäng). Vi samlar alla rapporterade problem och beräknar ett indexpoäng. En högre poäng indikerar ett större behov av upplösning, medan en lägre poäng betyder positiva framsteg.

Uppdateringsfrekvensen för varje team varierar beroende på deras arbetsflöde. Kundinriktade team kräver dagliga uppdateringar klockan 10:00 för att hålla koll på kritiska problem. Prestandateam, vars arbete involverar analys och validering, får uppdateringar två gånger i veckan för att möjliggöra en grundlig undersökning innan de släpper korrigeringar.

Skapa ett schemalagt jobb för dagliga uppdateringar

Så här ställer vi in ​​ett jobb på serversidan för att påminna det kundinriktade teamet om deras poäng varje dag klockan 10:00:

  1. Navigera till plattformsappen i huvudmenyn och välj Serverjobb.
  2. Skapa ett nytt serverjobb. Dessa fungerar på samma sätt som cron-jobb och har en exekveringsgräns på två minuter.

Serverjobbfunktionalitet

Krav: Skicka ett dagligt meddelande om kundproblemindex till Google Space.

Lösning:

  • Vi utnyttjade Vtigers webbtjänst API:er för att komma åt rapportdata. 
  • En anpassad rapport i Vtiger skapades för att räkna öppna problem kategoriserade efter prioritet.
  • Problem rapporterades inom Vtigers modul Uppgifter.
  • Serverskriptet använde VTAP:s HTTP API:er för att komma åt rapporten och hämta data i JSON-format.
  • Poäng beräknades och aggregerades, och en mall utarbetades för att skicka informationen till Space webhook.
  • Slutligen överförde VTAP:s HTTP API:er inom serverjobbet detaljerna till Space.
  • Obs: Mer kommer att diskuteras om de nya webbtjänstens API:er under de kommande månaderna.

Schemaläggning: Serverns jobbfrekvens säkerställer snabb informationsleverans till gruppen.

Koda


  

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); }

 

Fördelar

Detta tillvägagångssätt automatiserade processen att meddela team om deras nyckeltal. För närvarande använder vi för att säkerställa att alla håller sig informerade och fokuserade på att uppnå sina mål.

Det hjälper också till att förbättra effektiviteten och produktiviteten för dina team.

 

Fördelar

Detta tillvägagångssätt automatiserade processen att meddela team om deras nyckeltal. För närvarande använder vi för att säkerställa att alla håller sig informerade och fokuserade på att uppnå sina mål.

Det hjälper också till att förbättra effektiviteten och produktiviteten för dina team.

 
 
 

Kommer snart på VTAP

 
 

Data Connector Designer-modulen erbjuder användargränssnitt och hjälper till att integrera med andra applikationer.

Du kan se applikationsdata i Vtiger-gränssnittet utan att lagra data i Vtiger. Du kan också möjliggöra ett säkrare och enklare sätt att implementera automatiseringsflöden som är beroende av extern data utan att kopiera data till CRM.

Håll utkik för att lära dig mer om detta under de kommande månaderna.

 

Data Connector Designer-modulen erbjuder användargränssnitt och hjälper till att integrera med andra applikationer.

Du kan se applikationsdata i Vtiger-gränssnittet utan att lagra data i Vtiger. Du kan också möjliggöra ett säkrare och enklare sätt att implementera automatiseringsflöden som är beroende av extern data utan att kopiera data till CRM.

Håll utkik för att lära dig mer om detta under de kommande månaderna.

 
 

Registrera dig för att få de senaste uppdateringarna!