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

# Привязка Telegram

> Привязка и отвязка аккаунта Telegram сотрудника: подтверждение по 8-значному одноразовому коду с лимитом попыток, перенос чата на текущую компанию и сотрудника и отправка сообщения-подтверждения.

Полный перечень полей — в [глоссарии](/ru/logic/notifications/telegram-link-glossary).

## Что это и зачем

Раздел отвечает за то, как сотрудник **привязывает свой аккаунт Telegram** к профилю в системе, чтобы получать в этот чат уведомления, и как он может **отвязать** его. Привязка нужна, потому что канал доставки в Telegram отправляет сообщения не по номеру телефона и не по логину, а по конкретному чату — и система должна заранее знать, какой чат принадлежит какому сотруднику в какой компании.

Механика построена на подтверждении по одноразовому коду: сначала сотрудник открывает бот в Telegram, бот заводит предварительную (неподтверждённую) запись и выдаёт код, а затем сотрудник вводит этот код в веб- или мобильном интерфейсе, уже находясь под своим рабочим аккаунтом. Только после ввода кода чат «переезжает» на его аккаунт и текущую компанию.

<Note>
  Бот выдаёт код из **8 цифр** и проверяет, что такой же код не выдан другому ожидающему подтверждения чату. Форма подтверждения принимает от 6 до 10 символов — это нужно, чтобы коды, выданные до перехода на восьмизначные, продолжали срабатывать и никто не застрял на середине привязки.
</Note>

## Модель данных

В привязке участвует связка **Пользователя Telegram** — записи, соединяющей Telegram-чат с сотрудником и компанией. В процессе привязки таких записей две: временная неподтверждённая (её создаёт бот вместе с кодом) и итоговая подтверждённая (её формирует система после успешной проверки кода).

| Поле              | Тип   | Назначение                                                                                                                                                                          |
| ----------------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Компания          | связь | Компания, к которой относится чат; при привязке подставляется текущая компания сотрудника                                                                                           |
| Сотрудник         | связь | Пользователь, к аккаунту которого привязывается чат                                                                                                                                 |
| ID чата           | число | Уникальный идентификатор Telegram-чата; именно он служит ключом при переносе привязки                                                                                               |
| Имя пользователя  | текст | Telegram-логин (@username)                                                                                                                                                          |
| Имя               | текст | Имя из профиля Telegram                                                                                                                                                             |
| Фамилия           | текст | Фамилия из профиля Telegram                                                                                                                                                         |
| Подтверждён       | флаг  | Признак завершённой привязки; у временной записи выключен, у итоговой — включён                                                                                                     |
| Код подтверждения | текст | Код для привязки, который выдаёт бот и который сотрудник вводит при подтверждении: бот выдаёт **8 цифр**, при вводе принимается от 6 до 10 символов; после подтверждения обнуляется |

У пары «Компания + Сотрудник» действует ограничение уникальности: в одной компании у сотрудника может быть только одна привязка Telegram.

## Как проходит привязка

Привязка выполняется через **endpoint привязки Telegram**, доступный только авторизованному сотруднику. У него две операции:

* **Отправка кода** — сотрудник передаёт код, полученный от бота (принимается от 6 до 10 символов). На эту операцию действует лимит **10 попыток в минуту на сотрудника**.
* **Просмотр текущей привязки** — возвращает уже существующую привязку сотрудника в текущей компании (если её нет — «не найдено»). Эта операция не ограничена лимитом: интерфейс опрашивает её, чтобы показать состояние привязки.

### Проверка кода

При отправке кода **формат привязки Telegram** делает следующее:

1. Берёт текущую компанию (определённую по контексту запроса) и текущего сотрудника (из авторизации).
2. Ищет **неподтверждённую** запись Пользователя Telegram с таким же кодом подтверждения.
3. Если ни одной неподтверждённой записи с этим кодом нет — запрос завершается ответом «не найдено» (404), привязка не создаётся.
4. Если по одному коду нашлось **несколько** ожидающих чатов — код считается неоднозначным и тоже отклоняется ответом «не найдено». Произвольный выбор одного из чатов не делается: код нужно получить заново.

<Info>
  **Почему код нельзя искать «только в своей компании».** Ожидающую подтверждения запись создаёт бот в момент, когда сотрудник открыл с ним чат — на этом шаге бот знает только сам чат, ни компании, ни сотрудника ещё нет. Список ожидающих чатов один на всю платформу, и до ввода кода сузить поиск просто не по чему. Поэтому секретом здесь является сам код, а защита строится на нём: 8 цифр от бота, проверка на неоднозначность и лимит 10 попыток в минуту на сотрудника.
</Info>

### Перенос чата и подтверждение

Если неподтверждённая запись найдена, система:

1. Запоминает данные чата: ID чата, Telegram-логин, имя и фамилию.
2. **Удаляет** временную неподтверждённую запись.
3. **Освобождает прежнюю привязку** этого сотрудника в этой компании, если она была сделана к другому чату. Так «перепривязать» Telegram к новому чату можно сразу, не отвязывая старый вручную.
4. Создаёт (или обновляет, если такая уже есть) **подтверждённую** запись по ID чата: проставляет текущую компанию, текущего сотрудника, переносит логин/имя/фамилию, включает флаг «подтверждён» и обнуляет код подтверждения.
5. Отправляет в этот чат сообщение об успешной привязке (фоновой задачей доставки в Telegram).

Ключом переноса выступает именно **ID чата**: подтверждённая запись привязывается к тому же чату, что и временная. За счёт режима «обновить или создать» повторная привязка того же чата не плодит дубликаты, а перезаписывает существующую привязку — например, чат можно таким образом переназначить на другого сотрудника или другую компанию.

<Info>
  В ответе на успешную привязку возвращается только Telegram-логин привязанного чата (как имя привязки). Сам код — поле только для записи и в ответе не показывается.
</Info>

## Как проходит отвязка

Отвязка выполняется через отдельный **endpoint отвязки Telegram**, тоже доступный только авторизованному сотруднику. Здесь **формат отвязки Telegram** не принимает никаких входных полей: он находит привязку **текущего сотрудника в текущей компании** и удаляет её. Если у сотрудника нет привязки в этой компании — ответ «не найдено» (404).

<Note>
  Отвязка действует в границах текущей компании: удаляется привязка именно этого сотрудника в той компании, в контексте которой сделан запрос. Если у сотрудника есть привязки в нескольких компаниях, отвязка в одной из них остальные не затрагивает.
</Note>

## Как это используется

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

## Особенности поведения

* Если по одному и тому же коду существует несколько неподтверждённых записей, привязка не выполняется вовсе: код отклоняется как неоднозначный, ни один из чатов не выбирается.
* Слишком частые попытки ввода кода отклоняются: больше 10 попыток в минуту от одного сотрудника не принимается. Просмотр состояния привязки лимитом не ограничен.
* Привязка выполняется в режиме «обновить или создать» по ID чата, поэтому повторный ввод кода для уже привязанного чата не создаёт дубликат, а перезаписывает существующую привязку (может сменить сотрудника или компанию у чата).
* Привязка нового чата, когда у сотрудника в этой же компании уже есть привязка к другому чату, проходит штатно: прежняя привязка освобождается автоматически, отвязывать старый чат вручную не нужно.
* Между удалением временной записи и созданием подтверждённой нет явной единой транзакции: при сбое на шаге создания временная запись уже удалена, и код придётся получать заново.
* Отвязка работает только в границах текущей компании: удаляется привязка сотрудника именно в той компании, в контексте которой сделан запрос, привязки в других компаниях остаются.
* Сообщение об успешной привязке отправляется фоновой задачей, поэтому доставка подтверждения в чат может произойти с задержкой или не произойти при сбое очереди, хотя сама привязка уже сохранена.
* У кода нет срока жизни: выданный ботом код остаётся действующим, пока чат не подтверждён или запись не удалена.

## Связанные страницы

<CardGroup cols={2}>
  <Card title="Глоссарий: Привязка Telegram" icon="book" href="/ru/logic/notifications/telegram-link-glossary">
    Полный перечень полей и терминов, используемых в привязке и отвязке Telegram.
  </Card>

  <Card title="Уведомления (доставка и доступ)" icon="bell" href="/ru/logic/notifications">
    Обзорная страница модуля уведомлений: доставка, каналы и доступы.
  </Card>

  <Card title="Модель и веер доставки" icon="sitemap" href="/ru/logic/notifications/model-dispatch">
    Модели уведомления и получателя, сигнал сохранения и разветвление доставки по каналам с учётом доступов.
  </Card>

  <Card title="Создание и группировка" icon="layer-group" href="/ru/logic/notifications/creation-grouping">
    Фоновые задачи создания уведомлений: одиночные, обновляемые по объекту и сгруппированные в 30-минутном окне.
  </Card>

  <Card title="Каналы доставки" icon="tower-broadcast" href="/ru/logic/notifications/delivery-channels">
    Транспортные задачи и сервис: веб-доставка, мобильные push-уведомления и рассылка в Telegram.
  </Card>

  <Card title="Чтение, архивация и список" icon="envelope-open" href="/ru/logic/notifications/read-archive">
    Список уведомлений, счётчик непрочитанных, отметка прочтения и архивация с логикой первого клейма.
  </Card>

  <Card title="Push-токены устройств" icon="mobile-screen" href="/ru/logic/notifications/push-tokens">
    Регистрация и отписка push-токенов мобильных устройств с уникальностью по устройству и типом платформы.
  </Card>

  <Card title="Доступ и настройки" icon="sliders" href="/ru/logic/notifications/access-settings">
    Матрица доступов «источник × тема» на пользователя и bulk-редактирование настроек уведомлений.
  </Card>
</CardGroup>
