> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yahont.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Teams

> Индексирование бесед каналов, файлов каналов, транскриптов собраний и чатов собраний Microsoft Teams

Коннектор Teams индексирует Microsoft Teams в вашем тенанте Microsoft 365 через Microsoft Graph.
Он читает беседы каналов, а также может читать файлы каждого канала, изображения, вставленные в сообщения,
транскрипты запланированных собраний и чаты этих собраний. Он может воспроизводить, кто вправе читать каждый элемент,
с помощью **Auto Sync Permissions**.

Коннектор входит как регистрация приложения,
настроенная в разделе [Настройка Microsoft 365](/admins/connectors/official/microsoft-365/setup).
Каждому варианту сверх бесед каналов нужны собственные разрешения на стороне Microsoft,
а транскриптам собраний также нужны две настройки Teams, которые может изменить только администратор Teams.
На этой странице они перечислены по вариантам.

## Как это работает

| Содержимое | Поведение |
| - | - |
| Ветки каналов | Всегда включено. Один документ на ветку: первое сообщение и ответы на него от старых к новым. Читаются стандартные, приватные и общие каналы команды. Ветка, первое сообщение которой удалено, не индексируется, а ветка, удалённая после индексации, сохраняет только заголовок до следующей очистки. Системные события, которые Teams показывает как сообщения, пропускаются. |
| Файлы каналов | Необязательно. Каждый файл на вкладке **Files** канала — отдельный документ. Файлы больше 20 МБ пропускаются, как и изображения BMP, TIFF, GIF, SVG и AVIF. |
| Встроенные изображения | Необязательно. Изображения, вставленные в сообщения каналов и чаты собраний, индексируются вместе с их веткой или днём чата, до 100 на каждую. Изображения больше 20 МБ пропускаются. Пока извлечение и анализ изображений выключены в настройках поиска Yahont, ничего не скачивается. |
| Транскрипты собраний | Необязательно. Один документ на транскрипт запланированного собрания, с указанием говорящих, если тенант разрешает атрибуцию говорящих. Индексируются транскрипты за последние шесть месяцев. Собрания каналов не охватываются. |
| Чаты собраний | Необязательно. Один документ на день (UTC) чата запланированного собрания. События, которые Teams показывает в чате (присоединился, началась запись), не включаются. Охватывает собрания, организованные в вашем тенанте: Microsoft не отдаёт чат собрания, созданного другой организацией. |
| Права | Необязательно, на платных тарифах. Каждый элемент виден тем, кто может его читать в Teams. См. [Автосинхронизация прав](#auto-sync-permissions). |

При каждом обновлении у каждого канала запрашиваются сообщения, изменившиеся с последнего запуска,
и перестраивается каждая изменившаяся ветка.
По каждому чату собрания с сообщением за последние шесть месяцев запрашивается, что изменилось,
поэтому правка или удаление в затихшем чате подхватываются при следующем обновлении. Очистка удаляет ветки, файлы,
транскрипты и дни чата, которых больше нет, а также транскрипты и дни чата старше шести месяцев.

## Перед началом

Вам нужен тенант Microsoft 365 с Microsoft Teams, роли,
перечисленные в разделе [Настройка Microsoft 365](/admins/connectors/official/microsoft-365/setup#before-you-begin),
и администратор Teams — только для **Include Meeting Transcripts**.

## Настройка Microsoft Entra

Следуйте [настройке Microsoft 365](/admins/connectors/official/microsoft-365/setup)
со строками Teams из её [таблицы разрешений](/admins/connectors/official/microsoft-365/setup#permissions):
ветки каналов всегда и по одной строке для каждого включаемого варианта. Каждый вариант работает с секретом клиента,
кроме **Include Attachments**, которому нужен сертификат. Держите под рукой **Application (client) ID**:
он нужен политике доступа приложения для **Include Meeting Transcripts**.

## Настройка Microsoft Teams

Этот раздел нужен только для **Include Meeting Transcripts**. Трёх разрешений Graph недостаточно:
если отсутствует любая из настроек ниже, Microsoft отказывает в транскриптах, даже если разрешения предоставлены.

**1. Разрешите доступ Microsoft Graph к транскриптам**

Войдите в [центр администрирования Teams](https://admin.teams.microsoft.com) как администратор Teams.
Откройте **Meetings → Meeting settings**.
В разделе **Transcript API access** переключите **Microsoft Graph access** в **On**. По умолчанию он выключен.

Затем выберите **Configure** и включите **Include speaker attribution** (**On**), чтобы в транскриптах указывалось,
кто говорил. Если выключено, Yahont по-прежнему индексирует транскрипт, но без говорящих.

То же изменение в Teams PowerShell, после `Connect-MicrosoftTeams` из следующего шага:

```powershell theme={null}
Set-CsTeamsMeetingConfiguration -EnableGraphTranscriptAccess true -EnableAttributedTranscripts true -Identity Global
```

См.
[Manage transcript API access for Teams
meetings](https://learn.microsoft.com/en-us/microsoftteams/meeting-transcript-api-access).

**2. Предоставьте политику доступа приложения**

Microsoft позволяет приложению читать собрание только от имени организатора,
у которого есть политика доступа приложения с названием этого приложения.
У политики нет страницы в центре администрирования. Она задаётся в Teams PowerShell:

```powershell theme={null}
Install-Module MicrosoftTeams
Connect-MicrosoftTeams

New-CsApplicationAccessPolicy -Identity Onyx-Transcripts -AppIds "<application (client) id>" -Description "Onyx reads meeting transcripts"

# Every user who has no policy of their own:
Grant-CsApplicationAccessPolicy -PolicyName Onyx-Transcripts -Global

# Or one organizer at a time, by user object ID:
Grant-CsApplicationAccessPolicy -PolicyName Onyx-Transcripts -Identity "<user object id>"
```

В тенанте одна глобальная политика доступа приложения (Global),
и она применяется к пользователям без собственной политики. Сначала выполните `Get-CsApplicationAccessPolicy`.
Если Global уже называет другие приложения, создайте одну политику, называющую их все,
прежде чем предоставлять её с `-Global`. Пользователю с собственной политикой нужно,
чтобы приложение Yahont было названо в этой политике. Изменение может применяться до 30 минут. См.
[Configure an application access
policy](https://learn.microsoft.com/en-us/graph/cloud-communication-online-meeting-application-access-policy).

**3. Проверьте организаторов**

Транскрипт существует, только если кто-то запустил транскрибирование на собрании.
Teams сохраняет его в OneDrive организатора, поэтому организатору нужны лицензия Teams и настроенный OneDrive.
Организатор без OneDrive не создаёт транскрипта, который мог бы отдать Microsoft.

## Настройка Yahont

**1. Откройте коннектор Teams**

В Yahont откройте **Панель администратора → Добавить коннектор** и выберите **Teams**.

**2. Создайте учётные данные**

Выберите существующие учётные данные Teams или создайте их,
как описано в разделе [Настройка Microsoft
365](/admins/connectors/official/microsoft-365/setup#enter-the-credential-in-onyx).
**Include Attachments** требует **Certificate Authentication**.

**3. Выберите команды**

Задайте коннектору название.
В **Teams** перечислите отображаемые имена команд для индексации или оставьте список пустым,
чтобы индексировать каждую команду тенанта.

**4. Выберите, что индексировать**

Включите **Include Attachments**, **Include Inline Images**,
**Include Meeting Transcripts** и **Include Meeting Chats** по необходимости. По умолчанию все выключены.

В **Meeting Organizers** перечислите имена участников (UPN) организаторов,
чьи транскрипты и чаты нужно индексировать, или оставьте список пустым,
чтобы охватить каждого включённого пользователя с лицензией Teams. Если список пуст,
политика доступа приложения должна охватывать всех этих пользователей.

**5. Выберите тип доступа**

Выберите тип доступа коннектора:

* **Public** делает всё проиндексированное содержимое видимым каждому пользователю Yahont.
* **Private** ограничивает коннектор выбранными группами пользователей Yahont.
* **Auto Sync Permissions** воспроизводит, кто может читать каждый элемент в Teams.

**Private** и **Auto Sync Permissions** — платные функции:
тарифы Business и Enterprise в Yahont Cloud и Enterprise Edition при самостоятельном размещении.

**6. Задайте дату начала индексации**

В **Advanced Configuration** задайте **Indexing Start Date**,
если вам не нужна каждая когда-либо опубликованная ветка.
Без неё первая попытка индексации читает каждый канал с момента создания команды,
и тенанту с многолетней историей каналов требуются дни, чтобы стать доступным для поиска.
С датой начала Yahont индексирует ветки, последний раз изменённые после неё, поэтому старая ветка,
в которой появился ответ, индексируется целиком.
Транскрипты и чаты собраний уходят назад не более чем на шесть месяцев или только до даты начала, если она позже.
См. [Расширенная конфигурация](/admins/connectors/overview#advanced-configuration).

**7. Подключите и проверьте**

Нажмите **Create Connector**. Yahont проверяет у Microsoft каждый включённый вариант, прежде чем начать индексацию,
и называет отсутствующее разрешение или настройку, если проверка не проходит.
Разрешения для **Auto Sync Permissions** в эту проверку не входят.
Затем откройте **Панель администратора → Существующие коннекторы**, выберите коннектор и убедитесь,
что первая попытка индексации завершилась.

> [!NOTE]
>
> Проверка транскриптов собраний читает одного организатора.
> Организатор без транскрипта за последние 30 дней подтверждает только разрешение на перечисление,
> поэтому отсутствие политики доступа приложения может впервые проявиться как ошибка индексации для этого организатора.

### Расширенные настройки

| Настройка | По умолчанию | Назначение |
| - | - | - |
| Authority Host | `https://login.microsoftonline.com` | Конечная точка идентификации Microsoft. См. [Национальные облака](/admins/connectors/official/microsoft-365/setup#national-clouds). |
| Graph API Host | `https://graph.microsoft.com` | Конечная точка Microsoft Graph. См. [Национальные облака](/admins/connectors/official/microsoft-365/setup#national-clouds). |

## Вложения

При включённом **Include Attachments** каждый файл на вкладке **Files** канала становится отдельным документом с
читателями, которых ему предоставляет SharePoint. Файлы канала находятся в библиотеке документов SharePoint,
поэтому этому варианту нужны сертификат и разрешение SharePoint. Файл часто предоставляется группе,
и Yahont перечисляет участников группы — для этого и нужен **GroupMember.Read.All**.
Yahont читает читателей каждого файла во время индексации независимо от типа доступа,
поэтому разрешения для этого варианта нужны даже для коннектора **Public**.
При **Sites.Selected** вместо **Sites.Read.All** предоставьте приложению полный контроль над сайтом каждого канала. См.
[Ограничение приложения отдельными
сайтами](/admins/connectors/official/microsoft-365/setup#limiting-the-app-to-specific-sites).

Задайте `TEAMS_CONNECTOR_ATTACHMENT_SIZE_THRESHOLD` (байты),
чтобы изменить ограничение размера 20 МБ (20 × 1024 × 1024 байт).

## Транскрипты и чаты собраний

Оба варианта обходят организаторов собраний, а не команды:
Microsoft перечисляет транскрипты и чаты собраний для каждого пользователя.

* Индексируются транскрипты и дни чата за последние шесть месяцев.
  Yahont читает на шесть месяцев назад, чтобы список каждого организатора оставался коротким, а элемент,
  которому исполнилось шесть месяцев, покидает индекс при следующей очистке.
* Каждый запуск спрашивает Microsoft обо всех организаторах. Обновление читает только время с последнего запуска.
  Первая индексация, очистка и синхронизация прав читают все шесть месяцев, примерно по 10–15 секунд на организатора,
  даже если транскрипта нет. Yahont читает по восемь организаторов одновременно. Чтобы большой тенант оставался быстрым,
  перечислите организаторов, которые записывают собрания.
* Организатор, которому Microsoft отказывает (например, потерявший политику доступа приложения), ничего не перечисляет,
  поэтому его транскрипты и дни чата покидают индекс при следующей очистке. Остальные организаторы не затрагиваются.
* Чат собрания индексируется через организатора собрания.
  Чат собрания, созданного другой организацией, не отдаётся приложениям вашего тенанта, поэтому не индексируется.

## Автосинхронизация прав

При **Auto Sync Permissions** Yahont предоставляет доступ по адресу электронной почты.
Адрес электронной почты или имя участника (UPN)
человека в Microsoft 365 должны совпадать с адресом пользователя в Yahont.
Участники транскриптов сопоставляются по имени участника (UPN).

| Элемент Teams | Кто видит его в Yahont |
| - | - |
| Ветки каналов | Каждый член команды для стандартного канала. Собственные участники канала для приватного или общего канала. |
| Файлы каналов | Люди и группы, которым SharePoint предоставляет файл, вместе с участниками каждой группы. Файл, доступный **Everyone** или **Everyone except external users**, виден каждому пользователю Yahont. |
| Транскрипт собрания | Организатор и участники, указанные в собрании |
| День чата собрания | Участники чата, которые видят первое сообщение дня. Добавленный в чат позже видит последующие дни, как в Teams. |

Ветка называет группу участников своего канала, а синхронизация групп перечисляет, кто входит в каждую группу.
Первая синхронизация групп запускается в течение минуты после создания коннектора,
и ветки нового коннектора становятся видимыми после её завершения.
После этого вход или выход в Teams доходит до Yahont при следующей синхронизации.
По умолчанию и синхронизация документов, и синхронизация групп выполняются каждые 5 минут.
Задайте `TEAMS_PERMISSION_DOC_SYNC_FREQUENCY` и `TEAMS_PERMISSION_GROUP_SYNC_FREQUENCY` (секунды),
чтобы изменить интервалы.

## Устранение неполадок

Сообщения, которые могут показывать все коннекторы Microsoft 365, см.
в разделе [Настройка Microsoft 365](/admins/connectors/official/microsoft-365/setup#troubleshooting).

| Сообщение или симптом | Причина и решение |
| - | - |
| Your app lacks sufficient permissions to read Teams (403 Forbidden) | Отсутствует **Team.ReadBasic.All** или не дано согласие администратора. Убедитесь, что каждое разрешение показывает **Granted**. |
| Include Attachments needs certificate authentication | Учётные данные используют секрет клиента. Создайте учётные данные **Certificate Authentication**. |
| Include Attachments needs read access to the channel files on Graph | Предоставьте **Files.Read.All** или **Sites.Read.All** в Microsoft Graph и дайте на него согласие администратора. |
| Include Attachments reads each file's readers from SharePoint, which needs Sites.FullControl.All on the SharePoint API | Разрешение отсутствует в API **SharePoint**. Недостаточно **Sites.Read.All** в SharePoint или любого разрешения в Microsoft Graph. |
| The files of channel "…" in team … answered 403 | Ошибка индексации для одного канала. Отсутствует **GroupMember.Read.All** или **User.Read.All**, либо SharePoint отказывает приложению на сайте этого канала. У приватных и общих каналов свой сайт. |
| Could not find a channel to check the files grant on | Тенант не вернул ни одного канала для проверки. Перечислите индексируемые команды в **Teams** или повторите. |
| Include Meeting Transcripts needs the tenant setting that allows Graph API access to transcripts | **Microsoft Graph access** выключен в **Transcript API access** в центре администрирования Teams. Microsoft сообщает об этом как `GraphAccessToTranscriptsDisabled`. Никакое разрешение это не переопределяет. |
| An application access policy naming this app must be granted to the organizer | У организатора нет политики доступа приложения с названием этого приложения. Создайте и предоставьте политику в Teams PowerShell, затем подождите до 30 минут. |
| Include Meeting Transcripts needs the OnlineMeetingTranscript.Read.All and OnlineMeetings.Read.All application permissions | Разрешение отсутствует или на него не дано согласие. Если вы предоставили его несколько минут назад, подождите и повторите: может пройти около получаса, прежде чем каждый вход будет его нести. |
| Include Meeting Transcripts (or Include Meeting Chats) needs the User.Read.All application permission to list organizers | Предоставьте **User.Read.All**. Транскрипты и чаты используют его для поиска организаторов. |
| No user matches a configured organizer | Запись в **Meeting Organizers** не соответствует ни одному пользователю. Используйте имя участника (UPN). |
| No enabled user with a Teams license to check Include Meeting Transcripts (or Include Meeting Chats) on | В тенанте нет включённого пользователя с лицензией Teams. Перечислите организаторов в **Meeting Organizers**. |
| Include Meeting Chats needs the Chat.Read.All application permission | Предоставьте **Chat.Read.All** и дайте на него согласие администратора. |
| A meeting has no transcript in Yahont | Проверьте по порядку. На собрании запущено транскрибирование. У организатора есть OneDrive. Политика доступа приложения и **Meeting Organizers** охватывают организатора. Собрание не является собранием канала. Транскрипту меньше шести месяцев. |
| Operation timed out after 10 seconds, or Timeout while validating Teams access | Microsoft ответил медленнее, чем ждёт Yahont. Повторите. Если Yahont затем сообщает, что имя существует, используйте другое имя. |
| Connector by this name already exists | Предыдущая неудачная попытка оставила свой коннектор. Используйте другое имя. |
| Threads are visible to no one under **Auto Sync Permissions** | Первая синхронизация групп не завершилась или адрес электронной почты участника в Microsoft 365 не совпадает с адресом пользователя в Yahont. Предоставьте **ChannelMember.Read.All** и **User.Read.All**. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.