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

# Глоссарий: Каналы доставки

> Справочник моделей, задач и сервисов доставки уведомлений по каналам: веб, мобильный push и Telegram.

Словарь сущностей подсистемы доставки уведомлений: модели, задачи, сервисы и справочники. Companion к странице [Каналы доставки](/ru/logic/notifications/delivery-channels).

## Понятия

| Понятие                            | Значение                                                                                                                                                                       |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Задача: веб-уведомление (Ably)     | задача публикует сообщение в канал Ably REST для доставки в веб-клиент. Очередь «message»; событие «update» (по умолчанию) или «remove».                                       |
| Задача: мобильный push (Expo)      | задача находит активные Expo-токены пользователей арендатора и рассылает push через сервис. Очередь «message»; деактивирует токены при InvalidPushToken / DeviceNotRegistered. |
| Задача: уведомление в Telegram     | задача отправляет сообщение через Telegram Bot API (sendMessage). Очередь «message»; time\_limit 3600 с; parse\_mode HTML.                                                     |
| Задача: очистка неактивных токенов | задача удаляет неактивные Expo-токены, не обновлявшиеся более 30 дней. Очередь «default»; порог отсечения — 30 дней.                                                           |
| Сервис Expo-пушей                  | Обёртка над PushClient из exponent\_server\_sdk для отправки уведомлений на Expo-токены. Единый экземпляр; отдаёт сводку по успехам и ошибкам.                                 |

## Модели и поля

### Push-токен устройства

*Хранит Expo push-токен конкретного устройства сотрудника для мобильных пуш-уведомлений. Уникальность по связке компания + пользователь + токен + идентификатор устройства + тип устройства.*

**Связи**

| Поле         | Тип   | Описание                                                 |
| ------------ | ----- | -------------------------------------------------------- |
| Компания     | связь | арендатор, которому принадлежит токен; может быть пустым |
| Пользователь | связь | владелец устройства; обратная связь push\_tokens         |

**Устройство**

| Поле                     | Тип          | Описание                              |
| ------------------------ | ------------ | ------------------------------------- |
| Токен                    | текст        | Expo push-токен устройства            |
| Идентификатор устройства | текст        | необязательный ID устройства          |
| Тип устройства           | перечисление | iOS / Android / Web; по умолчанию iOS |

**Состояние**

| Поле                    | Тип        | Описание                                                               |
| ----------------------- | ---------- | ---------------------------------------------------------------------- |
| Активен                 | флаг       | деактивируется при недоставке (InvalidPushToken / DeviceNotRegistered) |
| Последнее использование | дата/время | обновляется автоматически при сохранении                               |

**Служебные**

| Поле     | Тип        | Описание                                                            |
| -------- | ---------- | ------------------------------------------------------------------- |
| Создан   | дата/время | из AbstractModel                                                    |
| Обновлён | дата/время | из AbstractModel; по нему чистятся неактивные токены старше 30 дней |

### Задача: веб-уведомление (Ably)

*задача публикует сообщение в канал Ably REST для доставки в веб-клиент. Очередь «message»; событие «update» (по умолчанию) или «remove».*

| Поле        | Тип   | Описание                                                                 |
| ----------- | ----- | ------------------------------------------------------------------------ |
| Канал       | текст | имя канала Ably для публикации                                           |
| Данные      | текст | полезная нагрузка сообщения                                              |
| Имя события | текст | «update» (по умолчанию) для добавления/обновления, «remove» для удаления |

### Задача: мобильный push (Expo)

*задача находит активные Expo-токены пользователей арендатора и рассылает push через сервис. Очередь «message»; деактивирует токены при InvalidPushToken / DeviceNotRegistered.*

**Адресация**

| Поле                         | Тип    | Описание                                            |
| ---------------------------- | ------ | --------------------------------------------------- |
| Идентификаторы пользователей | список | получатели; обязательное поле                       |
| Идентификатор компании       | число  | арендатор для фильтрации токенов; обязательное поле |

**Содержимое**

| Поле      | Тип     | Описание                         |
| --------- | ------- | -------------------------------- |
| Заголовок | текст   | заголовок уведомления            |
| Текст     | текст   | тело уведомления                 |
| Данные    | словарь | дополнительная полезная нагрузка |

**Параметры**

| Поле          | Тип   | Описание                                 |
| ------------- | ----- | ---------------------------------------- |
| Звук          | текст | звук уведомления; по умолчанию «default» |
| Бейдж         | число | счётчик на иконке приложения             |
| Канал Android | текст | идентификатор канала уведомлений Android |

### Задача: уведомление в Telegram

*задача отправляет сообщение через Telegram Bot API (sendMessage). Очередь «message»; time\_limit 3600 с; parse\_mode HTML.*

| Поле               | Тип   | Описание                                    |
| ------------------ | ----- | ------------------------------------------- |
| Текст              | текст | текст сообщения (HTML)                      |
| Токен бота         | текст | токен Telegram-бота; по умолчанию системный |
| Идентификатор чата | текст | получатель; по умолчанию системный канал    |

### Задача: очистка неактивных токенов

*задача удаляет неактивные Expo-токены, не обновлявшиеся более 30 дней. Очередь «default»; порог отсечения — 30 дней по дате обновления.*

Задача не принимает параметров.

### Сервис Expo-пушей

*Обёртка над PushClient из exponent\_server\_sdk для отправки уведомлений на Expo-токены. Единый экземпляр сервиса; отдаёт сводку по количеству успехов, ошибок и списку ошибок.*

| Поле        | Тип    | Описание                                     |
| ----------- | ------ | -------------------------------------------- |
| Клиент Expo | объект | экземпляр PushClient (exponent\_server\_sdk) |

**Методы**

| Поле                       | Тип   | Описание                                                                                                     |
| -------------------------- | ----- | ------------------------------------------------------------------------------------------------------------ |
| Отправка на список токенов | метод | формирует сообщение на каждый токен, публикует пачкой, считает успехи/ошибки; ловит ошибки сервера и тикетов |
| Отправка на один токен     | метод | обёртка над отправкой на список для одного токена                                                            |

## Статусы и справочники

### Тип устройства push

Платформа устройства, для которого зарегистрирован push-токен. Значение по умолчанию — iOS.

* iOS
* Android
* Web
