Teams apps are integrations built by third parties into Teams by using Microsoft’s web-based platform and their bot framework. Teams apps can provide many capabilities but usually most of them provide at least one tab and some bot functionality. Teams tabs are quite similar to Outlook add-ins as essentially they are JavaScript/HTML code that runs in the context of a browser in a sandbox with special access to Teams chat or channel properties. Usually your Teams app provides a tab in which the app can be configured.

The tabs can be very elaborate, to the extent of bringing the original portal experience into Teams, i.e. Teamwork project pages: Teamwork tab

Bots are special background processes that either just send notifications in channels or interact with users, reacting to mentions and commands.

Most Teams apps are built to provide convenient integrations to a third party service right from Teams, like Customer Relationship Management, Customer Service, Project Management, … either by providing a web UI as a tab or through interactions with the bot.

Many, if not all Teams app developers end up developing the same or similar elements of their app:

  • Provision a backend API that will support the client code, perhaps be a bot process at the same time.
  • Implement user management (login/logout/session) which needs to be correlated with an authenticated Teams user.
  • Support one or more 3rd party authorization flows. For example, a user needs to link his or her CRM account, maybe also a cloud file storage.
  • Proxy requests to 3rd party API’s. Direct API communications from JavaScript could be blocked in browsers, and it’s safer to store access tokens on the server.
  • Storing various app configurations for users or organizations.
  • Bot initialization for new app installations.
  • Offline access. Often special workers are implemented to run in background when a Teams user is offline.

Aurinko aims to provide the necessary backend functionality for the Teams as well as Slack apps so that developers could decouple the tabs, bots, workers code, and still have a convenient way to access and share app/org/user data.

  1. Host your tab code on Netlify or Vercel (check out this comparison).
  2. Register your app with Aurinko.io (see the docs) and use api.aurinko.io as your app’s backend API (see the docs).
  3. Let Aurinko relay bot-framework events to your bot logic. (see the docs)
Aurinko model

Here is what you get with this model:

  1. User/session management based on openid. Simply confirm current user id using one of Aurinko’s oauth flows. Unfortunatelty Teams does not provide idToken like Outlook does.
  2. Build apps that can access other services. A number of CRM connectors are available now (Salesforce, SugarCRM, HubSpot, …), and more are being added. Ask us about adding a connector for your API.
  3. OAuth access tokens are managed by Aurinko and refreshed automatically.
  4. Your tab activates remote accounts in Aurinko for Teams users and your bot and other workers can use them to access useful remote data.
  5. Aurinko automatically provisions a special service/bot account upon a new app installation, so your bot can start working with the new Team/Org.
  6. Manage your app from the Aurinko developer portal. See all connected users, their Organizations, and accounts.

Let us know if you’re looking to build a notifier bot for your business app (i.e. CRM, PM, ERP). We have some pre-built bot logic that could be customized and deployed for you.