【问题标题】:Deeplink when you are inside a Configurable Tab当您在可配置选项卡内时进行深层链接
【发布时间】:2021-11-26 00:56:26
【问题描述】:

我正在使用 Microsoft Teams Toolkit 创建可配置选项卡。当我在可配置选项卡中时,我想将此选项卡的深层链接保存到我的一个数据库中。但是我看到的是我拥有的应用程序包的应用程序 ID 正在更改。我使用 Teams 工具包生成了应用程序包,然后在不同租户的两个 Teams 频道中上传。我看到两个链接中的应用程序 ID 都已更改。如何确保应用程序 ID 保持不变。还有什么方法可以让我在 Tab 本身中动态获取 app id 和 Tab id?

[![在此处输入图片描述][1]][1]

这是我的代码:

microsoftTeams.getContext((context) => {
      teamId = context.groupId;
      tenantid = context.tid;
      channelId = context.channelId;

      const entityId =
     "_djb2_msteams_prefix_" +
     Util.djb2_hash("<<AppId>>" + ":" + context.entityId.replace(/\+/g, " "));
     
      var ctx ;

     if (context.subEntityId ||  context.channelId) {
       ctx = encodeURIComponent(JSON.stringify({
         subEntityId: context.subEntityId,
         channelId: context.channelId
       }));
     };```

      //How to get the app id and the tab id
     linkUrl="https://teams.microsoft.com/l/entity/**<<AppId>>**/"+entityId+"/" + "&context=" + ctx+ "&groupId="+context.groupId+"&tenantId="+context.tid;
});
 };


 [1]: https://i.stack.imgur.com/T5jGc.png

【问题讨论】:

  • 如何将应用部署到两个租户?您使用的不是同一个应用程序包(zip 文件)吗?
  • 我正在使用相同的应用程序包 zip 文件。但由于这是一个测试,我没有通过 Team Admin 进行部署,而是转到 Team-> 单击 + 符号-> 底部的 Manage App -> Upload a custom app。
  • 在这种情况下,“我拥有的应用程序包的应用程序 ID 正在更改”是什么意思?如果是同一个包,app id是怎么变化的?

标签: microsoft-teams teams-toolkit


【解决方案1】:

如果您使用相同的应用程序包,则应用程序 ID 在两种情况下都是相同的(它是在包内的清单文件中定义的应用程序 ID),并且两个租户中的实体 ID 也将相同出于同样的原因。

【讨论】:

  • 我正在尝试创建深层链接。当我从租户那里获取深层链接时,它是这样的:teams.microsoft.com/l/entity 914a9c82-462e-439a-911d-61e5176bacef /_djb2_msteams_prefix_2042309305?context={"subEntityId":null,"channelId":"19 :A6T5m3okl80Lw4SIctzkhyVG3x58SwSmNsWXiU0OVuA1@thread.tacv2"}&groupId=573e9025-8b85-4a34-85ae-90715f4e3bd28&tenantId=ae1e0a3b-7612-4f0a-8fa2-9cbb0c67b30d .the id in the bold (914a9c82-462e-439a-911d-61e5176bacef) 随着我改变租户而改变。竟然是app id?
  • “获取深层链接”是什么意思?只需自己直接创建深层链接,就像按照文档 (docs.microsoft.com/en-us/microsoftteams/platform/concepts/…) 一样。它应该是 teams.microsoft.com/l/entity/<your appId>/
  • 我可以获取所有内容,但只能获取应用程序 ID。它不断变化。如何检查应用程序的应用程序 ID。 mNaifest.json 中的应用程序 ID 不是我在深度链接中看到的。 :“manifestVersion”:“1.9”,“版本”:“1.0.0”,“id”:“>”,“packageName”:“com.microsoft.teams.extension”,
  • 当您实际使用该应用程序 ID 时会发生什么?
  • 深层链接不起作用
【解决方案2】:

我已经设法解决了这个问题。下面是方法,您可以在可配置选项卡中动态获取应用 ID:

microsoftTeams.getTabInstances(function (tabInstances) {
        // alert(JSON.stringify(tabInstances));     
        var tab = JSON.parse(JSON.stringify(tabInstances.teamTabs.find(x => x.channelId ==channelId)));
        console.log(JSON.stringify(tab));
        appid = tab["appId"];        
            
     });

注意:TabInstance 没有 appId 作为属性,但是当您将对象字符串化时,您会看到值。

【讨论】:

    【解决方案3】:

    获取应用 ID

    当租户中的客户安装您的应用时,这实际上会在其租户中创建该应用的实例。

    如果您作为开发人员 - 在不同范围内安装或旁加载同一应用的多个副本,这也会创建新的应用实例 个人清单上传到团队也是如此

    为此团队应用实例分配了一个“内部应用 ID” 您可以在 Teams AppCatalog 中看到这一点: 其中externalid 是您在应用程序的manifest.json 中指定的id

    根据我的个人经验,您应该能够使用 Teams_App_Manifest_id ,但是当它解析为具有相同外部 ID 的多个应用实例时,您可能/将会遇到麻烦。 请注意,团队客户端生成的链接倾向于使用internal id。我想避免这个问题

    获取标签 ID

    因为在上下文中你有 Team.idChannel.id 并且你的选项卡的 Entity.id 是,然后你可以使用 Graph 来遍历选项卡那个频道 https://graph.microsoft.com/beta/teams/{groupId}/channels/{channelId}/tabs?$expand=teamsApp&amp;$filter=configuration/entityId eq '{entityId}'

    租户应用目录: graph explorer

    {
        "@odata.context": "https://graph.microsoft.com/beta/$metadata#appCatalogs/teamsApps",
        "value": [
            {
                "id": "fcb9685a-8bc4-4b82-947b-12f8d2146ec3",
                "externalId": "73fb4e73-97e2-44f6-a880-160933ea881e",
                "displayName": "App SSO in csharp",
                "distributionMethod": "organization"
            },            
    

    用户从租户目录(组织)安装应用程序 graph explorer

    {
        "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('cb4d216f-1e86-4b8b-94f0-c213b258d376')/teamwork/installedApps(teamsApp())",
        "@odata.count": 86,
        "value": [
            {
                "id": "Y2I0ZDIxNmYtMWU4Ni00YjhiLTk0ZjAtYzIxM2IyNThkMzc2IyNmY2I5Njg1YS04YmM0LTRiODItOTQ3Yi0xMmY4ZDIxNDZlYzM=",
                "teamsApp": {
                    "id": "fcb9685a-8bc4-4b82-947b-12f8d2146ec3",
                    "externalId": "73fb4e73-97e2-44f6-a880-160933ea881e",
                    "displayName": "App SSO in csharp",
                    "distributionMethod": "organization"
                }
            },
    

    为我添加二进制相同的 Teams 应用 导致应用程序在左侧导航中显示两次(如预期的那样,因此这也添加了一个具有自己的(内部)应用程序 ID 的应用程序实例

        "@odata.count": 87,
        "value": [
            {
                "id": "Y2I0ZDIxNmYtMWU4Ni00YjhiLTk0ZjAtYzIxM2IyNThkMzc2IyNmY2I5Njg1YS04YmM0LTRiODItOTQ3Yi0xMmY4ZDIxNDZlYzM=",
                "teamsApp": {
                    "id": "fcb9685a-8bc4-4b82-947b-12f8d2146ec3",
                    "externalId": "73fb4e73-97e2-44f6-a880-160933ea881e",
                    "displayName": "App SSO in csharp",
                    "distributionMethod": "organization"
                }
            },
        // ....
            {
                "id": "Y2I0ZDIxNmYtMWU4Ni00YjhiLTk0ZjAtYzIxM2IyNThkMzc2IyMyNWYzMDBjMS05ZGE2LTRjYTMtYWUwZS1iN2EwZDJkMDQzZGY=",
                "teamsApp": {
                    "id": "25f300c1-9da6-4ca3-ae0e-b7a0d2d043df",
                    "externalId": "73fb4e73-97e2-44f6-a880-160933ea881e",
                    "displayName": "App SSO in csharp",
                    "distributionMethod": "sideloaded"
                }
            },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多