---
title: Омниканал (мессенджеры и захват лидов)
description: Единый инбокс для всех каналов — веб-формы Tilda, звонки PBX Moldcell, Viber, WhatsApp, Facebook/Instagram, комментарии — с ответом на конкретное сообщение, вложенными файлами, реакциями, историями Instagram, ice breakers и меню, автоответами по ключевым словам, захватом лидов, правилами маршрутизации, комплаентными кампаниями и тремя отчётами. Выключен по умолчанию; включается из Центра конфигурации.
product: TSync Intelligence 11.3.6
language: ru
canonical: https://docs.tsync.pro/ru/modules/tsync-omnichannel/
source: https://docs.tsync.pro/llms.txt
---

# 📨 Омниканал — мессенджеры и захват лидов

**Омниканал** собирает в TSync все способы, которыми с вами связываются клиенты, в одном месте: лиды из
веб-форм, звонки и мессенджеры (Viber, WhatsApp, Facebook Messenger, Instagram Direct). Каждое сообщение
становится перепиской, привязанной к лиду, а каждая отправка формы или заявка из рекламы автоматически
становится лидом — с дедупликацией, чтобы у вас не было двух записей по одному человеку.

Модуль **выключен по умолчанию**. Ничего не меняется, пока администратор его не включит.

## Как включить

Откройте **Центр конфигурации → Омниканал → Настройки** и выберите **режим**:

- **Выключено** — полностью инертно. Есть только страница настроек; ничего не показывается, не отправляется
  и не принимается.
- **Shadow** — консоль и меню появляются, чтобы всё безопасно настроить; каналы ещё не активны.
- **Включено** — полностью активно. Каналы отправляют и принимают.

На этой же странице задайте **код страны по умолчанию** (для Молдовы **373**, для Румынии **40**). Тогда
местные номера вроде `069 123 456` автоматически превращаются в полный международный номер.

**Версия API Meta (Graph).** Здесь же находится версия, которую использует каждый вызов к Meta — Messenger,
WhatsApp, Instagram, Lead Ads и чтение ваших собственных публикаций. Это поле (формат `vNN.N`, например
`v23.0`), а не что-то зашитое в выпуск системы: Meta выводит версию из обращения примерно через два года после
её появления, и вызовы начинают падать, хотя у вас ничего не менялось. **Версий две, и они независимы**, а это
только одна из них: у каждого поля вебхука своя версия, задаваемая в консоли приложения Meta, и она определяет
форму того, что Meta вам *присылает*. Они могут расходиться вообще без ошибок — приведите в соответствие обе.

## Меню быстрых действий по правому клику

После включения **щёлкните правой кнопкой по любому номеру телефона** в TSync — в лиде, списке или поле формы
— и появится небольшое меню:

- **WhatsApp · Viber · Telegram** — открывает чат с этим номером в вашем приложении,
- **Позвонить · SMS** — начинает звонок или сообщение,
- **Копировать номер**.

Правый клик по **документу** (там, где он отмечен для отправки) даёт **Поделиться (система)** — используется
нативное окно «Поделиться» устройства (удобно на телефоне, где можно приложить сам файл) — плюс варианты
«скопировать ссылку и открыть» для каждого приложения.

Какие приложения показывать, вы выбираете в **Настройки → Быстрые действия**.

## Плавающий виджет контактов

Если меню по правому клику — инструмент для *вашей команды*, то **плавающий виджет контактов** — это всегда
видимая кнопка, через которую с вами связываются *посетители и клиенты*. Это небольшая круглая кнопка,
закреплённая в углу страницы; при нажатии она раскрывает набор иконок каналов. Это современный преемник старого
виджета поддержки-контакта.

Включите его в **Центр конфигурации → Омниканал → Настройки → Виджет контактов**:

- **Включите виджет** и выберите, где он показывается — **клиентский портал**, **админ-зона** или оба.
- Задайте **положение кнопки** (в каком углу экрана) и её **цвет**.
- Заполните каналы, которые вы предлагаете — **WhatsApp, Viber, Telegram, Messenger, телефон, email**. Кнопка
  канала появляется только когда вы заполните его значение, так что вы показываете именно те способы связи,
  которые хотите.

Посетитель видит круглую кнопку, нажимает её и выбирает канал: WhatsApp / Viber / Telegram / Messenger открывают
чат с вами, **телефон** начинает звонок, а **email** открывает новое письмо. Всё происходит на устройстве самого
посетителя — ничего не отправляется, пока он не решит с вами связаться.

## Подключение канала (Аккаунты)

Перейдите в **Омниканал → Аккаунты** и нажмите **Новый**. Выберите канал и заполните его данные — каждый
канал даёт вам **защищённый URL вебхука**, который вставляется у провайдера:

- **Tilda** — для форм на сайте. Вставьте URL в *Tilda → Настройки сайта → Формы → Webhook*. Каждая
  отправка попадает во входящие как **цепочка**; **лид по умолчанию НЕ создаётся** — см. ниже.
  **После подключения вебхука переопубликуйте страницы в Tilda:** список получателей записан в уже
  опубликованных страницах, иначе формы продолжат отправлять только туда, куда отправляли раньше.
- **Viber** — вставьте **auth token** Viber-бота; зарегистрируйте URL в Viber (`set_webhook`).
- **WhatsApp** — Cloud API: укажите id номера, access token, app secret и verify token; вставьте URL +
  verify token в вебхук приложения Meta.
- **Meta Lead Ads** (реклама Facebook/Instagram) — укажите id страницы, page access token, app secret и
  verify token; подпишите поле *leadgen* приложения.
- **Messenger / Instagram Direct** — те же поля страницы Meta. **Нужны ДВЕ подписки, и именно отсутствие второй
  обычно объясняет, почему ничего не приходит:** подпишите **Страницу** на приложение *и* подпишите само
  **приложение** на поле `messages` (приложение Meta → Webhooks). Экран «Configure webhooks» проверяет callback,
  но может оставить список полей пустым — если `messages` в нём нет, Meta не присылает вообще ничего. Для
  **комментариев** к публикациям и рекламе дополнительно подпишите объект `instagram` на `comments`, а Страницу
  на `feed`.

Для каждого аккаунта можно задать **статус, источник и ответственного по умолчанию** для создаваемых лидов.

## Инбокс

**Омниканал → Инбокс** — единый список всех переписок по всем каналам: от кого, последнее сообщение,
метка непрочитанного и ссылка на лид. Фильтруйте по **Все / Непрочитанные**, по каналу или ищите по имени,
телефону или email.

Откройте переписку, чтобы увидеть всю **ленту сообщений** (входящие и исходящие пузыри). Для каналов с
ответами (Viber, WhatsApp, Messenger/Instagram) есть **поле ответа** — можно написать сообщение или выбрать
**быстрый ответ** и отправить прямо из TSync. На карточке каждого лида также показана компактная **лента
Омниканала** сообщений этого человека.

**Фото, голосовые и файлы тоже доходят.** Фотография, стикер, GIF, голосовое сообщение или документ,
отправленный клиентом, скачивается и хранится вместе с перепиской: картинку видно прямо в ленте, а
голосовое можно прослушать, не выходя из TSync — одинаково в Messenger, Instagram, Viber и WhatsApp. Имя и
фото профиля отправителя показываются везде, где их даёт канал; если не даёт — переписка подписывается
каналом и хвостом идентификатора отправителя — `Messenger · #a1b2c3` — чтобы два незнакомых человека
никогда не выглядели как один.

**Какая реклама привела переписку.** Если человек написал вам, нажав на рекламу Facebook или Instagram
«отправить сообщение», в инбоксе источник показан как **Messenger (ad)** или **Instagram (ad)** (эта пометка
в списке остаётся английской), а внутри переписки метка **Из рекламы** называет само объявление. Так платный
трафик отличается от органического без захода в Ads Manager. Переходы, которые не являются рекламой
(короткая ссылка, чат-виджет на сайте), тоже фиксируются, но намеренно не помечаются как реклама.

**Реакция — это ответ.** Когда человек ставит 👍 или ❤️ на одно из ваших сообщений, переписка показывает
это **на самом сообщении**, а не отдельной строкой — так «палец вверх» на коммерческом предложении виден
вместо того, чтобы читаться как молчание. Если реакцию снимут, она исчезнет и здесь. Показываются только
реакции на сообщения, которые уже есть в инбоксе; для переписки, начавшейся до подключения канала, ничего не
выдумывается.

**Истории Instagram.** Ответ на вашу историю помечается **«Ответил на вашу историю»**, со ссылкой
**открыть историю**, на которую он отвечает, а тот, кто показал ваш бизнес в собственной истории, приходит
как **«Упомянул вас в истории»** — он показал вас своим подписчикам. Это два самых ценных события в
Instagram-инбоксе, и раньше они выглядели как любая другая картинка.

**Если ответ отправить нельзя, вам скажут почему.** Прежде чем ваше сообщение уйдёт, TSync проверяет, что
человек не отписался и что окно канала ещё допускает сообщение: в Messenger и Instagram свободное окно —
**24 часа** с их последнего сообщения вам. После него ответ, *написанный вами*, всё равно уходит по
исключению Meta для человеческих ответов (до 7 дней). После этого срока, или на канале без такого
исключения (свободное сообщение в WhatsApp), отправка останавливается с понятной причиной вместо кода
ошибки провайдера — используйте одобренный шаблон.

**Удаление переписки.** Спам, сообщение, попавшее не туда, или ваши собственные тестовые строки можно
убрать: откройте переписку и нажмите **Удалить переписку**. Сообщения и их файлы удаляются безвозвратно.
**Контакт и связанный лид остаются** — переписка это свидетельство, а лид коммерческая запись, и удаление
первого не имеет права молча забрать второе. Подтверждение говорит об этом прямо, до нажатия.

## Ответ кнопками, которые можно нажать

Под полем ответа есть свёрнутая панель **«Быстрые ответы (необязательно)»**. Откройте её, нажмите **+** для
каждого варианта, который хотите предложить, и впишите короткую подпись (до 20 символов). Отправьте как
обычно — подписи появятся под вашим сообщением кнопками, которые собеседник нажимает вместо того, чтобы
печатать.

> Не путайте с разделом **«Готовые ответы»** в меню: там хранятся заготовки текста, которые вы
> вставляете в поле ответа. Здесь — кнопки, которые уходят вместе с сообщением.

Так стоит делать всегда, когда ответ — один из нескольких известных вариантов: *Да / Нет / Перезвоните*. В
нажатии нельзя ошибиться, и оно говорит то, чего напечатанное слово сказать не может: выбранный вариант
помечается словом **выбрал**, поэтому «Да», которое человек выбрал, никогда не выглядит как «Да», которое он
случайно набрал.

Оставьте панель закрытой — ответ уйдёт ровно так же, как раньше. Пустая строка игнорируется.

**Не каждый канал несёт всё, и о том, что осталось за бортом, вам сообщат.** WhatsApp допускает не больше
трёх кнопок; Instagram показывает их только в мобильном приложении; Telegram не примет две клавиатуры сразу.
TSync подгоняет сообщение под канал, а затем сообщает разницу — *«2 элемент(ов) не поддерживаются в этом
канале и были опущены»*. Это важно: сообщение может быть отправлено **успешно** и всё равно прийти без
кнопок — как раз тот случай, о котором иначе вы бы никогда не узнали. Слишком длинная подпись укорачивается,
а не выбрасывается: короткая кнопка работает, а отсутствующая ломает ответ, который на неё ссылался.

Можно отправить и **картинку или файл вообще без текста** — фотография без подписи это нормально, и теперь
она проходит.

## К какому сообщению относится ответ

Когда человек отвечает на конкретное сообщение — жестом «ответить» в приложении Messenger, например —
в переписке появляется **«В ответ на»** с цитатой оригинала над его словами. В ветке с несколькими открытыми
вопросами это единственный способ понять, на какой из них ответили: связь потом уже не восстановить ни по
времени, ни по порядку сообщений.

Если оригинал старше той части переписки, что на экране, будет написано **«В ответ на более раннее
сообщение»**, а не пусто — так ответ всегда выглядит ответом, даже когда саму цитату найти не удаётся.
Сообщение, пришедшее прямо у вас на глазах, показывает свою цитату сразу — перезагружать страницу, чтобы
увидеть, на что оно отвечает, больше не нужно.

### Как ответить на конкретное сообщение

То же самое можно сделать и со своей стороны. Наведите курсор на сообщение клиента и нажмите стрелку ответа
рядом с пузырём — **«Ответить на это сообщение»**. Над полем ответа появится полоса **«Отвечаете на»** с
текстом, на который вы отвечаете; напишите ответ и отправьте как обычно — клиент увидит его прикреплённым
именно к тому сообщению, ровно как если бы вы воспользовались жестом «ответить» в своём приложении. Нажмите
**✕** на полосе, чтобы снова отвечать переписке целиком.

Пользуйтесь этим всегда, когда ветка ушла в несколько тем: *«да, это есть на складе»* через три вопроса уже
ничего не значит.

**Messenger, Instagram, WhatsApp и Telegram** это несут. На **Viber** отправка отклоняется с понятной
причиной, вместо того чтобы прийти оторванной от сообщения, на которое должна была отвечать.

**Мелочь, которая ушла вместе с этим:** отправка ответа больше не вызывает диалог браузера *«Leave site?
Changes that you made may not be saved»*. Он появлялся при каждой отправке, и нажатие Cancel выбрасывало
написанное.

## Отправка файла со своего компьютера

Под полем ответа есть **«Прикрепить файл»**. Выберите изображение, видео, аудио, PDF или документ Office
размером до **25 МБ**, при желании добавьте текст и отправьте вместе с ответом.

**Файл никогда не публикуется.** Он загружается с вашего сервера прямо на платформу, поэтому нет публичного
адреса, который мог бы открыть любой, у кого есть ссылка. Эта разница важна в тот день, когда вы отправляете
подписанный договор, а не фотографию товара. Отправить можно только фиксированный список типов файлов, причём
тип читается из **содержимого** файла, а не из его имени.

Сегодня файл с компьютера умеют отправлять только **Messenger и Instagram**. На **Telegram, WhatsApp и
Viber** отправка отклоняется с прямой фразой об этом — вместо того чтобы отправить текст и молча потерять
файл.

Если файл не проходит проверку, не отправляется ничего: исправьте его и нажмите «Отправить» ещё раз. А если
ваш сервер отклонит загрузку раньше, чем её увидит TSync (частый лимит заметно меньше 25 МБ), вам скажут и об
этом — *«ничего не произошло»* худший из возможных ответов на нажатие «Отправить» с файлом в 30 МБ.

## Когда сообщение становится лидом

**По умолчанию — не становится.** Сообщение, комментарий или отправленная форма попадают во входящие как
**цепочка**, а лид создаётся только тогда, когда **вы** решите, что это реальный клиент, — кнопкой
**Создать лид** в цепочке.

Причина проста: не каждое сообщение — квалифицированная заявка. Телефон, оставленный в строке «перезвоните
мне», вопрос в комментарии, «здравствуйте» в Messenger — это разговоры, а не клиенты. Если каждый из них
автоматически станет лидом, воронка заполнится записями, которые никто не проверял, и ваши цифры продаж
перестанут что-либо значить.

Ничего не теряется: цепочка сохраняется целиком — сообщения, телефон и всё, что было заполнено. Её можно найти,
ответить из неё и перевести в лид в любой момент позже.

Если квалификация у вас происходит **до** попадания в систему — например, бот пересылает только отфильтрованные
заявки — отметьте галочку у нужного аккаунта в **Omnichannel → Аккаунты**:

- **Создавать лид для каждой отправки формы** (Tilda),
- **Создавать лид для каждого чата** (Messenger, Instagram, Viber, WhatsApp),
- **Создавать лид для каждого комментатора** (комментарии Facebook/Instagram).

У каждого канала свой переключатель, поэтому комментарии можно оставить журналом, а формы — превращать в лиды.

## Звонки в инбоксе

Если вы используете **коннектор PBX Moldcell**, звонки тоже появляются здесь: каждый звонок становится
записью в переписке контакта с направлением, длительностью, статусом и — если есть — встроенным **аудио-
плеером** записи. Входящий звонок с неизвестного номера может автоматически открыть новый лид.

## Комментарии к постам в Facebook и Instagram

Комментарии под вашими постами и объявлениями попадают в инбокс как переписки, так же как личные сообщения —
но попадают туда потому, что TSync их **забирает**, а не потому, что Meta их присылает. Meta не доставляет
уведомления о комментариях, пока приложение не прошло проверку Advanced Access, тогда как *чтение*
комментариев работает с первого дня. Поэтому TSync забирает их сам.

Задача планировщика **Опрос комментариев (Facebook / Instagram)** (`omni.comment_poll`, по умолчанию каждые
15 минут) просматривает свежие посты и заносит каждый новый комментарий. Она намеренно ограничена, чтобы
одна активная страница не забрала всё: **10 последних постов** на аккаунт, опубликованных за последние **30
дней**, и не больше **300 комментариев за запуск**. Ваши собственные ответы распознаются и никогда не
заносятся как сообщения клиента, а комментарий, уже попавший в инбокс, не заносится второй раз — поэтому
неважно, запустится ли задача снова.

Она находится в [Планировщике](../scheduler.md) (**Планировщик** в боковом меню), оттуда её можно запустить
и вручную кнопкой **Запустить сейчас**. Ей нужно разрешение `pages_read_user_content` в вашем приложении
Meta. Если позже вам одобрят
вебхуки комментариев, они автоматически становятся основным каналом, а задача остаётся страховкой на случай
пропусков доставки, которые у вебхуков бывают незаметно для всех.

### Как ответить комментатору лично

Публичный комментарий можно превратить в личную переписку. Откройте комментарий в инбоксе и нажмите
**«Личный ответ»**: человек получит ваше сообщение в Messenger или Instagram Direct, и если он ответит,
переписка продолжится обычным образом. Meta разрешает **ровно один** личный ответ на комментарий, в течение
**7 дней** — подтверждение об этом предупреждает, потому что отменить или повторить его нельзя.

Это может происходить и само. На странице **Омниканал → Ответы по ключевым словам** включите **«Отвечать на
новые комментарии лично и автоматически»**. Дальше:

- комментарий, совпавший с одним из ваших **правил по ключевым словам**, получает **ответ этого правила** —
  написавший *«цена»* получит прайс, написавший *«демо»* — ссылку на запись;
- текст **«Автоматический личный ответ»** ниже — это ответ всем остальным;
- оставьте этот текст **пустым**, и ответ получат только те, чей комментарий совпал с правилом. Это более
  сдержанный вариант и обычно правильный: личное сообщение тому, кто написал просто *«красиво»*,
  непрошеное так, как ответ на *«цена»* — нет.

Функция выключена, пока вы её не включите, на одного комментатора уходит один ответ, отвечают только на
входящие комментарии, а сбой здесь никогда не стоит вам самого комментария.

## Точки входа — ссылки, которые помнят, откуда пришли

**Omnichannel → Точки входа** создаёт ссылку (и QR-код), которая начинает переписку с вами и помечает её
кампанией, из которой пришёл человек. Поставьте одну и ту же метку везде, где публикуете ссылку — плакат,
реклама, рассылка — и инбокс покажет, какой из них люди действительно воспользовались.

Вы выбираете, где открывается ссылка, какую страницу/аккаунт/номер она открывает, и метку кампании. Ничего не
сохраняется: страница только собирает ссылку, а вы копируете её или печатаете QR-код.

**Четыре канала ведут себя по-разному, и экран сообщает об этом у каждой ссылки:**

| Открывается в | Метка | Что важно знать |
|---|---|---|
| Messenger | передаётся незаметно | — |
| Instagram | передаётся незаметно | **только на телефоне** — на компьютере метка теряется |
| WhatsApp | **скрытой метки нет** | она попадает в сообщение, которое отправляет человек, — он его видит и может изменить |
| Telegram | передаётся незаметно | принимает меньше символов, поэтому длинная метка может быть укорочена |

Если метку пришлось изменить, чтобы она подошла каналу — пробелы становятся дефисами, необычные символы
удаляются — страница сообщит новую метку. Это важно: когда ссылка уже на плакате, метка, тихо сменившая форму,
больше не совпадает с той, которую вы ищете в отчётах.

## Сопоставление полей (необязательно)

**Омниканал → Сопоставление полей** позволяет решить, как именно поля формы становятся данными лида. По мере
поступления лидов TSync **запоминает** имена полей формы; откройте профиль и сопоставьте каждое поле с
**полем лида** (имя, email, телефон, компания, …) или **кастомным полем лида**. Что не сопоставлено, попадёт
в заметки лида. Это необязательно — без этого TSync автоматически определяет имя/телефон/email.

## Правила маршрутизации (необязательно)

**Омниканал → Правила маршрутизации** автоматически направляют входящие лиды в нужное место. Правило
совпадает по **каналу + форме / UTM source / UTM campaign / id объявления** и затем задаёт **статус
(пайплайн), источник, ответственного и теги** лида. Побеждает активное правило с наивысшим приоритетом;
правило без условий — catch-all. Правила приоритетнее настроек аккаунта — напр. *«лиды из кампании Google →
статус Hot, ответственный Ана, тег `google`.»*

## Готовые ответы

**Омниканал → Готовые ответы** — ваша библиотека переиспользуемых ответов (заголовок + сообщение,
опционально ограничено одним каналом). Они появляются в списке над полем ответа, чтобы команда отвечала
быстро и единообразно.

## Автоответы (по ключевым словам)

**Омниканал → Ответы по ключевым словам** позволяет инбоксу отвечать самому. Человек пишет «цена» в 22:40 и
получает ответ сразу, а не наутро, когда кто-то откроет инбокс.

Это намеренно просто: **одно входящее сообщение — один заготовленный ответ.** Никаких ветвящихся диалогов
бота — только те вопросы, на которые вы и так отвечаете по десять раз в день.

**Правило** — это набор ключевых слов и ответ, который нужно отправить:

- **Совпадение** — *точно равно · содержит · содержит слово целиком · начинается с · это палец вверх · не
  содержит ни одного из*.
- **Ключевые слова** — до десяти, через запятую. Диакритика игнорируется, поэтому `pret` совпадает и с
  `preț`, и не нужно вводить оба написания каждого слова. (Русский сравнивается буква в букву — там знаки
  несут смысл.)
- **Ответить** — либо текстом, который вы напишете, либо одним из сохранённых **быстрых ответов**.
- **Канал** — один канал или все.
- **Приоритет** — первым проверяется меньший номер. **Отвечает первое подходящее правило, и отправляется
  ровно один ответ.**

**Ответ по умолчанию** внизу той же страницы отвечает на всё, что не совпало ни с одним правилом — удобно
для «спасибо, сообщение получено, отвечаем с 9:00 до 18:00». Оставьте его выключенным или с пустым текстом —
и не будет отправлено ничего.

### Предохранители

Это не настройки, которые нужно искать, — так функция работает:

- **Она выключена, пока вы её не включите.** Обновление никогда не заставит вашу систему само заговорить с
  клиентами. Когда автоответ выключен, страница правил говорит об этом сверху, а не молчит.
- **Она никогда не отвечает дважды подряд.** Пять сообщений подряд получают один ответ. Паузу между двумя
  автоответами одному человеку задаёте вы — по умолчанию 5 минут, в диапазоне от 1 до 240.
- **Она отвечает только на входящее сообщение.** Исходящее никогда не запускает ответ, поэтому две системы
  не могут разогнать друг друга. На публичный комментарий отвечают только через **«Отвечать на новые
  комментарии лично и автоматически»** выше — это отдельный переключатель, выключенный по умолчанию — и
  никогда публичным ответом под постом.
- **Она остаётся в правилах мессенджеров.** Автоответ уходит в обычном 24-часовом окне, которое открыто по
  определению, ведь он отвечает на только что пришедшее сообщение. TSync никогда не использует исключение
  Meta для «человека-агента» ради автоматики — оно предназначено для текста, который написал человек.
- **Автоответ помечается как автоматический** в переписке, поэтому его всегда видно отличить от ответа
  вашей команды.

Правило без ключевых слов не совпадает ни с чем — в том числе в режиме *не содержит ни одного из*, где иначе
оно отвечало бы вообще на каждое сообщение.

## Ice breakers и меню (Messenger и Instagram)

Страница **Омниканал → Ice breakers и меню** задаёт то, что человек видит **до того, как что-либо напишет**.

- **Ice breakers** — до **четырёх** вопросов, предлагаемых в переписке без истории: *«Какие у вас цены?»*,
  *«Где вы находитесь?»*, *«Хочу предложение»*. Тот, кто вам никогда не писал, получает выбор вместо пустого
  поля, а это разница между разговором и закрытой страницей.
- **Постоянное меню** — до **трёх** пунктов, всегда доступных под полем ввода. Каждый либо **отправляет
  сообщение**, либо **открывает ссылку** (только https).

Нажатие приходит в инбокс обычным сообщением, текст которого — тот самый вопрос, который видел клиент.
Поэтому **правила по ключевым словам** отвечают на него так же, как на набранный вопрос, а вы читаете именно
те слова, которые он нажал.

**Настраивается для каждой Страницы отдельно.** Компания с двумя Страницами публикует на каждой свои вопросы;
единого глобального списка нет.

**Сохранение и публикация — разные действия.** **Сохранить** оставляет черновик: для клиентов не меняется
ничего. **Опубликовать на Странице** — то, что показывает это им. Под формой блок **«Что на самом деле у
Meta»** считывается обратно от Meta после каждой публикации, так что вы видите то, что живо, а не то, что
набрали. Если Meta недоступна, блок скажет *неизвестно*, а не покажет пустой список.

## Отчёты — измерение инбокса

Три отчёта Омниканала регистрируются сами в **Отчётах** (консоли отчётов платформы), поэтому наследуют всё,
что там умеют отчёты: фильтры, колонки, **экспорт XLSX/CSV**, графики и **рассылку по расписанию**.

| Отчёт | Отвечает на вопрос |
|---|---|
| **Омниканал — объём переписок** | новые переписки и сообщения по дням и каналам, где доля отправленного **автоматически** отделена от написанного человеком |
| **Омниканал — время до первого ответа** | по каждой переписке: когда клиент написал впервые, когда ему ответили и сколько он ждал |
| **Омниканал — откуда пришли переписки** | переписки, сгруппированные по ref-метке или объявлению, с которых начались, и сколько из них стали лидами |

Две вещи сделаны намеренно, и их стоит знать при чтении цифр. **У переписки без ответа длительности нет
вообще** — не ноль, который читался бы как «ответили мгновенно» и тихо улучшал бы среднее. А переписка **без
атрибуции** так и считается, а не выбрасывается из отчёта: иначе таблица точек входа льстила бы той кампании,
которая случайно оказалась помечена.

Отчёты появляются, только пока Омниканал включён, и подчиняются тому же праву доступа, что и инбокс.

## Шаблоны WhatsApp — единственный способ написать первым

На настоящем номере WhatsApp просто так начать переписку нельзя. Свободный текст требует клиента, который
написал вам **за последние 24 часа**; вне этого окна WhatsApp принимает только **шаблон**, проверенный и
одобренный Meta. Поэтому вопрос «какие у меня шаблоны и одобрены ли они» — не мелочь, а полный список
возможных начал разговора, которые есть у бизнеса.

Страница **Омниканал → Шаблоны WhatsApp** на него отвечает. В списке — каждый шаблон с **языком**, **реальным
статусом у Meta** (*APPROVED · PENDING · REJECTED*) и, если он отклонён, **причиной словами Meta**: это та
единственная фраза, которая говорит, что менять.

### Как создать

**Новый шаблон** собирает все три языка из одной формы:

- **Имя** — строчные буквы, цифры и подчёркивания. Одно имя несёт все три языковые версии.
- **Категория** — *UTILITY* значит «о существующем запросе или заказе». Meta сама переклассифицирует то, что вы
  отправляете, и отклоняет несоответствие, поэтому держите формулировку транзакционной. Текст с чем-то вроде
  `nr. {{2}}` может быть прочитан как код подтверждения и отклонён ещё до первого использования.
- **Сообщение** — пишется с `{{1}}`, `{{2}}` там, где подставляются значения. Переменная не может открывать или
  закрывать сообщение.
- **Примеры значений** — по одному на переменную. Meta проверяет **отрисованное** сообщение, а не заготовку.
  **Придумайте их**: они уходят в Meta, поэтому никогда не берите данные настоящего клиента.

**Пустой язык просто не создаётся**, и у каждого языка **свой вердикт** — румынский одобрен, а английский
отклонён из-за формулировки, это обычный исход, и общее «готово» его бы скрыло. Ответ обычно приходит за
несколько минут.

> То, что это делается здесь, а не в консоли Meta, — намеренно: тот редактор сам закрывает скобки (набираете
> `{{1}}`, получается `{{1}}1}}`), поля примеров выглядят как собственные подписи, поэтому пробный текст
> попадает в тело сообщения, а мастера приходится проходить отдельно для каждого языка.

### Как пользоваться одобренным шаблоном

**Импортировать одобренные** копирует то, что одобрила Meta, в локальную библиотеку, чтобы никто не набирал
заново имя, которое должно совпадать точно: одна опечатка отвечает «нет шаблона» в момент отправки и ничего
больше не объясняет. Импортируются только ОДОБРЕННЫЕ (ожидающий — это имя, которое откажет при использовании),
а повторный запуск обновляет, а не дублирует.

Дальше шаблон можно отправить:

- **одному человеку, прямо из переписки.** Когда с последнего сообщения человека прошло больше 24 часов, в
  ветке появляется **«Отправить одобренный шаблон»**: выбираете шаблон, заполняете значения для `{{1}}`,
  `{{2}}`, отправляете. Его ответ снова открывает свободное окно. Без этих значений Meta доставит подстановку
  буквально, и клиент прочитает *«Bună ziua, {{1}}»* — поэтому их спрашивают, а не предлагают;
- **сегменту** — через **Кампании** (раздел ниже).

Элемент появляется только тогда, когда он **и нужен, и возможен**: окно закрыто и есть хотя бы один одобренный
шаблон. Пока работает свободный текст, он быстрее, бесплатен и читается как написанный человеком.

## Кампании (комплаентная рассылка)

**Омниканал → Кампании** отправляет сообщение **сегменту** контактов по каналу мессенджера —
**контролируемо и комплаентно**:

- Вы выбираете канал, сообщение (или готовый ответ), сегмент (напр. статус лида) и **throttle** (сообщений
  в минуту).
- **Собрать получателей** создаёт список и проверяет каждого: отписавшиеся пропускаются; для **свободного**
  сообщения подходят только контакты в **окне 24 часов** (с момента их последнего сообщения вам); сообщение
  по **шаблону** требует явного opt-in.
- **Старт** отправляет throttled-пакетами — автоматически каждую минуту (через задачу планировщика
  `omni.campaign_dispatch`) или сразу через **Отправить пакет сейчас**.
- **Каждый получатель проверяется заново в момент отправки**, а не только при построении списка. 24-часовое
  окно — это движущийся срок, поэтому кампания, подготовленная сегодня и отправленная завтра, не пишет
  тому, у кого окно закрылось за это время, и тому, кто отписался после построения списка.
- **Отчёт о доставке** показывает всего / в ожидании / отправлено / **доставлено / прочитано** / ошибки /
  пропущено (с причиной). Тот, кого правила исключили при отправке, попадает в **пропущенные**, а не в
  ошибки: попытки не было, и **Повтор неудачных** не должен возвращать его в очередь.

> **Согласие и отписка.** Входящее сообщение считается opt-in; если кто-то отвечает **STOP** (или
> *unsubscribe / dezabonare / отписаться*), он отписан и больше не получает сообщений. Так рассылка остаётся
> в рамках правил WhatsApp/Viber.

## Журнал событий — что пришло и как вернуть то, что не прошло

**Омниканал → Журнал событий** показывает каждое событие, которое доставил провайдер: канал, тип, было ли оно
обработано — и, если что-то пошло не так, точную ошибку.

Эта страница существует по одной жёсткой причине: **провайдер не присылает сообщение дважды.** Чтобы Facebook,
Viber или WhatsApp не устраивали шторм повторов, TSync подтверждает получение сразу. Если после этого сообщение
не удалось записать (временная проблема с базой, неверно настроенный аккаунт), раньше оно пропадало навсегда —
и вы даже не узнавали, что клиент вам написал.

Теперь каждое событие сохраняется, и его можно вернуть:

1. Откройте **Омниканал → Журнал событий** и нажмите фильтр **Ошибка** (страница Состояние тоже предупредит,
   если что-то не прошло за последние 24 часа).
2. Нажмите на событие, чтобы прочитать ошибку и увидеть, что именно прислал провайдер.
3. Устраните причину и нажмите **Повторить** — сообщение обработается заново и появится во входящих как обычно.
   **Повторить все** обработает всю неудавшуюся очередь сразу.

> **Повтор уже обработанного события** записал бы сообщение *второй* раз, поэтому по умолчанию он заблокирован.
> Если вы уверены, что первая попытка ничего не сохранила, его можно принудительно выполнить со страницы
> события, с подтверждением.

События, полученные до этой версии, не сохранялись и не могут быть повторены — страница честно об этом говорит.

**Как держать список в порядке.** Ежедневная задача удаляет завершённые события (обработанные, пропущенные,
отклонённые) старше срока хранения, который вы задаёте внизу страницы (по умолчанию 90 дней). **Неудавшиеся и
ещё ожидающие события никогда не удаляются автоматически** — именно они ещё требуют вашего внимания.

## Безопасность

Всё, что приходит из канала, считается **недоверенными данными** — проверяется и сопоставляется, но никогда
не выполняется. Каждый вебхук аутентифицируется (секретный токен в URL плюс подпись провайдера, где она
есть) и **идемпотентен**, поэтому повторная попытка провайдера не создаёт дубликатов. Все действия
записываются в аудит.
