Teams, Copilot App and QualiChat

Purpose

This is a helping document to update teams/copilot app config update before they are uploaded and published  into Organization teams center, and also to help setup the QualiChat in QualiWare.

Role Required

1. Teams Admin

Steps/Process to upload and copilot app for an organization:

1. Download the teams/copilot app (appPackage.zip)  file from QualiWare product download site.

2. Contents of this zip would need to be updated. Admin should unzip the file and use any editor to edit the manifest.json file.   Need to add AppId of bot from Azure into it. $ {{BOT_ID}} should be replaced with App ID of managed Identity(that was created during Azure configurationsd) from Azure.

Refer the client id of managed identity that was created during Azure configurations. Copy the client id as BOT_ID in this manifest.json.

3.  Admin should re-zip the files with updated contents with other two images files.

4.  Admin should upload it as custom apps in the Teams Center and enable it for Organization.  They need to make sure it is enabled only for their organization not outside of their organization.  

5.  Standard user in same organization should be able add the QualiWareAI agent app in the teams. Go to Apps section and click on  “Built for your org” .  Click on Add button in the QualiWareAI agent card.

6.  User should be able to use it as Teams chat or open with copilot.

Enable QualiChat inside QualiWare

To show the QualiChat panel inside QualiWare (as in the screenshot), add the required settings in QualiWare Admin Console → Repository Administrator → (Your Repository) → Properties.

Collect these values from your Azure setup first:
Azure AI Search: endpoint (URL), index name, semantic configuration, API key (admin or query key as allowed).
Azure OpenAI: chat completions URL (deployment endpoint incl. api-version) and API key.

You can configure this either as individual key/value properties or as one JSON property—both examples below use placeholders.

Option A — Individual properties (key/value)

Property Value (example / placeholder)
QualiChat.AzureAISearch.dataSourceAuth.type api_key
QualiChat.AzureAISearch.dataSourceAuth.key <YOUR_AI_SEARCH_API_KEY>
QualiChat.AzureAISearch.url https://<your-search>.search.windows.net
QualiChat.AzureAISearch.indexName <YOUR_INDEX_NAME>
QualiChat.AzureAISearch.semanticConfig <YOUR_SEMANTIC_CONFIG_NAME>
QualiChat.AzureOpenAI.key <YOUR_AZURE_OPENAI_API_KEY>
QualiChat.AzureOpenAI.url https://<your-openai>.openai.azure.com/openai/deployments/<DEPLOYMENT_NAME>/chat/completions?api-version=<API_VERSION>

Replace the placeholders with your actual values from Azure.

Option B — Single JSON property

Name the property QualiChat and paste this JSON:

{
  "AzureOpenAI": {
    "key": "<YOUR_AZURE_OPENAI_API_KEY>",
    "url": "https://<your-openai>.openai.azure.com/openai/deployments/<DEPLOYMENT_NAME>/chat/completions?api-version=<API_VERSION>"
  },
  "AzureAISearch": {
    "url": "https://<your-search>.search.windows.net",
    "indexName": "<YOUR_INDEX_NAME>",
    "semanticConfig": "<YOUR_SEMANTIC_CONFIG_NAME>",
    "dataSourceAuth": {
      "type": "api_key",
      "key": "<YOUR_AI_SEARCH_API_KEY>"
    }
  }
}

Security note: store secrets only in the Repository Administrator Properties (not on public pages). Limit access to users who administer the repository.