Usando scripts e tarefas de servidor e Google Workspace para gerenciar KPIs – um estudo de caso

Há alguns meses, a Vtiger apresentou o Scripts e trabalhos de servidor recurso na plataforma VTAP. Este artigo explora uma aplicação prática desse recurso e mostra como a equipe Vtiger o utiliza internamente para manter os membros da equipe informados sobre seus principais indicadores de desempenho (KPIs).

Desafio: Manter as equipes atualizadas sobre os KPIs

A equipe de engenharia da Vtiger é composta por unidades menores com foco em desempenho, segurança, experiência do usuário e problemas do cliente. Cada equipe tem seu próprio conjunto de KPIs para acompanhar o progresso em relação às metas. Para garantir que todos permaneçam informados, queríamos uma forma de atualizar regularmente as equipes sobre suas metas e desempenho atual.

Solução: Google Spaces e scripts e trabalhos de servidor VTAP

Utilizamos o Google Workspace para comunicação interna, incluindo Google Chats e Grupos do Google. Cada equipe possui um Google Space dedicado com membros que influenciam diretamente as métricas e são responsáveis ​​pelo alcance das metas.

O Google Chats oferece webhooks para envio de mensagens automatizadas para o Spaces. Você pode configurar esses webhooks navegando até Configurações do espaço > Aplicativos e integrações > Webhooks > Adicionar webhook.

Para cada equipe, criamos um Espaço dedicado. Por exemplo, o grupo Ferrari rastreia problemas de desempenho capturados por ferramentas internas e relatados pelos clientes. Estas questões são categorizadas por impacto e recebem níveis de prioridade com ponderações correspondentes. Os problemas críticos que afetam vários usuários ou servidores recebem o peso mais alto (por exemplo, 10 pontos), enquanto os problemas restritos a usuários ou recursos específicos recebem o peso mais baixo (por exemplo, 5 pontos). Agregamos todos os problemas relatados e calculamos uma pontuação de índice. Uma pontuação mais elevada indica uma maior necessidade de resolução, enquanto uma pontuação mais baixa significa um progresso positivo.

A frequência de atualização de cada equipe varia de acordo com seu fluxo de trabalho. As equipes de atendimento ao cliente exigem atualizações diárias às 10h para ficarem por dentro dos problemas críticos. As equipes de desempenho, cujo trabalho envolve análise e validação, recebem atualizações duas vezes por semana para permitir uma investigação completa antes de lançar as correções.

Criando um trabalho agendado para atualizações diárias

Veja como configuramos um trabalho no servidor para lembrar a equipe de atendimento ao cliente sobre sua pontuação todos os dias às 10h:

  1. Navegue até o aplicativo Platform no menu principal e selecione Server Jobs.
  2. Crie um novo trabalho de servidor. Eles funcionam de forma semelhante aos cron jobs e têm um limite de execução de dois minutos.

Funcionalidade de trabalho de servidor

Exigência: envie uma notificação diária sobre o índice de problemas do cliente para o Google Space.

Solução:

  • Aproveitamos as APIs de serviço da web do Vtiger para acessar os dados do relatório. 
  • Um relatório personalizado no Vtiger foi criado para contar os problemas em aberto categorizados por prioridade.
  • Problemas foram relatados no módulo Tarefas do Vtiger.
  • O script do servidor utilizou APIs HTTP do VTAP para acessar o relatório e buscar dados no formato JSON.
  • As pontuações foram calculadas e agregadas e foi elaborado um template para envio das informações ao webhook do Space.
  • Finalmente, as APIs HTTP do VTAP dentro do trabalho do servidor transmitiram os detalhes para o Espaço.
  • Observação: Mais será discutido sobre as novas APIs de serviços da web nos próximos meses.

Agendamento: A frequência do trabalho do servidor garante a entrega oportuna de informações ao grupo.

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

 

Benefícios

Essa abordagem automatizou o processo de notificação das equipes sobre seus KPIs. Atualmente, buscamos garantir que todos permaneçam informados e focados em alcançar seus objetivos.

Também ajuda a melhorar a eficiência e a produtividade de suas equipes.

 

Benefícios

Essa abordagem automatizou o processo de notificação das equipes sobre seus KPIs. Atualmente, buscamos garantir que todos permaneçam informados e focados em alcançar seus objetivos.

Também ajuda a melhorar a eficiência e a produtividade de suas equipes.

 
 
 

Em breve no VTAP

 
 

O módulo Data Connector Designer oferece interface de usuário e ajuda na integração com outros aplicativos.

Você pode ver os dados do aplicativo na interface do Vtiger sem armazenar os dados no Vtiger. Você também pode habilitar uma maneira mais segura e fácil de implementar fluxos de automação que dependem de dados externos sem copiar os dados para o CRM.

Fique ligado para saber mais sobre isso nos próximos meses.

 

O módulo Data Connector Designer oferece interface de usuário e ajuda na integração com outros aplicativos.

Você pode ver os dados do aplicativo na interface do Vtiger sem armazenar os dados no Vtiger. Você também pode habilitar uma maneira mais segura e fácil de implementar fluxos de automação que dependem de dados externos sem copiar os dados para o CRM.

Fique ligado para saber mais sobre isso nos próximos meses.

 
 

Inscreva-se para receber as últimas atualizações!