使用服务器脚本、作业和 Google Workspace 管理 KPI - 案例研究

几个月前,Vtiger 推出了 服务器脚本和作业 VTAP 平台中的功能。本文探讨了此功能的实际应用,并展示了 Vtiger 团队如何在内部使用它来让团队成员了解其关键绩效指标 (KPI)。

挑战:让团队了解 KPI 的最新情况

Vtiger 工程团队由较小的单位组成,专注于性能、安全性、用户体验和客户问题。每个团队都有自己的一套 KPI 来跟踪目标进度。为了确保每个人都能及时了解情况,我们希望有一种方法可以定期更新团队的目标和当前绩效。

解决方案:Google Spaces 和 VTAP 服务器脚本和作业

我们利用 Google Workspace 进行内部沟通,包括 Google Chats 和 Google Groups。每个团队都有一个专门的 Google Space,其成员直接影响指标并负责实现目标。

Google Chats 提供用于向 Spaces 发送自动消息的网络钩子。您可以通过导航到空间设置 > 应用程序和集成 > Webhooks > 添加 Webhook 来配置这些 Webhook。

我们为每个团队创建了一个专用的空间。例如,法拉利集团跟踪内部工具捕获并由客户报告的性能问题。这些问题按影响进行分类,并指定优先级和相应的权重。影响多个用户或服务器的关键问题获得最高权重(例如,10分),而仅限于特定用户或功能的问题获得较低权重(例如,5分)。我们汇总所有报告的问题并计算指数得分。较高的分数表示更需要解决问题,而较低的分数表示积极的进展。

每个团队的更新频率根据其工作流程而有所不同。面向客户的团队需要每天上午 10:00 进行更新,以掌握关键问题。性能团队的工作涉及分析和验证,每周两次收到更新,以便在发布修复程序之前进行彻底调查。

创建每日更新的计划作业

以下是我们如何设置服务器端作业来提醒面向客户的团队每天上午 10:00 的分数:

  1. 导航到主菜单中的平台应用程序,然后选择服务器作业。
  2. 创建一个新的服务器作业。这些功能与 cron 作业类似,并且有两分钟的执行限制。

服务器作业功能

需求:向 Google Space 发送有关客户问题索引的每日通知。

解决方案:

  • 我们利用 Vtiger 的 Web 服务 API 来访问报告数据。 
  • Vtiger 中创建了一个自定义报告来统计按优先级分类的未决问题。
  • Vtiger 的任务模块中报告了问题。
  • 服务器脚本利用 VTAP 的 HTTP API 来访问报告并获取 JSON 格式的数据。
  • 计算并汇总分数,并准备好模板用于将信息发送到 Space webhook。
  • 最后,服务器作业中的 VTAP 的 HTTP API 将详细信息传输到 Space。
  • 注意: 未来几个月我们将更多地讨论新的 Web 服务 API。

生产计划:服务器工作频率确保及时向群组传递信息。

代码


  

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 上推出

 
 

数据连接器设计器模块提供用户界面并帮助与其他应用程序集成。

您可以在Vtiger界面中查看应用程序数据,而无需将数据存储在Vtiger中。您还可以采用更安全、更简单的方式来实施依赖于外部数据的自动化流程,而无需将数据复制到 CRM。

请继续关注,在未来几个月了解更多相关信息。

 

数据连接器设计器模块提供用户界面并帮助与其他应用程序集成。

您可以在Vtiger界面中查看应用程序数据,而无需将数据存储在Vtiger中。您还可以采用更安全、更简单的方式来实施依赖于外部数据的自动化流程,而无需将数据复制到 CRM。

请继续关注,在未来几个月了解更多相关信息。

 
 

注册以接收最新更新!