Использование серверных сценариев, заданий и Google Workspace для управления ключевыми показателями эффективности: практический пример

Несколько месяцев назад Vtiger представил Серверные сценарии и задания функция на платформе VTAP. В этой статье рассматривается практическое применение этой функции и демонстрируется, как команда Vtiger использует ее внутри себя, чтобы информировать членов команды об их ключевых показателях эффективности (KPI).

Задача: держать команды в курсе ключевых показателей эффективности

Команда инженеров Vtiger состоит из небольших подразделений, специализирующихся на производительности, безопасности, пользовательском опыте и проблемах клиентов. У каждой команды есть собственный набор ключевых показателей эффективности для отслеживания прогресса в достижении целей. Чтобы гарантировать, что все будут в курсе, нам нужен был способ регулярно информировать команды об их целях и текущей производительности.

Решение: сценарии и задания Google Spaces и сервера VTAP.

Мы используем Google Workspace для внутреннего общения, включая Google Chats и Google Groups. У каждой команды есть выделенное Google Space, участники которого напрямую влияют на показатели и отвечают за достижение целей.

Google Chats предлагает веб-перехватчики для отправки автоматических сообщений в Spaces. Вы можете настроить эти веб-перехватчики, перейдя в «Настройки пространства» > «Приложения и интеграции» > «Веб-перехватчики» > «Добавить веб-перехватчик».

Для каждой команды мы создали отдельное Пространство. Например, группа Ferrari отслеживает проблемы с производительностью, фиксируемые внутренними инструментами и о которых сообщают клиенты. Эти проблемы классифицируются по степени воздействия и им присваиваются уровни приоритета с соответствующими весами. Критические проблемы, затрагивающие нескольких пользователей или серверов, получают наивысший вес (например, 10 баллов), тогда как проблемы, связанные с конкретными пользователями или функциями, получают меньший вес (например, 5 баллов). Мы суммируем все зарегистрированные проблемы и рассчитываем индексную оценку. Более высокий балл указывает на большую потребность в решении проблемы, а более низкий балл означает положительный прогресс.

Частота обновлений для каждой команды зависит от их рабочего процесса. Командам, работающим с клиентами, требуются ежедневные обновления в 10:00, чтобы быть в курсе критических проблем. Группы производительности, чья работа включает в себя анализ и проверку, получают обновления два раза в неделю, что позволяет провести тщательное исследование перед выпуском исправлений.

Создание запланированного задания для ежедневных обновлений

Вот как мы настроили задание на стороне сервера, чтобы каждый день в 10:00 напоминать команде, работающей с клиентами, об их результатах:

  1. Перейдите к приложению «Платформа» в главном меню и выберите «Задания сервера».
  2. Создайте новое задание сервера. Они функционируют аналогично заданиям cron и имеют ограничение на выполнение в две минуты.

Функциональность задания сервера

Требование: отправлять ежедневное уведомление об индексе проблем клиентов в Google Space.

Решение:

  • Мы использовали API-интерфейсы веб-сервисов Vtiger для доступа к данным отчетов. 
  • Пользовательский отчет в Vtiger был создан для подсчета открытых проблем, классифицированных по приоритету.
  • О проблемах сообщалось в модуле «Задачи» Vtiger.
  • Серверный сценарий использовал HTTP API VTAP для доступа к отчету и получения данных в формате JSON.
  • Были подсчитаны и агрегированы баллы, а также подготовлен шаблон для отправки информации в вебхук Space.
  • Наконец, HTTP API VTAP в рамках задания сервера передали детали в Space.
  • Примечание: Больше информации о новых API веб-сервисов будет обсуждаться в ближайшие месяцы.

Календарное Планирование: частота заданий сервера обеспечивает своевременную доставку информации в группу.

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

 

Преимущества

Такой подход автоматизировал процесс уведомления команд об их KPI. В настоящее время мы используем, чтобы каждый оставался в курсе и был сосредоточен на достижении своих целей.

Это также помогает повысить эффективность и производительность ваших команд.

 

Преимущества

Такой подход автоматизировал процесс уведомления команд об их KPI. В настоящее время мы используем, чтобы каждый оставался в курсе и был сосредоточен на достижении своих целей.

Это также помогает повысить эффективность и производительность ваших команд.

 
 
 

Скоро на VTAP

 
 

Модуль Data Connector Designer предлагает пользовательский интерфейс и помогает интегрироваться с другими приложениями.

Вы можете просматривать данные приложения в интерфейсе Vtiger, не сохраняя данные в Vtiger. Вы также можете включить более безопасный и простой способ реализации потоков автоматизации, зависящих от внешних данных, без копирования данных в CRM.

Оставайтесь с нами, чтобы узнать больше об этом в ближайшие месяцы.

 

Модуль Data Connector Designer предлагает пользовательский интерфейс и помогает интегрироваться с другими приложениями.

Вы можете просматривать данные приложения в интерфейсе Vtiger, не сохраняя данные в Vtiger. Вы также можете включить более безопасный и простой способ реализации потоков автоматизации, зависящих от внешних данных, без копирования данных в CRM.

Оставайтесь с нами, чтобы узнать больше об этом в ближайшие месяцы.

 
 

Подпишитесь, чтобы получать последние обновления!