Skip to main content

Daily Scrum Automation using Standup Bot

Conducting daily standups can be a significant challenge for remote teams, especially when employees are spread across multiple time zones. As team sizes grow, ensuring that everyone submits their updates in a timely and organized manner becomes increasingly difficult. Manual processes often lead to missed updates, miscommunication, or unnecessary back-and-forth between team members and managers.

This template automates the daily standup process using a Conductor-Slack webhook integration. It collects updates from team members via personalized Slack messages, waits for a set timeframe, and compiles the responses. Once all updates are received or the app timeout is reached, the bot posts them to a shared team channel, ensuring a seamless and organized standup.

Conductor features used

This template utilizes the following Conductor features:

How to use the template

  1. Import the template
  2. Understand the workflow logic
  3. Create a webhook
  4. Create Slack app
  5. Modify the workflow template
  6. Run workflow

Import the template

To import the template:

  1. Go to Template Explorer from the left navigation menu on your Conductor cluster.
  2. Choose StandUp Bot and select Import.
  3. Rename the workflow and task names. For example, rename the workflow as “standup_updates_main_your_name”.
  4. Select Save.

The workflow is now imported and ready for use.

Standup bot workflow

Understand the workflow logic

This section explains the workflow logic and how to execute it.

Parent workflow logic:

  • The standup-bot-main-workflow workflow begins with a Fork/Join task that splits into multiple parallel forks. The number of forks is determined based on the number of users the bot serves.
  • Each fork contains a Sub Workflow task that invokes the individual_updates workflow.
  • Once the forks are completed, the Join task combines all the forks, and the workflow is completed.

Sub-workflow logic:

Workflow for individual user updates

  • The individual_updates workflow begins with an HTTP task that sends a welcome message to the user asking for their scrum updates.
  • Next, a Do While task captures the user inputs. The loop condition for the Do While task is checked using a Wait for Webhook task that captures incoming events from Slack.
  • It is followed by a series of JSON JQ Transform tasks that aggregate updates from the user, convert them into CSV format, and append the update with the user’s name.
  • The final task is an HTTP task that posts the updates to a dedicated Slack channel.

Create a webhook

The Wait for Webhook task in the workflow captures the users' updates as incoming events through the Slack webhook.

To create a webhook in Conductor:

  1. Go to Definitions > Webhook from the left navigation menu on your Conductor cluster.
  2. Select + New webhook.

Slack Webhook in Conductor for Standup bot

  1. In Webhook name, enter a unique name for the webhook.
  2. In Workflows to receive webhook event, select both the workflows imported in the previous step.
  3. In Source platform, select Slack.
  4. Select Save.

An unverified webhook URL will be generated. The next step is to create a Slack app that sends events to the workflow via a webhook.

Create Slack app

To create a Slack app:

  1. Sign in to Slack API.
  2. Select Create an App.
  3. Enter an App name, and select a workspace to integrate the Slack app.
  4. From the left navigation menu, go to Features > Incoming Webhooks, and turn on Activate Incoming Webhooks.
  5. Go to Features > Event Subscriptions, and turn on Enable events.
    • In Request URL, enter the Webhook URL created in Conductor.
    • In Subscribe to bot events, select Add Bot User Event and choose message.im event.
    • Select Save changes.
  6. Go to Features > App Home > Show Tabs.
    • In Messages Tab, enable the option Allow users to send Slash commands and messages from the messages tab.
  7. Enable permissions for the Slack app by going to Feature > OAuth & Permissions.
    • In Scopes > Bot Token Scopes, select Add an OAuth scope.
    • Add chat:write permission.

The Slack app is created.

To install the app to Slack workspace:

  1. From the Slack API console, go to Settings > Install App.
  2. Select Install to Test Workspace.
  3. In Where Should [Acme Bot] post, select the channel to install the app and select Allow.

Installing Slack App to the workspace

The Slack bot is integrated into the specified channel:

Slack app installed into the specified channel

Once the app is installed in your workspace, a Bot User OAuth Token and a Webhook URL will be generated. These are to be added as secrets in Conductor.

Generated tokens in Slack API

To store the OAuth Token and Webhook URL as secrets in Conductor:

  1. Go to Definitions > Secrets from the left menu on your Conductor cluster.
  2. Select + Add Secret and add the following:
    • Enter Secret name as slack_standup_token.
    • In Secret value, enter the Bot User OAuth token generated in the previous step.
  3. Select Add to save the secret.

Repeat the process to create another secret, where:

  • Secret name is slack_conductor_channel_url.
  • Secret value is the Webhook URL generated in Slack API.
note

The workflow is configured to use specific secret names, so the secrets must be stored with those exact names.

Modify the workflow template

Before using this template, make the following updates to the imported workflow:

  1. In the standup_updates_main workflow, replace user_name and user_id in the sub-workflow tasks with the respective employee details.
    • user_name–Enter the employee’s name.
    • user_id–Enter the member ID from Slack.
      To get the Member ID:
    • Go to Slack workspace > Select the user profile > View the profile > Click on three dots > Copy member ID.

      Getting member ID from Slack

Run workflow

You can run the workflow in different ways.

The Scheduler allows you to set a predefined cadence for running a workflow. Once the schedule is configured, Conductor will automatically invoke the workflow at the specified intervals, such as 9 AM PT on weekdays.

To schedule workflows:

  1. Go to Definitions > Scheduler from the left navigation menu on your Conductor cluster.
  2. Select + Define Schedule.
  3. Provide a schedule name, select the workflow name and version, and set the schedule using the cron expression.
  4. Select Save > Confirm.

Refer to Scheduling Workflows documentation for more details.

Workflow output

When the workflow is triggered, the bot requests updates from users.

Bot requesting updates from user

Users must send "done" after posting updates. The bot collects these and posts them to the specified channel.

Bot posting updates to the channel

Returning to the workflow execution, you can see that the particular user's branch is completed while the workflow waits for updates from the remaining users. Once all users post their updates, the workflow gets completed.

Partially completed workflow

This template provides a starting point for customizing the workflow to your needs. You can easily add steps and modify it to suit your business requirements.

Example Modifications

If an employee is out of office, the workflow will not complete unless configured otherwise. To handle such cases, you can mark each fork as optional, ensuring the bot does not wait indefinitely for updates when someone is unavailable.

Each of the fork is marked as optional

The bot’s waiting period for updates can be configured by setting a timeout for the individual_updates workflow. For example, to allow a 3-hour window from the scheduled time set the timeout seconds to 10800 seconds.

Workflow timeout set for individual updates workflow

This ensures the bot operates for 3 hours from the runtime, with the forks marked as optional. After the 3 hours, updates from users who have responded will be collected and posted to the specified channel.

Video Guide