Używanie skryptów i zadań serwera oraz Google Workspace do zarządzania wskaźnikami KPI – studium przypadku

Kilka miesięcy temu Vtiger wprowadził Skrypty i zadania serwera funkcja dostępna na platformie VTAP. W tym artykule omówiono praktyczne zastosowanie tej funkcji i pokazano, w jaki sposób zespół Vtiger wykorzystuje ją wewnętrznie, aby informować członków zespołu o ich kluczowych wskaźnikach wydajności (KPI).

Wyzwanie: Aktualizowanie zespołów w zakresie KPI

Zespół inżynierów Vtiger składa się z mniejszych jednostek skupiających się na wydajności, bezpieczeństwie, doświadczeniu użytkownika i problemach klientów. Każdy zespół ma swój własny zestaw wskaźników KPI umożliwiających śledzenie postępów w realizacji celów. Aby mieć pewność, że wszyscy będą na bieżąco informowani, chcieliśmy mieć możliwość regularnego informowania zespołów o ich celach i bieżących wynikach.

Rozwiązanie: Skrypty i zadania serwerów Google Spaces i VTAP

Do komunikacji wewnętrznej wykorzystujemy Google Workspace, w tym Google Chat i Grupy dyskusyjne Google. Każdy zespół ma dedykowaną przestrzeń Google, w której znajdują się członkowie, którzy bezpośrednio wpływają na wskaźniki i są odpowiedzialni za realizację celów.

Czaty Google oferują webhooki umożliwiające wysyłanie automatycznych wiadomości do Spaces. Możesz skonfigurować te elementy webhook, przechodząc do opcji Ustawienia przestrzeni > Aplikacje i integracje > Elementy webhook > Dodaj element webhook.

Dla każdego zespołu stworzyliśmy dedykowaną Przestrzeń. Na przykład grupa Ferrari śledzi problemy z wydajnością wychwytywane przez narzędzia wewnętrzne i zgłaszane przez klientów. Zagadnienia te są kategoryzowane według wpływu i przypisane są im poziomy priorytetów z odpowiednimi wagami. Najwyższą wagę (np. 10 punktów) otrzymują krytyczne problemy dotyczące wielu użytkowników lub wielu serwerów, podczas gdy problemy ograniczające się do określonych użytkowników lub funkcji otrzymują niższą wagę (np. 5 punktów). Agregujemy wszystkie zgłoszone problemy i obliczamy wynik indeksu. Wyższy wynik wskazuje na większą potrzebę rozwiązania, podczas gdy niższy wynik oznacza pozytywny postęp.

Częstotliwość aktualizacji dla każdego zespołu różni się w zależności od jego przepływu pracy. Zespoły zajmujące się kontaktami z klientami wymagają codziennych aktualizacji o godzinie 10:00, aby być na bieżąco z krytycznymi problemami. Zespoły ds. wydajności, których praca obejmuje analizę i weryfikację, otrzymują aktualizacje dwa razy w tygodniu, aby umożliwić dokładne zbadanie problemu przed wydaniem poprawek.

Tworzenie zaplanowanego zadania codziennych aktualizacji

Oto jak skonfigurowaliśmy zadanie po stronie serwera, aby codziennie o 10:00 przypominać zespołowi obsługującemu klienta o jego wyniku:

  1. Przejdź do aplikacji Platforma w menu głównym i wybierz Zadania serwera.
  2. Utwórz nowe zadanie serwera. Działają one podobnie do zadań cron i mają dwuminutowy limit wykonania.

Funkcjonalność zadania serwera

Wymaganie: wysyłaj codzienne powiadomienia o indeksie problemów klientów do Google Space.

Rozwiązanie:

  • Wykorzystaliśmy interfejsy API usług internetowych Vtiger, aby uzyskać dostęp do danych raportów. 
  • Utworzono niestandardowy raport w Vtiger, aby zliczyć otwarte problemy podzielone na kategorie według priorytetu.
  • Problemy zgłoszono w module Zadania Vtigera.
  • Skrypt serwera wykorzystywał interfejsy API HTTP firmy VTAP w celu uzyskania dostępu do raportu i pobrania danych w formacie JSON.
  • Wyniki zostały obliczone i zagregowane, a także przygotowano szablon do przesyłania informacji do webhooka Space.
  • Na koniec interfejsy API HTTP VTAP w ramach zadania serwera przesłały szczegóły do ​​przestrzeni.
  • Uwaga: W nadchodzących miesiącach omówione zostanie więcej na temat nowych interfejsów API usług sieciowych.

Scheduling: Częstotliwość zadań serwera zapewnia terminowe dostarczanie informacji do grupy.

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

 

Zalety

Takie podejście zautomatyzowało proces powiadamiania zespołów o ich KPI. Obecnie używamy, aby zapewnić, że każdy jest na bieżąco i koncentruje się na osiągnięciu swoich celów.

Pomaga także poprawić wydajność i produktywność Twoich zespołów.

 

Zalety

Takie podejście zautomatyzowało proces powiadamiania zespołów o ich KPI. Obecnie używamy, aby zapewnić, że każdy jest na bieżąco i koncentruje się na osiągnięciu swoich celów.

Pomaga także poprawić wydajność i produktywność Twoich zespołów.

 
 
 

Już wkrótce na VTAP

 
 

Moduł Data Connector Designer oferuje interfejs użytkownika i pomaga w integracji z innymi aplikacjami.

Możesz zobaczyć dane aplikacji w interfejsie Vtiger bez przechowywania danych w Vtiger. Możesz także włączyć bezpieczniejszy i łatwiejszy sposób wdrażania przepływów automatyzacji zależnych od danych zewnętrznych bez kopiowania danych do CRM.

Bądź na bieżąco, aby dowiedzieć się więcej na ten temat w nadchodzących miesiącach.

 

Moduł Data Connector Designer oferuje interfejs użytkownika i pomaga w integracji z innymi aplikacjami.

Możesz zobaczyć dane aplikacji w interfejsie Vtiger bez przechowywania danych w Vtiger. Możesz także włączyć bezpieczniejszy i łatwiejszy sposób wdrażania przepływów automatyzacji zależnych od danych zewnętrznych bez kopiowania danych do CRM.

Bądź na bieżąco, aby dowiedzieć się więcej na ten temat w nadchodzących miesiącach.

 
 

Zarejestruj się, aby otrzymywać najnowsze aktualizacje!