Background:
Teams working in an Agile methodology will have regular meetings where they prioritize the work they need to do (the User Stories) and vote for the effort and complexity of every story through Scrum poker.
Problem:
Due to corona virus measures most Scrum planning and voting meetings happen via MS Teams.
When you vote simply in a teams meeting chat, everyone will see the votes and people will be influenced by the first vote. Often the first vote determines all the responses.
Solution:
- Create a simple Scrum poker bot solution where people can vote without others seeing their vote. Then post the results in a public channel for discussion.
Solution in action:
Personal message from Flow bot to each voter
Response submitted view of card
Final message with responses of two people in teams channel (without any real formatting done :-)
Flow construction:
1. Flow button trigger (manually trigger a flow) with a property User Story Name
2. Three parameters userStoryName (string), voters (array of email addresses) and responses (empty array)
3. Compose a JSON of the Adaptive card we will post in Teams.
4. Apply to each for the voter array: Add action 'Post an Adaptive card to a Team user and wait for response.
5. Append the response to an array.
6. When all responses are collected, post the results in a Teams channel all the voters have access to.
NB: In order to read the results of the 'Post adaptive card and wait' action I had to create an expression since the responses were not selectable in the dynamic content. Must be an issue because of the Preview nature of the action.
The expression is outputs('POSTCARDITERATION')?.body?.data?.acPollChoices
where POSTCARDITERATION is the name of the 'Post an Adaptive card to a Team user and wait for response action and acPollChoices is the id of the selection control in the adaptive card.
High level overview of the Flow
Flow Details 1
Flow details 2
Flow details 3