The Microsoft Teams platform offers a large variety of extensibility points and UI elements that you can take advantage of. Now here is the great thing, you don’t have to learn a new language or multiple integration points. If you can build a web page or web service across a wide range of languages, you have the majority of the skills. If you have existing web applications or web services, it is not a significant effort to expose them within Microsoft Teams. Microsoft Teams applications can be as simple as embedding an existing website within a team tab, or a multi-faceted app engaging your users across the entire breadth of the Teams client.
One aspect I typically focus on when I am thinking about building applications within Microsoft Teams is around frequency or a collaboration focus. From a frequency aspect, I like to identify processes that happen frequently enough that I can see a productivity gain by exposing the events into Microsoft Teams. The goal is to centralize the process into the Microsoft Teams client, where my users spend a significant portion of their day. Fundamentally we want to simplify the process and increase responsivness by incorporating it into the Microsoft Teams client.
Processes that require collaboration are another critical area I like to incorporate into Microsoft Teams. When spending time doing process analysis, I look for tasks or events that require a group of individuals be made aware, and possibly take action on events that may be happening in some other system, IoT, etc. Incorporating these types of flows can help increase business decision making and create increased knowledge awareness and sharing.
One thing to keep in mind when thinking about incorporating your app into Microsoft Teams is the scope, will the app be Teams scoped or Personal scoped. Remember Microsoft Teams excels at Teamwork, so in most cases you want to think about how you incorporate your workflow in a Team Scope. The only time I typically revert to personal scope is if the data being exposed to the user is personal in nature, in that case it makes sense to do it as a personal scope.
In upcoming posts, I will go deeper into specific areas, feel free to reach out to me if you have specific questions. In the meantime, please see the following resources below that go into more detail about the developer experience in the Teams scope, Personal scope, and some additional guides and examples.
TEAM SCOPE – Teams, channels and group chats
- Conversational bots interacting with members of the conversation through chat, and responding to events (like a new member being added, or a channel being renamed). All conversations with a bot in this context are visible to all members of the channel or group.
- Configurable Tabs providing a full-screen embedded web experience configured for the channel or group chat it is installed in. All members will interact on the same shared web-app.
- Webhooks and Connectors enabling external services to post messages to the conversation, and your users to send messages to your service. You can take advantage of cards and card actions to to create rich, actionable messages.
PERSONAL SCOPE – Personal apps
- Conversational bots having a one-to-one conversation with the user. Because this is a private conversation, if your app needs to have a multi-turn conversation, or provide a notification relevant only to a single user, it is typically best to have that interaction in a personal app.
- Personal Tabs providing a full-screen embedded web experience.
Development Resources and Examples
- Extensible Points in Microsoft Teams – https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/extensibility-points
- Understand your use cases – https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/design/understand-use-cases
- Build your First Microsoft Teams App – https://docs.microsoft.com/en-us/microsoftteams/platform/tutorials/get-started-yeoman
- Create a custom personal tab with Node.js and the Yeoman Generator for Microsoft Teams – https://docs.microsoft.com/en-us/microsoftteams/platform/tabs/quickstarts/create-personal-tab-node-yeoman
- Create a custom channel and group tab with Node.js and the Yeoman Generator for Microsoft Teams – https://docs.microsoft.com/en-us/microsoftteams/platform/tabs/quickstarts/create-channel-group-tab-node-yeoman
- Silent Authentication – https://docs.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/authentication/auth-silent-aad