One of the best features of Microsoft Teams is the ability to extend the built-in functionality with custom apps and bots. In addition to the apps available within Teams, there are a huge number of community generated app templates available to enhance and customize the Teams experience for users. One such app is the Teams Icebreaker bot, which allows users within the organization (or specific Team) to be matched (Figure 1) at a regular cadence through Teams. From that point, the users can start a discussion or meeting, allowing people to meet who may never have crossed paths within the business. This is a great way of promoting an open and collaborative culture within organizations. What’s even better, is that the bot itself is easy to deploy!
How to prepare for deployment
To get started, there are a few things you need to have in place. First and foremost, you will need an Office 365 Tenancy (with Teams licensing) and an Azure Subscription to host the app itself. The Azure footprint itself consists of an Azure cosmos DB, an Azure Bot Service, Application Insights instance, an App Service Plan and a Logic app. Obviously running anything in Azure will incur a cost so the estimated costs are calculated on the Icebreaker GitHub as shown in Table 1. The below estimates are based on the recommended sizes but can be scaled once deployed.
|Azure Cosmos DB||Single region write, Pay as you go||< 1GB storage, 400 RUs||$23.61|
|Azure Bot Service||S1||N/A||$0|
|App Service Plan||S1||730 hours||$73.00|
|Logic Apps||–||1 action execution / 7 day(s)||$0.01|
|Azure Monitor (Application Insights)||–||< 1GB data||(free up to 5 GB)|
In addition to the above, you need to download the Icebreaker App Template here.
Prepare the app package
With the template downloaded, extract the files to a local folder, navigate to “\microsoft-teams-apps-icebreaker-main\Deployment” and open the file parameters.json in your chosen editor. From here, update the Json file for your environment using the reference in Table 2.
|subscriptionId||The Subscription ID of the Azure Subscription to deploy resources to||11111111-1111-1111-1111-111111111111|
|subscriptionTenantId||The Tenant ID of the Azure AD tenant linked to the Azure Subscription||11111111-1111-1111-1111-111111111111|
|resourceGroupName||The name for an existing or new resource group to host Azure resources||Icebreaker RG|
|location||The region to deploy resources to||Northeurope|
|baseResourceName||A base name / prefix to be applied to Azure resouces||Icebreaker|
|tenantId||The Azure AD Tenant ID for the Office 365 tenant the app will be deployed to||11111111-1111-1111-1111-111111111111|
|pairingWeekInterval||The number of weeks between pairings||1|
|pairingDayOfWeek||The day of the week that pairing occurs||friday|
|pairingHour||The hour of the day that pairing occurs||10|
|pairingTimeZone||The time zone used for the pairing activity||GMT Standard Time|
|pairingStartKey||A unique key for communication between the function app and bot. This can be left blank.||N/A – Leave blank|
|sku||The tier for the hosting plan||Standard|
|defaultCulture||The regional setting for the app||en|
|planSize||The size of the hosting plan||1|
|gitRepoUrl||The URL of the GitHub repository, leave this as default||https://github.com/|
|gitBranch||The GitHub branch to deploy, leave this as default (main)||Main|
|appDisplayName||The display name for the app in Teams||Contoso Icebreaker|
|appDescription||The description of the app in Teams||This is the Icebreaker bot for Contoso, it can help you get to know your coworkers!|
|appIconUrl||A link to a icon for the app||https://seanmcavinue.net/icon.png|
|companyName||The organization name as it should be displayed within the app||Contoso|
|websiteUrl||A link to the corporate website||https://seanmcavinue.net|
Table 2: Update the parameters.json file for your environment
When the parameters file is updated, you’re ready to deploy the app via PowerShell. There are three PowerShell modules required to deploy the app to Azure (AZ, AzureAD and WriteAscii) and the deployment script will install them if you are missing them but if you’d like to install yourself, you can use the following cmdlets:
Deploy the Azure resources
With everything in place, open PowerShell and navigate to the “Deployment” folder. Run the deploy.ps1 file and you will be prompted to log in first to your Azure subscription twice (one for Azure AD and one for Azure shell). The script will take a while to run, and output can be tracked in the PowerShell window as shown in Figure 2. Once the deployment finishes, all Azure resources will be created in the resource group specified in your parameters file.
Upload the app to Teams
With the package created, verify the contents of the manifest Zip file at “microsoft-teams-apps-icebreaker-main\Manifest\”. When I generated the package the Zip was missing the language Json files. If this happens the files can easily be copied in from the parent folder. The contents of the manifest Zip file should match Figure 3.
Finally, navigate to the Teams Admin Portal and open “Teams apps” -> “Manage Apps”, then select the “Upload” option. Upload the Manifest Zip file and you should then see it in the app list (Figure 4).
Add the bot to a Team
To deploy the bot to a Team, Open the “more apps” page in the Teams client and find the bot by the name specified earlier. Select “Add to a Team” and then select the Team to deploy it to (Figure 5).
Once the bot is added, the Icebreaker app will post to the General channel of the Team to let users know it has been added. At the specified schedule, users within the Team will be matched with each other for a chat.
The Icebreaker bot is a great example of how Teams functionality can be extended by apps from the community. Icebreaker works very well for larger organizations / Teams and the rollout is painless. Make sure when deploying Icebreaker that it is coupled with appropriate communication and change management so your organization can get the most out of it. Also be sure to check out the other app templates to see what apps are available. You can also deploy your own apps and bots in Teams to meet specific business requirements.