Deploying the Teams Icebreaker Bot

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!

Figure 1: Icebreaker matches users from across the organization / Team

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.

ResourceTierLoadMonthly price
Azure Cosmos DBSingle region write, Pay as you go< 1GB storage, 400 RUs$23.61
Azure Bot ServiceS1N/A$0
App Service PlanS1730 hours$73.00
Logic Apps1 action execution / 7 day(s)$0.01
Azure Monitor (Application Insights)< 1GB data(free up to 5 GB)
Total$96.62
Table 1: Estimated monthly cost of running the Icebreaker bot in Azure

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.

ValueDescriptionExample
subscriptionIdThe Subscription ID of the Azure Subscription to deploy resources to11111111-1111-1111-1111-111111111111
subscriptionTenantIdThe Tenant ID of the Azure AD tenant linked to the Azure Subscription11111111-1111-1111-1111-111111111111
resourceGroupNameThe name for an existing or new resource group to host Azure resourcesIcebreaker RG
locationThe region to deploy resources toNortheurope
baseResourceNameA base name / prefix to be applied to Azure resoucesIcebreaker
tenantIdThe Azure AD Tenant ID for the Office 365 tenant the app will be deployed to11111111-1111-1111-1111-111111111111
pairingWeekIntervalThe number of weeks between pairings1
pairingDayOfWeekThe day of the week that pairing occursfriday
pairingHourThe hour of the day that pairing occurs10
pairingTimeZoneThe time zone used for the pairing activityGMT Standard Time
pairingStartKeyA unique key for communication between the function app and bot. This can be left blank.N/A – Leave blank
skuThe tier for the hosting planStandard
defaultCultureThe regional setting for the appen
planSizeThe size of the hosting plan1
gitRepoUrlThe URL of the GitHub repository, leave this as defaulthttps://github.com/
OfficeDev/microsoft-teams-apps-icebreaker.git
gitBranchThe GitHub branch to deploy, leave this as default (main)Main
appDisplayNameThe display name for the app in TeamsContoso Icebreaker
appDescriptionThe description of the app in TeamsThis is the Icebreaker bot for Contoso, it can help you get to know your coworkers!
appIconUrlA link to a icon for the apphttps://seanmcavinue.net/icon.png
companyNameThe organization name as it should be displayed within the appContoso
websiteUrlA link to the corporate websitehttps://seanmcavinue.net
privacyUrlA link to the corporate privacy policyhttps://seanmcavinue.net/privacy
termsOfUseUrlA link to the corporate Terms of Use policyhttps://seanmcavinue.net/termsofuse
Table 2: Update the parameters.json file for your environment

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:

Install-Module Az

Install-Module AzureAD

Install-Module WriteAscii

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.

Figure 2: Prepare the package through PowerShell

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.

Figure 3: Confirm the contents of the manifest file

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).

Figure 4: Upload the package to the Teams admin portal

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).

Figure 5: Add the bot to an existing Team

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.

Summary

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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s