Получить хешированный entityId на вновь созданной вкладке - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь программно создать ссылку на вкладку, которую я только что создал в MS Teams, в следующем формате:

https://teams.microsoft.com/l/entity/${appId}/${entityId}?context={"channelId":"${channelId}"}

Я знаю appId. Я могу получить идентификатор канала от microsoftTeams.getContext. Проблема с entityId.

У нас есть действительно длинный entityId, который является большим строковым JSON объектом конфигурации. Создание вкладки работает, но когда я получаю ссылку на вкладку через пользовательский интерфейс, entityId выглядит примерно так:

https://teams.microsoft.com/l/entity/{appId}/_djb2_msteams_prefix_4000611857?context=...

Кажется, что MS Teams использует некоторый алгоритм хеширования djb2 для кодирования длинного объекта. предоставлять. Использование ссылки с хэшированным идентификатором dbj2 работает. Использование ссылки, которую мы создаем с фактическим entityId (в строковом и кодированном виде), не работает.

Как я могу создать djb2 ha sh entityId? Кроме того, как я могу использовать длинный entityId для создания ссылки на вкладку?

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Использование созданной нами ссылки с фактическим entityId (в строковом и URL-кодированном виде) не работает.

Созданный нами entityId должен работать, но есть было несколько вопросов по содержанию. Исходный entityId был примерно таким:

JSON.stringify(
  {
    url: encodeURIComponent('https://link.to.website/path?with&searchquery')
  }
)

. Закодированные символы % приводили к неправильному разрешению ссылки. Я решил проблему, кодировав entityId немного по-другому. Для разбора требуется немного больше усилий, но теперь все работает.

btoa(encodeURIComponent(JSON.stringify(
  {
    url: encodeURIComponent('https://link.to.website/path?with&searchquery')
  }
)))
0 голосов
/ 23 марта 2020

Звучит так, как будто вы пытаетесь создать «глубокую ссылку» на вашу вкладку, в этом случае это должно помочь: Создание глубокой ссылки на вашу вкладку . Он включает в себя примеры, показывающие, как сделать глубокую ссылку на отдельный элемент на вкладке, передать контекст и т. Д. c.

Некоторые части могут быть немного запутанными, но дайте ему go, и это должно сделать что тебе нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...