Microsoft Teams App

The Jitbit Helpdesk app for Microsoft Teams is a two-way bot:

  • End users chat with the bot 1:1 to create tickets (a proper form with category and priority), list their open tickets, and receive technician replies as cards they can answer right from Teams.
  • Technicians subscribe a channel to new-ticket notifications. Each new ticket shows up as an actionable card with Take it / Reply / Close / Open in Jitbit buttons, and the card updates in place when the ticket gets assigned or closed - no matter whether that happens from Teams or from the helpdesk web app.
  • Anyone can turn an existing Teams message into a ticket via the "..." message menu → Create helpdesk ticket (the form comes prefilled with the message text).

Not to be confused with the legacy "incoming webhook" MS Teams integration, which only posts one-way notifications to a channel. Existing webhook customers keep it (it's marked deprecated on the admin page), but the Teams app is the way to go.


Connecting (SaaS)

The app is published in the Teams Store as Jitbit Helpdesk Bot. You'll connect it once, as a helpdesk administrator:

  1. Install Jitbit Helpdesk Bot from the Teams app store (Teams → Apps → search "Jitbit"). Your Microsoft 365 admin can also deploy it org-wide from the Teams admin center - we recommend org-wide deployment, because users who never opened a chat with the bot can't receive proactive ticket-reply cards otherwise.
  2. In the helpdesk, open Administration → Integrations → MS Teams and click Generate pairing command. You'll get a one-time command like connect aB3dE5fG7hJ9.
  3. Open a chat with the bot in Teams and paste the command. The bot replies "✅ Connected".

That's it - the bot now knows that your Microsoft 365 tenant belongs to your helpdesk. Pairing codes are single-use and expire after 15 minutes. One Microsoft 365 tenant can be connected to one helpdesk; running connect again with a fresh code re-binds it.

To disconnect, use the Disconnect button on the same admin page. This deletes all channel subscriptions, user bindings and tracked cards.

Bot commands

In a personal chat with the bot:

CommandWhat it does
newOpens the new-ticket form (subject, description, category, priority)
my ticketsLists your open tickets with links
helpShows the command list

In a channel (the bot must be @mentioned - Teams doesn't deliver un-mentioned channel messages to bots):

CommandWhat it does
@Jitbit Helpdesk subscribePosts new-ticket cards for all categories to this channel
@Jitbit Helpdesk subscribe 1,2,5Same, but only for the listed category ids (the bot lists valid ids if you get one wrong)
@Jitbit Helpdesk unsubscribeStops the cards
@Jitbit Helpdesk helpShows the command list

Subscribing requires a helpdesk technician or administrator account (matched by your Teams email).

Typing anything else in a personal chat gets you the help card plus a one-click offer to turn your message into a ticket.

How users are matched

The bot maps Teams users to helpdesk users by email address (taken from your Microsoft 365 profile). If there's no helpdesk user with that email yet, an account is auto-created the first time the person creates a ticket - same behavior as the email channel. Read-only actions and technician actions never auto-create accounts.


Self-hosted ("on-premise") setup

Self-hosted helpdesks use your own (free) Azure Bot registration instead of Jitbit's, so no traffic ever flows through Jitbit's servers. Your Microsoft 365 admin has likely done similar app registrations for O365 mail or SSO. You need:

  • A helpdesk reachable over HTTPS from the internet (Microsoft's servers must be able to POST to it).
  • Azure portal access in your Microsoft 365 tenant.

Steps:

  1. In the Azure portal, create an Azure Bot resource (search for "Azure Bot" in the marketplace):
    • Type of App: Single Tenant (Azure no longer offers Multi Tenant for new bots).
    • Creation type: Create new Microsoft App ID.
    • Pricing tier: Free (F0).
  2. When the bot resource is created, open it and go to Configuration:
    • Set Messaging endpoint to https://YOUR-HELPDESK-URL/api/teams/messages
    • Copy the Microsoft App ID - this is your bot client ID.
    • Click Manage Password next to the App ID, create a client secret and copy its value.
  3. Still in the bot resource, open Channels and add the Microsoft Teams channel.
  4. In the helpdesk, open Administration → Integrations → MS Teams, paste the Bot client ID and Bot client secret, click Save credentials.
  5. Continue with the same steps as SaaS: download the app package (the manifest is generated with your bot id), upload it to Teams, generate the pairing command and paste it to the bot.

Security FAQ

How are requests from Teams authenticated? Every request to /api/teams/messages carries a JWT issued by Microsoft's Bot Framework token service. The helpdesk validates the signature against Microsoft's published signing keys, the audience (your bot's app id), the expiry and the service-URL claim before processing anything. Requests that fail validation get a 401.

What can the bot do in our tenant? Only what the Bot Framework allows a bot to do: exchange messages in conversations it's part of and read basic member profiles (name, email) of those conversations. It cannot read other Teams messages, files or anything else in your tenant.

What does Jitbit store? Channel subscription ids, a Teams-user → helpdesk-user mapping (AAD user id + helpdesk user id), personal-chat conversation ids (needed to send you ticket replies proactively), and the message ids of posted ticket cards (needed to update them in place). Disconnecting deletes all of it.

How does the helpdesk know which customer a message belongs to? (SaaS) By the Microsoft 365 tenant id that Microsoft embeds in every (signed) activity. The pairing command binds your tenant id to your helpdesk once; afterwards activities are routed by that binding. The tenant id is taken from the validated activity, never from user input.

Who can take/close/reply to tickets from Teams? The same people who could in the web app: taking a ticket requires a technician (or admin) account with permissions in the ticket's category; replying and closing is allowed for technicians and for the ticket's own submitter. Category submit permissions apply to ticket creation. The bot enforces these server-side on every button click - card buttons are not trusted.

On-premise: where do the bot credentials live? In your own database (Integrations table), entered on the admin page. Traffic flows Teams → Microsoft Bot Framework → your helpdesk directly; Jitbit is not involved.