From 4d205d7699af6daa3081d7eb18e0f9e96decdab9 Mon Sep 17 00:00:00 2001 From: Norm Rasmussen Date: Thu, 4 Aug 2022 20:54:12 -0400 Subject: [PATCH] Webhooks GAS Script --- CustomerNotes.md | 188 +++++++++++++++++++++++++++++++--- Google_Scripts/WCAWebhooks.gs | 47 +++++++++ 2 files changed, 219 insertions(+), 16 deletions(-) create mode 100644 Google_Scripts/WCAWebhooks.gs diff --git a/CustomerNotes.md b/CustomerNotes.md index 24431185..d63f25d6 100644 --- a/CustomerNotes.md +++ b/CustomerNotes.md @@ -22,6 +22,24 @@ Integrations are generally phase 2, but are any necessary from day 1? What is a deal breaker if we don't deliver? (if you can't support SSO, I won't sign, vs start with os and then move to SSO) What is required for launch? +## Meeting with StateServ re: PowerBI Integration + - Daniel is the owner/founder of StateServ + - Mostly compliance training housed in NP + - Cecilia and Daniel work with direct services part of the company + - Want to build courses for CS employees, medical techs + - This division takes up 80% of the company + - Working with director of DBI + - Not just Northpass is expanding, everything is growing + - Daniel started in 2019 + - They were serving 15k patients, as of 7/1 over 30k + - Integrated 4 other businesses in the division + - Original division of company is saas/software company + +Goal of this project: + * Provide on demand learning for new hires, continued training, assesments + * Cecilia creating master question banks + * + * # JJSV @@ -56,7 +74,14 @@ What is required for launch? Events should be figured out by our demo - * [ ] Add featured content spotlight box that moves the 4 boxes down * [ ] Can we showcase videos on the main page with a little modal? -* [ ] +* [ ] Add all groups as per Kaitlyn's info +* [ ] Wants to start putting in content by the 15th August. +* [ ] Create and send document for Melinda's instructions to add categories. + +In person events should change register button to "remind me" +Melinda will then add the 3rd party links into the event description +Figure out events setup + ### Notes @@ -191,8 +216,8 @@ Thinks the user experience isnt the best, espeically as it relates to SCORM Conflicting table of contents with SCORM files Both have Continue buttons at the bottom of the screen which is confusing They refuse to put in milestones for some reason -- [ ] How can we provide the smoothest SCORM format and experience? -- [ ] Send him best practices for SCORM files +- [X] How can we provide the smoothest SCORM format and experience? +- [X] Send him best practices for SCORM files Shot down my questions about what HIS ideal SCORM experience is. What settings need to be set to export and allow auto-full screen in SCORM? @@ -204,8 +229,8 @@ And a microlearning approach From a learner's perspective, if he's authenticated as himself, how can we serve up perscriptive learning? Other things to share: -- [ ] Screenshots of other academies -- [ ] Vidyard +- [X] Screenshots of other academies +- [X] Vidyard Send best practices Examples - vineyard recordings @@ -216,7 +241,30 @@ New browser window - They cannot check if they actually completed the SCORM package or not How to check in analytics He wants to add timeframe for when they have to complete next training? -Quizzes - how can we take out SCORM data? +Quizzes - how can we take out SCORM data + +## Siying Mark SCORM Asks +Embedding Questions regarding SCORM files + - They want to see what quick solutions there are to adding a RISE course in Northpass + - Want to start creating those courses in RISE + - Per Course Settings (such as full screen) + +* What are their needs? + - For a RISE course, once they hit start, auto-full screen + - No Northpass TOC + - Only make Continue Button once a certain percentage completion happens + - Hide any milestone messaging + - Complete/Incomplete, + - Optimal experience is: + - Once Rise Starts, All NP controls hide + - once they complete the SCORM file, continue is hit auto, or auto end of course screen + - They won't be using quizzes consistently + - CLick here to end course should go back to main dashboard + - SCORM Analytic is no longer there for Siying + +* Question from Mark + - .corp and .com issues with Okta + - ## Siying regarding Mark & Temperature Check - Big Focus is scalability @@ -702,19 +750,67 @@ Can we setup a login of button groups? Course Scripts : a need/vision, they want to read transcript of courses Can we add duration on course card within LP overview page? +Events are a new push + - Talks from Hub Managers + - Already fruitful for netherlands + - Will be used by other markets + - Main district (Germany) were not involved in the events originally, and now they will be aligning on strategy + - + +Analytics, need hub based metrics to give to the managers + +Soner - one of the priorities are the reports he asked for +** Quiz hiding the score: ** + - If it is too hard, don't worry + - This is a one-time case + - Not super high priorty + - Doesn't make sense to push for this right now + +Front end layout - let them know what is possible +Next steps is categories, groups, and labels +They need to clean these labels, make them easier to understand +Filter by certain category labels i.e Marketing courses, etc + +HM = Hub Manager +IA = Inventory Associate + +Hub manager should any analytical view of the rest of the countries roles, aka they should be a manager in Northpass +From a learning perspective, there are no sub groups, HMs dont take Shift Lead Courses + +They should then filter by +Two main labels for learning, Market Label & Language Label +They need it to be cleaner for the backend +People should be able to see multiple languages + +There are multiple flows - HQ Cascade Content & HQ Diverse Content +Soner's suggestion, Each course is a contact in your phone and then you add different fields, so must have is just a label or category or ribbon +The most important thing is a clean view to see what their first/must complete courses are +All courses exist within this Matrix of circle courses +Eventually, they want hub managers to have a clean view of their employees, aka their hub +SAP is the goal for single source of truth for data +Zapier, Quinyx, BambooHR, +Okta is coming for SSO for access + +_Overall Deadline_ +Everything before Q4, SSO, Frontend +Context, they want to have everything setup in Northpass by Q4 because they are working on sustainability titles and their launch can be really clean in Q4. + ## Tasks - [ ] Need to Hide some courses for an offline assesment -- [ ] In person assesment, so score must be hidden - pending not resolved -- [ ] contact SE for hiding score - 7 quizzes across 7 different courses -- [ ] Turn on search bar for them -- [ ] Demo Workflows +- [-] In person assesment, so score must be hidden - pending not resolved +- [-] contact SE for hiding score - 7 quizzes across 7 different courses +- [X] Turn on search bar for them +- [X] Demo Workflows - [ ] Quiz as Survey functionality and best practices -- [ ] Milestones? +- [X] Milestones? - [ ] Intro to Marek for Communications Beta -- [ ] Map out workflow for duplicate or changing email addresses -- [ ] Intro to Clementine and Simon +- [X] Map out workflow for duplicate or changing email addresses +- [X] Intro to Clementine and Simon - [ ] Intro to KJ for Analytics changes? +- [ ] ILTs are the most important from Netherlands meeting +- [ ] Map their categories presentation to Northpass best practices +- [ ] ### Notes @@ -981,9 +1077,10 @@ Flow: Each district could be 2 people or 30 people Are they enabling their distcits to forward the emails along? - -Suggestions: - o +## Tasks +* [ ] /app/course, change text to: "Courses | Great Courses from the comfort of your home or classroom." +* [ ] Add personalized message to /app. +* [ ] # Hello Insights Paula is main POC @@ -1056,6 +1153,24 @@ Questions from Andres: - Mapping the content in the experience? Similar to Skuid Experience - [ ] Send webSDKs, embed, webhook, and documentation +## Content And Creation +* [ ] They want a recommendation engine +* [ ] Search bar is important to show first +* [ ] They want a saving mechanism - under your courses, there would be a "saved" option + +After onboarding experience, they will likely not enroll everyone into course. So enrolled would be the same as saved +They also want "time left" in the page (not really possible) + +List of recommended courses - could this be categories? + +Modality - information architecture of courses + - Live, On-Demand, Mixed (or Blended) + - Schedule, Timedate, Timezone + - Some clients request a live learning opportunity + - Phase 1 - back burner +Availability (Blocked, Active, Full/Invisible) should also be part of the course struture +Pre-Requisites + # AIIM Workflows Demo @@ -1086,3 +1201,44 @@ Skuid Progress Bar disappeared, needs to be completed by October Directly from janel: How can we dynamically associate learning paths or "next course" based in learning path. They don't want to create an individual course per group per learning path to have + +# Scenario +* New order of cards: + * Scenario Basics + * Core Concepts + * Bulk Upload + * Leave Navigation & the last one +* LX Changes + * Make the viewer wider to fill screen + * Mobile optimization is less important + * Most clients will be on a computer +* Wistia and Quality? + * Would prefer higher quality even if it loads slower + * Most likely learners will have high speed internet, they want higher quality +* Banner + * Dashboard & Events header text is lower than Home + * Home is how it should look +* URL: academy.scenariocloud.com +* + +# H1 + +- Open Access might solve some of their issues +- Reconsidering their relationship with Okta + - Okta tripled their cost and doubled the per person cost + - Okta authenticates their entire application and for internal use +- This change will be the most pressing for when they decide + - Should be decided on within 6 weeks +- CSM team uses Catalyst +- Sales team uses Salesforce + +* Haven't really used Northpass reporting +* They contractually provide a training system +* They need to figure out how to get the right training to the right people at the right time +* Smaller clients get 1 in person training, the rest via Northpass +* QBR show utilization or change - increase enrollments and actually starting the course +* They need to track if no one is logging in and how to reach out + +Within a month Marceline will have some additional information and it seems like good news for her (a promotion?) + +Next meeting: September 2, 2022 diff --git a/Google_Scripts/WCAWebhooks.gs b/Google_Scripts/WCAWebhooks.gs new file mode 100644 index 00000000..4da61039 --- /dev/null +++ b/Google_Scripts/WCAWebhooks.gs @@ -0,0 +1,47 @@ +function doGet(e) { + return HtmlService.createHtmlOutput("get request received"); +} + +//this is a function that fires when the webapp receives a POST request +function doPost(e) { + var params = JSON.stringify(e.postData.contents); + params = JSON.parse(params); + var now = new Date(); + var timeAdded = Utilities.formatDate(now,'America/New_York','MM/dd/yyyy'); + + var learnerName = params.substring(params.indexOf('{"name":"') + 7, params.lastIndexOf('"email"')); + learnerName = learnerName.slice(learnerName.indexOf('"') + 1, learnerName.lastIndexOf('"'),); + Logger.log("Name = " + learnerName); + + var learnerEmail = params.substring(params.indexOf('"email":"') + 9, params.lastIndexOf('"full_name"')); + learnerEmail = learnerEmail.slice(learnerName.indexOf('"') + 1, learnerEmail.lastIndexOf('"'),); + Logger.log("Email = " + learnerEmail); + + var courseName = params.substring(params.indexOf('"course_name":"') + 4, params.lastIndexOf('"attributes"')); + courseName = courseName.slice(courseName.indexOf('"') + 3, courseName.lastIndexOf('"'),); + Logger.log("Course = " + courseName); + + var activityName = params.substring(params.indexOf('"title":"') + 4, params.lastIndexOf('"course_name"')); + activityName = activityName.slice(activityName.indexOf('"') + 3, activityName.lastIndexOf('"'),); + Logger.log("Activity = " + activityName); + + var dateCompleted = params.substring(params.indexOf('"updated_at":"') + 4, params.lastIndexOf('"activated_at"')); + dateCompleted = dateCompleted.slice(dateCompleted.indexOf('"') + 3, dateCompleted.lastIndexOf('"'),); + Logger.log("Completed on = " + dateCompleted); + + var sheet = SpreadsheetApp.getActiveSheet(); + var lastRow = Math.max(sheet.getLastRow(),1); + + sheet.insertRowAfter(lastRow); + sheet.getRange(lastRow + 1, 1).setValue(timeAdded); + sheet.getRange(lastRow + 1, 2).setValue(params); + sheet.getRange(lastRow + 1, 3).setValue(learnerName); + sheet.getRange(lastRow + 1, 4).setValue(learnerEmail); + sheet.getRange(lastRow + 1, 5).setValue(courseName); + sheet.getRange(lastRow + 1, 6).setValue(activityName); + sheet.getRange(lastRow + 1, 7).setValue(dateCompleted); + + + SpreadsheetApp.flush(); + return HtmlService.createHtmlOutput("post request received"); +}