Verwenden von Serverskripten und Jobs sowie Google Workspace zum Verwalten von KPIs – eine Fallstudie

Vor einigen Monaten stellte Vtiger das vor Serverskripte und Jobs Funktion in der VTAP-Plattform. In diesem Artikel wird eine praktische Anwendung dieser Funktion untersucht und gezeigt, wie das Vtiger-Team sie intern verwendet, um Teammitglieder über ihre Key Performance Indicators (KPIs) auf dem Laufenden zu halten.

Herausforderung: Teams über KPIs auf dem Laufenden halten

Das Vtiger-Engineering-Team besteht aus kleineren Einheiten, die sich auf Leistung, Sicherheit, Benutzererfahrung und Kundenprobleme konzentrieren. Jedes Team verfügt über eigene KPIs, um den Fortschritt im Vergleich zu den Zielen zu verfolgen. Um sicherzustellen, dass alle auf dem Laufenden bleiben, wollten wir die Teams regelmäßig über ihre Ziele und aktuelle Leistung informieren.

Lösung: Google Spaces und VTAP Server-Skripte und -Jobs

Wir nutzen Google Workspace für die interne Kommunikation, einschließlich Google Chats und Google Groups. Jedes Team verfügt über einen eigenen Google Space mit Mitgliedern, die direkten Einfluss auf die Kennzahlen haben und für das Erreichen der Ziele verantwortlich sind.

Google Chats bietet Webhooks zum Senden automatisierter Nachrichten an Spaces. Sie können diese Webhooks konfigurieren, indem Sie zu Space-Einstellungen > Apps und Integrationen > Webhooks > Webhook hinzufügen navigieren.

Für jedes Team haben wir einen eigenen Bereich geschaffen. Beispielsweise verfolgt die Ferrari-Gruppe Leistungsprobleme, die von internen Tools erfasst und von Kunden gemeldet werden. Diese Probleme werden nach ihrer Auswirkung kategorisiert und ihnen werden Prioritätsstufen mit entsprechenden Gewichtungen zugewiesen. Kritische Probleme, die mehrere Benutzer oder Server betreffen, erhalten die höchste Gewichtung (z. B. 10 Punkte), während Probleme, die auf bestimmte Benutzer oder Funktionen beschränkt sind, eine geringere Gewichtung erhalten (z. B. 5 Punkte). Wir fassen alle gemeldeten Probleme zusammen und berechnen einen Indexwert. Ein höherer Wert weist auf einen größeren Lösungsbedarf hin, während ein niedrigerer Wert auf einen positiven Fortschritt hinweist.

Die Aktualisierungshäufigkeit für jedes Team variiert je nach Arbeitsablauf. Teams mit Kundenkontakt benötigen tägliche Updates um 10:00 Uhr, um bei kritischen Problemen den Überblick zu behalten. Leistungsteams, deren Arbeit Analyse und Validierung umfasst, erhalten zweimal pro Woche Updates, um eine gründliche Untersuchung vor der Veröffentlichung von Korrekturen zu ermöglichen.

Erstellen eines geplanten Jobs für tägliche Updates

So richten wir einen serverseitigen Job ein, um das kundenorientierte Team jeden Tag um 10:00 Uhr an seinen Punktestand zu erinnern:

  1. Navigieren Sie im Hauptmenü zur Plattform-App und wählen Sie Server-Jobs aus.
  2. Erstellen Sie einen neuen Serverjob. Diese funktionieren ähnlich wie Cron-Jobs und haben eine Ausführungsbeschränkung von zwei Minuten.

Server-Job-Funktionalität

Anforderung: Senden Sie täglich eine Benachrichtigung über den Kundenproblemindex an Google Space.

Lösung:

  • Wir haben die Webservice-APIs von Vtiger genutzt, um auf Berichtsdaten zuzugreifen. 
  • In Vtiger wurde ein benutzerdefinierter Bericht erstellt, um offene Probleme nach Priorität kategorisiert zu zählen.
  • Im Aufgabenmodul von Vtiger wurden Probleme gemeldet.
  • Das Serverskript nutzte die HTTP-APIs von VTAP, um auf den Bericht zuzugreifen und Daten im JSON-Format abzurufen.
  • Die Ergebnisse wurden berechnet und aggregiert und eine Vorlage zum Senden der Informationen an den Space-Webhook vorbereitet.
  • Schließlich übermittelten die HTTP-APIs von VTAP innerhalb des Serverjobs die Details an den Space.
  • Hinweis: In den kommenden Monaten wird mehr über die neuen Webservice-APIs diskutiert.

Planung: Die Server-Job-Häufigkeit gewährleistet eine zeitnahe Informationsbereitstellung an die Gruppe.

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

 

Vorteile

Dieser Ansatz automatisierte den Prozess der Benachrichtigung der Teams über ihre KPIs. Derzeit sorgen wir dafür, dass jeder informiert bleibt und sich auf das Erreichen seiner Ziele konzentriert.

Es trägt auch dazu bei, die Effizienz und Produktivität Ihrer Teams zu verbessern.

 

Vorteile

Dieser Ansatz automatisierte den Prozess der Benachrichtigung der Teams über ihre KPIs. Derzeit sorgen wir dafür, dass jeder informiert bleibt und sich auf das Erreichen seiner Ziele konzentriert.

Es trägt auch dazu bei, die Effizienz und Produktivität Ihrer Teams zu verbessern.

 
 
 

Demnächst auf VTAP erhältlich

 
 

Das Data Connector Designer-Modul bietet eine Benutzeroberfläche und hilft bei der Integration mit anderen Anwendungen.

Sie können Anwendungsdaten innerhalb der Vtiger-Schnittstelle anzeigen, ohne die Daten in Vtiger zu speichern. Sie können auch eine sicherere und einfachere Möglichkeit zur Implementierung von Automatisierungsabläufen ermöglichen, die auf externen Daten basieren, ohne die Daten in das CRM zu kopieren.

Bleiben Sie dran, um in den kommenden Monaten mehr darüber zu erfahren.

 

Das Data Connector Designer-Modul bietet eine Benutzeroberfläche und hilft bei der Integration mit anderen Anwendungen.

Sie können Anwendungsdaten innerhalb der Vtiger-Schnittstelle anzeigen, ohne die Daten in Vtiger zu speichern. Sie können auch eine sicherere und einfachere Möglichkeit zur Implementierung von Automatisierungsabläufen ermöglichen, die auf externen Daten basieren, ohne die Daten in das CRM zu kopieren.

Bleiben Sie dran, um in den kommenden Monaten mehr darüber zu erfahren.

 
 

Melden Sie sich an, um die neuesten Updates zu erhalten!