- Prepare the Azure Bot and collect its credentials.
- Artemis channel configuration: create the connection, then copy its messaging endpoint.
- Configure the messaging endpoint and the Teams channel in Azure.
- Create and install the Teams app.
- Verify the connection in a real Teams conversation.
- Use the same Microsoft App ID everywhere: The Bot App ID, the App ID credential, the Azure Bot Microsoft App ID, and the Teams manifest
botIdmust all be the same GUID. Artemis selects the connection by that ID and checks that the Bot Framework JWT audience matches it. - Use a single-tenant bot: Microsoft ended support for creating new multi-tenant Azure Bot registrations after July 31, 2025. Existing multi-tenant bots keep running, but this setup uses a single-tenant identity and the exact App Tenant ID.
- The client secret Value appears once: Copy the Value, not the Secret ID. The Secret ID can’t authenticate.
- Manifest changes need a reinstall: Endpoint and runtime changes apply immediately. Scope,
supportsFiles, icon, and command changes need an updated package and a reinstall.
Prerequisites
Confirm these before you start.- Access to the Microsoft Entra tenant where you’ll install the Teams app, with permission to manage app registrations and Azure Bot resources.
- A Teams policy that permits custom app upload, or an administrator who can publish the app.
- Artemis project access with permission to open Deployments -> Channels, and a deployed agent in the environment you intend to bind.
Prepare the Azure Bot
Do this in Azure before you open Artemis. Select Open Azure portal in the setup guide to jump straight there.1
Create or select an Azure Bot resource
In the Azure portal, create an Azure Bot or open the existing one dedicated to this agent. Keep development and production on separate bot registrations.
2
Use a single-tenant identity
For a new bot, choose Single Tenant, and create or select the Microsoft Entra app registration that represents the bot. Artemis uses an App ID, client secret, and tenant ID, so don’t select a managed-identity-only setup.
3
Copy the Microsoft App ID and App Tenant ID
- Go to Azure Bot -> Configuration.
- Copy the Microsoft App ID, a GUID.
- Copy the App Tenant ID, the Microsoft Entra Directory (tenant) ID.
28:.4
Create a client secret
- Select Manage beside Microsoft App ID to open the linked app registration.
- Go to Certificates & secrets and create a client secret with an approved expiration.
- Copy the Value immediately and store it in your secret manager.
Artemis channel configuration
Create the connection before Teams sends an activity. Artemis needs the saved App ID and credentials to resolve the URL, validate inbound JWTs, get Bot Framework tokens, and send replies.- Open Artemis and select the project.
- Go to Deployments -> Channels -> Microsoft Teams -> + New. The New Microsoft Teams Connection dialog opens, with the setup guide on the left and the fields on the right.
-
Configure the fields:
- Select Create.
- Copy the Webhook URL from the connection’s summary panel. It ends with the encoded Microsoft App ID.
Configure the messaging endpoint
Point the Azure Bot at Artemis and turn on the Teams channel.- Confirm the Artemis connection is Active, and that Bot App ID and App ID match.
- In Azure Bot -> Configuration, paste the full Artemis URL into Messaging endpoint. Turn on Enable Streaming Endpoint, and select Apply.
- Reopen Configuration and confirm Azure kept the complete endpoint.
- In the Azure Bot resource, open Channels, add Microsoft Teams, accept the terms, and save. The bot receives no Teams activity until you configure this channel.
Create and install the Teams app
Package the bot as a Teams app. Select Open Teams Developer Portal in the setup guide to jump straight there.1
Create or import the app
In the Teams Developer Portal, create an app for this bot, and add the name, descriptions, icons, developer details, and privacy and terms URLs your organization requires.
2
Add the bot capability and scopes
- Under App features, add Bot, select Enter a bot ID, and paste the Microsoft App ID.
- Enable only the scopes you’ll test and support:
personal,team, andgroupChat. Each is a separate install context.
3
Enable files only when needed
Set For Microsoft 365 Copilot, also set
supportsFiles to true when users send attachments. Artemis ingests file and inline-image attachments only from personal chats, and skips file-only activities in teams and group chats.webApplicationInfo.id and copilotAgents.customEngineAgents.id to the Microsoft App ID.4
Validate and download the package
Resolve every Developer Portal validation error, then download the app package. If you edit the manifest directly, keep
botId equal to the Microsoft App ID and include valid color and outline icons.5
Upload or publish the app
For development, go to Apps -> Manage your apps -> Upload a custom app, if tenant policy allows it. For a controlled rollout, have a Teams administrator publish the app and assign app permission and setup policies.
Verify the connection
Artemis doesn’t synthesize Teams activities, so a real conversation is the only end-to-end proof.- Install the app for yourself, open its personal chat, and send a unique message.
- Confirm a typing indicator where applicable, and one reply from this bot rather than an older installation or another environment.
- If the agent renders actions or forms, submit an Adaptive Card
Action.Execute, and confirm the values reach the same session. - Install the bot in a test team and group chat only if the manifest includes those scopes. Confirm @mentions and routing in each context, because a personal-chat pass doesn’t prove team or group behavior.
- With
supportsFileson, send an approved file and an inline image in personal chat, and confirm the agent processes them. - To test in Copilot, open the app in Teams and select Open with Copilot.
Security and identity boundaries
Inbound traffic and outbound replies each have their own protection.- Inbound JWT: Every activity must carry a Microsoft Bot Framework bearer JWT. Artemis validates the signing key, issuer, App ID audience, and the service URL claim when present.
- Client secret: It authorizes outbound Bot Framework calls and member lookup. Store it only in Artemis, never in the manifest, browser code, screenshots, or tickets.
- Secret rotation: Client secrets expire. Create a replacement before expiration, update Artemis, verify a reply, and only then remove the old secret.
- Reply targets: Artemis replies only to the
serviceUrlfrom the authenticated activity, and checks allowed attachment hosts before it forwards a bot token. - Environments: Use separate App IDs, secrets, Azure Bot resources, Teams app packages, and connections for development and production.
Manage the channel connection
Open a connection from Deployments -> Channels -> Microsoft Teams to manage it. The page has a header, three tabs, and a summary panel on the right. Header. Shows the connection name, its environment badge, its status, and when it last changed. The … overflow menu holds the connection-level actions. Summary panel. Stays visible on every tab.- Credentials
- Configuration
- Deployment
Artemis encrypts credentials after you save them. Leave a field blank to keep its current value, or enter a new value to replace it.
Select Save Credentials to apply your changes.
Troubleshoot connection issues
Most failures trace to a mismatched App ID or a stale manifest.Microsoft reference
Use these pages when you need detail beyond what this article covers. Artemis field names and the runtime endpoint shown in the connection stay the source of truth for this integration.Related articles: