OfficeDev / microsoft-teams-library-js

JavaScript library for use by Microsoft Teams apps
https://docs.microsoft.com/microsoftteams/platform/
Other
421 stars 192 forks source link

Manifest with multiple staticTabs, only the first tab is added to channel? #2388

Open catmanjan opened 3 weeks ago

catmanjan commented 3 weeks ago

I have an app with 3 staticTabs in the manifest.json

They work as expected via the personal app, e.g.: image

However, when I add my app to a channel, only the first tab is added.

Is there something I'm missing in my manifest?

{
  "$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.16/MicrosoftTeams.schema.json",
  "manifestVersion": "1.16",
  "version": "{Year}.{Month}.{SecondInMonth}",
  "id": "{MicrosoftAppId}",
  "packageName": "au.com.icognition.teams.integration.hydra",
  "developer": {
    "name": "iCognition",
    "websiteUrl": "https://support.ingresscsp.com/",
    "privacyUrl": "https://support.ingresscsp.com/",
    "termsOfUseUrl": "https://support.ingresscsp.com/"
  },
  "icons": {
    "color": "ingress_icon_black_192.png",
    "outline": "ingress_icon_white_32.png"
  },
  "name": {
    "short": "Ingress Search",
    "full": "Ingress Search"
  },
  "description": {
    "short": "Discover and manage enterprise information",
    "full": "Where’s the most accurate, reliable, and authentic information you need? Ingress will help you find it! It doesn’t matter where it is. If it’s in OneDrive, Teams, SharePoint or {ContentManagerName}, a simple search using Ingress Search will find it, subject to security rights\n\nThen Ingress will help you open, edit or view it.\n\nWant to ensure your information is protected and preserved for future use? Ingress will help will do that too! Protecting your vital information will secure and preserve it for the long term, allowing appropriate access by others, and help us meet our compliance obligations."
  },
  "accentColor": "#FFFFFF",
  "configurableTabs": [
    {
      "configurationUrl": "{BaseUrl}/api/v1/config",
      "scopes": [
        "team",
        "groupchat"
      ],
      "canUpdateConfiguration": false
    }
  ],
  "staticTabs": [
    {
      "entityId": "{MicrosoftAppId}IngressSearch",
      "scopes": [
        "team",
        "personal",
        "groupchat"
      ],
      "name": "Ingress Search",
      "contentUrl": "{TeamsIntegration:TabUrl}",
      "websiteUrl": "{TeamsIntegration:TabUrl}"
    },
    {
      "entityId": "{MicrosoftAppId}IngressRecords",
      "scopes": [
        "team",
        "personal",
        "groupchat"
      ],
      "name": "Ingress Records",
      "contentUrl": "{RmWorkspaceUrl}",
      "websiteUrl": "{RmWorkspaceUrl}"
    },
    {
      "entityId": "{MicrosoftAppId}IngressWorkflow",
      "scopes": [
        "team",
        "personal",
        "groupchat"
      ],
      "name": "Ingress Workflow",
      "contentUrl": "{RmWorkflowUrl}",
      "websiteUrl": "{RmWorkflowUrl}"
    }
  ],
  "bots": [
    {
      "botId": "{MicrosoftAppId}",
      "scopes": [
        "personal",
        "team"
      ],
      "supportsFiles": false,
      "isNotificationOnly": true,
      "commandLists": []
    }
  ],
  "composeExtensions": [
    {
      "botId": "{MicrosoftAppId}",
      "canUpdateConfiguration": false,
      "commands": [
        {
          "id": "searchQuery",
          "type": "query",
          "title": "Enterprise Search",
          "description": "Perform a search",
          "initialRun": true,
          "fetchTask": false,
          "context": [
            "commandBox",
            "compose"
          ],
          "parameters": [
            {
              "name": "searchQuery",
              "title": "Search",
              "description": "Your search query",
              "inputType": "text"
            }
          ]
        },
        {
          "id": "contentManagerQuery",
          "type": "query",
          "title": "{ContentManagerName}",
          "description": "Search for protected {RecordNamePlural}",
          "initialRun": true,
          "fetchTask": false,
          "context": [
            "commandBox",
            "compose"
          ],
          "parameters": [
            {
              "name": "searchQuery",
              "title": "Search",
              "description": "Your search query",
              "inputType": "text"
            }
          ]
        },
        {
          "id": "exchangeQuery",
          "type": "query",
          "title": "Exchange",
          "description": "Search for emails and attachments in Exchange",
          "initialRun": true,
          "fetchTask": false,
          "context": [
            "commandBox",
            "compose"
          ],
          "parameters": [
            {
              "name": "searchQuery",
              "title": "Search",
              "description": "Your search query",
              "inputType": "text"
            }
          ]
        },
        {
          "id": "oneDriveQuery",
          "type": "query",
          "title": "OneDrive",
          "description": "Search for documents in OneDrive",
          "initialRun": true,
          "fetchTask": false,
          "context": [
            "commandBox",
            "compose"
          ],
          "parameters": [
            {
              "name": "searchQuery",
              "title": "Search",
              "description": "Your search query",
              "inputType": "text"
            }
          ]
        },
        {
          "id": "sharePointQuery",
          "type": "query",
          "title": "SharePoint",
          "description": "Search for documents in SharePoint",
          "initialRun": true,
          "fetchTask": false,
          "context": [
            "commandBox",
            "compose"
          ],
          "parameters": [
            {
              "name": "searchQuery",
              "title": "Search",
              "description": "Your search query",
              "inputType": "text"
            }
          ]
        },
        {
          "id": "teamsQuery",
          "type": "query",
          "title": "Teams",
          "description": "Search for documents in Teams",
          "initialRun": true,
          "fetchTask": false,
          "context": [
            "commandBox",
            "compose"
          ],
          "parameters": [
            {
              "name": "searchQuery",
              "title": "Search",
              "description": "Your search query",
              "inputType": "text"
            }
          ]
        },
        {
          "id": "fileSystemQuery",
          "type": "query",
          "title": "Shared drive",
          "description": "Search for documents in shared drives",
          "initialRun": true,
          "fetchTask": false,
          "context": [
            "commandBox",
            "compose"
          ],
          "parameters": [
            {
              "name": "searchQuery",
              "title": "Search",
              "description": "Your search query",
              "inputType": "text"
            }
          ]
        }
      ],
      "messageHandlers": [
        {
          "type": "link",
          "value": {
            "domains": [
              "*.botframework.com"
            ]
          }
        }
      ]
    }
  ],
  "permissions": [
    "identity",
    "messageTeamMembers"
  ],
  "validDomains": [
    "*.botframework.com",
    "*.sharepoint.com",
    "{TeamsIntegration:ValidDomain}"
  ],
  "webApplicationInfo": {
    "id": "{MicrosoftAppId}",
    "resource": "{TeamsIntegration:AppIdUri}"
  },
  "supportedChannelTypes": [
    "privateChannels",
    "sharedChannels"
  ]
}
Nivedipa-MSFT commented 3 weeks ago

@catmanjan - Thanks for reporting your issue. We have tested this at our end. Its added correctly in personal app but getting below error in channel.

image

catmanjan commented 2 weeks ago

@Nivedipa-MSFT were you trying to use the manifest I posted? You will not be able to use mine because it is for an app that is only accessible to me

You will need to use your own app and add multiple static tabs

Nivedipa-MSFT commented 2 weeks ago

@catmanjan - We have tested this at Microsoft Teams Desktop version 24165.1410.2974.6689.

Added in personal app: image

Added in channel: image

We are able to repro your issue. We have raised a bug for the same, we will inform you once we get any updates on it.

Nivedipa-MSFT commented 1 week ago

@catmanjan - We got an update from the engineering team stating that this behavior is by design. We will update the documentation accordingly.

catmanjan commented 1 week ago

Can you ask engineering how to achieve what I am trying to do rather than just fixing your own documentation?

On Fri, 19 July 2024, 7:35 pm Nivedipa-MSFT, @.***> wrote:

@catmanjan https://github.com/catmanjan - We got an update from the engineering team stating that this behavior is by design. We will update the documentation accordingly.

— Reply to this email directly, view it on GitHub https://github.com/OfficeDev/microsoft-teams-library-js/issues/2388#issuecomment-2238762581, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABBRBWLAR3NVBZIDXO3AETZNDMV5AVCNFSM6AAAAABKKX6AICVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMZYG43DENJYGE . You are receiving this because you were mentioned.Message ID: @.***>

Nivedipa-MSFT commented 1 week ago

@catmanjan - We are checking this with engineering team, we will update you soon.

Nivedipa-MSFT commented 6 days ago

@catmanjan - We got an update from engineering team saying that there is no way to add multiple static tabs in channel. To add more tabs in a chat/channel, you should switch to configurable tabs or deploy multiple apps. image

Ref Doc: https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/create-personal-tab?tabs=vs&pivots=node-java-script#extend-static-tabs-to-group-chat-channels-and-meetings

catmanjan commented 6 days ago

Okay, so how do I add multiple configurable tabs? This doesn't seem to be working either - I have another ticket open showing that it doesn't work

On Mon, 22 July 2024, 7:03 pm Nivedipa-MSFT, @.***> wrote:

@catmanjan https://github.com/catmanjan - We got an update from engineering team saying that there is no way to add multiple static tabs in channel. To add more tabs in a chat/channel, you should switch to configurable tabs or deploy multiple apps. image.png (view on web) https://github.com/user-attachments/assets/32314d34-1f56-4a3e-b697-5303a13db19b

Ref Doc: https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/create-personal-tab?tabs=vs&pivots=node-java-script#extend-static-tabs-to-group-chat-channels-and-meetings

— Reply to this email directly, view it on GitHub https://github.com/OfficeDev/microsoft-teams-library-js/issues/2388#issuecomment-2242451506, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABBRBRXX4WREUMHJEZIQX3ZNTDFBAVCNFSM6AAAAABKKX6AICVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENBSGQ2TCNJQGY . You are receiving this because you were mentioned.Message ID: @.***>

Nivedipa-MSFT commented 6 days ago

@catmanjan - Apologies for the confusion. We have checked with the engineering team, and they have stated that one tab configuration flow can only add one tab. If you want to add multiple tabs, then you would need to click on the '+' button multiple times and configure each tab separately.

catmanjan commented 6 days ago

Can you log an enhancement to allow it? Requiring multiple clicks seems silly

On Mon, 22 July 2024, 7:21 pm Nivedipa-MSFT, @.***> wrote:

@catmanjan https://github.com/catmanjan - Apologies for the confusion. We have checked with the engineering team, and they have stated that one tab configuration flow can only add one tab. If you want to add multiple tabs, then you would need to click on the '+' button multiple times and configure each tab separately.

— Reply to this email directly, view it on GitHub https://github.com/OfficeDev/microsoft-teams-library-js/issues/2388#issuecomment-2242488742, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABBRBUSDHZHTXK5NG2VAGLZNTFIFAVCNFSM6AAAAABKKX6AICVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENBSGQ4DQNZUGI . You are receiving this because you were mentioned.Message ID: @.***>