> ## 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.

# Slack Indexed

> Настройка индексирующего коннектора Slack

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

Коннектор Slack индексирует все публичные каналы заданного рабочего пространства.

Чтобы индексировать приватные каналы, добавьте приложение Slack в приватный канал.

Для организаций Slack Enterprise Grid одна установка охватывает все рабочие пространства организации. См.
[настройку Enterprise Grid](#enterprise-grid-setup) ниже.

## Настройка

### Авторизация

**1. Требование к администратору**

**Примечание: чтобы настроить коннектор, нужно быть администратором рабочего пространства Slack**

**2. Откройте приложения Slack**

Откройте и войдите на [https://api.slack.com/apps](https://api.slack.com/apps).

**3. Создайте новое приложение Slack**

Создайте новое приложение Slack:

* Нажмите кнопку **Create New App** в правом верхнем углу.
* Выберите вариант **From an app manifest**.
* Выберите нужное рабочее пространство в раскрывающемся списке и нажмите **Next**.

![Создание приложения Slack с выбранным вариантом манифеста](https://mintcdn.com/yahont-ai/gQVGDVoirOMFHw3D/assets/admins/connectors/slack/SlackApp.png?fit=max\&auto=format\&n=gQVGDVoirOMFHw3D\&q=85\&s=2dd1d59a23d411e9264d84566da334f5)

**4. Настройте манифест приложения**

Выберите вкладку «YAML», вставьте в текстовое поле следующий манифест и нажмите **Next**:

```
display_information:
  name: OnyxConnector
  description: ReadOnly Connector for indexing Onyx
features:
  bot_user:
    display_name: OnyxConnector
    always_online: false
oauth_config:
  scopes:
    bot:
      - channels:history
      - channels:read
      - groups:history
      - groups:read
      - channels:join
      - im:history
      - users:read
      - users:read.email
      - usergroups:read
settings:
  org_deploy_enabled: false
  socket_mode_enabled: false
  token_rotation_enabled: false
```

**5. Создайте приложение**

Нажмите кнопку **Create**.

**6. Откройте OAuth permissions**

На странице приложения откройте вкладку **OAuth & Permissions** в заголовке **Features**.

**7. Скопируйте токен OAuth**

Скопируйте **Bot User OAuth Token**, он будет использоваться для доступа к Slack.

![Страница OAuth & Permissions в Slack с Bot User OAuth Token](https://mintcdn.com/yahont-ai/gQVGDVoirOMFHw3D/assets/admins/connectors/slack/SlackBotToken.png?fit=max\&auto=format\&n=gQVGDVoirOMFHw3D\&q=85\&s=f80bc792a822e1f1e4c5fed2ce1f99d2)

### Индексирование

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

Откройте панель коннекторов и выберите коннектор **Slack**.

**2. Укажите учётные данные**

Вставьте **Bot User OAuth Token** в **Step 1 Provide Credentials**

![Настройки коннектора Slack в Yahont с полем ввода Bot User OAuth Token](https://mintcdn.com/yahont-ai/gQVGDVoirOMFHw3D/assets/admins/connectors/slack/SlackConnectorSetting.png?fit=max\&auto=format\&n=gQVGDVoirOMFHw3D\&q=85\&s=214071f4cd80a595e12fcfafe0058e07)

**3. Задайте ID рабочего пространства и подключите**

Задайте **Workspace ID** (см. ниже) и нажмите **Connect**.

![Где найти ID рабочего пространства Slack в конфигурации приложения](https://mintcdn.com/yahont-ai/gQVGDVoirOMFHw3D/assets/admins/connectors/slack/SlackId.png?fit=max\&auto=format\&n=gQVGDVoirOMFHw3D\&q=85\&s=bcddd7c14058e8b36cac4359c61d6740)

**Примечание:** первая индексация получает все публичные каналы и занимает больше времени, чем последующие обновления.

## Настройка Enterprise Grid

Если ваш Slack — организация [Enterprise Grid](https://slack.com/help/articles/360000281563)
с несколькими рабочими пространствами, процесс создания приложения выполняется один раз на уровне организации,
и в Yahont используется один токен бота уровня организации. Slack по-прежнему требует,
чтобы администратор организации выбрал,
в какие рабочие пространства разворачивается бот (он не разворачивается автоматически во все рабочие пространства только
потому, что приложение одобрено на уровне организации).
Yahont автоматически определяет Grid по токену бота и индексирует каждое рабочее пространство, в которое развёрнут бот.

> [!NOTE]
>
> Для установки на уровне организации нужно быть **Org Owner** или **Org Admin** организации Slack Enterprise Grid.

### Чем отличается от настройки одного рабочего пространства

* Манифест приложения должен включать развёртывание на уровне организации и область `team:read`.
* Вы устанавливаете приложение в **организацию** один раз (одно подтверждение OAuth от Org Admin),
  но также должны выбрать,
  в какие рабочие пространства организации разворачивается бот — Yahont может индексировать только те рабочие
  пространства, участником которых бот действительно является.
* Ссылки на каналы в проиндексированных документах преобразуются в правильный URL для каждого рабочего пространства.
* Права на документы публичных каналов ограничиваются пользователями рабочих пространств, в которые канал расшарен
  (а не всей организацией),
  поэтому пользователь рабочего пространства A не увидит в Yahont документы публичного канала рабочего пространства B.

### Авторизация (Grid)

**1. Создайте новое приложение Slack**

На [https://api.slack.com/apps](https://api.slack.com/apps) нажмите **Create New App** → **From an app manifest**.
Выберите **любое** рабочее пространство в вашей организации Grid в качестве рабочего пространства разработки
(манифест ниже повышает приложение до уровня организации при установке).

**2. Используйте манифест Grid**

Вставьте следующий манифест. Два отличия от манифеста для одного рабочего пространства — `org_deploy_enabled:
        true` и добавленная область бота `team:read`:

```yaml theme={null}
display_information:
  name: OnyxConnector
  description: ReadOnly Connector for indexing Onyx
features:
  bot_user:
    display_name: OnyxConnector
    always_online: false
oauth_config:
  scopes:
    bot:
      - channels:history
      - channels:read
      - groups:history
      - groups:read
      - channels:join
      - im:history
      - users:read
      - users:read.email
      - usergroups:read
      - team:read
settings:
  org_deploy_enabled: true
  socket_mode_enabled: false
  token_rotation_enabled: false
```

**3. Установите в организацию**

Откройте **OAuth & Permissions** и нажмите **Install to Organization** (а не «Install to Workspace»).
Подтвердите запрос как Org Admin.
Это единое подтверждение OAuth — оно **не** разворачивает бота ни в одном рабочем пространстве.

**4. Разверните бота в каждом нужном рабочем пространстве**

Slack не разворачивает одобренные организацией приложения автоматически во все рабочие пространства.
Откройте панель администратора организации Grid (`https://<your-org>.enterprise.slack.com/admin`)
→ **Apps** → `OnyxConnector` и выберите рабочие пространства, в которые нужно развернуть бота.
Без этого шага `auth.teams.list` возвращает ноль рабочих пространств,
и Yahont увидит только то рабочее пространство, в котором приложение было разработано.

**5. Скопируйте токен бота уровня организации**

Вернитесь на страницу **OAuth & Permissions** приложения и скопируйте **Bot User OAuth Token**.
Токен начинается с `xoxb-`, как и обычный токен бота, но имеет права уровня организации.

### Индексирование (Grid)

Настройка коннектора в Yahont такая же, как для одного рабочего пространства: вставьте токен бота и нажмите **Connect**.
Yahont проверяет `auth.test()` для токена; если есть `enterprise_id`, он автоматически переключается в режим Grid:

* Перечисляет рабочие пространства через `auth.teams.list`
* Перечисляет каналы каждого рабочего пространства через `conversations.list?team_id=...` и удаляет дубликаты общих для организации каналов
* Определяет URL каждого рабочего пространства через `team.info` для построения ссылок на каналы
* Строит наборы адресов электронной почты пользователей по рабочим пространствам для ограничения прав публичных каналов

### Поведение ограничения прав

| Тип канала | ACL в Yahont |
| - | - |
| Публичный канал в одном рабочем пространстве | Предоставляется пользователям этого рабочего пространства |
| Публичный канал, общий для организации (`is_org_shared: true`) | Предоставляется объединению пользователей всех `shared_team_ids` |
| Приватный канал | Предоставляется фактическим участникам канала (независимо от рабочего пространства) |
| Объединение превышает 5000 пользователей или все команды неизвестны | Переключается на `is_public=true`, чтобы документ оставался доступным для поиска |

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

> **Ошибка проверки: отсутствует область `team:read`**
>
> Для перечисления рабочих пространств путь Grid требует `team:read`. Добавьте область в манифест,
> переустановите приложение в организацию и скопируйте новый токен бота в Yahont.

> **Yahont индексирует каналы только из одного рабочего пространства**
>
> `auth.teams.list` возвращает только те рабочие пространства, в которые добавлен бот.
> Откройте панель администратора организации Grid → **Apps** → `OnyxConnector` и добавьте его в каждое нужное рабочее
> пространство, затем запустите новую попытку индексации.

> **Пользователь из другого рабочего пространства может искать по содержимому публичных каналов этого рабочего пространства**
>
> Происходит только когда объединение пользователей по рабочим пространствам превышает `5000`.
> Выше этого лимита Yahont помечает документ публичным, чтобы он оставался доступным;
> тот же запасной вариант применяется, когда ни одно из рабочих пространств канала нет в кэше Yahont (например,
> рабочее пространство, добавленное в организацию Grid после настройки коннектора).
> Повторное сохранение учётных данных перестраивает кэш рабочих пространств.


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