You are running a daily stand-up meeting on Zoom with a rolling presenter and you always forget who was presenting the day before?
This project is for you!
CestKiki runs serverless, on the cloud. It uses webhooks to receive notifications about Zoom screen sharings and stores needed infos into an Azure Table. Once a day, it queries the Table to find who was sharing his screen during the stand-up and send a Slack notification.
sequenceDiagram
participant A as Zoom<br><br>WebHook app
participant B as Azure Function<br><br>ZoomWebHookFunction
participant C as Azure<br><br>Tables
participant D as Azure Function<br><br>NotificationFunction
participant E as Slack<br><br>Incoming Webhook
rect rgb(191, 223, 255)
note right of A: Continuously
A->>B: Send sharing_started event
B->>C: Add sharing info entity<br>(user, start time...)
A->>B: Send sharing_ended event
B->>C: Update sharing info entity<br>(end time...)
end
rect rgb(191, 223, 255)
note right of C: Once a day
D->>C: Query sharing entities<br>and find who was sharing<br>his screen during the stand-up
D->>E: Send notification
end
- Create a new Azure Function App (a new Storage account should be automatically created)
- Create a Webhook only app on the Zoom Marketplace
- Use the generated Secret Token for the Azure Function configuration below
- Use the https://[AZURE_FUNCTION_NAME].azurewebsites.net/api/ZoomWebHook URL for the Event notification endpoint
- Enable Event Subscriptions for the following events:
- Participant/Host left meeting
- Meeting Sharing Started
- Meeting Sharing Ended
- Create a new App in your workspace
- Activate the Incoming Webhooks, create a new Webhook for your channel and use the generated URL for the Azure Function configuration below
- Edit the Function App Configuration and add the following settings:
Notification:StandUpTimeZone = Europe/Paris
(Zone ID from https://nodatime.org/TimeZones)Notification:StandUpStartTime = 10:15:00
Notification:StandUpEndTime = 10:30:00
Notification:NotificationTime = 10:30:00
NotificationCron = 0 30 * * * *
(The Azure function should run at the same time as the NotificationTime)Notification:WebHook = https://hooks.slack.com/services/[...]
(Slack Incoming Webhook configured above)Zoom:MonitoredRoom = 123456789
(Zoom room id where the stand-up occurs)Zoom:WebHookSecret = [...]
(Secret Token from Zoom generated above)
- Edit Networking -> Inbound Traffic -> Access restriction and add the Zoom IP ranges
- Deploy CestKiKi app on Azure
CestKiKi requires the following components:
The solution can be loaded and published as-is to the Azure Function App. A fair amount of unit tests are written as debugging Azure Function live could be tedious.