Всё руководство одной страницей

Здесь собраны все 76 статей руководства подряд. Нужна копия под рукой, скачайте PDF: он собирается из этих же статей при каждом обновлении сайта, то есть всегда свежий.

PDF со всеми статьями сохранится сразу. «Распечатать» откроет окно печати.

Содержание

  1. Что такое DOS AI · Старт
  2. Как бот думает · Старт
  3. Быстрый старт: первый бот за 30 минут · Старт
  4. Карта кабинета (навигация) · Старт
  5. Глоссарий · Старт
  6. Как выбрать чат-бота для WhatsApp · Старт
  7. Создание проекта · Проект и бот
  8. Системный промпт (характер бота) · Проект и бот
  9. JSON-ответ бота (статусы, стадии, флаги) · Проект и бот
  10. Выбор AI-модели · Проект и бот
  11. Тестовый чат · Проект и бот
  12. Продвинутые настройки бота · Проект и бот
  13. Загрузить знания о бизнесе в бота (что куда) · Проект и бот
  14. Каналы, где бот отвечает клиентам · Каналы
  15. Подключить WhatsApp (по QR) · Каналы
  16. Подключить Telegram-бота · Каналы
  17. Гигиена и антибан (WhatsApp) · Каналы
  18. Подключить Instagram · Каналы
  19. Функции (инструменты бота) · Инструменты бота
  20. База знаний (RAG) · Инструменты бота
  21. Медиа-библиотека · Инструменты бота
  22. Дожимы (follow-up) · Инструменты бота
  23. Правила и комментарии · Инструменты бота
  24. Теги и сегментация · Инструменты бота
  25. Уведомления владельцу (Telegram, WhatsApp и почта) · Инструменты бота
  26. Запись на время (Calendar и движок окошек) · Инструменты бота
  27. Бот выставляет счёт (Kaspi) · Инструменты бота
  28. Письмо клиенту · Инструменты бота
  29. Рассылки по базе контактов · Инструменты бота
  30. Исходящие диалоги (бот пишет первым) · Инструменты бота
  31. Подтверждение и напоминания о записи · Инструменты бота
  32. Диалоги, лента, перехват, «AI на паузе» · Работа с клиентами
  33. Лиды и их статусы · Работа с клиентами
  34. Стадии диалога (воронка) · Работа с клиентами
  35. Аналитика · Работа с клиентами
  36. Логи событий · Работа с клиентами
  37. Авто-отчёты владельцу (Telegram и почта) · Работа с клиентами
  38. Интеграции, что можно подключить · Интеграции
  39. Google Таблицы · Интеграции
  40. Google Календарь · Интеграции
  41. Gmail · Интеграции
  42. CRM, что бот делает в вашей CRM · Интеграции
  43. Bitrix24 · Интеграции
  44. amoCRM и Kommo · Интеграции
  45. АльфаCRM для учебных центров · Интеграции
  46. МойСклад: наличие и цены в ответах бота · Интеграции
  47. iiko для ресторанов · Интеграции
  48. Вебхуки, события проекта на ваш адрес · Интеграции
  49. Биллинг проекта: токены, подписка, пополнение · Деньги
  50. Сколько стоит сообщение · Деньги
  51. Приём оплат от клиентов (Kaspi) · Деньги
  52. Промокоды и партнёрская программа · Деньги
  53. Роли и права (viewer / tester / editor / admin / owner) · Команда и аккаунт
  54. Участники и приглашения · Команда и аккаунт
  55. Профиль, пароль, безопасность · Команда и аккаунт
  56. Уведомления и личные настройки · Команда и аккаунт
  57. Удаление, передача, дублирование проекта · Команда и аккаунт
  58. DOS AI в ChatGPT и Claude · Команда и аккаунт
  59. Публичный API и ключи dos_sk_live_… · Для разработчиков
  60. Своя интеграция по API · Для разработчиков
  61. Язык выражений (expressions) · Для разработчиков
  62. Формат данных и интеграция фронта · Для разработчиков
  63. Подключить ИИ-агента: Claude Code, Codex, Cursor (MCP) · Для разработчиков
  64. Бот не отвечает, диагностика · Решение проблем
  65. Функция не вызывается / падает · Решение проблем
  66. Канал отвалился / WhatsApp забанили · Решение проблем
  67. Платёж не прошёл · Решение проблем
  68. Частые вопросы (FAQ) · Решение проблем
  69. Лиды из рекламы приходят с задержкой · Решение проблем
  70. Каталог встроенных функций · Справочники
  71. Справочник настроек (agent_config) · Справочники
  72. Коды ошибок и состояния · Справочники
  73. Стадии, статусы лида, типы клиента · Справочники
  74. Лимиты и квоты · Справочники
  75. Переменные и хелперы выражений · Справочники
  76. Типы уведомлений · Справочники

Документация › Старт › Что такое DOS AI

Что такое DOS AI

Платформа, на которой ты собираешь ИИ-бота для своего бизнеса: он сам отвечает клиентам в WhatsApp, Telegram и Instagram, собирает заявки и ведёт их в CRM.

⏱ 6 мин · 👤 для всех · 🟢 live

За 30 секунд:
  • DOS AI: конструктор умного бота для WhatsApp, Telegram и Instagram, без программирования.
  • Бот отвечает клиентам словами (ты задаёшь его «характер» текстом) и умеет действия, записать, посчитать, выставить счёт через функции.
  • Все переписки и заявки складываются в CRM, ты видишь аналитику и можешь вмешаться вручную.
  • Платишь за то, что бот реально работает (токены за сообщения + подписка за канал).

Проблема, которую это решает

Клиенты пишут в WhatsApp круглосуточно: «сколько стоит?», «вы работаете завтра?», «запишите меня». Живой человек не успевает отвечать мгновенно 24/7, а медленный ответ = потерянный клиент. Нанять оператора дорого, и он всё равно спит ночью.

DOS AI ставит между клиентом и тобой умного бота. Он отвечает за секунды, на твоём языке, по твоим правилам, ловит заявку и кладёт её тебе в CRM. Ты подключаешься, только когда это реально нужно.

Из чего состоит платформа

Думай о DOS AI как о конструкторе из нескольких блоков:

БлокЧто делаетГде настраивается
🧠 Бот (промпт)«Характер» и правила: как общаться, что знать, что предлагатьСистемный промпт
💬 КаналыГде бот общается: WhatsApp, Telegram, InstagramКаналы
🛠️ Функции (инструменты)Действия бота: записать в календарь, посчитать, выставить счёт, уведомить тебяФункции
📚 База знанийБольшие справочники, по которым бот ищет ответ: прайс на много позиций, каталог, условия, документыБаза знаний
🎯 АвтоматизацииДожимы тем, кто «подумает и пропал», правила «когда, если, то», напоминания о записиДожимы · Правила · Записи
🔌 ИнтеграцииCRM (Bitrix24, amoCRM, АльфаCRM), касса ресторана iiko, Google Таблицы и Календарь, МойСклад, вебхуки, свой APIЧто можно подключить
📇 CRM (диалоги и лиды)Все переписки и заявки, статусы, перехват вручнуюРабота с клиентами
📊 АналитикаСколько диалогов, заявок, конверсия, расходАналитика
💳 ДеньгиБаланс токенов, подписка, приём оплат от клиентовДеньги

Один проект = один бот = один бизнес (или одна точка). Если у тебя две стоматологии это два проекта.

Все три канала подключаются на вкладке «Каналы»: WhatsApp по QR, Telegram своим ботом, Instagram через официальный вход Meta (Подключить Instagram).

Для кого это

  • Малый и средний бизнес в любой стране: стоматологии, барбершопы, салоны, рестораны, автосервисы, школы, магазины: те, кому клиенты пишут в мессенджеры. Платформа облачная и к стране не привязана: нужен только мессенджер. Больше всего клиентов сейчас в Казахстане, поэтому там есть местные удобства вроде оплаты через Kaspi, но это дополнение, а не условие.
  • Не нужны навыки программирования. Бот настраивается обычным текстом: ты описываешь, как он должен себя вести, словами.
  • Разработчикам платформа даёт API и вебхуки: можно интегрировать со своими системами, но это опционально.

Что бот умеет, а что нет

✅ Умеет: отвечать на вопросы по твоим правилам и прайсу, записывать клиентов (Google Календарь, Таблицы, АльфаCRM, iiko), считать стоимость, выставлять счета на оплату (Kaspi), заводить сделки в твоей CRM, уведомлять тебя о горячих заявках, вести лида по воронке, догонять «потеряшек» напоминаниями, отправлять фото и видео из библиотеки, понимать голосовые и картинки.

🚫 Не умеет (и это правильно): ставить медицинские диагнозы, давать юридические заключения, обещать то, чего ты не разрешал. Бот работает строго в рамках, которые ты задал в промпте.

📌 Пример. Барбершоп: клиент пишет «во сколько завтра свободно к Артуру?» → бот смотрит расписание в Google Календаре → предлагает «12:00 или 15:30» → клиент выбирает → бот записывает и подтверждает. Владелец утром видит заявку в CRM, не нажав ни одной кнопки ночью.


Простыми словами

DOS AI это место, где ты делаешь себе «робота-секретаря» для WhatsApp, Telegram и Instagram. Ты не программируешь, ты просто описываешь словами, как он должен общаться с клиентами и что про твой бизнес знать. Дальше он сам отвечает людям днём и ночью: подсказывает цены, записывает на приём, принимает оплату и собирает все заявки в одном месте, чтобы ты ничего не потерял. А если нужно, ты в любой момент сам вступаешь в переписку.


Дальше: → Как бот думает
Связано: Карта кабинета · Глоссарий · Быстрый старт

Документация › Старт › Как бот думает

Как бот думает

Понять за 8 минут, что происходит между сообщением клиента и ответом бота: тогда станет ясно, почему бот отвечает так, и где это чинить.

⏱ 8 мин · 👤 для всех · 🟢 live

За 30 секунд:
  • На каждое сообщение бот собирает: твой промпт (правила) + факты о бизнесе (поле «Информация о компании» и база знаний) + функции (действия).
  • Дальше он решает: просто ответить словами или вызвать функцию (записать, посчитать, выставить счёт).
  • Бот не помнит ничего, кроме истории текущего диалога. Что не написано в промпте/знаниях: он не знает. Исключение: ссылку, которую прислал клиент, бот открывает и читает.
  • После ответа платформа сверяет слова бота с его действиями: написал «выставил счёт», а функцию не вызвал, получает круг на исправление.
  • Одинаково работает в тест-чате, WhatsApp, Telegram и Instagram.

Что происходит на каждое сообщение

Когда клиент пишет, бот проходит такой путь (обычно ответ приходит через 10-40 секунд):

Сообщение клиента
      │
      ▼
0. Сработало правило с точным ответом? → ответ уходит без модели
      │ нет
      ▼
1. Собрать контекст:  системный промпт (характер + правила)
                    + история этого диалога
                    + подходящие куски базы знаний (RAG)
                    + текст страниц по ссылкам из сообщения клиента
                    + меню включённых функций
      │
      ▼
2. Решить:  «ответить словами»  ИЛИ  «вызвать функцию»
      │                                  │
      │                                  ▼
      │                         выполнить действие
      │                         (календарь / таблица / счёт …)
      │                                  │
      │                                  ▼
      │                         получить результат, подумать снова
      ▼                                  │
3. Сформулировать ответ клиенту ◄────────┘
      │
      ▼
4. Сверить слова с делами: «выставил», «записал», «передал»
   без вызова функции → один круг на исправление
      │
      ▼
Ответ уходит в WhatsApp / Telegram / Instagram

Шаг 0 это правила: точный ответ по ключевому слову уходит сразу и не стоит модели. Правило может и не отвечать само, а подсказать боту, что сказать на этот ход.

Ссылки на шаге 1. Клиент прислал ссылку на сайт, Instagram или объявление: бот открывает до двух ссылок из сообщения, читает заголовок, описание и начало текста страницы и отвечает по сути, а не гадает по словам в адресе. На одну ссылку не больше восьми секунд, закрытые и внутренние адреса не открываются; не открылось, бот знает причину и не выдумывает, что там было. Выключается в настройках бота: «Расширенные настройки» → «Читать ссылки из сообщений».

Проверка на шаге 4. Модель иногда пишет «счёт отправил» или «передала менеджеру», не вызвав функцию. Платформа после каждого ответа сверяет такие заявления (на русском, казахском и английском) с журналом вызовов этого хода. Расхождение есть, бот получает один круг на исправление: вызвать функцию или ответить честно. Не исправился, в рабочем чате клиенту уходит нейтральный ответ, а диалог получает пометку «ответьте руками» и запись action_claim_unbacked в логах. В тест-чате бот ещё и прямо говорит, что здесь счёт, бронь или сделка не выставляются, и что получил бы клиент в рабочем чате.

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

Источники, из которых бот берёт ответ

ИсточникЧто этоКогда использовать
🧠 Системный промптПоведение: характер, тон, правила, что запрещеноВсё «как себя вести» → Промпт
🏢 Информация о компанииКороткие базовые факты: услуги, цены, адрес, часы, вшиваются в каждый ответ целикомКомпактные факты «о тебе» → Промпт
📚 База знаний (RAG)Объёмные/меняющиеся документы: большой прайс, условия, FAQ, подмешиваются по кускамМного фактов / документы → База знаний
🛠️ ФункцииРеальные действия во внешнем миреЗаписать, посчитать, оплатить → Функции

💡 Правило большого пальца: как общаться в промпт; коротко о бизнесе в «Информацию о компании»; много фактов / документы в базу знаний; что делать в функции.

Что значит «бот вызвал функцию»

Сам по себе ИИ умеет только писать текст. Функции дают ему «руки». Ты не прописываешь сценарий «если X то Y», ты описываешь каждую функцию словами, и бот сам решает в нужный момент её вызвать.

📌 Пример. Подключены функции «проверить свободное время» и «записать клиента». Клиент: «хочу завтра после обеда». Бот сам: проверяет слоты → предлагает время → после согласия записывает → подтверждает. Никто этот сценарий по шагам не программировал.

За один ход бот может вызвать несколько функций подряд (проверил → записал), но не больше 15 раз. Подробно в гайде по функциям.

Решение «вызвать функцию» бот принимает по смыслу сообщения, а не по языку и точным словам: «напишу в четверг», «кейін жазамын» и «I'll text you later» одинаково ставят напоминания на паузу. У необратимых действий (счёт, запись, подтверждение оплаты) можно поставить предохранитель: платформа сама проверит факт в диалоге (есть ли чек, телефон, прошла ли оплата) и не даст функции сработать раньше времени.

Где бот работает одинаково

Один и тот же «мозг» (промпт, факты, функции, модель) отвечает:

  1. в тестовом чате кабинета (песочница: без реальных клиентов, но ответы бота списываются с баланса проекта, как обычные) → Тест-чат;
  2. в боевых WhatsApp и Instagram → Подключить WhatsApp · Подключить Instagram;
  3. в боевом Telegram → Подключить Telegram;
  4. в ответе после оплаты: клиент оплатил счёт Kaspi, и бот сам продолжает разговор.

Два места устроены иначе. Дожимы бот пишет по тому же промпту и той же переписке, но функций в них не вызывает: дожим это только текст (Дожимы). Чат на главной странице сайта это наш консультант DOS AI, а не твой бот: твои настройки на него не влияют.

⚠️ Важно. Если что-то работает в тест-чате, так же сработает в бою. Поэтому всегда проверяй изменения в тест-чате перед тем, как выпускать к клиентам.

Почему бот иногда «тупит», и где чинить

СимптомОбычно причинаКуда смотреть
Отвечает не по делу / выдумываетФакта нет в промпте/знаниях, бот «додумал»Добавь факт в Базу знаний
Не записывает / не считаетФункция выключена или плохое описаниеФункции
Отвечает слишком формально/сухоТон не задан в промптеПромпт
Молчит совсемКончился баланс / триалБот не отвечает
Отвечает общими фразами, «уточню у администратора»Промпт пустой«Составить за меня»
Говорит «записал», а записи нетФункция не вызвана: плохое описание или она выключена; платформа уже дала боту круг на исправление и пометила диалогФункции · Логи
Один конкретный ответ не нравитсяПравило не записаноВ тест-чате ссылка «Не так ответил? Поправить словами» под ответом: фраза встанет правилом в промпт → Тест-чат

💡 Запомни: плохой ответ бота это почти всегда не «глупый ИИ», а неполный промпт или знания. Бот честно работает с тем, что ты ему дал. Что именно он делал на каждом шаге, видно в логах событий.


Под капотом (для разработчиков)

  • Каждый ответ, non-streaming вызов модели (в DOS AI streaming запрещён: ломает авторитетный подсчёт токенов, refund при обрывах, round-trip функций). «Постепенный» эффект печати: клиентский, через паузы между частями ответа.
  • Функции отдаются модели как OpenAI tools; вызов функции → выполнение → результат возвращается модели → она формулирует финальный текст (tool-call round-trip).
  • База знаний подмешивается через RAG (семантический поиск релевантных кусков), а не «весь документ в каждый запрос».
  • Ответ модели, структурированный JSON (текст для клиента + служебные поля: статус лида, стадия диалога, флаги). Формат в статье JSON-ответ бота.
  • Тест-чат, вебхуки каналов (WhatsApp, Instagram, Telegram) и ответ после оплаты зовут один пайплайн (executeAIPipeline), поэтому поведение одинаковое. Дожим зовёт модель отдельным вызовом без функций (drip-followup.ts), демо-чат сайта живёт своим маршрутом (/api/demo-chat). Память диалога = история сообщений из БД, а не «глобальная память».
  • Ссылки из сообщения читаются до хода модели (inbound-links.ts: до 2 ссылок, 8 секунд, 3 переадресации, защита от внутренних адресов), событие inbound_link_read. Сторож заявлений (action-claim-guard.ts) сверяет глаголы действия в ответе с журналом вызовов хода: один исправляющий круг с функциями, второй отказ в бою даёт нейтральную строку и пометку «ответьте руками», событие action_claim_unbacked. В тест-чате функции кассы, CRM, iiko, АльфаCRM и лид-функции отвечают холостым результатом с performed: false и словами для собеседника.
  • Повторный текст промпта и информации о компании кешируется у OpenAI на каждом ходу: второй и следующий ответы в том же проекте обходятся дешевле первого.

Простыми словами

Представь бота как нового толкового сотрудника: общие вещи (язык, вежливость, что такое кариес) он уже знает, а вот про твой бизнес, только то, что ты ему рассказал. Перед каждым ответом он быстро «вспоминает»: твои инструкции (как себя вести), справочник про твой бизнес (цены, услуги, адрес) и список действий, которые ему разрешено делать (записать, посчитать, выставить счёт). Потом он либо отвечает словами, либо делает действие, и пишет клиенту результат.

Поэтому если бот ответил неправильно, почти всегда дело не в том, что «ИИ тупой», а в том, что ему чего-то не рассказали. Добавишь нужный факт или правило, и он сразу станет умнее. И всегда сначала проверяй бота в тестовом чате: там он думает точно так же, как в реальном WhatsApp, но без последствий.


Дальше: → Быстрый старт: первый бот за 30 минут
Связано: Системный промпт · Функции · База знаний · Тест-чат
Не получилось? → Бот не отвечает

Документация › Старт › Быстрый старт

Быстрый старт: первый бот за 30 минут

Сквозной путь, от пустого кабинета до живого бота, который отвечает тебе в WhatsApp. Делай по шагам: ничего не пропуская.

⏱ 10 мин чтения · ≈30 мин на практике · 👤 для владельца · 🟢 live

За 30 секунд (что будем делать):
  1. Создать проект · 2. Задать «характер» бота · 3. Загрузить факты о бизнесе · 4. Проверить в тест-чате · 5. Подключить WhatsApp · 6. Получить первую заявку.
💡 Перед стартом полезно (но не обязательно) прочесть Что такое DOS AI и Как бот думает, тогда каждый шаг будет очевиден.

Что нужно приготовить заранее

  • ☐ Аккаунт на платформе (регистрация по email или через Google). При регистрации спросим номер WhatsApp: на него напишет наш помощник DOS и поможет собрать первого ассистента;
  • ☐ Телефон с «живым» рабочим WhatsApp (см. какой номер);
  • ☐ Под рукой: твой прайс/услуги, часы работы, адрес, чтобы бот ими оперировал.

⚠️ Бесплатный период WhatsApp: 14 дней, число диалогов не ограничено. Ограничивает только баланс проекта (при создании кладём на него $5), поэтому канал лучше подключать, когда бот уже настроен (шаги 1-4), чтобы пробные дни не ушли на пустого бота.


Шаг 1. Создай проект (3 мин)

Левое меню → «+» рядом с заголовком «Проекты» (или кнопка на Дашборде).

  • Дай проекту понятное имя (например «Стоматология Смайл»);
  • По желанию укажи сферу бизнеса: под неё конструктор подставит примеры и запреты;
  • Ответь на три вопроса, по одному на экран (кто вы, что спрашивают клиенты, что бот должен сделать), и на последнем нажми «Собрать бота».

Платформа создаёт проект и сразу собирает промпт бота по ответам, за $0.30 с баланса. Отвечай как администратору при приёме на работу, чем подробнее, тем лучше. Вместе с промптом включаются функции остановок и тегов, заводятся теги и выключенный ежедневный отчёт, а настройки бота выставляются под нормальную работу (что именно, в статье Создание проекта). Через полминуты откроется тест-чат. Не хочешь отвечать, нажми «Опишу бота сам, без вопросов» и переходи к шагу 2 вручную; промпт при создании платформа не заполняет.

Шаг 2. Проверь или допиши характер бота (8 мин)

Если конструктор уже собрал промпт, он лежит здесь: вкладка Промпт → поле «Системный промпт». Прочитай и поправь под себя, это набросок. Факты из твоих ответов (адрес, часы, цены) конструктор положил ниже, в поле «Информация о компании» (шаг 3). Если писал сам, тут описывается поведение бота, как он себя ведёт (факты про бизнес, отдельно, шаг 3). Опиши своими словами:

  • Тон: как общаться (вежливо на «вы» / дружелюбно на «ты», с эмодзи или строго);
  • Правила: что можно и чего нельзя (не ставить диагноз, не обещать скидок без согласования);
  • Цель: что считать успехом (записать / взять телефон / довести до оплаты);
  • Как вести диалог: что уточнить у клиента, что предложить, когда позвать живого человека.

📌 Всё это пишется обычным текстом в одно поле: отдельных переключателей «тон» или «услуги» в интерфейсе нет, ты просто формулируешь инструкцию словами, как новому сотруднику.

💡 Совет. «Ты: администратор стоматологии. Общайся вежливо на вы. Уточни, что беспокоит, предложи удобное время, возьми имя и телефон. Диагнозы не ставь, это к врачу». Глубоко: Системный промпт.

🚫 Факты о бизнесе (услуги, цены, адрес, часы) сюда не вписывай, для них есть отдельные места (шаг 3).

Шаг 3. Дай боту факты о бизнесе (5 мин)

Факты живут в двух местах (это не промпт, промпт про поведение, а тут про что бот знает):

1. Поле «Информация о компании»: там же, на вкладке Промпт. Сюда коротко и то, что нужно всегда, чем занимаетесь, ключевые услуги, цены, адрес, часы работы. Эта информация целиком добавляется в каждый ответ бота. Лимит до 40 000 символов.

2. «База знаний»: вкладка проекта «База знаний». Сюда объёмное и меняющееся: большой прайс на 100 позиций, условия, частые вопросы, документы. Бот сам подмешивает нужные куски в ответ (это RAG, см. Как бот думает).

📌 Правило. Короткий факт (адрес, часы) → «Информация о компании». Большой документ (полный прайс, FAQ) → «База знаний». Тон и правила → системный промпт (шаг 2). Так бот и говорит правильно, и факты не путает.

Шаг 4. Проверь в тест-чате (5 мин). НЕ пропускай

Левое меню → «Тестовый чат». Это песочница: бот думает точно как в бою, но без реальных клиентов. Ответы при этом оплачиваются с баланса проекта, как настоящие, поэтому на старте достаточно пары десятков реплик.

Прогони реальные сценарии:

  • «Сколько стоит чистка?»: называет цену из базы знаний?
  • «Запишите меня на завтра»: ведёт к записи?
  • «А вы рядом с метро?»: отвечает по фактам, не выдумывает?

⚠️ Если бот ошибается это нормально на старте. Почти всегда лечится так: ответил не по фактам → добавь факт в Базу знаний; ведёт себя не так → поправь промпт. Покрути, пока не понравится. Подробно, Тест-чат.

Шаг 5. Подключи WhatsApp (5 мин)

Теперь, когда бот толковый, выпускаем в эфир. Вкладка проекта «Каналы» → карточка WhatsApp → «Подключить свой номер». Клиенты пишут вам в Telegram или Instagram, подключайте их так же: Каналы.

Это отдельная подробная статья (там чек-лист антибана и QR): → Подключить WhatsApp.

Коротко: убедись, что номер «живой» (на нём уже переписывались) → нажми «Подключить свой номер» → отсканируй QR телефоном (WhatsApp → Связанные устройства) → дождись статуса «Подключён». Первые 15 минут бот молчит, это прогрев номера.

Шаг 6. Получи первую заявку (2 мин)

  1. Напиши боту с другого телефона, как клиент;
  2. Бот отвечает, поздравляю, он в эфире;
  3. Открой в левом меню «Диалоги»: там твоя переписка;
  4. Если бот собрал имя/телефон/запрос в «Лиды» появится заявка.

🎉 Готово. Дальше бот работает сам круглосуточно.


Что делать дальше

Хочешь…Иди в статью
Научить бота записывать/считать/выставлять счётФункции
Догонять клиентов, которые «подумают и пропадут»Дожимы
Подключить ещё Telegram или InstagramTelegram · Instagram
Чтобы бот отвечал точно по слову или сообщал тебе о заявкеПравила · Уведомления владельцу
Связать бота с CRM, кассой ресторана, GoogleЧто можно подключить
Понять расход и пополнить балансБаланс и подписка
Дать доступ сотрудникуУчастники и роли

Если что-то пошло не так

СимптомКуда
Бот не отвечает в WhatsAppБот не отвечает
WhatsApp не подключается / QR истёкПодключить WhatsApp → Частые ошибки
Бот отвечает неправильноШаг 4: допиши промпт/знания

Простыми словами

Запустить бота это полчаса по шагам. Сначала ты создаёшь «проект» (это твой бот) и пишешь обычным текстом инструкцию, как общаться, как себя вести. Потом отдельно даёшь ему факты про бизнес: короткое (услуги, цены, адрес) в поле «Информация о компании», объёмное (большой прайс, FAQ) в «Базу знаний». Дальше обязательно проверяешь бота в «тестовом чате»: это как поговорить с ним самому, без клиентов, если он где-то ошибается, ты просто дописываешь инструкцию или факты, пока не станет хорошо. И только когда бот толковый, подключаешь WhatsApp по QR-коду и пишешь ему с другого телефона. Если он ответил, всё, он работает сам, а заявки сами падают тебе в список.


Дальше: → Функции (научить бота действиям)
Связано: Карта кабинета · Системный промпт · Тест-чат · Подключить WhatsApp
Не получилось? → Бот не отвечает

Документация › Старт › Карта кабинета

Карта кабинета (навигация)

Чтобы не теряться: что где лежит в кабинете DOS AI. Слева меню аккаунта и список проектов, сверху вкладки открытого проекта.

⏱ 7 мин · 👤 для владельца и оператора · 🟢 live

За 30 секунд:
  • Слева всегда одно меню: оплата, дашборд, уведомления, CRM, список проектов и рабочие разделы открытого проекта (тестовый чат, диалоги, лиды, рассылки, аналитика).
  • Сверху, когда проект открыт, идут его вкладки с настройками: Обзор · Общие настройки · Промпт · LLM · Автоматизации · База знаний · Функции · Каналы · Интеграции. У части вкладок под ними есть подвкладки.
  • В шапке выбор проекта, поиск по кабинету, баланс и меню аккаунта.
  • Что ты видишь и можешь, зависит от роли.
Кабинет DOS AI: обзор проекта, слева меню и список проектов, сверху вкладки проекта, в центре состояние бота и цифры
Кабинет DOS AI: обзор проекта, слева меню и список проектов, сверху вкладки проекта, в центре состояние бота и цифры

На «Обзоре» проекта сверху вниз стоит то, что нужно каждый день:

  • Состояние бота одной строкой и кнопка «Поставить на паузу» или «Включить бота».
  • Требует внимания: список дел, если они есть. Кончается баланс или подписка, отключился WhatsApp, горячий клиент написал последним и не получил ответа. У каждой строки кнопка, которая ведёт туда, где это чинится. Когда всё в порядке, списка нет.
  • За 7 дней: диалоги, лиды, доля диалогов, ставших лидами, и время ответа бота. Те же числа, что в аналитике.
  • Каналы связи: WhatsApp, Telegram и Instagram одной строкой, у неподключённого канала переход к подключению.
  • Подробные цифры и справка раскрываются нажатием: неделя к неделе, качество ответов, статусы лидов, источники диалогов, итоги за всё время.

У нового проекта, пока бот не запущен, главным на «Обзоре» стоит список шагов запуска.


Как устроена навигация

У тебя есть аккаунт, в нём проекты (по одному на каждого бота или бизнес). Кабинет разложен так, чтобы ежедневная работа была под рукой слева, а настройка бота собрана в одном ряду сверху:

  1. Левое меню одно на весь кабинет. В нём общее (оплата, дашборд, уведомления, CRM), список проектов и пять рабочих разделов того проекта, который сейчас открыт.
  2. Вкладки проекта появляются сверху, когда ты зашёл в проект. Это всё, что настраивают один раз и потом правят изредка.
  3. Шапка держит выбор проекта, поиск, баланс и меню аккаунта.

💡 Аналогия. Левое меню это «касса и зал», куда ходишь каждый день. Вкладки сверху это «подсобка», где один раз расставил всё по местам.

Левое меню (всегда на месте)

ПунктЧто тамКому
Оплата и подпискиОкно оплаты поверх любой страницы: баланс, подписки, проекты, история, способы оплатывсем
ДашбордДела по всем проектам списком «Требует внимания», проекты строками, цифры за 7 дней, ниже графики и воронкавсем
УведомленияВажные события (заявки, проблемы)всем
CRMОбщая воронка по всем проектамвсем
ПроектыСписок ботов с цветом и значком состояния, поле «Найти проект», «+» создаёт новыйвсем
Тестовый чат · Диалоги · Лиды · Рассылки · АналитикаРабочие разделы открытого проектапо роли
Обучение · ДокументацияКурс и это руководствовсем
Админ-панельУправление платформойтолько DOS

Клик по проекту в списке открывает его Обзор. Сменить проект и остаться в том же разделе можно выбором проекта в шапке: открыты «Лиды» одного бота, выбрал другого, открылись его «Лиды».

Шапка

ЭлементЧто делает
Выбор проектаСписок всех проектов с поиском. Виден на любой странице проекта, раздел при смене проекта сохраняется
Поиск (Ctrl+K / ⌘K)Палитра команд: страницы, проекты, действия
Плашка тревогиНеоплаченные и истекающие проекты с кнопкой «Оплатить»
БалансОстаток выбранного проекта, клик открывает окно оплаты
КолокольчикПоследние уведомления, полный список на странице «Уведомления»
Помощь (значок «?»)Экскурсии по дашборду, проекту и запуску, «Документация», «Что нового» (список изменений платформы по месяцам, с «было» и «стало»), «Поддержка» (обращение с вложениями и история ответов)
Меню аккаунта«Оплата и подписки», «Настройки» (окно «Настройки аккаунта»: профиль, безопасность, рефералы, данные, настройки), «ИИ-ассистенты», «Поддержка», «API и разработчикам», «Выйти»

На телефоне главные разделы проекта стоят внизу экрана: Обзор, Диалоги, Лиды и Тест-чат, а всё остальное меню открывает кнопка «Ещё» рядом с ними. Шапка на телефоне одна строка: слева выбор проекта, справа уведомления, баланс и профиль; справка и остальное лежат в меню «Ещё». Окна на телефоне выезжают снизу во всю ширину экрана.

Вкладки проекта (сверху, когда зашёл в бота)

Первая вкладка со значком домика это Обзор: главная страница проекта, состояние бота, чек-лист запуска и быстрые цифры. Видна всем (от viewer).

ВкладкаПодвкладкиЧто делаешьМинимальная роль
Общие настройкиОсновное · Участники · Уведомления проекта · Мои уведомления · УдалениеИмя и пояс проекта, команда и роли, куда слать события, передача и удаление проектаadmin (участников видит viewer, удаление только owner)
ПромптПромпт и компания · Расширенные настройкиСистемный промпт (характер и правила) и «Информация о компании»; в «Расширенных настройках» статус бота, «Кому отвечает бот», расписание, буфер сообщений, лимиты, антиспам, история диалоговadmin
LLMнетВыбор модели ИИ: список с пометками «Рекомендуем» и «Мощная», у каждой модели написано, для чего она подходитadmin
АвтоматизацииДожимы · Правила · Комментарии · ЗаписиАвтонапоминания «потеряшкам», правила «когда, если, то», ответы на комментарии Instagram, подтверждение и напоминания о записиeditor
База знанийДокументы · МедиаБольшие прайсы и документы для ответов; библиотека фото и видео для отправкиviewer (правка: editor+)
ФункциинетДействия бота (записать, счёт, уведомить) → гайдeditor
КаналынетПодключить WhatsApp, Telegram, Instagrameditor
ИнтеграцииСервисы · Приём оплат · API-ключиCRM (amoCRM, Bitrix24), АльфаCRM, касса ресторана iiko, вебхуки → что можно подключить; счета клиентам (Kaspi-push); ключи для разработчиков. Google Таблицы, Календарь и МойСклад подключаются во вкладке Функцииeditor (приём оплат и API-ключи: admin, подключение кассы: owner)

Рабочие разделы слева тоже держат подвкладки: у Лидов есть «Теги», у Рассылок «Исходящие» (бот сам пишет первым по базе номеров → гайд), у Аналитики «Отчёты» и «Логи».

📌 Биллинг проекта (тариф, отчёт по оплатам, калькулятор) открывается из окна «Оплата и подписки» и со страницы «Обзор».

⚠️ Не нашёл раздел / всё серое? Скорее всего, у тебя роль ниже нужной. Например, промпт правит только admin, подключение кассы Kaspi и отчёты только owner. Попроси владельца проекта повысить роль.

Куда идти под частую задачу

Хочу…Иду в…
Изменить, как бот общаетсявкладка Промпт
Добавить цены/услугивкладка База знаний
Научить бота записывать/считатьвкладка Функции
Подключить WhatsAppвкладка Каналы → WhatsApp
Посмотреть перепискиДиалоги (слева)
Посмотреть заявкиЛиды (слева)
Пополнить балансплашка баланса в шапке или «Оплата и подписки» слева
Проверить бота безопасноТестовый чат (слева)
Догнать ушедших клиентоввкладка Автоматизации → Дожимы
Выбрать модель ИИвкладка LLM
Пригласить сотрудникавкладка Общие настройки → Участники

Простыми словами

Слева всегда одно и то же меню: оплата, сводка по всем ботам, уведомления, список твоих ботов и то, чем пользуешься каждый день: переписки, заявки, рассылки, цифры и тестовый чат. Когда открываешь конкретного бота, сверху появляется ряд вкладок с его настройками: характер, модель, напоминания, знания, действия, каналы, интеграции. Настроил один раз, дальше работаешь в левом меню.

Если какой-то раздел не открывается или кнопки серые, почти всегда дело в правах: например, менять «характер» бота разрешено не всем, а только администратору. Тогда просто попроси владельца дать тебе доступ повыше.


Дальше: → Быстрый старт: первый бот за 30 минут
Связано: Что такое DOS AI · Роли и права · Глоссарий

Документация › Старт › Глоссарий

Глоссарий

Все термины платформы простым языком. Сюда ведут ссылки из других статей, если встретил незнакомое слово, ищи его здесь.

⏱ 6 мин (как справочник) · 👤 для всех · 🟢 live

Как пользоваться: жми Ctrl/Cmd+F и ищи слово. Каждый термин даёт короткое определение и ссылку на полную статью.

Основные понятия

Проект

Один бот для одного бизнеса (или точки). Внутри проекта: промпт, каналы, функции, CRM. У тебя может быть много проектов. → Что такое DOS AI

Бот / агент

AI-ассистент проекта, который отвечает клиентам. Его поведение задаёшь ты, текстом в промпте. «Бот» и «агент», синонимы.

Системный промпт

Текст, описывающий «характер» и правила бота: как общаться, что предлагать, что запрещено. Главная настройка бота. → Промпт

Канал

Мессенджер, через который бот общается: WhatsApp, Telegram или Instagram. Один номер, бот или аккаунт = один проект. → Каналы

Функция (инструмент / tool)

Действие, которое бот может выполнить: записать в календарь, посчитать, выставить счёт, уведомить владельца. Бот сам решает, когда вызвать. → Функции

Параметр (функции)

Данные, которые бот собирает у клиента и передаёт в функцию (имя, телефон, дата, сумма). → Функции

Предохранитель (функции)

Условие, без которого функция не выполнится, даже если бот решил её вызвать: клиент прислал чек, заполнен телефон, оплата реально прошла, другая функция уже отработала. Проверяет платформа, а не модель. → Функции

Правки владельца

Раздел в конце промпта, куда ссылка «Не так ответил? Поправить словами» в тест-чате дословно записывает твои замечания правилами. → Промпт

Сверка слов с делами

Проверка после каждого ответа: бот написал «выставил», «записал», «передал», а функцию не вызвал, значит получает один круг на исправление. В логах такой случай называется action_claim_unbacked. → Как бот думает

База знаний (RAG)

Большие документы, которые ты загружаешь (прайс на много позиций, каталог, условия). Бот автоматически подмешивает нужные куски в ответ. Короткие факты (адрес, часы, несколько цен) удобнее в поле «Информация о компании». RAG = технология поиска по этим документам. → База знаний

Дожим (follow-up)

Автоматическое напоминание клиенту, который заинтересовался и пропал. Бот мягко возвращает его в диалог. → Дожимы

Медиа-библиотека

Хранилище фото/видео/отзывов проекта, которые бот может отправить клиенту в нужный момент. → Медиа

Правило (автоматизация)

«Когда, если, то»: повод (клиент написал слово, бот создал заявку), условия и до трёх действий (точный ответ без модели, тег, уведомление, вебхук). → Правила и комментарии

Рассылка

Разовое сообщение сразу многим своим контактам в Telegram, с сегментом, кнопками и отложенным запуском. В WhatsApp массовых рассылок нет: за них банят номер. → Рассылки

Исходящие

Режим, где бот сам пишет первым по вашей базе номеров WhatsApp, по капле и с дневным лимитом; риск блокировки принимает владелец. → Исходящие

Записи и напоминания

Раздел «Автоматизации → Записи»: подтверждение «вы записаны» и напоминания перед визитом для записи из любого источника (календарь бота, своя функция, CRM). → Записи

Страница записи

Публичная страница dosai.pro/b/<адрес>, где клиент сам выбирает услугу, день и время и вносит предоплату в Kaspi, без переписки. → Записи

Не доставляется

Пометка на контакте, которому наши сообщения три дня висят на одной галочке: так WhatsApp намекает на блокировку. Дожимы такому человеку отменяются, в массовую отправку он не попадает. → Дожимы

Интеграция

Связь бота с сервисом бизнеса: CRM, касса ресторана, Google, склад, свой API. → Что можно подключить

CRM и клиенты

Диалог (conversation)

Одна переписка с одним клиентом в канале. Все диалоги видны в разделе «Диалоги». → Диалоги

Лид

Потенциальный клиент: человек, который написал и которого стоит «вести». Каждый диалог может стать лидом с данными (имя, телефон, что хочет). → Лиды

«Это заявка» (галочка функции)

Галочка в разделе «После вызова» у функции, которая передаёт заявку человеку. Функция сработала, значит у клиента появляется карточка в «Лидах» и сделка в CRM, даже если бот оценил его осторожнее. → Функции

Статус лида

Насколько клиент готов купить: «Без статуса», «Потенциальный», «Квалифицированный», «Горячий», «Резерв», «Сделка закрыта», «Потерян». Бот ставит статус сам по ходу разговора, итог сделки обычно ставит человек. → Лиды

Стадия диалога

Этап разговора: Приветствие → Квалификация → Презентация → Возражения → Закрытие → Завершено. Помогает аналитике и боту понимать контекст. → Стадии

Тег / метка

Пометка на лиде для фильтрации (VIP, опт, жалоба). Бот или оператор ставит вручную/функцией. → Теги

Перехват (ручной режим)

Когда оператор сам вступает в диалог. Бота на этом чате можно поставить на паузу, чтобы он не встревал. → Диалоги

AI на паузе

Состояние диалога, когда бот временно молчит (оператор работает вручную или клиент попросил не писать). → Диалоги

Кому отвечает бот

Настройка проекта: всем новым обращениям, ещё и контактам, которые писали на номер до подключения, или только лидам с рекламы. У Instagram свой режим. → Расширенные настройки

«Ответьте руками»

Пометка на диалоге, которую платформа ставит, когда боту нельзя доверить ответ: функция упала, бот дошёл до потолка ответов, дважды заявил то, чего не делал. Такие диалоги ждут человека. → Диалоги

Что понял бот / Действия бота

Панель в тест-чате: какие функции бот вызвал, что записал в карточку клиента, сколько стоил ответ. → Тест-чат

Деньги

Токен

Единица расхода ИИ. Каждое сообщение бота тратит токены (зависит от длины и модели). Баланс пополняешь в окне «Оплата и подписки». → Сколько стоит сообщение

Подписка

Регулярная оплата за работающий канал WhatsApp или Instagram (Telegram работает без неё). Без активной подписки бот после пробного периода перестаёт отвечать клиентам: номер остаётся привязанным, переписка и настройки на месте. → Биллинг

Триал (пробный период)

Бесплатные дни работы WhatsApp-канала: 14 дней с момента подключения номера, 30 дней, если к проекту применён промокод. Число диалогов не ограничено, ответы бота всё это время идут с баланса проекта. Даётся один раз на проект и только до первой оплаты: у проекта, за который уже платили подписку, бесплатные дни заново не открываются, там продление подписки. → Подключить WhatsApp

Окно активации

14 дней после подключения канала, когда подписку можно купить со сниженной ценой (месяц −20%, 3 мес −15%, 6 мес −25%, год −30%). Даётся один раз на проект. → Биллинг

Приём оплат (Flow B)

Функция, когда бот выставляет твоему клиенту счёт прямо в чате (Kaspi-push), деньги идут на твою кассу. → Приём оплат

Реферал

Приглашённый тобой пользователь; за него начисляется комиссия. → Рефералы

Роли

viewer / tester / editor / admin / owner

Уровни доступа в проекте: viewer, только смотреть, tester, то же + тест-чат (гонять бота, без правок), editor, функции, база знаний, дожимы, интеграции и ручные ответы клиентам, admin, + промпт, настройки проекта, подключение каналов, приглашения и оплата, owner: всё + касса, роли, передача и удаление. → Роли и права

Технические термины

QRDOS (подключение WhatsApp)

Самохостинг-механизм, которым платформа подключает WhatsApp: привязанное устройство по QR (как WhatsApp Web), всё держится на стороне платформы: отдельный сторонний сервис не нужен. (Ранее эту роль играл сервис-посредник Wazzup; убран в 2026-06.) → WhatsApp

Код привязки

Восемь знаков, которые вводят в WhatsApp на телефоне вместо сканирования QR: так номер подключают с самого телефона, где стоит WhatsApp. Код живёт около двух с половиной минут. → WhatsApp

Что нового

Страница на сайте со списком изменений платформы по месяцам, с «было» и «стало». Ссылка в меню помощи в шапке кабинета.

Сервисный аккаунт (Google)

Технический Google-аккаунт DOS AI, которому ты даёшь доступ к своей таблице/календарю, чтобы бот мог с ними работать. → Интеграции

Вебхук (webhook)

HTTP-запрос на внешний адрес: способ боту «дёрнуть» твой сервер или CRM. Основа кастомных функций. → Своя интеграция по API · Вебхуки событий

Где работает бот

Тест-чат, WhatsApp, Instagram, Telegram и ответ после оплаты: везде одинаково, с теми же функциями. Дожимы бот пишет по тому же промпту, но без функций. Чат на главной странице сайта это наш консультант, а не твой бот. → Как бот думает

QStash / крон

Планировщики, которые запускают регулярные задачи (дожимы, проверки). Тебе настраивать не нужно, работает само.


Простыми словами

Это словарик. Если в любой статье встретилось слово, которое непонятно, заходи сюда, ищи его поиском (Ctrl+F) и читай короткое объяснение. А если хочешь разобраться глубже, рядом с каждым словом есть ссылка на полную статью.


Дальше: → Быстрый старт: первый бот за 30 минут
Связано: Что такое DOS AI · Как бот думает · Карта кабинета

Документация › Старт › Как выбрать чат-бота

Как выбрать чат-бота для WhatsApp

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

Ниже шесть вопросов, которые стоит задать любому сервису до оплаты. В конце наши ответы на те же шесть, с цифрами, и список случаев, когда мы не подойдём.

1. Как бот попадёт в твой WhatsApp

Способов два, и они отличаются сильнее, чем всё остальное вместе взятое.

Официальный WhatsApp Business API. Номер регистрируется у Meta через провайдера. Плюс: правила игры прописаны, за рассылки не банят, есть верификация бизнеса. Минус: подключение идёт через проверку, шаблоны сообщений проходят модерацию, а платить обычно приходится и провайдеру, и за диалоги по тарифам Meta.

Привязанное устройство (QR). Бот входит на твой номер так же, как WhatsApp Web: сканируешь код, номер остаётся твоим. Плюс: подключение за минуту, номер уже прогрет перепиской, платить за каждый диалог никому не нужно. Минус: это не официальный API, поэтому дисциплина обязательна, и рассылки по холодной базе тут запрещены не капризом сервиса, а здравым смыслом.

Что спросить: какой из двух способов, и если QR, то что сервис делает против блокировки. Ответ «ничего, просто не спамьте» это плохой ответ.

2. Чем бот отвечает

Тут два подхода, и многие сервисы сегодня умеют оба.

Сценарий. Ты рисуешь ветки: кнопка, ответ, следующая кнопка. Работает предсказуемо ровно до первого вопроса, которого нет в ветке.

Модель. Ты описываешь словами, кто твой бот, что продаёшь, по каким ценам и как себя вести. Дальше он сам разбирает, что человек написал. Работает с любой формулировкой, но зависит от того, насколько подробно ты его описал.

Что спросить: что будет, когда клиент напишет то, чего ты не предусмотрел. И отдельно: можно ли забрать свой промпт с собой, если решишь уйти.

3. За что с тебя возьмут деньги

Моделей тарификации несколько, и они дают очень разный счёт при росте.

  • За подписчиков или контакты. Дёшево на старте, растёт вместе с базой, даже если половина базы молчит.
  • За сообщения или диалоги. Считаешь по трафику, но нужно понимать, что именно считается диалогом.
  • За канал или рабочее место. Фиксировано, не зависит от того, сколько тебе написали.
  • Отдельно за ИИ. Если бот отвечает моделью, эти ответы кто-то оплачивает. Либо это зашито в тариф, либо идёт отдельной строкой.

Что спросить: посчитайте мой месяц на моих числах. Возьми свой реальный поток обращений и попроси назвать сумму. Если сумму называть отказываются, скорее всего она тебе не понравится.

4. Что будет с перепиской и заявками

Бот собирает то, ради чего всё затевалось: имена, телефоны, что человек хотел, на когда записался.

Что спросить: где это лежит и как забрать. Есть ли встроенная CRM или заявки надо самому перекладывать в таблицу. Отдаётся ли выгрузка. Есть ли интеграция с той CRM, где ты уже работаешь.

5. Кто настраивает и сколько это займёт

Часть рынка продаёт не сервис, а внедрение: платишь за настройку отдельно, и без интегратора продукт не запускается.

Что спросить: запущусь ли я сам и за какое время. И проверить это до оплаты: попроси доступ и попробуй.

6. Что происходит, когда бот ошибётся

Он ошибётся, это вопрос времени. Дальше всё зависит от того, узнаешь ли ты об этом вовремя.

Что спросить: как бот передаёт разговор человеку, придёт ли мне уведомление и вижу ли я всю переписку целиком. Худший вариант это когда бот наговорил клиенту лишнего, а ты узнал об этом от самого клиента.

Наши ответы на те же шесть

Всё ниже проверяется в кабинете, цифры действуют на 2 октября 2026 года.

Подключение. Привязанное устройство по QR, номер остаётся твоим. В обычной работе бот отвечает только тем, кто написал сам, и держит паузы между сообщениями. Написать первым можно, но через отдельный раздел «Исходящие», и там стоит потолок: по умолчанию 20 сообщений в сутки на номер, первые дни идёт разгон с пяти, а поднять потолок выше двадцати можно только с отдельным подтверждением.

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

Деньги. Telegram бесплатно. WhatsApp: $25 в месяц за канал. Ответы ИИ идут отдельно по факту: один доллар это примерно 80 ответов бота на быстрой модели и около 20 на самой сильной (замер по реальным диалогам; длина описания и ответов сдвигает цифру). Первые 14 дней после подключения номера канал работает бесплатно, по промокоду 30 дней. При регистрации на баланс кладём $5, по промокоду $10. Карта для старта не нужна. Прикинуть свой месяц можно калькулятором расхода в кабинете, в разделе «Баланс».

Заявки. Встроенная CRM: стадии, теги, заметки, ответственные, вся переписка рядом. Есть готовые интеграции с Bitrix24, amoCRM, АльфаCRM, кассой ресторанов iiko, Google Таблицами и Календарём и МоимСкладом, а свою систему можно подключить вебхуком или по API. Все интеграции на одной странице: Что можно подключить. Есть публичный API.

Запуск. Сам, без интегратора. Первый ответ клиенту обычно уходит через 10-15 минут после регистрации. Отдельно за настройку платить не нужно. Если хочется, чтобы бота собрали за тебя, есть платная услуга «Настроим за вас»: $50 разово до 16.10.2026, с 17.10.2026 $75 (предложение действует до 31.12.2026), подписка при этом остаётся отдельно. Заявка оставляется формой на главной (блок после цены) или на странице dosai.pro/pod-klyuch, дальше мы сами пишем в WhatsApp.

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

Когда мы не подойдём

Честный список, чтобы не тратить твоё время.

  • Нужно разослать тысячам за день. Отправка первым у нас есть, но с потолком в 20 сообщений в сутки на номер и разгоном в первые дни. Потолок стоит не для того, чтобы придержать тебя, а чтобы номер дожил до конца рассылки.
  • Нужен официальный статус WhatsApp Business API, галочка верификации и шаблоны, согласованные с Meta. Мы работаем иначе.
  • Клиенты пишут в основном не в мессенджеры, а звонят или приходят с сайта. Тогда начинать надо не с бота в WhatsApp.
  • Нужен бот, который ходит по жёсткому сценарию с кнопками и никогда не отклоняется от скрипта. Наш отвечает словами.

Дальше

Документация › Проект и бот › Создание проекта

Создание проекта

Первый шаг к боту: создать проект под один бизнес. В мастере из трёх коротких экранов ты отвечаешь на три вопроса о бизнесе, и платформа собирает бота целиком: промпт, функции, настройки, теги и отчёт. Дальше сразу тест-чат.

⏱ 6 мин · 👤 для владельца · 🟢 live

Форма создания проекта
Форма создания проекта
За 30 секунд:
  • Проект = один бот для одного бизнеса или точки.
  • Мастер из трёх экранов, по вопросу на экран. На первом: название проекта (обязательно), сфера бизнеса (по желанию) и вопрос «кто вы и чем занимаетесь». На втором: услуги, цены и частые вопросы клиентов. На третьем: что бот должен сделать с клиентом. Между экранами кнопки «Далее» и «Назад», справа видно, что уже заполнено.
  • Кнопка «Собрать бота»: проект создаётся, по твоим ответам пишутся промпт (как бот себя ведёт) и «Информация о компании» (адрес, часы, услуги, цены), 30 центов с баланса проекта; включаются функции и настройки, заводятся теги и ежедневный отчёт.
  • Через 20-40 секунд ты в тест-чате, в поле ввода уже стоит первое сообщение «клиента».
  • Хочешь писать промпт сам: кнопка «Опишу бота сам, без вопросов» (есть на каждом экране). Функции, настройки и отчёт ставятся и в этом случае.

Зачем это нужно

Проект это «папка» твоего бота: внутри живут его характер, каналы, функции, переписки и заявки. Один бизнес = один проект. Две точки или два разных бизнеса = два проекта (у каждого свой бот и свой номер WhatsApp).

Шаги

1. Открой создание проекта

Левое меню → «+» рядом с заголовком «Проекты» (или кнопка на Дашборде).

2. Заполни название и сферу

ПолеЧто вписатьОбязательно
Название проектаКак ты сам будешь называть его в кабинете («Стоматология Смайл»)да, до 100 символов
Сфера бизнесаВыбор из списка (стоматология, салон, ресторан…). По ней конструктор подбирает примеры под полями, порядок разговора и запреты для твоей ниши. Нет своей, оставь пустойнет
ПромокодСпрятан под ссылкой «Есть промокод?». Код партнёра даёт больше бесплатных дней и стартового балансанет

3. Ответь на три вопроса

ВопросЧто написать
Кто вы и чем занимаетесь?Название, город и адрес, что делаете, чем отличаетесь, часы работы. Если бот должен представляться именем, напиши каким. Обязательно, минимум 30 знаков
Услуги, цены, что спрашивают клиентыУслуги с ценами, способы оплаты, рассрочка, сроки и пары «спрашивают: … отвечаем: …»
Что бот должен сделать в итогеОтметь один или несколько вариантов (записать, собрать имя и телефон, ответить на вопросы, передать менеджеру, оформить заказ, выставить счёт) и при желании уточни своими словами

Бот будет знать ровно то, что ты напишешь: назвал цену, он её назовёт; не назвал, скажет, что уточнит у администратора. Второе и третье поле можно оставить пустыми: чего не хватает, попадёт в промпт отдельным списком «чего владелец не указал», и его легко дописать потом в поле «Информация о компании».

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

4. Нажми «Собрать бота»

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

Что собирается вместе с проектом

ЧтоКак настроено
Промптпо трём ответам: манера общения, порядок разговора, запреты, примеры переписки, список «чего владелец не указал»
Информация о компаниифакты из твоих ответов: кто вы, где, часы работы, услуги, цены и ответы на частые вопросы. Правится на вкладке Промпт, в поле под промптом
Функции«Помечать лида тегами», «Отложить дожимы», «Отключить дожимы», «Остановить диалог». Все включены и живут в разделе Функции
Теги5-8 категорий под твой бизнес с описанием, когда бот ставит каждую. Правятся на странице Теги
Отчётежедневная сводка в 09:00 по Алматы, выключена: на странице Отчёты выбери, куда слать, на почту или в Telegram, и включи
Кому отвечает ботвсем, кто напишет, включая контакты, которые были в телефоне до подключения. Если номер одновременно личный, переключи на «Только новым обращениям»
Буфер сообщенийпосле второго сообщения подряд бот ждёт 7 секунд тишины и отвечает на всю пачку сразу; для фото и голосовых так же
Пауза между частями ответа4 секунды
Пропущенный звонокклиенту, который не дозвонился, уходит готовый текст «Сейчас не можем принять ваш звонок. Напишите, пожалуйста, сюда, мы ответим» (без модели и без расхода)
Защита от спамавключена с порогами под флуд: 30 сообщений в минуту, 300 в сутки, 5 одинаковых подряд. Сработав, бот пропускает ответ, а не выключается на диалоге
Память диалогабез ограничения по времени
Глубина размышления моделисредняя

Всё это меняется потом: настройки бота на вкладке «Промпт → Расширенные настройки», остальное на страницах функций, тегов и отчётов. Полный список значений в справочнике настроек.

Если что-то пошло не так

СимптомПричинаЧто делать
Кнопка не срабатывает, подсвечено первое полеВ ответе «Кто вы и чем занимаетесь» меньше 30 знаковДопиши подробнее
После создания открылся экран с тремя вопросами, а не тест-чатНа балансе проекта нет 30 центов (бесплатные $5 даются только первому проекту) или сборка не удаласьОтветы уже подставлены. Если дело в балансе, пополни баланс, потом нажми «Собрать промпт»
Жёлтое предупреждение про балансЭто не первый проект, стартового баланса у него нетПроект создастся, промпт соберёшь после пополнения
Красный баннер «достигнут лимит»У тебя 50 проектов (максимум)Удали ненужные или напиши в поддержку
Бот собран, но клиентам не отвечаетНе подключён каналПройди Быстрый старт

Под капотом

  • Создание: POST /api/projects. Сразу после записи проекта сервер ставит настройки нового проекта (NEW_PROJECT_AGENT_CONFIG), включает функции поведения и создаёт выключенную строку отчёта. Сбой любого из этих шагов не отменяет создание проекта.
  • Сборка промпта: POST /api/projects/{id}/prompt/compose, 30 центов списываются только после успешной сборки. Словарь тегов (created_by = ai) заводится только проекту, у которого тегов ещё нет: пересборка промпта в настройках живого проекта теги не добавляет.
  • Не хватило баланса или сборка не удалась: ответы переносятся под созданный проект, открывается /projects/{id}/setup с заполненными полями.
  • «Опишу бота сам, без вопросов» ведёт на /projects/{id}/settings?tab=bot.
  • Лимит 50 проектов на пользователя. Бесплатный стартовый баланс даётся на первый проект (при регистрации по реферальной ссылке на первые 3); дальше проект создаётся с нулевым балансом.
  • Название компании отдельно не спрашивается: в базу уходит название проекта (company_name = name), потом его можно поменять в настройках.

Простыми словами

Создать проект это завести отдельного бота под один бизнес. На трёх коротких экранах ты пишешь, как проект называется, и отвечаешь на три вопроса, как новому администратору: кто вы, что продаёте и почём, чем должен закончиться разговор. Нажал кнопку, и через полминуты бот готов: знает твои цены, умеет замолчать, если клиент попросил не писать, сам раскладывает клиентов по категориям, а утренний отчёт ждёт только того, чтобы ты сказал, куда его слать. Остаётся проверить бота в тест-чате и подключить WhatsApp.


Дальше: → Системный промпт
Связано: Быстрый старт · Карта кабинета

Документация › Проект и бот › Системный промпт

Системный промпт (характер бота)

Самая важная настройка: текст, который задаёт, как бот общается и по каким правилам. От него зависит 80% качества бота.

⏱ 10 мин · 👤 для владельца · 🟢 live

Редактор системного промпта: роль, задачи и тон бота, справа счётчик символов и кнопка «Сохранить»
Редактор системного промпта: роль, задачи и тон бота, справа счётчик символов и кнопка «Сохранить»
За 30 секунд:
  • Промпт это инструкция боту, как новому сотруднику: тон, что предлагать, что запрещено, какая цель.
  • Пиши правила и поведение в промпт; факты (адрес, часы, несколько цен) в поле «Информация о компании»; большие прайсы и документы в Базу знаний; действия в Функции.
  • Не хочешь писать с нуля: кнопка «Составить за меня» над полем. Три вопроса о бизнесе, минута ожидания, готовый промпт на 6-12 тысяч знаков. Стоит $0.30 с баланса проекта.
  • Есть история версий промпта, оценка стоимости и токенов.
  • Любую правку сразу проверяй в Тест-чате.

Зачем это нужно

Бот не знает твой бизнес и не имеет «характера» по умолчанию. Системный промпт это то, что превращает абстрактный ИИ в твоего администратора: вежливого или дружелюбного, продающего или консультирующего, с твоими правилами и запретами. Плохой бот почти всегда = неполный промпт, а не «глупый ИИ» (см. Как бот думает).

Где это настраивается

Вкладка проекта «Промпт» (settings?tab=bot). Слева сам текст промпта, справа список «Рядом с промптом»: информация о компании, медиа бота, база знаний, помощь с настройкой и итоговый промпт. Каждая строка списка открывает свой раздел:

ПолеЧто задаётЛимит
Системный промптГлавная инструкция: характер, правила, цельдо 100 000 символов
Информация о компании (строка в списке справа)Доп. контекст о бизнеседо 40 000
Статус бота (подвкладка «Расширенные настройки»)Включён/выключен (рубильник)-
Воронка продаж (подвкладка «Расширенные настройки»)Вести ли лида по стадиям и статусамвкл/выкл
Итоговый промпт (строка в списке справа)Предпросмотр того, что реально уйдёт моделитолько чтение

«Составить за меня»: три вопроса вместо пустого поля

В шапке блока с текстом промпта всегда стоит кнопка «Составить за меня». Она открывает три вопроса, на которые ты отвечаешь как администратору при приёме на работу:

  1. Кто вы и чем занимаетесь? Название, город, что делаете, чем отличаетесь, часы работы. Это единственный обязательный ответ.
  2. Услуги, цены, что клиенты спрашивают и что вы отвечаете. Чем подробнее, тем меньше бот будет говорить «уточню у администратора».
  3. Что бот должен сделать с клиентом в итоге? Кнопки: записать на приём, собрать имя и телефон, ответить на вопросы, передать менеджеру, оформить заказ, выставить счёт. Можно несколько, плюс уточнение своими словами.

Под каждым вопросом стоит живой пример ответа под твою нишу, он не пропадает, когда начинаешь печатать. Пиши как угодно: списком, сплошным текстом или надиктуй голосом и вставь, ИИ разберёт.

Дальше ИИ собирает промпт. Часть текста платформа пишет сама и одинаково для всех ботов: манера общения (одно-два коротких сообщения, один вопрос за раз, на «вы», без канцелярита и звёздочек), правило приветствия, порядок разговора, запреты и чек-лист перед каждым ответом. Это обычный текст внутри промпта, его видно и можно править руками. ИИ добавляет к нему то, что знает только про тебя: факты о компании, пары «спрашивают → отвечаешь», честный список того, чего ты не указал (по нему видно, что дописать), три примера переписки на твоих данных и таблицу «ситуация → действие» под твою нишу. Промпт держится в пределах 12 тысяч знаков: если сборка выходит длиннее, платформа убирает лишние примеры переписки с конца, а факты компании, цены и правила не режет никогда (поэтому при очень подробных ответах текст бывает и длиннее). Длина это деньги на каждом ответе: весь промпт уходит модели с каждым сообщением, поэтому лишнее лучше вычеркнуть или вынести в базу знаний. Имя бота: то, которое ты назвал в ответах; не назвал, бот представится как DOS (поменять можно прямо в тексте).

Порядок разговора зависит от того, что ты продаёшь. Услуги с расписанием (клиника, салон, автосервис, зал, кафе с бронью) ведут к записи на день и время. Товар (магазин, доставка) ведёт к заказу: что именно, размер, доставка или самовывоз, и никакого «удобного дня», у товара нет расписания. Сложные услуги, где цену нельзя назвать в переписке (ремонт, логистика, IT, реклама, недвижимость), ведут к заявке и передаче менеджеру. Платформа выбирает это по нише проекта; ниша не выбрана, выбирает ИИ по твоему первому ответу.

А если продавать не надо? Отметь в третьем вопросе только «отвечать на вопросы» (можно вместе с «передать менеджеру») и ничего больше. Тогда бот получит справочный порядок: отвечает по фактам, а сам к записи и заказу не тянет и телефон не просит. Попросишь его о записи в разговоре, поможет и доведёт до конца, отказывать он не будет. Отметил рядом «записать» или «оформить заказ», значит бот снова продающий.

Приветствие всегда идёт ответом на сообщение клиента, а не вместо него: спросил цену, бот сначала называет цену и только потом представляется. Готовый текст «здравствуйте, меня зовут...» бот использует ровно в одном случае: клиент написал только «здравствуйте» и спрашивать пока нечего.

  • Стоит $0.30 с баланса проекта. Списывается только после удачной сборки и сохранения: если ИИ не справился, денег не берут. Баланса не хватает: плашка об этом стоит над кнопкой сразу, до ввода. Лимит 5 сборок в час и 20 в сутки на проект.
  • Ответил только на первый вопрос? Собрать всё равно можно. Платформа переспросит один раз («бот будет знать только это») и соберёт. Всё, чего ты не написал, попадёт в раздел «чего владелец не указал», и на такие вопросы бот будет отвечать «уточню у администратора», а не выдумывать. Дописать можно потом: факты (адрес, часы, цены) в поле «Информация о компании», правила поведения в текст промпта.
  • Цены проверяются на запись. Двойные единицы («24000 тыс») и точку вместо пробела («17.000») платформа приводит к обычному виду и отдельной строкой просит тебя проверить цифру. Твои числа при этом не меняются по смыслу. Знак валюты бот ставит только если ты сам его написал: не написал, цена останется голым числом.
  • Ответы не пропадают. Ушёл пополнять баланс, закрыл вкладку, вернулся через час: три поля заполнены тем, что ты писал. Черновик хранится в браузере до удачной сборки.
  • Куда ложится результат. Поведение (манера, порядок разговора, запреты, примеры) в «Системный промпт». Факты из ответов (кто вы, адрес, часы, услуги, цены, ответы на частые вопросы) в поле «Информация о компании», если оно пустое. Если там уже есть твой текст, конструктор его не трогает, и факты из ответов встают в промпт, как раньше.
  • Уже есть промпт? Конструктор прочитает его и информацию о компании, заполнит три поля тем, что ты уже писал, и покажет плашку «учёл то, что вы уже написали». Перед заменой предупредит: старый текст уходит в историю версий, вернуть можно одной кнопкой.
  • Это набросок, а не готовый продукт. Под полем так и написано: промпт требует работы и проверки на живых диалогах. Пиши боту в тест-чате как клиент, читай ответы, правь текст.
  • Сразу после сборки тебя ведут в тест-чат, где в поле уже лежит первое сообщение «клиента» под твою нишу. Нажми «Отправить» и посмотри, как бот отвечает.

💡 Поля сохраняются автоматически при правке (через ~1 секунду). Есть история версий: можно откатиться к прошлой формулировке.

«Поправить словами»: правило без поиска места в тексте

Бот в тест-чате ответил не так, а искать нужное место в промпте и формулировать правило не хочется. Под последним ответом бота есть ссылка «Не так ответил? Поправить словами». Напиши, что не так, как сказал бы сотруднику: «не называй цену, пока не узнал, какой зуб болит», «на казахский отвечай по-казахски, а не по-русски». Нажми «Применить и спросить снова»: твоя фраза дословно встанет последним пунктом в раздел «Правки владельца» в конце промпта, и бот ответит на тот же вопрос заново.

  • Это бесплатно: модель ради правки не зовётся, текст встаёт как есть.
  • Раздел «Правки владельца» один, новые замечания добавляются в конец; прежний текст промпта остаётся в истории версий.
  • Открой промпт и прочитай раздел после пары недель: правки, которые противоречат друг другу, лучше свести в одно правило руками.

Как написать хороший промпт

Думай как про инструктаж нового администратора. Структура, которая работает:

  1. Кто ты. «Ты: администратор стоматологии "Смайл" в Астане».
  2. Тон. «Общайся вежливо на "вы", коротко, без канцелярита. Эмодзи: редко».
  3. Что делаешь. «Отвечай на вопросы об услугах и ценах, помогай записаться».
  4. Цель. «Главная задача, записать клиента: узнай услугу, предложи время, возьми имя и телефон».
  5. Правила и запреты. «Не ставь диагнозы. Не обещай скидок без согласования. Если не знаешь, предложи перезвонить».
  6. Что делать при неясности. «Если клиент пишет не по теме, мягко верни к записи».

💬 Приветствие пишется здесь же, в промпте. Отдельного поля «Приветственное сообщение» у проекта больше нет (убрано 2026-08-06): один и тот же текст в двух местах разъезжался, а поле к тому же намекало на автоотправку, которой никогда не было. Хочешь, чтобы бот здоровался определённым образом, скажи это строкой промпта: «Первым сообщением поздоровайся и представься: "Здравствуйте! Это Айнур из центра Профи"». У проектов, где поле было заполнено, текст уже перенесён в начало промпта.

📌 Пример мини-промпта (барбершоп):

Ты это администратор барбершопа BroozMan. Общайся дружелюбно на «ты», коротко. Помогай записаться к мастеру: узнай услугу (стрижка/борода/комплекс), предложи свободное время, возьми имя и телефон. Цены бери из базы знаний, не выдумывай. Если клиент сомневается, предложи показать работы. Не груби, не спорь.

⚠️ Не пихай в промпт большие списки фактов (весь прайс на 80 позиций, расписание на месяц). Для этого есть База знаний: она дешевле и бот не путает цифры. Промпт = поведение, база знаний = факты.

📌 Не уверен, что в промпт, что в «Информацию о компании», а что в базу знаний? Цельный разбор: в статье Загрузить знания о бизнесе в бота.

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

Если включить «Воронку продаж», бот по ходу разговора сам определяет:

  • Статус лида, насколько клиент «горячий»: «Потенциальный» → «Квалифицированный» → «Горячий» → «Сделка закрыта» (или «Потерян»). Когда статус становится «Квалифицированный», «Горячий» или «Резерв», автоматически создаётся лид.
  • Стадию диалога, этап разговора: Приветствие → Квалификация → Презентация → Возражения → Закрытие → Завершено.

Тебе не нужно это программировать, бот ставит сам. Можно подсказать ему в промпте: «Когда клиент согласился записаться, считай его квалифицированным». Технические детали формата: в статье JSON-ответ бота.

💡 Если воронка не нужна (например, бот только консультирует), выключи её, чтобы не усложнять. Переключатель в подвкладке «Расширенные настройки». С подключённой CRM выключенная воронка останавливает и движение сделки по воронке: стадии не меняются, сделку двигают только правила.

Проверь, что работает

После правки промпта обязательно иди в Тест-чат и прогони реальные вопросы. Промпт это не «написал и забыл», а «написал → проверил → подправил», пока бот не отвечает как надо.

Частые ошибки

СимптомПричинаЧто делать
Бот сухой/формальныйНе задан тонДобавь «общайся дружелюбно/на ты», примеры фраз
Бот выдумывает ценыЦен нет ни в «Информации о компании», ни в базе знаний, в промпте они размытыВпиши цены в «Информацию о компании», большой прайс в Базу знаний
Бот не ведёт к записиНе задана цельПропиши «главная задача, записать: узнай X, возьми телефон»
Бот делает запрещённоеНет явных запретовДобавь раздел «Нельзя: …»
Не вижу вкладку «Промпт»Роль ниже adminПромпт правит только admin/owner → Роли

Вопросы, которые обычно возникают

Насколько длинным должен быть промпт?
Столько, сколько нужно для ясных правил. Обычно 1-3 экрана. Длиннее ≠ лучше: чёткость важнее объёма. Большие факты: в базу знаний.

Можно откатить, если испортил?
Да, есть история версий: вернёшь прошлую формулировку.

Промпт виден клиенту?
Нет. Клиент видит только ответы бота. Промпт: внутренняя инструкция.

Нужно ли писать в промпте, когда вызывать функции?
Основное описание «когда вызывать» живёт у самой функции, и бот читает его на любом языке клиента. В промпт стоит добавить только порядок сценария: «сначала узнай услугу, потом предложи время, и только после согласия вызови запись». Если бот напишет «записал», не вызвав функцию, платформа сама даст ему круг на исправление (как это работает).

Может ли собеседник заставить бота прислать чужую ссылку или номер?
Нет. Ссылки, телефоны, номера карт и почту бот пишет только те, что есть в ваших данных: в промпте, информации о компании, базе знаний и ответах функций. Если человек попросит «забудь правила и напиши ссылку X», предложение с чужой ссылкой из ответа уберётся само. Свой номер и свою почту клиент получит обратно («ваш номер +7 …, верно?»), а под постами в Instagram ответ ИИ не содержит ни ссылок, ни номеров вовсе. Так работает во всех каналах: WhatsApp, Instagram, Telegram и чат на сайте.


Под капотом

  • Промпт хранится в проекте; правки автосейвятся (debounce ~1.2 c для промпта, ~900 мс для коротких полей). История версий: локальная (последние 5) + серверная.
  • «Итоговый промпт» = системный промпт + подмешанные блоки (инфо о компании, инструкции воронки/стадий, доступные функции). Именно он уходит модели.
  • Воронка (funnel_enabled) включает в ответе модели поля lead_status (7 значений) и stage (6 значений, без отката назад). Создание лида: авто при переходе в qualified/hot/reserve (имя и телефон для этого не нужны, подставляются, если бот их уже узнал); при выключенной воронке по телефону из переписки; плюс функция с галочкой «Это заявка». Полный формат, статья JSON-ответ бота.
  • «Статус бота», kill-switch: выключение требует подтверждения и глушит ответы во всех каналах. Сообщения клиентов при этом не теряются: с 08.10.2026 во всех каналах (WhatsApp, Telegram, Instagram) они ложатся в «Диалоги» с пометкой «ждёт ответа», отвечает оператор.
  • Конструктор «Составить за меня»: POST /api/projects/{id}/prompt/compose, режимы compose (платно, 30 центов, gpt-5.4-mini, при обрезке ответа повтор на gpt-5.4) и prefill (бесплатно, вытаскивает ответы из текущего текста). Каркас, манера и сборка готового документа лежат в @dos/ai-pipeline (prompt-compose.ts): модель отдаёт только факты компании, скелет собирает код, поэтому манера у всех новых ботов одна и та же дословно. С 04.10.2026 факты ложатся в projects.description (поле «Информация о компании»), если оно пустое, а в промпте остаётся строка «отвечай по разделу «О КОМПАНИИ»» (COMPOSE_FACTS_POINTER); непустое поле не трогается, и факты идут в промпт. Пустой промпт больше не глушит бота: вместо заглушки он отвечает в общей манере и честно говорит, что про компанию ему ещё не рассказали.
  • Тонкие настройки (расписание, буферизация, расщепление ответов, распознавание медиа, кому отвечает бот, антиспам): на вкладке Промпт → Расширенные настройки. Там же паузы на оператора и звонок и автовозобновление; функции остановок стоят в разделе «Функции» у каждого проекта с рождения.
  • Язык ответа задавать не нужно. Бот отвечает на языке последнего сообщения клиента: по-казахски на казахский, по-русски на русский, зеркалит смешанный. Это правило платформы, оно стоит у всех ботов поверх промпта, даже если сам промпт и информация о компании написаны по-русски. Казахские голосовые расшифровываются с подсказкой языка.

Простыми словами

Системный промпт это просто текст, которым ты объясняешь боту, как себя вести, как разговаривать, что предлагать, чего нельзя и к чему вести клиента. Пиши его как инструкцию новому сотруднику в первый день. Главное правило: «как общаться» в промпт, а «сколько стоит и что у нас есть» в отдельную Базу знаний, чтобы бот не путал цифры. Написал промпт: сразу проверь бота в тестовом чате и поправь, если где-то не так. Это нормально подкручивать несколько раз: так и получается хороший бот.


Дальше: → Тестовый чат
Связано: Как бот думает · База знаний · Функции
Не получилось? → Бот не отвечает

Документация › Проект и бот › JSON-ответ бота

JSON-ответ бота (статусы, стадии, флаги)

[для продвинутых] Бот отвечает структурированным JSON, а не голым текстом: текст ответа + что он понял про клиента (имя, телефон, стадия, статус лида). Эта статья, что внутри и зачем.

⏱ 8 мин · 👤 для разработчика и любопытного владельца · 🟢 live

За 30 секунд:
  • Бот возвращает JSON, не «голый текст»: поле answer (ответ) + метаданные диалога.
  • Из JSON платформа достаёт: имя/телефон/email клиента, стадию воронки, статус лида, нужно ли продолжать диалог.
  • Никакого стриминга: ответ приходит целиком; «эффект печатания» делается разбивкой на части на стороне клиента.
  • Удалённые поля (selected_service, services) бот иногда всё ещё шлёт, платформа их молча выкидывает.

Зачем боту JSON, а не текст

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


Поля ответа

Ответ проверяется по схеме (ai-response-schema.ts). Основные поля:

ПолеТипЧто значит
answerстрока (обязательно)основной текст ответа клиенту
message_partsмассив строкответ, разбитый на части (эффект печатания)
client_nameстрокаимя клиента, если бот его узнал
phoneстрокателефон, если назвали
emailстрокаemail, если назвали
stageстрокастадия воронки (greeting…done)
lead_statusстрокастатус лида
summaryстрокакраткое резюме разговора для карточки лида
full_dataобъектпроизвольные собранные поля (кастомные данные)
deal_valueчисло или строкасумма сделки, названную клиентом в разговоре («полтора миллиона» тоже понимается). Пишется в карточку лида, только вверх: случайно занизить сумму бот не может
deal_currencykzt / usdвалюта суммы. Если бот её не назвал, определяется по маркеру в самом значении ($, usd, «долл»), иначе тенге
triggered_eventsмассив строкслужебная запись «какие функции реально вызвались в этом ответе и чем закончились» (до 50). Заполняет платформа, а не бот: она подставляет туда факт вызова с исходом, а на следующем ходу бот читает эту запись как правду. Раньше список писал сам бот, и он ошибался в обе стороны: то забывал записать вызов и звал функцию второй раз, то записывал вызов, которого не было, и уверял клиента, что заявка уже у менеджера
buttonsмассивкнопки под ответом (только Telegram, до 8 после обрезки; в WhatsApp деградируют в текст)
📌 stage и lead_status, обычные строки, а не жёсткий список, потому что проект может задать свой набор стадий/статусов. Платформа проверяет значение по разрешённому набору проекта; если значение «чужое», пишет предупреждение и оставляет старое, а не ломает диалог. Если воронка у проекта выключена, stage/lead_status из ответа игнорируются.
🛑 Бот НЕ останавливает диалог сам. Раньше бот мог сам решить «разговор окончен» и уйти на паузу (поля continue_to_talk/stage=done): это убрали, потому что модель делала это преждевременно (замолкала прямо после записи, игнорируя следующий вопрос клиента). Теперь диалог завершается только явной функцией: «Остановить диалог» или любой функцией с галочкой «Завершать диалог после выполнения». Так бот всегда дообщается, пока вы сами (или функция) его не остановите.

Разбивка на части (эффект печатания)

Бот может прислать message_parts, несколько коротких сообщений вместо одного длинного. Платформа отправляет их по очереди с паузой между ними (4 секунды у всех проектов), создавая ощущение «человек печатает».

⚠️ Это НЕ стриминг. Ответ модели приходит целиком и сразу; «постепенность» это клиентская пауза (setTimeout) между уже готовыми частями. Стриминг в платформе не используется (он ломал бы подсчёт токенов и возвраты). Управление разбивкой: в продвинутых настройках (split_*).

Игнорируемые поля

Модель по привычке иногда возвращает selected_service / services: это поля удалённой фичи «Услуги» (убрана 2026-04-22). Схема их принимает и молча отбрасывает, чтобы старый «мусор» от модели не ломал разбор ответа. Это не ошибка.


Простыми словами

Когда бот отвечает, он отдаёт не фразу, а небольшую «анкету»: вот мой ответ клиенту, а вот что я про него понял, как зовут, какой телефон, на каком мы этапе разговора, считать ли его горячим лидом. Платформа читает эту анкету и сама заполняет карточку клиента, двигает его по воронке, решает, нужно ли потом напомнить о себе.

Тебе как владельцу в это лезть не нужно, всё работает само. Знать про это полезно в одном случае, если хочешь, чтобы бот точнее определял стадии и статусы под твой бизнес, опиши правила в промпте, и он будет аккуратнее заполнять эту «анкету».


Дальше: → Выбор AI-модели
Связано: Системный промпт · Стадии воронки · Лиды · Продвинутые настройки
Не получилось? → Бот не отвечает

Документация › Проект и бот › Выбор AI-модели

Выбор AI-модели

Бот работает на одной из моделей OpenAI. По умолчанию: быстрая и недорогая, её хватает 90% бизнесов. Можно поставить «умнее», но каждое сообщение будет дороже.

⏱ 6 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Модель выбирается на проект (не на каждый чат).
  • По умолчанию, gpt-5.4-mini: быстрая, недорогая, для большинства задач достаточно.
  • Есть модели мощнее (лучше рассуждают на сложных диалогах) и легче (ещё дешевле/быстрее).
  • Чем мощнее модель, тем дороже каждое сообщение (быстрее тратится баланс). См. Сколько стоит сообщение.
📍 Где найти. Вкладка проекта «LLM» → блок «Выбор модели». Модель выбирается из списка: у каждой написано семейство, для чего она подходит и скорость, рядом цена за миллион токенов. Под списком «Глубина размышления», а в спойлере «Сравнение моделей» таблица всех моделей.
Вкладка LLM: выбор модели ИИ, влияющей на качество и стоимость ответа
Вкладка LLM: выбор модели ИИ, влияющей на качество и стоимость ответа

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

У проекта есть настройка модели (projects.openai_model). Если не менял, действует модель по умолчанию gpt-5.4-mini. Менять стоит осознанно: модель влияет на качество ответов и на стоимость каждого сообщения.

Доступны 11 моделей четырёх семейств OpenAI: GPT-5.5 (gpt-5.5), GPT-5.4 (gpt-5.4-mini, gpt-5.4, gpt-5.4-nano), GPT-5 (gpt-5-mini, gpt-5, gpt-5.1, gpt-5.2) и GPT-4.1 (gpt-4.1-mini, gpt-4.1, gpt-4.1-nano), от самой лёгкой nano до флагмана. Помечены как популярные две: gpt-5.4-mini (по умолчанию) и gpt-4.1-mini (самая экономная из рабочих). Модели отличаются по трём осям:

  • Ум: насколько хорошо держит сложный диалог, следует инструкциям, рассуждает.
  • Скорость, как быстро отвечает.
  • Цена за сообщение: сколько баланса уходит на один ответ.
Класс моделиКогда брать
самая лёгкая (gpt-4.1-nano)простейшие боты: FAQ, базовые ответы, маршрутизация. Минимальная цена из всех
nano / mini (напр. gpt-5.4-mini, по умолчанию)большинство задач: запись, ответы по базе знаний, типовые вопросы. Дёшево и быстро
полные (напр. gpt-5.4, gpt-4.1)сложные диалоги, тонкие переговоры, длинный контекст. Умнее, но дороже
флагман (gpt-5.5)⚠️ самая дорогая: предельно сложные задачи, тонкий reasoning. Быстро ест баланс, бери только когда gpt-5.4 реально не вывозит
💡 Не гонись за самой мощной моделью «на всякий случай». Для записи в барбершоп или ответов по прайсу mini справляется не хуже, а баланс тратит в разы медленнее. Бери мощную, только если видишь, что бот реально «тупит» на твоих диалогах в тест-чате.
⚠️ Стоимость. Более мощная модель = больше списание за каждое сообщение. На потоке (сотни диалогов) разница в балансе ощутима. Прежде чем переключать весь проект, прогони сложные кейсы в тест-чате и реши, стоит ли качество денег.

Глубина размышления

Под выбором модели стоит вторая настройка: «Глубина размышления». Это скрытая работа модели перед ответом: она проверяет расписание, цифры и свои же выводы, и только потом пишет. Четыре положения:

ПоложениеОтветЦена ответаЧто даёт
Выкл2-3 секундыдешевле всегоотвечает сразу, без проверки: может назвать занятое время или не открыть таблицу
Лёгкая+1-2 секундыпримерно +0,3 центачуть внимательнее, на сложных запросах ошибки остаются
Обычная (рекомендуем)+2-5 секундпримерно +0,9 центапроверяет расписание и цифры перед ответом; в наших замерах ни одной ошибки
Глубокая+4-10 секундпримерно +1,7 центадля сложных сценариев с несколькими функциями подряд
⚠️ Почему прибавка больше, чем кажется. Один ответ клиенту это обычно не одно обращение к модели, а 4-5: бот вызывает функцию, читает результат, иногда вызывает вторую, и только потом пишет. Размышление оплачивается в КАЖДОМ обращении. Цифры в таблице это замер на живых ботах и уже учитывают это: «Обычная» примерно удваивает цену одного ответа (на нашем замере ответ стоил 1,2 цента без размышления и 2,0 цента с «Обычной»). Если считаешь бюджет на месяц, умножай прибавку на число ответов бота, а не диалогов.

Стоит ли ставить «Глубокую». Мы прогнали восемь боевых вопросов (возврат части пакета, «сколько всего выйдет», сроки, условия рассрочки) на «Обычной» и «Глубокой». Ошибок не было ни у той, ни у другой. Разница вышла в другом: «Глубокая» думает примерно вдвое дольше «Обычной» и делает ответ дороже ещё примерно на 40%. Поэтому по умолчанию стоит «Обычная», а «Глубокую» имеет смысл включать точечно: если видишь в тест-чате, что бот путается в многошаговых расчётах.

Работает для моделей семейства gpt-5 (кроме o-серии, она думает всегда по-своему). Пока положение не выбрано, под кнопками написано, что применяет платформа. Та же настройка есть в тест-чате, чтобы сравнить положения на своих диалогах перед тем, как менять для клиентов.


Креативность и повторы

У моделей семейства GPT-4.1 ниже на той же вкладке появляются три ползунка: «Креативность» (насколько свободно бот формулирует), «Штраф за повторения» (чтобы не повторял одни и те же слова) и «Разнообразие тем» (чтобы не возвращался к уже обсуждённому). У каждого есть подсказка с примером. Модели семейства GPT-5, включая модель по умолчанию, эти настройки не принимают, поэтому у них блока с ползунками нет. Если бот отвечает нормально, не трогайте.

Модель для дожимов отдельно

Для дожимов можно задать свою модель (обычно дешевле основной: дожимы проще), у каждого шага дожима отдельно. Если не задана, наследуется модель проекта.


Простыми словами

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

Включать самую мощную «чтобы наверняка» не надо: она будет отвечать так же, но баланс съест заметно быстрее. А вот «Глубину размышления» на «Обычной» держать стоит: это несколько секунд ожидания, зато бот не предложит клиенту занятое время. Менять модель есть смысл, только если ты в тест-чате видишь, что бот реально не вывозит сложные разговоры. Тогда поставь мощнее, но имей в виду, что каждое сообщение станет дороже.


Дальше: → Тестовый чат
Связано: Системный промпт · Продвинутые настройки · Сколько стоит сообщение
Не получилось? → Бот не отвечает

Документация › Проект и бот › Тестовый чат

Тестовый чат

Песочница, где ты говоришь с ботом сам: проверить промпт, функции и знания до того, как он попадёт к живым клиентам.

⏱ 7 мин · 👤 для владельца и оператора · 🟢 live

Тест-чат: слева настройки бота, в центре переписка с ответом бота и его стоимостью, справа панель «Что понял бот»: стадия, лид, действия
Тест-чат: слева настройки бота, в центре переписка с ответом бота и его стоимостью, справа панель «Что понял бот»: стадия, лид, действия
За 30 секунд:
  • Тест-чат = безопасная репетиция: бот думает как в бою, но без реальных клиентов.
  • Справа панель «Что понял бот»: стадия, статус лида, что узнал о клиенте, какие функции вызвал, токены.
  • Меню «Инструменты теста»: сценарии, загрузить переписку, показать промпт, экспорт.
  • Рубильник ИИ отсюда убран: здесь только индикатор; включается бот на вкладке «Промпт» → «Расширенные настройки» («Статус бота»).
  • Работает и с пустым промптом: бот отвечает живо и честно говорит, что про компанию ему пока не рассказали, а в углу висит карточка «Составить за меня». Клик мимо карточки просто продолжает разговор.
  • После сборки промпта в поле уже лежит первое сообщение «клиента»: нажми «Отправить».
  • Проверяй тут каждое изменение промпта/функций/знаний.

Зачем это нужно

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

Где это

Левое меню → «Тестовый чат» (рабочие разделы открытого проекта). Нужна роль tester и выше (тестер может гонять бота, но ничего не меняет).

Что ты видишь

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

Слева узкая полоса «Настройки бота»: нажми на неё, и раскроется панель с промптом, моделью и поведением бота, чтобы править их, не уходя из чата. По умолчанию панель свёрнута; если ты её раскрыл, она останется раскрытой и в следующий раз.

Справа: панель «Что понял бот» (главная ценность теста). Показывает «изнанку» каждого ответа:

СекцияЧто показывает
СтадияНа какой стадии диалога бот (приветствие → … → готово)
ЛидКакой статус лида проставил
Что узнал о клиентеСобранные данные (имя, телефон…) с индикатором заполненности «3/5»
Действия ботаКакие функции вызвал, с аргументами и результатом
Распознано из медиаРасшифровка голосовых, текст с картинок/PDF
Технические детали (под спойлером)Токены, стоимость запроса, сырой JSON-ответ
Проверить дожимСимулировать, что бот отправит как напоминание

Сверху, шапка: модель, индикатор «Бот включён / выключен» (только показывает; управление на вкладке «Промпт» → «Расширенные настройки») и меню «Инструменты теста».

«Как увидит клиент»: WhatsApp или Instagram. Переключатель в шапке. В положении Instagram бот отвечает по правилам директа (окно 24 часа, не обещает «напишу завтра»), а ответ показан так, как его получит клиент в Instagram: без жирного, длинный текст частями по 1000 байт, кнопки под последним сообщением. Выбор запоминается для проекта, переписку тест-чата он не стирает. В положении WhatsApp тест-чат отвечает как раньше.

Поправить ответ словами

Бот ответил не так? Под его последним ответом есть ссылка «Не так ответил? Поправить словами».

  1. Нажми на неё и напиши, что не так, как сказал бы сотруднику: «цену называй сразу, чистка 15 000 тенге».
  2. Ниже видно, что изменится: твоя фраза дословно встанет правилом в конец промпта, в раздел «Правки владельца».
  3. Нажми «Применить и спросить снова»: правило сохраняется, и бот отвечает на тот же вопрос заново, уже с ним.

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

Инструменты теста

В меню «Инструменты теста»:

  • Сценарии: готовые наборы сообщений для типовых проверок;
  • Загрузить переписку: подставить реальный диалог, чтобы проверить на нём;
  • Показать промпт: увидеть итоговый промпт, который уходит модели;
  • Экспорт диалога: выгрузить тестовую переписку.

Кнопка «Очистить» сбрасывает тестовый диалог.

Как тестировать правильно

  1. Внёс правку в промпт / функцию / базу знаний;
  2. Открой тест-чат, прогони реальные вопросы клиентов:
  3. типичный («сколько стоит?»),
  4. целевой («запишите меня на завтра»),
  5. каверзный («а если опоздаю?», «дорого»),
  6. не по теме («а вы где находитесь?»);
  7. Смотри панель справа: правильная ли стадия, вызвал ли нужную функцию, что собрал;
  8. Не так → правь → повторяй, пока не понравится.

💡 Совет. Если бот должен вызывать функцию (записать, посчитать), проверь в «Действиях бота», что вызов был, а не только слово «записал» в ответе.

Пометка «в WhatsApp сработает». Часть функций работает с карточкой конкретного клиента: проставить теги, поставить напоминания на паузу, остановить диалог, отправить макет из медиатеки, сделка в CRM, бронь в iiko. В тест-чате такого диалога нет (ты пишешь сам себе), поэтому записывать некуда, и вызов помечается серым «в WhatsApp сработает». Это не ошибка: сам вызов бот сделал правильно, а в подключённом канале функция отработает по-настоящему. Красная пометка «ошибка» означает настоящий сбой, её нужно разбирать.

При этом бот в тест-чате честно говорит, что здесь сделка или бронь не выполняются, и что получил бы клиент в рабочем чате. Если бот всё же написал «передал» или «записал», не вызвав функцию, платформа даёт ему круг на исправление, а в «Действиях бота» появляется строка «утверждение без действия»: это и есть повод проверить промпт.

Счёт и запись в календарь в тест-чате настоящие. Касса выставляет настоящий счёт (push в Kaspi или ссылка на оплату) на номер, который ты назвал, а запись в календарь ставится по-настоящему с пометкой «ТЕСТ»: так ты видишь путь клиента до конца. Сумма тестового счёта всегда 100 ₸ (у кассы в сомах 100 сом), какой бы ни была цена услуги: настоящую сумму бот называет в ответе, а под строкой счёта в тест-чате видна пометка «Тестовый счёт на 100 ₸ вместо …». Через 10 минут всё откатывается само: оплата возвращается, неоплаченный счёт отменяется, тестовая запись удаляется. Бот предупреждает об этом в ответе, сбор платформы за тестовую оплату не берётся. Комиссию Kaspi за прошедшую оплату банк при возврате может не вернуть, поэтому платить по тестовому счёту не обязательно: достаточно увидеть push.

«Не так ответил? Поправить словами». Под последним ответом бота есть ссылка. Напиши, что не так, как сказал бы сотруднику («цену называй сразу, чистка 15 000»), и нажми «Предложить правку». Модель сама находит, куда относится замечание: в промпт, в информация о компании или в запись базы знаний, и показывает, что именно изменится (убранные и добавленные строки). «Применить и спросить снова» сохраняет правку и переспрашивает бота; прежний текст уходит в историю версий, и рядом есть «Вернуть как было». Для тебя это бесплатно, у платформы есть дневной запас на проект; если он кончился, правку можно внести руками на вкладке «Промпт».

⚠️ Важно: тест-чат, песочница, а не показатель готовности к бою. Здесь бот отвечает, даже когда он выключен для клиентов и подписки нет. Поэтому:

  • если вверху «Бот выключен», в тест-чате бот отвечает, а реальные клиенты в WhatsApp ответа не получат;
  • если кончились подписка или бесплатные дни, в тесте бот отвечает, а в WhatsApp и Instagram клиентам молчит (Telegram подписки не требует).

Баланс нужен и тесту: на нуле тест-чат не ответит и предложит пополнить. То есть «в тесте работает» ≠ «в бою работает». Перед запуском проверь, что бот включён, есть подписка или бесплатные дни, подключён канал и есть баланс.

Частые ошибки

СимптомПричинаЧто делать
В тесте отвечает, клиентам нетБот выключен, кончились подписка или бесплатные дни, канал не подключёнВключи бота («Промпт» → «Расширенные настройки»), проверь подписку и статус канала
Бот «говорит», что записал, но записи нетВызвал не функцию, а просто текстПроверь «Действия бота»; поправь описание функции
Не вижу тест-чатРоль viewerНужна роль tester+ → Роли
Хочу включить бота прямо тутРубильник перенесёнУправление ботом: «Промпт» → «Расширенные настройки», «Статус бота»
Тест-чат не отвечает и предлагает пополнитьНа балансе проекта нольПополни баланс: тест оплачивается, как настоящие ответы
«Тест-чат на сегодня остановлен: дневной лимит проверок исчерпан»За сутки тест-чат проекта потратил на ИИ больше $5 (обычный день проверок до $3)Подожди до 00:00 по Алматы. Живым клиентам бот в это время отвечает как обычно. Нужно больше проверок за день: напиши в поддержку
Бот отвечает общими фразами и «уточню у администратора»Промпт пустой или короткийНажми «Составить за меня» в карточке или в настройках бота
В углу висит карточка и мешаетПромпт пустойЗакрой крестиком, вернётся при следующем заходе, пока промпт не заполнен

Под капотом

  • Тест-чат работает в sandbox-режиме: стоимость ответа списывается с баланса проекта, как в бою. Подписку и статус бота он не проверяет, а баланс проверяет: на нуле пайплайн бросает InsufficientBalanceError, и маршрут отвечает 402 с предложением пополнить.
  • Панель «Что понял бот» рендерит реальный структурированный ответ модели: стадия, lead_status, собранные переменные (с % заполнения), tool-calls (имя/аргументы/результат), RAG-источники с % похожести, токены и стоимость (USD + ₸), сырой JSON.
  • Рубильник ИИ из тест-чата убран осознанно (редизайн 2026-06-05): здесь индикатор + ссылка, управление, на settings?tab=bot (единый источник).
  • «Проверить дожим» дёргает превью следующего follow-up-сообщения.
  • У тест-чата дневной лимит по себестоимости ИИ: $5 на проект и $10 на всю платформу, сутки по Алматы. Он защищает общий счёт ИИ, на котором отвечают боты всех клиентов, от массовых прогонов. Ответы живым клиентам лимит не трогает, а тест-чат после него отвечает отказом до полуночи.

Простыми словами

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


Дальше: → Подключить WhatsApp
Связано: Системный промпт · Функции · База знаний
Не получилось? → Бот не отвечает

Документация › Проект и бот › Продвинутые настройки

Продвинутые настройки бота

Помимо промпта, поведение бота тонко настраивается, как он разбивает ответы, ждёт ли, пока клиент допишет, в какие часы работает, как реагирует на оператора, что делает со спамом. Эта статья: карта всех рычагов.

⏱ 11 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Бот «печатает по частям», ждёт, пока клиент допишет, может работать по расписанию, уступать оператору, защищаться от спама.
  • Всё это, настройки проекта (agent_config), у каждой есть разумное значение по умолчанию.
  • Трогай по необходимости: дефолты подобраны так, чтобы работало «из коробки».
📍 Где найти. Вкладка проекта «Промпт» → подвкладка «Расширенные настройки». Разделы раскрываются по клику: История переписки, Расписание работы, Распознавание медиа, Буферизация сообщений, Длина и разбивка ответов, Видимость данных клиента, Контроль оператора, Лимиты, Спам-защита. Над разделами, в самом верху подвкладки, стоят «Статус бота» и карточка «Кому отвечает бот», а выбор модели живёт на отдельной вкладке «LLM».
Расширенные настройки бота: часы работы, буферизация, антиспам, контроль оператора и лимиты
Расширенные настройки бота: часы работы, буферизация, антиспам, контроль оператора и лимиты

Ответы: разбивка и темп

НастройкаПо умолчаниюЧто делает
split_messagesвклразбивать длинный ответ на несколько коротких сообщений
split_delay_seconds4 секпауза между частями (эффект печатания)
split_threshold300 симв.с какой длины начинать разбивать
split_max_length500 симв.макс. длина одной части
split_max_parts3макс. число частей
quote_client_messageвклпервый пузырь ответа привязан к сообщению клиента, как «Ответить» в WhatsApp: у пачки цитируется последнее, у голосового или фото само голосовое или фото
highlight_key_factsвкл«Выделять главное»: бот пишет жирным цену, дату и время, адрес (одно-два выделения на ответ) и нумерует шаги. В WhatsApp и Telegram это жирный шрифт, в Instagram жирного нет, там главное идёт отдельной строкой
💡 Разбивка делает бота «живее»: клиент видит несколько коротких реплик вместо стены текста. Подробнее про механику: JSON-ответ бота.
📝 Каждая мысль с новой строки: у всех ботов, без кнопки. С 08.10.2026 платформа просит модель начинать новую мысль с новой строки, а перечисления (часы, адрес, цены нескольких услуг, шаги) писать по пункту на строку, чтобы ответ не читался сплошным абзацем. С 15.10.2026 это делает сама платформа перед отправкой: каждая фраза ответа встаёт с новой строки («Здравствуйте)» и с новой строки «Чем могу помочь?»), а списки, анкеты и реплики в кавычках остаются как написаны. Короткий ответ при этом по-прежнему приходит одним сообщением. Ссылки в ответе бота всегда уходят полным адресом с https://, чтобы клиент открыл их одним нажатием. С 15.10.2026 платформа также сама ставит пустую строку между блоками ответа (приветствие, ответ, список, вопрос), отделяет реплики сценки и приводит пункты списка к виду «- пункт»: это не зависит от модели. Кнопка «Выделять главное» добавляет к этому жирный на цену, время и адрес (платформа ставит его сама, если модель не поставила), короткий курсив для ремарок и нумерацию. С 15.10.2026 она включена по умолчанию у всех ботов. Если в вашей переписке жирный читается как реклама, выключите её: выбор за владельцем. В тест-чате выделение видно так же, как его увидит клиент в WhatsApp.

Буферизация: дождаться, пока клиент допишет

Клиенты часто пишут мысль несколькими сообщениями подряд («Здравствуйте» / «хочу записаться» / «на завтра»). Чтобы бот не отвечал на каждое по отдельности, есть буфер:

НастройкаПо умолчаниюЧто делает
buffer_delay_seconds1 сек (у нового проекта 7 сек)сколько ждать тишины, когда клиент пишет очередью; одиночное сообщение отвечается быстрее
buffer_delay_media_seconds5 сек (у нового проекта 7 сек)ожидание для медиа (фото/голос)

Бот ждёт паузы в наборе и отвечает на всё разом, как живой человек.

Одиночное сообщение бот берёт в работу через пару секунд, чтобы не тянуть с ответом. Если клиент дописал, пока бот сочинял ответ, этот ответ не уходит: бот отвечает на все сообщения сразу, одним ответом. Исключение одно: бот уже что-то сделал по первому сообщению (записал, создал заявку, выставил счёт), тогда клиент сначала получает подтверждение. За непосланный ответ деньги с баланса не списываются.


Кому отвечает бот

Одна настройка (engage_mode) с тремя взаимоисключающими вариантами. Живёт на вкладке «Промпт» → «Расширенные настройки»: карточка «Кому отвечает бот» стоит в самом верху, сразу под «Статусом бота», над свёрнутыми разделами.

ВариантКому бот отвечает
Только новым обращениямТем, кто написал впервые после подключения номера. Контакты, которые были в телефоне раньше, остаются за вами: их сообщения видны в «Диалогах», но бот в них не пишет
Всем, кто напишет (у нового проекта)Плюс клиентам, которые были в телефоне до подключения. Переключение сразу возвращает бота в диалоги, которые он раньше пропустил как «старый контакт» (кроме тех, где вы писали сами в последние полчаса), и дальше он отвечает в них, когда клиент пишет снова
Только лидам с рекламыТолько тем, кто пришёл с рекламы «Написать в WhatsApp» (Click-to-WhatsApp) или «Написать в Instagram Direct». Для номера, где параллельно работают живые менеджеры: обычные и личные чаты бот не трогает, показывает их вам без ответа

В каких каналах действует. В WhatsApp и Instagram (в Instagram с 8 октября 2026, до этого настройка там не работала, хотя кабинет обещал «все каналы»). В Instagram «прежний контакт» это человек, с которым у аккаунта была переписка в директе до подключения бота: при первом сообщении нового собеседника платформа спрашивает об этом Meta, и если Meta не ответила, бот отвечает (новый клиент дороже). Свежий клик по рекламе возвращает боту диалог, который он пропустил как «прежний контакт» или «не с рекламы», если вы не писали в этот чат сами в последние полчаса. В Telegram бот отвечает всем, кто написал боту: прежних контактов у Telegram-бота не бывает, а рекламы с переходом в бота нет.

Отдельный режим для Instagram. Если Instagram подключён, в той же карточке ниже есть строка «В Instagram»: «Как выше» (по умолчанию, Instagram следует общему режиму) или один из трёх режимов. Так WhatsApp можно держать в режиме «Только новым обращениям», чтобы бот не писал знакомым, а в Instagram отвечать всем, кто напишет в директ, включая тех, кто писал до подключения бота. Переключение Instagram на «Всем, кто напишет» возвращает бота только в диалоги Instagram, общий режим их не трогает, и наоборот. В режиме «Всем, кто напишет» диалог Instagram, который бот раньше пропустил как «прежний контакт», возвращается боту и на следующем сообщении клиента, если вы не писали в этот чат сами в последние полчаса.

С 14 сентября 2026 новый проект стартует в режиме «Всем, кто напишет»: человек, подключивший номер, ждёт, что бот ответит всем, и молчание в половине чатов читается как поломка. Проекты, созданные раньше, остаются в режиме «Только новым обращениям», пока владелец его не сменит. Если рабочий номер это ещё и личная переписка, переключи на «Только новым обращениям»: в мягком режиме бот ответит и знакомым, и подрядчикам. В строгом режиме в диалоге со старым контактом кабинет показывает, что включён строгий режим, и кнопку включить бота здесь.

Что важно знать про режим «Всем, кто напишет»:

  • переключение ничего не рассылает: оно только снимает паузу с пропущенных диалогов, а пишет бот лишь в ответ на следующее сообщение клиента;
  • бот не отличает давнего клиента от личного контакта. Если номер рабочий и личный одновременно, он ответит и знакомым;
  • чаты, где вы отвечаете сами, бот по-прежнему уступает вам (пауза при ответе оператора), а диалоги, из которых бота убрали руками или которые закрыты передачей менеджеру, режим не будит;
  • расход баланса вырастет: старая база это дополнительные диалоги.

На сообщения, отправленные до подключения номера, бот не отвечает ни в одном режиме. Иначе после каждого сканирования QR он разослал бы ответы на старую переписку, а WhatsApp блокирует номера именно за такой всплеск.

Настройки рекламного фильтра

НастройкаПо умолчаниюЧто делает
engage_modeall (только новым обращениям); у нового проекта existing_tooexisting_too = всем, кто напишет; ad_gated = только рекламные лиды
engage_ad_idsпустопусто = ЛЮБАЯ реклама; список = ТОЛЬКО перечисленные объявления
instagram_engage_modeпусто (как engage_mode)свой режим для Instagram, те же три значения

В список можно вставлять (по одному в строке):

  • ID объявления из Ads Manager (числа вида 1202…), самый надёжный способ: передаётся со 100% рекламных лидов и виден ещё до запуска рекламы;
  • ссылку на рекламный пост (https://www.instagram.com/p/…/), тоже работает заранее, но у части лидов ссылка не передаётся (короткие fb.me-переходы).

Как настроить фильтр ДО запуска рекламы (передайте таргетологу):

  1. Создайте кампанию и объявления как обычно, запускать не обязательно, достаточно, чтобы объявления были созданы.
  2. В Ads Manager откройте вкладку «Объявления» → «Столбцы: настроить столбцы» → включите столбец «ID объявления» (Ad ID).
  3. Скопируйте ID нужных объявлений и вставьте их в поле настроек, по одному в строке.
  4. ⚠️ При дублировании объявления или перезапуске креатива у копии появляется новый ID: добавьте и его. Один и тот же креатив, запущенный дважды: это два разных объявления с разными ID и разными ссылками на пост.

ID уже пришедшего лида виден в его диалоге: карточка справа → блок «Источник, реклама». Лид, отсечённый фильтром, не пропадает, он сохраняется в CRM с пометкой для оператора, просто бот на него не отвечает.


Перехват оператором и остановки

НастройкаПо умолчаниюЧто делает
pause_on_operatorвклставить ИИ на паузу, когда оператор пишет в чат
ignore_first_operator_messageвыклне паузить на первом сообщении оператора
pause_ai_after_answered_callвклсостоявшийся звонок выключает бота в этом чате: входящий сразу, ваш исходящий когда WhatsApp пришлёт запись о нём (обычно через несколько минут, см. ниже)
exception_phrases-фразы-исключения, после которых пауза не ставится
auto_resume_enabled + auto_resume_*выклодно правило: через заданный срок бот снова отвечает клиенту, как только тот напишет. Первым бот не пишет никогда. Срок считается от вашего последнего сообщения в чате, а если бот замолчал сам (упёрся в потолок ответов, сработала защита, диалог очищен), от момента паузы

Позвонили клиенту сами: как выключить бота

Если клиент позвонил вам и вы взяли трубку, бот в этом чате замолкает сразу.

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

Выключить бота сразу после разговора можно за секунду: напишите что-нибудь в этот же чат («созвонились», «всё обсудили», что угодно). Бот увидит, что в диалог пришёл живой человек, и замолчит по обычному правилу перехвата. Это то же самое, что происходит, когда вы отвечаете клиенту руками.

Второй способ, если писать не хочется: откройте диалог в кабинете и нажмите переключатель «Отвечает бот» в шапке переписки, он сменится на «Бот молчит».

Три функции про остановки («Остановить диалог», «Отложить дожимы», «Отключить дожимы») стоят у каждого проекта с рождения и живут в разделе «Функции»: там же их можно выключить, поправить описание «когда вызывать» или удалить.

Подробно про перехват, Диалоги; про три функции, Функции, разделы 7.8-7.10.


Расписание работы (рабочие часы)

НастройкаПо умолчаниюЧто делает
schedule_enabledвыклвключить рабочие часы
scheduleПн-Пт 09:00-20:00, Сб 09:00-18:00, Вс выклграфик по дням
timezoneпояс браузера при создании (иначе Asia/Almaty)часовой пояс проекта: задаётся на вкладке Общие настройки → Основное, по нему живут расписание, дожимы и весь кабинет (время сообщений, фильтры, графики)
offline_messageдежурный текставтоответ вне рабочих часов

Вне рабочих часов бот не тратит токены: сохраняет сообщение клиента (оператор увидит его в CRM) и один раз на диалог шлёт автоответ «сейчас нерабочее время».


Память диалога

НастройкаПо умолчаниюЧто делает
history_message_limit30сколько последних сообщений бот «помнит». В диалоге, где писал оператор, бот видит до 200 сообщений: после включения он понимает разговор, который вёл человек
history_time_limit2 недели (у нового проекта без ограничения)за какой период берётся история

Защита от спама

НастройкаПо умолчаниюЧто делает
spam_protection_enabledвыкл (у нового проекта вкл)включить лимиты
spam_message_limit / spam_duration_seconds5 / 60 сек (у нового проекта 30 / 60 сек)сколько сообщений за окно допустимо
spam_daily_limit100 (у нового проекта 300)макс. сообщений в день от одного
spam_response_message«Пожалуйста, подождите…»ответ при срабатывании
spam_repeat_threshold3 (у нового проекта 5)сколько одинаковых сообщений подряд считать спамом
spam_auto_blockвкл (у нового проекта выкл)при срабатывании выключить бота на диалоге и пометить лида проигранным
⚠️ Автоблок срабатывает и на живом человеке: при пороге 3 три «ок» подряд за разговор уже считаются спамом, и бот на этом диалоге выключается, пока его не включат вручную. Поэтому новому проекту защита включена с порогами под флуд и без автоблока: сработав, бот пропускает ответ, а не теряет клиента.

Распознавание медиа

НастройкаПо умолчаниюЧто делает
recognize_audioвклрасшифровывать голосовые
recognize_imagesвкл«видеть» картинки
recognize_pdfвклчитать PDF
recognize_documentsвклчитать документы (DOCX и т.п.)
read_linksвклоткрывать ссылки из сообщения клиента (сайт, Instagram, объявление) и читать заголовок и текст страницы: до двух ссылок на сообщение, закрытые адреса не открываются
⚠️ Распознавание голоса и картинок тратит баланс (это отдельная обработка). Если не нужно, выключи. См. Сколько стоит сообщение.

Запись на приём (календарь)

Настройки записи живут не здесь, а внутри самой функции записи: открой Функции → функцию записи → её конфиг. Там задаются длительность приёма (по умолчанию 60 мин), горизонт показа свободных окошек (7 дней), рабочие часы и дни записи, перерыв между приёмами и минимальное предупреждение (60 мин).

⚠️ Раньше эти же параметры дублировались настройками проекта calendar_*. Их убрали 2026-06-13, потому что редактор писал в одно место, а бот читал другое, и половина настроек молча не работала. Сейчас источник один, конфиг функции. Если встретишь calendar_* в старых заметках, это уже мёртвые ключи.

Подробно: Запись на приём и Google Календарь.


Простыми словами

Думай об этих настройках как о «характере» бота помимо промпта. Можно сделать так, чтобы он отвечал короткими репликами, как в живом чате, а не стеной текста. Можно научить его не торопиться с ответом, пока клиент дописывает мысль в несколько сообщений. Можно задать рабочие часы, и ночью он будет вежливо отвечать «мы на связи с утра», не тратя при этом деньги. Можно настроить, чтобы он уступал, как только в чат заходишь ты, и сам возвращался к работе через заданное время.

Хорошая новость: всё это уже настроено по уму «из коробки». Лезть туда стоит, только когда хочешь что-то конкретное, например, включить рабочие часы или защиту от спама. Остальное спокойно оставляй как есть.


Дальше: → Обзор каналов
Связано: Системный промпт · Выбор модели · Дожимы · Диалоги
Не получилось? → Бот не отвечает

Документация › Проект и бот › Загрузить знания о бизнесе

Загрузить знания о бизнесе в бота (что куда)

После этой статьи ты разложишь всю свою документацию, прайсы, регламенты, FAQ, скрипты по трём «карманам» бота так, чтобы он отвечал точно и не выдумывал.

⏱ 9 мин · 👤 для владельца и оператора · 🟢 live

За 30 секунд:
  • У бота три места для знаний, и у каждого своя работа: промпт (как себя вести + всегда-нужное продающее), «Информация о компании» (факты о тебе), База знаний (большие и меняющиеся справочники).
  • Главная ошибка новичка: свалить всё в одно место. От этого бот тупеет: либо «деревянный», либо выдумывает, либо не находит нужное.
  • Правило в одну строку: поведение → промпт, факты о компании → информация о компании, толстые справочники → база знаний.
  • Ничего не нужно «вызывать», бот сам подмешивает всё это в каждый ответ (база знаний по релевантности, остальное: всегда).

Зачем это нужно

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

Три «кармана» бота, и что в каждый класть

КарманЧто тудаКогда применяетсяОбъём
🧠 **Системный промпт**Поведение (тон, характер, правила) + всегда-нужное продающее: как презентовать, как отрабатывать возражения, фирменные фишки, спец-кейсыВ каждом ответе, целикомКомпактно
🏢 «Информация о компании» (поле в настройках)Факты о тебе: кто вы, перечень услуг, адреса, часы работы, условия, контакты, гарантииВ каждом ответе, целикомДо 40 000 символов
📚 **База знаний** (RAG)Большое, меняющееся, нужное изредка: полный прайс на 100 позиций, детальные регламенты, обширный FAQ, длинные документы и PDFБот достаёт только релевантный кусок под конкретный вопросДо 100 записей; текст руками до 1 000 000 символов, из файла или страницы по ссылке до 500 000

💡 Простое правило выбора. Спроси себя про каждый кусок информации:

  1. Это про то, как бот себя ведёт и продаёт? → промпт.
  2. Это факт о компании, нужный почти в любом разговоре (услуги, адрес, часы)? → «Информация о компании».
  3. Это большой справочник, из которого в одном ответе нужна одна строка (полный прайс, регламент)? → база знаний.

Шаги

1. Раздели свою документацию на три стопки

Собери всё, что есть про бизнес: сайт, прайс в Excel, скрипты продаж, регламенты, FAQ, презентации, и мысленно разложи по трём карманам выше. Это самый важный шаг: 10 минут сортировки экономят недели «бот тупит».

📌 Пример (барбершоп).

  • Промпт: «Ты это администратор барбершопа BRUTAL. Дружелюбный, на «ты», всегда предлагаешь записаться. Если клиент сомневается, расскажи про бесплатную коррекцию через 2 недели.»
  • Информация о компании: «Барбершоп BRUTAL, Астана, пр. Достык 5. Часы: 10:00-21:00 без выходных. Услуги: мужская стрижка, борода, камуфляж седины. Мастера: Арман, Данияр.»
  • База знаний: полный прайс на 40 позиций + детальный FAQ по уходу.

2. Поведение и продающие приёмы → в промпт

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

🚫 Не делай так. Не прячь характер и презентацию в базу знаний: оттуда бот достаёт текст только если вопрос «похож», и в половине диалогов промахнётся → бот выйдет деревянным.

3. Факты о компании → в «Информацию о компании»

В настройках проекта есть отдельное поле «Информация о компании» (не путай с промптом). Сюда, сухие факты: услуги, адреса, часы, условия, контакты. Платформа сама вставит это в каждый ответ отдельным блоком «О КОМПАНИИ», тебе не надо дублировать их в промпт.

⚠️ Важно. Не оставляй это поле пустым «потому что напишу в промпте». Поле сделано именно под факты и вмещает до 40 000 символов: это правильный дом для них. Пустое поле → бот чаще выдумывает детали.

4. Толстые и меняющиеся справочники → в базу знаний

Полный прайс, длинные регламенты, большой FAQ, документы и PDF: в Базу знаний. Бот на каждый вопрос сам находит там самые подходящие куски и подмешивает в ответ (это RAG, автоматически). Туда же, то, что часто меняется: обновил одну запись, и бот сразу отвечает по-новому, промпт трогать не надо.

📌 Пример (интернет-магазин). Каталог на 300 товаров в базу знаний. Клиент спрашивает про одну модель, бот достаёт именно её строку, а не зачитывает весь каталог.

Проверь, что работает

  1. Прогони реальные вопросы клиентов в Тест-чате. В «технических деталях» ответа видно, какие источники бот подтянул, так проверишь, что факт дошёл.
  2. Для базы знаний есть «Тест поиска»: вводишь вопрос → видишь, какие фрагменты бот найдёт и с каким % похожести.
  3. Признак, что разложил верно: бот отвечает фактами точно (цены, адрес), звучит в своём характере и не «зачитывает простыню».

Частые ошибки

СимптомПричинаЧто делать
Бот «деревянный», не продаётХарактер/презентацию убрали в базу знаний, RAG их не всегда достаётПеренеси персону и всегда-нужный продающий текст в промпт
Бот выдумывает услуги/ценыФакты нигде не заданы или поле «Информация о компании» пустоеЗаполни «Информацию о компании»; крупный прайс: в базу знаний
Ответы дорогие и медленныеОгромный прайс вставили целиком в промптПеренеси объём в базу знаний: бот будет брать только нужный кусок
Факт есть, но бот его игнорируетВ промпте нет указания опираться на знанияДопиши в промпт: «цены и факты бери из базы знаний и информации о компании, не выдумывай»

Вопросы, которые обычно возникают

Можно всё засунуть в промпт и не морочиться?
Маленький бизнес с парой услуг: да, проживёт. Но большой прайс в промпте = дорогой и «путающийся» бот: он тащит весь текст в каждый ответ. Факты в «Информацию о компании», объём: в базу знаний.

В чём разница между «Информацией о компании» и базой знаний?
«Информация о компании» идёт в ответ целиком и всегда (для коротких всегда-нужных фактов). База знаний, большая, и бот берёт из неё только релевантный кусок под вопрос. Прайс на 3 услуги в «Информацию о компании»; прайс на 100 в базу.

Я обновил прайс, где менять?
Там, куда положил. Если в базе знаний, отредактируй запись (бот сразу учтёт). Если в «Информации о компании», поправь поле. Поэтому меняющееся удобнее держать в базе знаний.


Под капотом

  • Финальный системный промпт собирается из блоков: твой системный промпт + блок «## О КОМПАНИИ» (из поля «Информация о компании», projects.description, лимит ввода 40 000 символов) + подмешанные на лету чанки базы знаний (суммарно до 8 000 символов, гибридный поиск под текущее сообщение: по смыслу, по точным словам и с поправкой на опечатки).
  • Промпт и «Информация о компании» идут в каждый запрос целиком, поэтому их размер прямо влияет на стоимость ответа. База знаний платится отдельно (≈1¢ за поиск) и тащит только релевантное.
  • «Информация о компании» ограничена 40 000 символов на ввод; если фактуры больше, выноси объём в базу знаний (до 100 записей; вставленный текст до 1 000 000 символов, извлечённый из файла до 500 000).
  • Персона/продающие приёмы держим inline в промпте, а не в RAG: RAG возвращает контент только при семантическом совпадении с сообщением, а характер нужен в каждом ответе.

Простыми словами

Представь, что нанял нового продавца. Есть три способа его обучить. Первое, объяснить, как себя вести: будь вежлив, всегда предлагай записаться, на «дорого» отвечай так-то. Это «системный промпт». Второе, дать визитку компании: кто мы, где, во сколько работаем, что продаём. Это «Информация о компании». Третье, положить на стол толстую папку с прайсом и регламентами, в которую он заглядывает, когда нужен конкретный пункт. Это «база знаний». Если всё свалить в папку, продавец будет рыться в ней даже на «привет» и звучать как робот. Если папку не дать, начнёт выдумывать цены. Разложишь правильно, и бот с первого дня отвечает как менеджер, который выучил твой бизнес.


Дальше: → База знаний (RAG)
Связано: Системный промпт · Как бот думает · Тестовый чат
Не получилось? → Бот не отвечает

Документация › Каналы › Обзор каналов

Каналы, где бот отвечает клиентам

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

⏱ 4 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Каналы: WhatsApp (ваш номер по QR), Telegram (свой бот от @BotFather), Instagram (директ через вход Meta). Подключаются на вкладке проекта «Каналы». Все три открыты всем аккаунтам.
  • Подключить можно любой один или все сразу. Настраивать бота под каждый канал отдельно не нужно.
  • WhatsApp и Instagram входят в подписку проекта (первые 14 дней бесплатно), Telegram работает без подписки. Ответы бота везде оплачиваются с баланса.
  • Тест-чат это не канал, а репетиция в кабинете: бот отвечает как в бою, но только вам.

Чем каналы отличаются

WhatsAppTelegramInstagram
Как подключаетсяQR-код или код привязки, как WhatsApp Webтокен бота от @BotFatherвход через Instagram, профессиональный аккаунт
Подписканужна (14 дней бесплатно)не нужнанужна (бесплатный период проекта действует)
Риск блокировкиесть: нужен живой номер, антибаннет, официальный ботнизкий, официальный доступ Meta; одинаковые ответы под многими комментариями Instagram может счесть спамом
Когда бот может ответитьвсегдавсегда24 часа после сообщения клиента, и боту, и оператору
Писать первымпо своей базе номеров, с риском блокировки: исходящиетем, кто уже писал боту: рассылкинельзя
Кому отвечает ботвсем новым, или и старым контактам, или только лидам с рекламывсемсвой режим, независимо от WhatsApp: например, только лидам с рекламы «Написать в Direct»
Жирный и списки в ответеда, пока включено «Выделять главное» (по умолчанию включено)данет, Instagram разметку не рисует
Файлы от клиентаголосовые, фото, документы распознаютсядада, но после 24 часов файлы не отправить
СтатьяПодключить WhatsAppПодключить TelegramПодключить Instagram

Подключение WhatsApp с компьютера идёт по QR-коду, а с телефона кодом привязки из восьми знаков: QR на экране того же телефона отсканировать нечем. Режим «Кому отвечает бот» настраивается в расширенных настройках, у Instagram он свой с 9 октября 2026.

С чего начать. Клиенты уже пишут вам в WhatsApp: начните с него, но прочитайте антибан. Хотите проверить бота в бою за пять минут без риска: начните с Telegram. Основной поток идёт из рекламы в Instagram: подключайте Instagram.


Как каналы видны в кабинете

  • У каждого диалога метка канала, а над списком диалогов фильтр по каналу.
  • Лиды и аналитика собираются вместе по всем каналам, в разрезе видно, откуда пришёл клиент.
  • Состояние каждого канала (работает, ждёт подключения, доступ отозван) видно в обзоре проекта и на карточке канала.

Один номер WhatsApp, один бот Telegram и один аккаунт Instagram подключаются только к одному проекту. Два бизнеса значит два проекта.


Простыми словами

Канал это мессенджер, где сидят ваши клиенты. Бот один, дверей к нему может быть три. Настраиваете бота один раз, и он одинаково отвечает в WhatsApp, Telegram и Instagram. Отличия только в правилах каждого мессенджера: WhatsApp требует живого номера, Instagram разрешает боту отвечать сутки после сообщения клиента, Telegram ничего такого не требует.


Дальше: → Подключить WhatsApp
Связано: Telegram · Instagram · Антибан · Как бот думает · Баланс и подписка
Не получилось? → Бот не отвечает · Канал отвалился

Документация › Каналы › Подключить WhatsApp

Подключить WhatsApp (по QR)

После этой статьи твой бот будет сам отвечать клиентам в WhatsApp: 14 дней бесплатно, без ограничения по числу диалогов, без карты и предоплаты.

⏱ 12 мин · 👤 для владельца и оператора · 🟢 live

Раздел «Каналы»: подключение WhatsApp по QR-коду (3 шага) и Telegram по токену от @BotFather
Раздел «Каналы»: подключение WhatsApp по QR-коду (3 шага) и Telegram по токену от @BotFather
За 30 секунд:
  • WhatsApp подключается сканированием QR-кода, как обычный «WhatsApp на компьютере». Платформа держит привязанное устройство сама (самохостинг), отдельный сторонний сервис не нужен.
  • Нужен «живой» рабочий номер (на котором уже переписывались), иначе WhatsApp забанит за спам.
  • Никаких анкет перед сканом: нажал «Подключить свой номер», получил QR. Не читается камера, есть код по номеру телефона; номер у другого человека, есть ссылка, по которой он подключит его сам.
  • Бесплатно: 14 дней, сколько угодно диалогов. Единственный ограничитель это баланс проекта: при регистрации мы кладём на него $5, и бот отвечает, пока эти деньги не кончатся. Дальше нужна подписка проекта.
  • Телефоном можно продолжать пользоваться, бот работает как привязанное устройство, не вместо тебя.

Зачем это нужно

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

Каждая входящая переписка превращается в диалог, а заинтересованный клиент: в лида в твоей CRM. Ты в любой момент можешь перехватить разговор вручную (см. Диалоги).

Почему по QR, а не напрямую через API

У WhatsApp нет «кнопки подключить бота» для обычного аккаунта. Платформа привязывается к твоему WhatsApp как ещё одно устройство, точно так же, как WhatsApp Web на компьютере, и держит это привязанное устройство у себя (самохостинг). Тебе ничего настраивать не нужно: ты только сканируешь QR. Главное помнить, подключается обычный личный/рабочий WhatsApp по QR, а не official Business API.

Честно о том, что из этого следует: такой способ подключения Meta не гарантирует. Лимиты и паузы платформы снижают риск блокировки номера, но полностью исключить его не может никто, а Meta вправе ограничить сам способ подключения. Если Meta закроет его для всех, остальные функции продолжат работать, а неиспользованные дни подписки вернутся пропорционально: условия в Политике возврата, раздел 07.

⚠️ Важно с самого начала. WhatsApp очень не любит, когда «свежий» номер вдруг начинает отвечать как привязанное устройство. Подключишь «холодный» номер, Meta забанит его за минуты. Поэтому перед сканом честно ответь себе на пять вопросов из блока «Какой номер выбрать» ниже: по опыту, бóльшая часть банов именно из-за неправильного номера.

Что понадобится

  • ☐ Создан проект → Создание проекта
  • ☐ Написан промпт бота, хотя бы черновой (иначе боту нечем отвечать) → Системный промпт
  • ☐ Телефон с WhatsApp на номере, который уже использовался для обычной переписки (не только что куплен/зарегистрирован)
  • ☐ Этот телефон под рукой: на нём надо открыть камеру для скана QR
  • ☐ Роль в проекте admin или owner. Роль editor видит страницу, но кнопку подключения нажать не сможет → Роли и права. Если номер у другого человека (например, у владельца бизнеса, а настраиваешь ты), в проект его звать не нужно: есть ссылка для самостоятельного подключения, см. шаг 3.

Какой номер выбрать

✅ Подойдёт🚫 Не подойдёт
Рабочий номер компании, с которого месяцами переписывалисьКупленная сегодня «симка под бота»
Личный номер с реальной историей чатовНомер из эмулятора / виртуальный
Обычный WhatsApp или WhatsApp Business: оба окНомер, уже подключённый к другому сервису рассылки

💡 Совет. Один номер = один проект. Если у тебя два бизнеса (две стоматологии): это два проекта и два разных номера. Подключить два WhatsApp-номера в один проект нельзя.

Шаги

1. Открой раздел «Каналы»

Вкладка проекта «Каналы» → карточка WhatsApp (QRDOS). В ней текущее состояние и кнопка «Подключить свой номер».

2. Проверь номер (пять честных вопросов)

Анкеты перед сканом нет, платформа верит тебе на слово. Но именно от номера зависит, доживёт ли он до первой заявки: пройди пять вопросов перед подключением. Хотя бы одно «нет», и лучше взять другой номер.

3. Нажми «Подключить свой номер» и отсканируй QR

После нажатия статус меняется на «Поднимаем подключение...», через несколько секунд появляется QR-код и подсказка «Откройте WhatsApp → Связанные устройства → Привязать устройство и отсканируйте QR».

На телефоне с нужным номером:

  1. Открой WhatsApp;
  2. Связанные устройства (Linked Devices);
  3. на iPhone: вкладка «Настройки» → «Связанные устройства»;
  4. на Android: «⋮» (три точки) → «Связанные устройства»;
  5. «Привязать устройство» → наведи камеру на QR-код на экране компьютера.

💡 QR живёт около минуты. Не успел, нажми «Обновить QR» и сканируй новый. Под QR есть раскрывающаяся подсказка «QR не сканируется?» с четырьмя шагами и кнопкой написать в поддержку.

Подключаешь с телефона? QR на экране того же телефона отсканировать нечем, поэтому с телефона окно WhatsApp сразу начинается с привязки по коду: вводишь номер WhatsApp с кодом страны и жмёшь «Получить код». Код готовится обычно 10-30 секунд, страницу в это время не закрывай. Дальше WhatsApp сам пришлёт на этот номер уведомление «Введите код»: нажми его и введи код. Уведомления нет, тогда кнопка «Открыть WhatsApp» (код она заодно копирует) и путь «Связанные устройства» → «Привязать устройство» → «Привязать по номеру телефона», на экране он подписан под твой телефон, iPhone или Android. Под кодом идёт отсчёт: WhatsApp принимает код около двух с половиной минут. Истёк, окно само скажет «Код устарел» и даст «Получить новый код». Если WhatsApp стоит на другом телефоне, внизу есть «WhatsApp на другом телефоне? Показать QR-код», а ссылка для другого человека лежит ниже под спойлером.

Камера не читает QR? Под кодом есть переключатель «Не сканируется QR? Привязать по номеру телефона»: вводишь номер с кодом страны (например 77071234567), жмёшь «Получить код», а в WhatsApp идёшь в «Связанные устройства» → «Привязать устройство» → «Привязать по номеру телефона» и вводишь этот код.

Номер у другого человека? В блоке есть «Ссылка для самостоятельного подключения»: скопируй её и отправь владельцу номера. Он откроет ссылку, увидит статус и сам привяжет номер: с телефона страница сразу предложит код, с компьютера покажет QR. Приглашать его в проект не нужно. Ссылка действует 14 дней, потом на этой же странице появится новая; кнопка «Обновить ссылку» гасит старую сразу.

4. Дождись статуса «Подключён»

Как только телефон привяжется, статус сам сменится на «Подключён», и рядом появится номер телефона. Перезагружать страницу не нужно, она обновляется в реальном времени. Первые сутки под номером стоит блок «Проверьте бота»: кнопка «Поделиться номером» отправляет знакомому ссылку на твой WhatsApp, чтобы он написал боту. Со своего же номера проверить нельзя: свои сообщения бот считает ответами оператора и молчит.

Сразу после привязки над блоком висит плашка «Прогрев номера» с обратным отсчётом: «Бот начнёт отвечать новым клиентам через 14:59. Сразу после подключения номер прогревается: это защита от блокировки WhatsApp. Все сообщения при этом сохраняются, вы видите их в Диалогах». Это 15 минут тишины, а не поломка: см. Антибан.

Там же, в блоке, два полезных тумблера и подсказки:

  • «Отмечать входящие прочитанными»: у нового подключения выключено, поэтому входящие остаются непрочитанными и телефон присылает уведомления, как раньше. Включи, если хочешь, чтобы собеседник видел синие галочки: тогда бот «прочитывает» сообщение, когда начинает отвечать, а телефон считает его уже прочитанным и уведомление не показывает;
  • раскрывающийся блок «Что будет с вашим номером»: шесть коротких ответов про привязанное устройство, старые чаты, защиту от блокировки, прогрев и телефон в сети;
  • совет про WhatsApp Business: если включены авто-ответы (приветствие, «сообщение об отсутствии»), выключи их, иначе платформа примет их за ответ оператора и поставит бота на паузу.

📌 Пример (стоматология). Подключают рабочий +7 705…. Через ~10 секунд после скана статус «Подключён (+7 705…)». Через 15 минут прогрева клиент пишет «сколько стоит чистка?», бот отвечает сам, заявка падает в Лиды.

📌 Пример (барбершоп). Мастер боится, что после подключения «телефон отвалится». Ничего подобного: он дальше переписывается в WhatsApp как обычно, а бот просто параллельно отвечает новым клиентам. Если мастер сам вступит в диалог, бот на этом чате встанет на паузу.

Проверь, что работает

  1. Статус в блоке WhatsApp = «Подключён» + виден номер.
  2. Напиши боту с другого телефона в этот WhatsApp: должен прийти ответ от бота (несколько секунд).
  3. Открой Диалоги: там появится твоя тестовая переписка.

Если бот молчит, иди в Бот не отвечает.

Сколько это стоит

14 дней бесплатно (30 по промокоду), число диалогов не ограничено, карта не нужна. Бот отвечает, пока на балансе проекта есть деньги: при регистрации мы кладём $5 ($10 по промокоду). После пробного периода WhatsApp работает только с активной подпиской, и первые две недели после подключения она дешевле. Цены, скидка и оплата: Баланс и подписка.

💡 Бот замолчал раньше срока? Значит кончился баланс, а не «пробные диалоги»: лимита на количество переписок нет. Пополни баланс, и ответы пойдут сразу же.

Что доезжает из WhatsApp в кабинет

Подключение не сводится к «текст туда, текст обратно»: в Диалогах переписка выглядит так же, как в самом WhatsApp.

Что происходит в WhatsAppЧто видно в кабинете
Клиент печатает или пишет голосовоеиндикатор «печатает…» в диалоге
Твой ответ дошёл / прочитангалочки «доставлено» и «прочитано» на сообщении бота
Клиент поставил эмодзи-реакциюэмодзи рядом с сообщением. Бот реакции не читает: 👍 это часто вежливый кивок, а не ответ, и подавать его модели как реплику дороже, чем полезнее
Клиент удалил сообщение «у всех»на месте текста остаётся пометка «сообщение удалено»
Клиент исправил уже отправленное сообщениетекст обновляется, и бот отвечает на исправленный вариант, а не на первый
Клиент ответил на конкретное сообщение (цитата)цитата видна и оператору, и боту, в том числе в группах
Клиент переслал чужое сообщениепометка «Переслано», чтобы не принять его за слова самого клиента
Клиент прислал фото, документ, голосовоефайл в диалоге, голосовое расшифровано в текст (если распознавание включено)

💡 Если файл почему-то не скачался, на его месте будет прямая подпись, почему именно: молчаливого пустого места не остаётся.

Частые ошибки

СимптомПричинаЧто делать
QR не сканируется / успел протухнутьQR живёт около минутыНажми «Обновить QR»; не читает камера, привяжи по коду через номер телефона
«QRDOS временно недоступен, попробуйте через минуту»Шлюз подключения перезапускаетсяПодожди минуту и нажми ещё раз; повторяется, напиши в поддержку
Бот молчит первые минуты после подключенияИдёт прогрев номера (плашка «Прогрев номера» с отсчётом)Подожди 15 минут, сообщения клиентов не теряются
«Пробный период WhatsApp завершён. Для повторного подключения требуется оплата подписки.»Триал кончился, подписки нетОплати подписку → Биллинг, потом переподключи
Бот подключился и вдруг замолчалКончился баланс проекта (лимита на число диалогов нет)Пополни баланс → Биллинг
Бот подключился, но не отвечает вообщеПустой промпт или нет баланса токеновПроверь промпт и баланс
Бот ответил один раз и замолчал в чатеУ номера включён авто-ответ WhatsApp Business (приветствие / «нет на месте»): он уходит от твоего имени и ставит бота на паузуОтключи авто-ответы в WhatsApp Business → Настройки → Инструменты для бизнеса
Кнопки «Подключить» нет, всё сероеУ тебя роль editor/viewerПопроси admin/owner подключить → Роли
Статус «Сессия разлогинена, привяжите заново»Телефон долго был офлайн или ты сам отвязал устройство в WhatsAppНажми «Подключить свой номер» и отсканируй новый QR
Статус «Номер заблокирован WhatsApp, отправки остановлены»Meta забанила номерСм. Канал отвалился / бан
WhatsApp забанил номерПодключили «холодный» номерСм. Канал отвалился / бан

Если WhatsApp отвалился

WhatsApp может разорвать связь (телефон надолго офлайн, устройство разлогинило). Короткие обрывы платформа переживает сама: статус на минуту становится «Переподключаемся...» и возвращается в «Подключён». Если устройство отвязано совсем, статус станет «Сессия разлогинена, привяжите заново», а в обзоре проекта и в диалогах появится ссылка «Переподключить»: это тот же путь через QR. Штатная операция.

⚠️ Не отвязывай устройство руками на телефоне ради «подключить заново по-новому». Отключай через кнопку «Отключить» на платформе: она делает полный выход на шлюзе и стирает память о чатах. Иначе WhatsApp увидит «то же устройство с теми же контактами» и расценит это как уклонение от бана. Подробнее: Гигиена и антибан.

Вопросы, которые обычно возникают

Смогу ли я дальше пользоваться WhatsApp на телефоне?
Да. Бот работает как привязанное устройство (как WhatsApp Web). Твой телефон остаётся главным, ты переписываешься как обычно. Бот отвечает параллельно на новые входящие.

Что будет с моими старыми чатами и контактами?
На твоём телефоне: ничего, всё остаётся. Подключение только «читает» новые входящие и отвечает на них.

А если я сам отвечу клиенту, бот не перебьёт?
Когда оператор вступает в диалог, бота на этом чате можно поставить на паузу, он не будет встревать. Подробно, Диалоги.

Подойдёт WhatsApp Business?
Да. И обычный WhatsApp, и WhatsApp Business подключаются одинаково по QR. Главное: «живой» номер.

⚠️ Если у тебя WhatsApp Business, отключи встроенные авто-ответы (приветственное сообщение и «сообщение об отсутствии»). Найти: в приложении WhatsApp Business → Настройки → Инструменты для бизнеса → Приветственное сообщение / Сообщение в нерабочее время → выключить. Зачем: эти авто-ответы уходят от твоего имени, и платформа считает их за «оператор сам вступил в диалог» → ставит бота на паузу в этом чате (он ответит один раз и замолчит). Бот и так сам здоровается с клиентами, поэтому родной авто-ответ WhatsApp Business только мешает, два приветствия конфликтуют.

Захожу в WhatsApp: все сообщения уже помечены прочитанными, и телефон не присылает уведомления. Почему?
Бот: привязанное устройство, а WhatsApp синхронизирует «прочитано» между всеми твоими устройствами. Если в блоке WhatsApp раздела «Каналы» включён тумблер «Отмечать входящие прочитанными», бот «прочитывает» входящее, когда начинает отвечать (собеседник видит синие галочки), и телефон считает сообщение уже прочитанным и не показывает уведомление. Выключи тумблер: входящие останутся непрочитанными (уведомления и значок «новое» вернутся), а собеседники будут видеть только серые галочки «доставлено». С 22.09.2026 у новых подключений тумблер выключен сразу, у подключённых раньше он мог остаться включённым. Настройка действует на этот проект и применяется сразу, переподключать номер не нужно.

Можно один номер на два проекта?
Нет. Один номер = один канал = один проект. Для второго бизнеса: отдельный проект и отдельный номер.

Нужно ли держать телефон постоянно онлайн?
Желательно. Как и у WhatsApp Web, привязанное устройство какое-то время работает и без телефона, но если телефон надолго пропадёт из сети, WhatsApp может разлогинить устройство, и придётся «Переподключить».

Справка: состояния подключения WhatsApp

Что видишьЗначитЧто делать
Не подключёнКанал ещё не созданНажми «Подключить свой номер»
Поднимаем подключение...Платформа создаёт подключениеПодожди несколько секунд
QR на экранеЖдём скан (код живёт ~1 минуту)Сканируй с телефона или нажми «Обновить QR»
Подключён (номер) + плашка «Прогрев номера»Всё работает, первые 15 минут бот молчитПодожди отсчёт ✅
Подключён (номер)Бот в эфиреГотово ✅
Переподключаемся...Короткий обрыв связи, платформа восстанавливает самаПодожди минуту
Сессия разлогинена, привяжите зановоУстройство отвязано (долгий офлайн телефона или отвязали вручную)Подключи заново по QR
Номер заблокирован WhatsApp, отправки остановленыБанКанал отвалился / бан
Ошибка подключенияСбой на шлюзеНажми «Подключить» ещё раз; повторяется, в поддержку

Под капотом (для разработчиков и любопытных)

Что происходит автоматически, пока ты сканируешь QR.

Где живёт WhatsApp. WhatsApp это самохостинг через Baileys (QRDOS): платформа держит привязанное к твоему номеру устройство на своём gateway-сервере (как WhatsApp Web, только всегда онлайн). Сторонний провайдер-посредник больше не используется (убран в июне 2026). Инвариант: 1 номер = 1 канал = 1 проект.

Поток подключения (POST /api/projects/[id]/baileys/connect):

  • права admin+; рейт-лимит 30 запросов/мин на проект;
  • гейт isWhatsAppReconnectBlocked(), если триал исчерпан и подписки нет, вернётся HTTP 402 TRIAL_EXPIRED_PAYMENT_REQUIRED с текстом «Пробный период WhatsApp завершён…»;
  • проект переключается на провайдера QRDOS, gateway стартует сессию и выдаёт QR (/baileys/qr); фронт опрашивает /baileys/status и рисует статус в реальном времени;
  • по скану gateway шлёт вебхук /api/webhook/baileys → проект помечается подключённым (projects.baileys_connected = true); страница видит это и рисует «Подключён».

Пробный период (с 2026-08-04). Активен, пока не истекло окно в 14 дней (30 дней, если к проекту применён реферальный/амбассадорский код: продление ставит apply-promo, ветка 14/30 живёт в триггере mirror_baileys_connected(), crm/sql/0123). Ограничения по числу диалогов больше нет: hasActiveWhatsAppTrial() смотрит только на дату. Тем же триггером один раз ставится projects.activation_offer_ends_at, конец 14-дневного окна скидки на подписку. Внутри окна ответы гейтит баланс проекта, как и на платной подписке. У QRDOS нет поканальной платы провайдеру, поэтому «ройщика» неоплаченных каналов нет: после окна без подписки просто срабатывает гейт допуска (checkProjectEligibility) и бот перестаёт отвечать.

Антибан в коде: прогрев 15 минут, полная отвязка с зачисткой памяти о чатах, потолки отправки на шлюзе. Все защиты и цифры в одном месте: Гигиена и антибан.

Гейт «можно ли отвечать» (checkProjectEligibility), для WhatsApp нужно project.status === 'active' И (активный триал ИЛИ активная подписка). Для Telegram только active, без подписки.

Таймлайн жизни триал-канала:

0ч ──────────── создан, QR отсканирован, бот в эфире
 │  бесплатно: 14 дней, диалогов сколько угодно (пока хватает баланса)
окно закрылось ─ если НЕ оплачено → гейт допуска останавливает ответы бота
                 если оплачено → канал живёт, пока активна подписка

Простыми словами

Подключить WhatsApp это как привязать «WhatsApp на компьютере»: заходишь в раздел «Каналы», жмёшь «Подключить свой номер» и сканируешь телефоном QR-код. Не читается камера, есть код по номеру; номер у другого человека, отправь ему ссылку, он подключит сам. После этого бот сам отвечает всем, кто тебе напишет. Телефоном при этом ты продолжаешь пользоваться как обычно, бот не занимает твоё место, а работает рядом.

Две недели бесплатно, и переписок сколько угодно (с промокодом партнёра, месяц). Тратится только баланс проекта, а при регистрации мы кладём на него $5, так что попробовать можно на реальном потоке клиентов, а не на паре сообщений. Дальше нужна подписка, и первые две недели после подключения она стоит дешевле обычного.

Один совет, который реально важен: подключай только «живой» номер, с которого уже переписывались люди. Новый пустой номер WhatsApp примет за спам и заблокирует. Пять вопросов из статьи перед сканом это не бюрократия, а защита твоего номера. Первые 15 минут после подключения бот молчит, это прогрев, сообщения при этом не теряются. И если связь когда-нибудь оборвётся, не отключай ничего руками на телефоне, просто подключи заново по QR на сайте.


Дальше: → Функции (инструменты бота)
Связано: Обзор каналов · Подключить Telegram · Биллинг · Диалоги · Антибан
Не получилось? → Канал отвалился / WhatsApp забанили · Бот не отвечает

Документация › Каналы › Подключить Telegram

Подключить Telegram-бота

Самый быстрый и безопасный канал: создаёшь бота в @BotFather, копируешь токен, вставляешь в кабинет, и бот отвечает клиентам в Telegram. Подключение бесплатное, без риска бана.

⏱ 8 мин · 👤 для владельца и оператора · 🟢 live

За 30 секунд:
  • Напиши @BotFather в Telegram → /newbot → получи токен вида 1234567:AAE….
  • Кабинет → проект → «Каналы» → секция Telegram → вставь токен → «Подключить».
  • Один бот = один проект. Подключение бесплатно (платишь только за ответы бота с баланса).
  • Токен хранится в зашифрованном виде, входящие проверяются секретом: чужой к боту не подключится.
  • Отключение не трогает токен в @BotFather и сохраняет историю, лиды и дожимы.
Раздел «Каналы»: подключение Telegram-бота по токену
Раздел «Каналы»: подключение Telegram-бота по токену

Зачем это нужно

Telegram: второй канал платформы рядом с WhatsApp. В отличие от WhatsApp, здесь используется официальный Bot API: значит, нет риска бана номера, нет «прогрева», нет подписки за сам канал. Это самый простой способ запустить бота в бою за пару минут.

Мозг у бота общий: тот же промпт, база знаний, функции и дожимы работают в Telegram точно так же, как в WhatsApp (см. Обзор каналов).


Шаг 1. Создать бота в @BotFather

  1. Открой Telegram, найди @BotFather (официальный бот Telegram с синей галочкой).
  2. Отправь команду /newbot.
  3. Придумай имя бота (показывается в шапке чата) и username (должен заканчиваться на bot, например my_shop_bot).
  4. BotFather пришлёт токен: длинную строку вида 1234567:AAExxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
🔒 Токен это пароль от бота. Никому его не показывай. Если случайно засветил в @BotFather командой /revoke выпусти новый, старый перестанет работать.

Шаг 2. Подключить в кабинете

  1. Вкладка проекта «Каналы» → карточка Telegram.
  2. В секции Telegram вставь токен в поле. Когда курсор уходит из поля, токен прячется за точками.
  3. Нажми «Подключить».

С телефона удобнее так: кнопка «Открыть @BotFather» открывает Telegram сразу на нужном боте, а кнопка «Вставить» рядом с полем берёт токен из буфера. Можно скопировать всё сообщение BotFather целиком, токен из него найдётся сам.

Что происходит за кулисами (/api/projects/<id>/telegram/connect):

  • токен проверяется по формату ^\d+:[A-Za-z0-9_-]+$ (цифры, двоеточие, буквы/цифры), если не подходит, увидишь «Неверный формат токена. Скопируйте токен из @BotFather без пробелов и лишних символов»;
  • платформа дёргает Telegram getMe: убеждается, что бот живой, и подтягивает его @username;
  • вызывается setWebhook, платформа говорит Telegram «слать все сообщения сюда»; при этом задаётся секретный токен (случайный), которым Telegram подписывает каждый входящий запрос;
  • проект из статуса «черновик» автоматически переходит в «активен»: бот сразу в эфире.

После успеха: тост «Telegram бот подключён!», в секции отображается @username бота.

📌 Защита от случайной перепривязки. Если токен такой же, как уже стоит, ничего не ломается. Если другой, старому боту платформа сначала снимет вебхук, потом поставит новый.

Шаг 3. Проверить

Рядом есть кнопка «Проверить подключение» (/api/projects/<id>/telegram/status):

  • «Бот подключён и работает», всё ок;
  • «Бот не отвечает. Проверьте токен.»: токен отозван или неверен, переподключи.

Дальше открой своего бота в Telegram (по его @username), напиши ему: он должен ответить как настроен в промпте.

⚠️ Если бот молчит, проверь, что ИИ включён и на балансе есть деньги: Telegram-подключение бесплатно, но каждый ответ бота списывает токены с баланса проекта, как и в WhatsApp. → Бот не отвечает

Что умеет бот в Telegram

  • Текст: основной режим.
  • Голосовые: расшифровываются в текст, бот отвечает по смыслу.
  • Видео и видео-кружки: звуковая дорожка расшифровывается, бот отвечает по содержанию.
  • Фото: бот «видит» картинку (описание изображения) и реагирует. Подпись под фото учитывается как вопрос клиента.
  • Альбомы (несколько фото разом): собираются в один запрос, бот отвечает одним сообщением, а не на каждое фото отдельно.
  • Файлы: принимаются до 20 МБ.
  • Пересланные сообщения: бот понимает, что это форвард, и учитывает откуда.
  • Стикеры: видны в диалоге, но бот на них не отвечает и денег за них не тратит. Стикер это реакция, а не вопрос; если клиент дальше напишет текстом, бот ответит.
  • Telegram Business: поддерживаются бизнес-сообщения (если у тебя Telegram Business-аккаунт, бот отвечает и там).
  • Кнопки под ответом (опция): бот может предлагать клиенту нажимаемые кнопки выбора (записаться / узнать цену / да-нет). Включается на вкладке Промпт → Расширенные настройки → «Длина и разбивка ответов» → «Кнопки под ответом бота». Нажатие кнопки бот воспринимает как ответ клиента и продолжает диалог.
  • Группы и супергруппы (опция), бот может отвечать в групповых чатах, но только когда к нему обращаются: упомянули через @имя_бота или ответили на его сообщение. На остальную переписку он не реагирует. Включается там же: «Длина и разбивка ответов» → «Отвечать в Telegram-группах».
  • Реакции: видны рядом с сообщением и попадают в аналитику вовлечённости. Боту их не показываем: эмодзи чаще означает вежливый кивок, чем ответ, и как реплику его читать нельзя.
  • Меню команд: при подключении у бота автоматически появляются команды /start и /help (кнопка «/» в Telegram).

Всё это, тот же конвейер, что и в других каналах: функции, база знаний, лиды, дожимы.


Кампании и рассылки

Когда бот подключён, в разделе Каналы → Telegram появляется «Ссылка для рекламной кампании»: вводишь название кампании (например instagram_jan): получаешь ссылку вида t.me/твойбот?start=instagram_jan. Дай её в рекламе/постах: кто перейдёт и нажмёт «Старт», попадёт в Аналитику → раздел «Кампании»: увидишь по каждой кампании диалоги, лиды, конверсию и выручку. Это как реклама-атрибуция для WhatsApp, только для Telegram-ссылок.

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

  • Кнопки под сообщением: добавь к рассылке нажимаемые кнопки (ответ боту или ссылка). Рядом, живой предпросмотр, как сообщение увидит клиент.
  • Сужение базы: можно сузить по статусу лида, тегу или рекламной кампании (кто пришёл по конкретной deep-link ссылке). Рядом сразу показывается сколько контактов попадёт под условия: видно охват ещё до отправки.
  • Запланировать на потом: выбери «Запланировать» и укажи дату/время; рассылка сама уйдёт в нужный момент (до этого её можно отменить).
  • Бережная доставка: сообщения уходят постепенно (анти-бан), а кто написал боту «стоп»/«отписаться», исключается автоматически.
  • В истории видно, сколько отправлено, сколько ошибок, и можно остановить рассылку (или запланированную, и идущую) на ходу.

Профиль бота. В разделе Каналы → Telegram (когда бот подключён) есть свёрнутый блок «Профиль бота в Telegram», прямо из кабинета можно задать короткое описание (строка под именем бота) и описание (текст «Что умеет этот бот?», который клиент видит в пустом чате до первого сообщения). Не нужно открывать @BotFather.

Кнопки и аналитика вовлечённости. Если включены кнопки под ответом, оператор видит их прямо в диалоге, а когда клиент нажимает кнопку в переписке появляется пометка «Нажал кнопку» (видно, что это нажатие, а не набранный текст). В Аналитике появляется блок «Вовлечённость в Telegram»: показы кнопок, нажатия, кликабельность (CTR), какие кнопки нажимают чаще, реакции клиентов и разбивка диалогов на личные и групповые.


Отключить Telegram

Секция Telegram → «Отключить». Подтверждение предупредит: «Бот перестанет отвечать клиентам в Telegram. История диалогов, лиды и подписчики drip сохранятся. Подключить можно тот же или новый бот: токен в @BotFather не пострадает.»

При отключении (/api/projects/<id>/telegram/disconnect) платформа снимает вебхук в Telegram (deleteWebhook) и очищает все Telegram-поля проекта. Сам бот в @BotFather остаётся: токен живой, можно переподключить когда угодно.


Под капотом

Для технически любопытных, как устроено хранение и безопасность (по коду):

  • Шифрование токена. telegram_bot_token хранится зашифрованным (AES-256-GCM, ключ ENCRYPTION_KEY, префикс enc:). В открытом виде в базе токена нет.
  • Дедуп. Рядом лежит telegram_bot_token_hash (SHA-256), по нему за один запрос проверяется, не привязан ли этот бот к другому проекту. Если привязан, «Этот бот уже привязан к другому проекту. Создай нового бота в @BotFather или отключи от старого проекта.»
  • Проверка входящих. Telegram шлёт обновления на /api/webhook/telegram/<projectId> с заголовком x-telegram-bot-api-secret-token. Платформа сравнивает его с сохранённым секретом timing-safe сравнением (safeStringEqual); не совпал, 401, сообщение отклонено. Так чужой не сможет слать боту фейковые апдейты.
  • Подписанные типы апдейтов. Вебхук слушает: message, edited_message, callback_query, message_reaction, business_connection, business_message, edited_business_message, deleted_business_messages.
  • Лимиты. Подключение/отключение, 5 запросов / 60 сек (admin-роль). Входящий вебхук, 60 запросов / 60 сек на проект. Токен в запросе: до 200 символов.
  • Медиа без утечки токена. Файлы Telegram сохраняются как tg-file://…, чтобы токен бота не попал в ссылку.
  • Ошибки подключения (понятные RU-тексты): Telegram не принял токен → «Telegram не принял токен. Скопируй токен заново: целиком, от @BotFather, без пробелов.»; Telegram недоступен → «Telegram сейчас недоступен. Попробуй через минуту.»; иное → «Не удалось подключить бот. Повтори ещё раз, если повторится, напиши в саппорт.»

Простыми словами

Telegram: самый лёгкий способ запустить бота. Идёшь к @BotFather (это «фабрика ботов» внутри самого Telegram), пишешь /newbot, придумываешь имя, и он выдаёт тебе токен, такой длинный код. Этот код ты вставляешь в кабинете в разделе «Каналы» и жмёшь «Подключить». Всё, бот ожил, отвечает всем, кто ему напишет в Telegram.

Никакого риска, в отличие от WhatsApp: тут не нужен «прогретый номер», никто никого не банит, и за само подключение денег не берут. Платишь только за работу бота: за его ответы, как везде.

Токен это как пароль, держи его при себе. Если что-то пошло не так, всегда можно нажать «Проверить подключение»: бот либо «работает», либо просит обновить токен. А отключение ничего не ломает, история переписок, лиды и дожимы остаются на месте, и бот в @BotFather никуда не девается.


Дальше: → Функции (инструменты бота)
Связано: Обзор каналов · Подключить WhatsApp · Системный промпт · Биллинг
Не получилось? → Бот не отвечает

Документация › Каналы › Гигиена и антибан

Гигиена и антибан (WhatsApp)

WhatsApp подключается через WhatsApp Web, а Meta жёстко банит «холодные» номера в первые минуты. Эта статья, как не потерять номер. Касается только WhatsApp; Telegram банить нечего.

⏱ 9 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Бан грозит только WhatsApp (там WhatsApp Web). Telegram: официальный бот, риска нет.
  • Главное правило: подключай только «живой», прогретый номер, на котором уже была реальная переписка. Новый/пустой номер забанят за минуты.
  • Анкеты перед сканом нет, платформа верит тебе на слово. Поэтому пять вопросов ниже задай себе сам: это требования Meta, не наша бюрократия.
  • Первые 15 минут после привязки бот молчит (прогрев номера). Сообщения клиентов при этом принимаются и видны в Диалогах, отвечает бот сам, когда окно пройдёт.
  • Если номер уже банился или проект уже ловил баны, заводи новый проект и новый прогретый номер, не реконнекть старый.

Почему WhatsApp вообще банит

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

Поэтому антибан это не про «обойти» правила Meta (это невозможно), а про то, чтобы бот вёл себя как живой человек с прогретого номера. Часть защиты делает платформа автоматически, часть зависит от тебя: выбора правильного номера.

🚫 Эмуляторы: мгновенный бан навсегда. Не подключай номер, который заводился на Android-эмуляторе (BlueStacks/NoxPlayer). Meta их детектит и банит без шансов на разбан.

Пять вопросов перед подключением

Окна с галочками перед подключением нет: нажал «Подключить свой номер», получил QR-код, а с телефона код привязки из восьми знаков. Всё, что защищает номер до привязки, это твой честный ответ на пять вопросов:

  1. ✅ Номер использовался в обычном WhatsApp минимум 24 часа с реальной перепиской.
  2. ✅ За последние сутки на нём было 10-15 живых чатов с людьми.
  3. ✅ Номер не подключён одновременно к другому сервису рассылок (два сервиса на одном номере = бан).
  4. ✅ Не использовали Android-эмуляторы (BlueStacks/NoxPlayer), Meta их детектит и банит навсегда.
  5. ✅ Этот номер раньше не был забанен в WhatsApp (забаненные не разбанивают).

Хотя бы одно «нет» → бери другой номер. Это рекомендации, проверенные на практике: что именно сделать с номером, решаешь ты.

⚠️ Если проект уже ловил баны. Meta помнит граф контактов даже после нашей чистки канала. Надёжнее создать новый проект и подключить там совершенно новый прогретый номер, который раньше не использовался в DOS AI, чем переподключать тот же. Тот же номер на том же проекте: на твой страх и риск.
💡 В самом блоке WhatsApp после подключения есть раскрывающаяся памятка «Что будет с вашим номером»: шесть коротких ответов про привязанное устройство, старые чаты, лимиты отправки, прогрев и телефон в сети. Полезно показать владельцу номера, если он волнуется.

Что платформа делает за тебя

Несколько защит встроены в код и работают автоматически:

  • Прогрев номера: первые 15 минут бот молчит. Сразу после привязки (и после каждого переподключения) платформа держит паузу 15 минут и не даёт боту автоматически отвечать (isOutboundGatedOnReconnect, OUTBOUND_RECONNECT_COOLDOWN_MINUTES = 15). Свежеавторизованный номер, который тут же начинает писать многим людям, для Meta красный флаг. Окно снимается по времени, а не «когда пойдут входящие»: сообщения клиентов всё это время принимаются, сохраняются и помечаются для оператора, просто ответ идёт после паузы. Исключение одно: если ты вручную включил ИИ в конкретном диалоге, там бот ответит сразу (это ровно случай «отсканировал QR и хочу проверить бота»).
  • Чистая отвязка канала. Кнопка «Отключить» делает на нашем шлюзе полный выход из аккаунта (logout) и стирает и авторизацию, и память о чатах: список известных контактов, буфер последних сообщений, офсайтную копию сессии. Иначе прежние контакты «переехали» бы на следующее подключение, и Meta увидела бы «новое устройство, те же контакты» = уклонение = мгновенный бан.
  • Защита от одинаковых рассылок. Платформа не даёт слать один и тот же шаблон пачкой: троттлинг 1 шаблонное сообщение на диалог в 5 секунд, а служебные автоответы («нет баланса», «нерабочее время» и т.п.) уходят один раз на диалог и повторяются не чаще раза в сутки. Одинаковые массовые сообщения: типовой триггер бана.
  • Жёсткие потолки отправки на самом шлюзе (страховка на случай, если что-то пойдёт вразнос выше по цепочке):
ПотолокЗначениеЗачем
Разных собеседников в минуту8главная защита от «блеска»: рассылка 20 незнакомцам в минуту не пройдёт. Ответ из 5 частей одному человеку стоит одного слота, а не пяти
Всего отправок в минуту30предохранитель от зацикливания
Отправок в час200ровный дневной темп
Отправок в сутки3000верхняя граница на сессию
Пауза между отправками1,5-5 сек (случайная, «человеческая»)вместе с индикатором «печатает»
Одинаковый текст подряд в один чат3-й блокируетсяловит случайную петлю-эхо

Прогрева «в первый день можно меньше» у нас нет намеренно: бот всегда отвечает тем, кто написал первым, а это низкорисковое поведение. Лимит первого дня только заставлял бы бота замолкать посреди разговора.

  • Лимит к API. Запросы на подключение и ручную отправку ограничены 30 в минуту на аккаунт: ровный темп вместо всплесков.
  • Список «Не доставляется». Если наше сообщение человеку три дня висит на одной галочке и он после него не писал, WhatsApp так подсказывает, что нас заблокировали (прямо он этого не говорит). Платформа помечает такой контакт сама: дожимы ему отменяются, холодная заявка закрывается, в массовую отправку он больше не попадает. Повторные касания заблокировавшему вас человеку это ровно то, что Meta считает спамом.
  • Исходящие с риском. Бот может написать первым по вашей базе номеров (Исходящие), но это единственный режим, где риск блокировки принимаете вы: он включается владельцем отдельной галочкой с предупреждением, идёт по капле, в рабочие часы и с дневным лимитом, который растёт постепенно.
📌 Статус «Сессия разлогинена» сразу после подключения платформа считает «жёстким» сбоем (реальный обрыв, а не временная заминка): на холодном номере это чаще всего замаскированный бан, а не «отвалился на секунду».

Если связь оборвалась

  • Не отключай и не переподключай руками на телефоне. Короткие обрывы платформа чинит сама («Переподключаемся...»). Если устройство отвязано совсем («Сессия разлогинена»), подключи заново по QR на сайте: в обзоре проекта и в диалогах для этого есть ссылка «Переподключить».
  • На неоплаченном истёкшем пробном периоде реконнект заблокирован до оплаты (isWhatsAppReconnectBlocked): пока окно просрочено, новый QR не выдаётся, сначала подписка.
  • Поймал бан на холодном номере: реконнект того же номера обычно бесполезен. Заведи новый проект и подключи новый прогретый номер.

→ Подробный разбор сбоев: Канал отвалился / WhatsApp забанили


Если переносишь бота на другой номер

Переписки при смене номера никуда не деваются: диалог привязан к номеру клиента, поэтому вся история остаётся в Диалогах. Меняется одно: люди, которые писали на прежний номер, новый не знают.

  • Первым писать им с нового номера нельзя. Для WhatsApp сообщение незнакомцу с номера, которого он никогда не видел, выглядит как рассылка, а за это банят. Поэтому в таких диалогах поле ввода закрыто, в списке стоит пометка «прежний номер», а отложенные сообщения, досылки и напоминания им не уходят. Читать переписку можно всегда.
  • Когда человек напишет на новый номер сам, диалог открывается автоматически, и отвечать можно как обычно, и тебе, и боту.
  • Исключение: если человек уже есть в переписках самого нового телефона, он этот номер знает, и диалог не закрывается.
  • Не рассылай «мы сменили номер» с нового номера. Это как раз массовое сообщение незнакомцам. Сообщить о новом номере можно только со старого телефона, руками и не всем сразу.
  • Новый номер должен быть живым: WhatsApp на нём давно, заполнен профиль, нет чужих личных переписок (при подключении они подгрузятся в кабинет).
  • Не забудь поменять номер там, где тебя находят люди: карточки на картах, соцсети, сайт, реклама. Пока там старый номер, новые люди пишут на него.

Telegram: без этих забот

Всё выше, только про WhatsApp. Telegram работает через официальный Bot API: там нет «прогрева», нет WhatsApp Web, нет банов за автоматизацию. Если риск бана для тебя критичен, а номер прогреть негде, начни с Telegram.


Простыми словами

WhatsApp подключается так же, как «WhatsApp на компьютере». И у этого есть одна опасность: WhatsApp очень не любит, когда с нового, пустого номера вдруг начинается рассылка незнакомым людям, он сразу решает «это спам-бот» и блокирует номер за пару минут. Разбана почти не бывает.

Поэтому правило простое: подключай только тот номер, которым реально пользовались с которого писали людям хотя бы сутки, где есть живые переписки. Перед сканированием QR задай себе пять вопросов из этой статьи: это и есть проверка «номер живой?». Не относись к ним как к формальности: они спасают твой номер.

Многое платформа делает сама: например, сразу после подключения она держит бота молча первые 15 минут, чтобы не насторожить WhatsApp (сообщения клиентов в это время не теряются, они видны в Диалогах), и не даёт ему писать слишком многим людям за минуту. Но выбор номера: на тебе. Никогда не подключай номера с эмуляторов (BlueStacks и подобных): это бан навсегда. И если номер уже когда-то банился, не пытайся его реанимировать, возьми новый.

А если все эти сложности не хочется, просто используй Telegram: там ничего не банят, подключается за минуту.


Дальше: → Функции (инструменты бота)
Связано: Обзор каналов · Подключить WhatsApp · Подключить Telegram
Не получилось? → Канал отвалился / WhatsApp забанили

Документация › Каналы › Подключить Instagram

Подключить Instagram

Бот отвечает клиентам в директе Instagram тем же умом, что в WhatsApp и Telegram. Подключение идёт через официальный вход Meta за минуту, без пароля в кабинете. Главное отличие от других каналов: Instagram разрешает отвечать только 24 часа после сообщения клиента, и боту, и вам.

⏱ 8 мин · 👤 для владельца и оператора · 🟢 live, открыт всем

За 30 секунд:
  • Нужен профессиональный аккаунт Instagram (бизнес или автор). Переключиться бесплатно: в приложении Настройки → Тип аккаунта → Профессиональный.
  • Каналы → Instagram → «Подключить Instagram», вход паролем Instagram или через Facebook, все галочки оставить включёнными.
  • Ответить из кабинета можно 24 часа после последнего сообщения клиента, и боту, и оператору. Позже только из приложения Instagram. Первым написать человеку нельзя.
  • Один аккаунт Instagram отвечает в одном проекте. Канал входит в подписку проекта, как WhatsApp.
ℹ️ Instagram открыт всем аккаунтам с 8 октября 2026. Кнопка «Подключить» на его карточке в «Каналах» есть у всех, как у WhatsApp и Telegram.

Подключение

  1. Переключите аккаунт на профессиональный, если он личный: в приложении Instagram Настройки → Тип аккаунта → Профессиональный. Подписчики ничего не заметят.
  2. В кабинете: Каналы → Instagram → «Подключить Instagram». Подключать может администратор проекта.
  3. Откроется вход Instagram. Войдите в нужный аккаунт логином и паролем Instagram или кнопкой «Войти через Facebook», если в Instagram вы входите через Facebook. Оставьте все галочки включёнными: без галочки «сообщения» бот не увидит директ, без «комментариев» не заработают правила на комментарии.
  4. Вас вернёт в кабинет со статусом «Ждём первое сообщение». Напишите в директ этого аккаунта с другого аккаунта: диалог появится в «Диалогах», и статус сменится на «Канал работает».

Не тот аккаунт: нажмите «Отключить» и подключите заново.

Если к аккаунту уже подключён другой сервис автоответов (ManyChat, SendPulse, чат-бот в amoCRM или Bitrix24), выключите его автоответы. Иначе в директе ответят два бота, а наш, увидев чужой ответ с вашего аккаунта, уступит его как ответу живого человека и встанет в этом диалоге на паузу. Переписка менеджеров из amoCRM или Bitrix24 тоже считается ответом человека, так и задумано.


Правила Instagram, которые надо знать

Окно 24 часа, и для бота, и для вас. Meta разрешает отвечать человеку из кабинета только в течение 24 часов после его последнего сообщения. Это касается всех: бота, дожимов, правил и оператора. Написал клиент снова, и окно открылось заново. В шапке диалога видно, сколько осталось, а после закрытия поле ответа подскажет, что делать. Ответить позже можно из приложения Instagram или дождаться, когда клиент напишет снова. Бот про окно знает: не обещает «напишу завтра», а если ответ займёт больше суток, просит телефон или WhatsApp для связи.

Дожимы в Instagram работают только внутри суток. Шаг дожима «через 2 часа» уйдёт, а шаги «через 2 дня» или «через 5 дней» в Instagram не уйдут: они не сгорают, а ждут, пока человек напишет сам. Если клиенты из Instagram для вас важны, ставьте первый шаг внутри суток, а длинную цепочку ведите в WhatsApp.

Первым написать нельзя. Ни бот, ни рассылка не начнут разговор в Instagram: только ответ человеку, который написал сам или оставил комментарий.

Диалог из комментария. Когда правило ответило автору комментария в директ, диалог появляется в «Диалогах» с пометкой «Ждём сообщения»: человек вам ещё не писал, и писать ему отсюда нельзя. Как только он ответит, окно 24 часа откроется и для вас, и для бота.

Перенос разговора в WhatsApp. Если клиент оставил телефон, в шапке Instagram-диалога появляется «Есть в WhatsApp» или, когда окно закрыто, «Продолжить в WhatsApp». Кнопка откроет диалог с этим номером в WhatsApp (первое сообщение пишете вы, переписка из Instagram не копируется).

Напоминание о закрытии окна. Если тёплый клиент ждёт ответа, а до закрытия окна осталось меньше трёх часов, платформа напомнит вам один раз: в Telegram и на почту, куда приходят уведомления проекта, и в колокольчик кабинета.

Реклама «Написать в Direct» и «Кому отвечает бот». Человек, пришедший по рекламе с переходом в директ, получает в диалоге источник (название объявления, картинка, ID), и бот с первого сообщения знает, что это лид с рекламы, и не спрашивает, откуда о вас узнали. Настройка «Кому отвечает бот» действует и в Instagram: в режиме «Только новым обращениям» бот не вступает к тем, с кем аккаунт переписывался в директе до подключения бота (их сообщения ждут вас в «Диалогах»), в режиме «Только лидам с рекламы» отвечает только людям с рекламы. Для Instagram режим можно выбрать отдельно от WhatsApp: строка «В Instagram» в той же карточке.

Чужие автоответчики. Бывает, что вам пишет не человек, а программа другого бизнеса: присылает карточку с кнопками вроде «Подпишитесь, и я пришлю ссылку». Такую карточку из приложения Instagram человек отправить не может, поэтому бот ей не отвечает и не отвечает на всё, что эта программа пришлёт следом за пару минут. Карточка видна в «Диалогах» с пометкой «Карточка автоответчика». Если потом с того же аккаунта напишет живой человек, бот ответит ему как обычно.

Без звёздочек. Instagram не показывает жирный текст: звёздочки из ответа бота платформа убирает сама, клиент видит чистый текст.

Отозванное и исправленное сообщение. Клиент отозвал сообщение в Instagram: в «Диалогах» на его месте остаётся пометка «сообщение удалено», и бот на этот текст больше не опирается. Клиент исправил сообщение: текст в диалоге обновляется с пометкой «изменено», и дальше бот помнит исправленный вариант. Ответ, который бот успел отправить до отзыва, остаётся у клиента, как и в WhatsApp.

Проверить ответ заранее. В тест-чате переключатель «Как увидит клиент» в положении Instagram показывает ответ бота так, как он уйдёт в директ.

Бот представляется. Meta просит раскрывать, что отвечает автоматика, там, где этого требует закон. Самое простое: одна строка в промпте, например «в первом сообщении представься помощником компании».


Кнопки в директе

Каналы → Instagram → «Кнопки в директе». Это подсказки, которые человек видит в чате с вами в приложении Instagram на телефоне (на компьютере Instagram их не показывает).

  • Вопросы при первом открытии чата, до 4 штук по 80 знаков: «Сколько стоит?», «Где вы находитесь?». Видны, пока человек ещё ничего вам не написал. Нажатие уходит боту как обычный вопрос.
  • Постоянное меню, до 5 пунктов по 30 знаков: всегда видно в чате. Пункт без ссылки отправляет боту свой текст, пункт со ссылкой (только https://) открывает страницу.

«Сохранить» сразу отдаёт кнопки в Instagram, а под формой видно, приняты ли они. При отключении Instagram кнопки снимаются, при новом подключении возвращаются сами.


Комментарии и проверка подписки

Ответы на комментарии под постами и Reels настраиваются правилами: Правила и комментарии. Коротко, что умеет Instagram-правило:

  • Ответ в директ по слову: написали «цена» под постом, и прайс уходит автору в директ, а под комментарием короткий публичный ответ (минимум два варианта, чтобы Instagram не счёл одинаковые ответы спамом). Если Instagram не прислал уведомление о комментарии, платформа найдёт его сама в течение 10-15 минут и ответит.
  • Только подписчикам: вместо ответа в директ приходит кнопка «Получить». Нажал и подписан на ваш аккаунт: получает обещанное. Не подписан: просьба подписаться и кнопка «Я подписался», после подписки тот же текст. Работает и для слова, написанного прямо в директ. Учтите риск: правила Instagram против спама не одобряют выдачу обещанного в обмен на подписку. Многие аккаунты так делают, но после жалоб Instagram может урезать охват, поэтому включайте осознанно.
  • Ответ ИИ на вопрос: бот отвечает на настоящие вопросы под постами («Как к вам записаться?»), если ответ есть в промпте, информации о компании или базе знаний. Похвалу, эмодзи и спам пропускает, выдумывать запрещено.
  • Ответ не теряется: если Instagram временно не принял ответ (потолок ответов за час, сбой Meta, доступ отозван), ответ ждёт и уходит позже сам, пока Instagram его принимает (до 7 дней после комментария). В ленте срабатываний такой ответ помечен «уйдёт позже».

Если на вкладке «Комментарии» написано, что у канала нет доступа к комментариям, Instagram подключали без этой галочки: отключите его во вкладке «Каналы» и подключите снова со всеми галочками, правила сохранятся.


Если что-то не так

СообщениеЧто сделать
Это личный аккаунтПереключите на профессиональный (шаг 1) и подключите снова.
Аккаунт уже подключён к другому проектуОдин аккаунт отвечает в одном проекте: отключите его там или заведите отдельный проект.
Снята галочка «сообщения»«Отключить» → «Подключить Instagram», все галочки включены.
Доступ отозванВ Instagram сменили пароль или убрали приложение в настройках. Подключите заново. Пока доступа нет, бот не отвечает; сообщения, которые Instagram до нас донёс, лежат в «Диалогах», а ответы на комментарии дождутся переподключения (до 7 дней).
Подключили, а сообщения не приходят (статус «Ждём первое сообщение»)Напишите с другого аккаунта: себе написать нельзя. Не помогло: в приложении Instagram откройте настройки → «Сообщения и ответы на истории» → «Подключённые инструменты» и включите «Разрешить доступ к сообщениям». Без этого переключателя Instagram не передаёт сообщения ни одному сервису.
Бот сам встал на паузу в диалогеС вашего аккаунта ответил человек или другая программа (ManyChat, SendPulse, чат в amoCRM или Bitrix24): бот уступает такому ответу. Включить бота обратно можно в шапке диалога. Если подключён другой автоответчик, выключите его.
Вход занял больше получасаСсылка устарела, нажмите «Подключить Instagram» ещё раз.
Instagram не принял фотоInstagram принимает фото только JPG и PNG; другие форматы платформа переводит в JPG сама, а фото с айфона в HEIC сохраните как JPG и отправьте снова.

Сколько стоит

Instagram входит в подписку проекта, как WhatsApp. Бесплатный период проекта действует и для Instagram, один раз на аккаунт. Ответы бота списываются с баланса так же, как в других каналах: Сколько стоит сообщение. Ответ ИИ на комментарий оплачивается так же, как ответ бота.


Дальше: → Гигиена и антибан WhatsApp
Связано: Обзор каналов · Диалоги · Правила и комментарии
Не получилось? → Канал отвалился

Документация › Инструменты бота › Функции

Функции (Инструменты бота): полный гайд

Раздел «Функции» в проекте DOS AI. Путь: Проект → Функции (/projects/<id>/functions).
Подзаголовок раздела: «Инструменты, которые ИИ сам решает когда использовать».
Каталог встроенных функций: уведомления владельцу, запись на время, Google Таблицы, приём оплаты, поведение бота, фото и видео, письмо клиенту
Каталог встроенных функций: уведомления владельцу, запись на время, Google Таблицы, приём оплаты, поведение бота, фото и видео, письмо клиенту

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

🆕 Обновление каталога (2026-06-13). Шаблоны теперь сгруппированы по задаче: Уведомления владельцу (Telegram, WhatsApp, почта), Запись на время (Calendar + движок окошек), Ресторан: iiko (гайд), Google Таблицы, Приём оплаты (Kaspi) (как работает), Поведение бота (теги, пауза дожимов, стоп-диалог), Фото и видео, Письмо клиенту (гайд). Что ещё изменилось:
  • В модалке создания есть поиск по шаблонам: напишите «оплата», «запись», «уведомление».
  • У каждого шаблона на карточке видно «цену входа» (сколько полей, сколько минут, что понадобится) и ссылку 📖 Инструкция.
  • У шаблонных полей человеку показывается короткая подпись, а полная инструкция для ИИ спрятана в спойлер «Инструкция для ИИ».
  • Проверить функцию можно прямо в мастере (кнопка «Проверить»), не закрывая его.
  • Письмо клиенту через обычную почту теперь доступно как шаблон (см. «Письмо клиенту»); Gmail остался продвинутым вариантом.
  • HTTP-запрос это не шаблон, а путь «Своя интеграция по API» (для разработчика). См. Кастомные вебхуки.

Оглавление

  1. Что такое функции и зачем они
  2. Как бот ими пользуется (механика)
  3. Страница «Функции»: весь интерфейс
  4. Как создать функцию
  5. Анатомия функции (из чего состоит)
  6. Параметры: подробно
  7. Какие функции есть
  8. Своя интеграция по API
  9. Поведение бота: теги, паузы, остановки
  10. Тестирование, версии, лог, импорт/экспорт
  11. Связь функций с промптом бота
  12. Лимиты и ограничения
  13. Безопасность и приватность
  14. Все статусы и состояния
  15. Лучшие практики и чек-лист
  16. FAQ и крайние случаи
  17. Глоссарий

1. Что такое функции и зачем они

Функция (инструмент) это действие, которое бот может выполнить во время диалога с клиентом. Сам по себе ИИ умеет только писать текст. Функции дают ему «руки»: записать клиента в календарь, добавить строку в Google-таблицу, выставить счёт на оплату, уведомить владельца в Telegram, поставить тег лиду и так далее.

Главная идея: вы не программируете «если клиент написал X, сделай Y». Вы просто описываете боту что умеет каждая функция и когда её вызывать, а ИИ сам решает в нужный момент диалога, какую функцию вызвать и с какими данными. Это принципиально отличается от жёстких сценариев-кнопок.

📌 Функция не создаёт лида. Карточку лида заводит статус лида, который бот ставит сам по ходу диалога: на уровне промпта, без функций. Функция «Уведомление владельцу» лишь сообщает вам о заявке; сам лид в CRM появляется из-за статуса. Для аналитики (диалоги/лиды/конверсия) функции тоже не нужны: она считается автоматически.

Пример. У стоматологии подключены две функции: «проверить свободное время» и «записать клиента». Клиент пишет «хочу на чистку завтра после обеда». Бот сам:

  1. вызывает проверить свободное время на завтра,
  2. получает свободные слоты,
  3. предлагает клиенту «14:00 или 16:30?»,
  4. когда клиент выбрал, вызывает записать клиента,
  5. подтверждает: «Записала вас на завтра 14:00 ✅».

Никто не прописывал этот сценарий шагами. Бот связал функции сам, потому что у каждой было понятное описание.

Что важно понять с самого начала:

  • Функция = пара «описание для ИИ (когда вызывать)» + «подключение (куда отправить данные)».
  • Бот вызывает функцию, только если она включена и её описание подсказывает, что сейчас подходящий момент.
  • Плохое описание = бот не вызывает функцию или вызывает не вовремя. Описание: самое важное поле.

2. Как бот ими пользуется (механика)

Простыми словами, что происходит под капотом на каждое сообщение клиента:

  1. Сборка инструментов. Платформа берёт все включённые функции проекта и превращает их в «меню инструментов» для модели (формат OpenAI tools). Каждая функция = имя + описание + список параметров.
  2. Решение модели. ИИ читает сообщение клиента, контекст диалога, системный промпт и это меню. Дальше он либо просто отвечает текстом, либо решает «здесь нужно вызвать функцию X с такими-то параметрами».
  3. Выполнение. Если ИИ вызвал функцию, платформа выполняет реальное действие (запрос в Google Calendar, HTTP-запрос на ваш сервер, запись в таблицу и т.д.) и получает результат.
  4. Возврат результата модели. Результат функции (успех/ошибка/данные) отдаётся обратно ИИ. Он смотрит на него и формулирует человеческий ответ клиенту на его основе.
  5. Цепочка. За один ход бот может вызвать несколько функций подряд (например, сначала проверить слот, потом записать). Это «round-trip»: вызов → результат → следующее решение.

Где это работает. Функции одинаково работают везде, где отвечает бот:

  • тест-чат в кабинете (песочница: без реальных клиентов, но ответы бота списываются с баланса проекта, как обычные),
  • боевые WhatsApp (по QR, привязанное устройство), Instagram и Telegram,
  • ответ бота после оплаты счёта Kaspi.

То есть если функция работает в тест-чате, она так же сработает в бою. Дожимы функций не вызывают: это только текст. Функции срабатывают на любом языке клиента: бот решает по смыслу сообщения, а не по точным словам из описания, поэтому «кейін жазамын», «I'll text you later» и «напишу позже» ставят одну и ту же паузу. Примеры в описании функции это образцы намерения; пиши их по-русски, а казахские и английские добавляй, если клиенты так пишут. Чат на главной странице сайта это наш консультант, а не ваш бот.

Что НЕ является функцией:

  • База знаний (RAG). Документы и факты, которые вы загрузили в «Базу знаний», бот использует автоматически: это не вызов функции, контекст подмешивается сам. В логах вызовов вы можете встретить служебный kb_search, но настраивать его как функцию не нужно.
  • Системный промпт. Это «характер и правила» бота, отдельная настройка на вкладке «Промпт». Функции и промпт работают вместе (см. раздел 11).

3. Страница «Функции»: весь интерфейс

3.1 Шапка

  • Заголовок: «Функции».
  • Подзаголовок: «Инструменты, которые ИИ сам решает когда использовать».
  • Кнопка «Импорт»: загрузить функции из JSON (см. 10.5).
  • Кнопка «+ Новая функция»: создать новую (см. раздел 4). Становится неактивной при достижении лимита 40 функций.
  • Счётчик функций использовано / 40. Меняет цвет: серый → жёлтый (осталось ≤2) → красный (лимит).

3.2 Сколько функций

Отдельной строки с цифрами на странице нет. Сколько функций в проекте, видно на счётчике использовано / 40 в шапке и на плашке «Все» в фильтрах, а включена ли каждая, показывает её переключатель в списке.

3.3 Полоса готовности (Readiness)

Сводка состояния одной строкой:

  • «Все функции готовы» это всё в порядке.
  • Жёлтые предупреждения с количеством: «N с ошибками», «N не упомянуты в промпте», «N не протестированы». Это подсказки, а не блокировки.
  • Если есть непроверенные функции, справа стоит кнопка «Проверить по очереди»: она открывает проверку первой из них.

3.4 Фильтры и поиск

  • Чипы-категории: «Все» + по типам (Calendar, Sheets, Telegram, Email, Webhook, CRM и т.д.), у каждого счётчик.
  • Поиск по названию функции.
  • Чекбокс «Только включённые»: спрятать выключенные.

3.5 Баннер рассинхрона с промптом

Жёлтый баннер появляется, если в системном промпте упоминается функция, которой не существует (например, вы написали в промпте «вызови book_table», а функции с таким именем нет). Баннер:

  • показывает каждое недостающее имя,
  • предлагает «возможно, имелась в виду ...»,
  • даёт кнопку «Создать» недостающую функцию в один клик,
  • ссылку «Открыть промпт бота».

3.6 Строка функции

Все функции проекта стоят одним списком, каждая функция это строка.

Свёрнутая строка отвечает на вопрос «что мой бот умеет и включено ли это»:

  • значок и название по-человечески («Отложить дожимы», «Записать клиента»). У своей функции по API показывается её имя;
  • одна строка пояснения, что функция делает;
  • статус словом: «Работает», «Не проверена», «Ошибка», «Не настроена», «Выключена»;
  • переключатель вкл/выкл и стрелка, которая раскрывает строку.

Раскрытая строка (нажмите на название или на стрелку) показывает всё остальное:

  • имя для промпта (pause_followups): его пишут в промпте, когда хотят сослаться на функцию;
  • «Как это описано боту»: текст, по которому ИИ решает, когда вызывать функцию;
  • для встроенных: с какой таблицей или календарём работает функция («не задано», если не настроено);
  • «Что бот передаёт»: параметры простыми словами и их тип («текст», «число», «список»), с пометкой «по желанию» у необязательных;
  • здоровье (если функцию уже вызывали): процент успеха и итог последнего вызова;
  • нижняя строка: тип подключения • число параметров • таймаут • цепочка, если функция в цепочке;
  • кнопки: «Проверить», «Редактировать», меню «⋯».

Строка с ошибкой или с незаполненным адресом раскрыта сразу: причина видна без нажатия.

Меню «⋯»: Попробовать в чате • Превью запроса • Дублировать • История версий • Лог вызовов • Экспорт как JSON • Восстановить предыдущую версию • переключить Dev/Бизнес режим • Удалить.

Dev-режим (переключается в меню раскрытой строки), техническая карта функции: HTTP-метод + URL, заголовки, JSON-схема параметров, готовая команда cURL с копированием, панель здоровья, таймлайн последних 5 вызовов, инлайн-форма редактирования.

3.7 Пустое состояние

Если функций нет:

  • «Нет функций»,
  • «Создайте первую функцию: ИИ будет сам решать когда её вызвать во время диалога»,
  • три шага: «1. Создайте действие → 2. Укажите, куда отправить данные → 3. Бот сам вызовет, когда нужно»,
  • кнопка «+ Новая функция».

3.8 Обновление в реальном времени

Список функций обновляется сам (realtime), без перезагрузки страницы. Если другая вкладка/сессия что-то изменила, вы увидите это сразу.


4. Как создать функцию

Нажмите «+ Новая функция». Открывается выбор пути:

Шаг 1. Выбор пути

  • «Из шаблона», готовые обёртки: уведомления владельцу, запись на время, Google Таблицы, приём оплаты, поведение бота, фото и видео, письмо клиенту. Параметры уже настроены правильно, вам остаётся заполнить подключение. Рекомендуется в 90% случаев.
  • «Кастомная»: свой запрос на любой сервер (вебхук). Для интеграции с вашей CRM, n8n, Zapier или собственным API.

Шаг 2. Выбор системы (для шаблона)

Показываются восемь групп: Уведомления владельцу (Telegram, WhatsApp, почта), Запись на время (Google Calendar и движок окошек), Ресторан: iiko, Google Таблицы, Приём оплаты (Kaspi), Поведение бота (теги, отложить дожимы, остановить диалог), Фото и видео, Письмо клиенту. У каждой: иконка, описание, число шаблонов. Плюс поиск по слову («оплата», «запись», «уведомление»).

Шаг 3. Выбор конкретного действия

Внутри группы, список шаблонов (например в Google Таблицах: «Узнать структуру таблицы», «Прочитать таблицу», «Найти в таблице», «Добавить строку», «Обновить запись в таблице», «Удалить строку»).

Шаг 4. Мастер настройки (ActionWizard)

Один экран с четырьмя секциями:

1) «Когда боту это вызывать»

  • Название (snake_case, только для кастомных; у шаблонов подставляется). Правило: ^[a-z][a-z0-9_]*$, маленькие латинские буквы, цифры, _, начинается с буквы. Пример: create_appointment.
  • Описание для AI: критическое поле, минимум 5 символов. Пишите с точки зрения бота, когда и зачем вызывать. Кнопка «Улучшить с ИИ» дорабатывает формулировку автоматически.

2) «Подключение»

  • Для встроенных: специфичная настройка (ID таблицы и лист; ID календаря и рабочие часы; токен и chat_id Telegram; и т.д.). Показывается email сервисного аккаунта, которому надо дать доступ к таблице/календарю.
  • Для кастомных вебхуков, URL, HTTP-метод, таймаут и сворачиваемые блоки: Авторизация, Заголовки, Параметры URL, Тело запроса, Маппинг ответа, Повторы, Пагинация (см. Своя интеграция по API).

3) «Что бот спросит у клиента»: конструктор параметров (см. раздел 6). Показывается только для кастомных вебхуков, где вы сами проектируете, какие данные бот собирает. У встроенных функций набор параметров уже задан шаблоном и менять его нельзя, поэтому отдельной секции нет: встроенную функцию достаточно включить (и при наличии, потыкать настройки в «Подключении»). Справочный список «что бот соберёт» для встроенных доступен read-only в блоке «Дополнительно».

4) «Дополнительно» (сворачиваемое): триггеры, поведение при ошибке (fallback), цепочки. Для встроенных функций здесь же: read-only список параметров, заданных шаблоном.

Кнопка «Создать функцию» (или «Сохранить» при редактировании). При редактировании есть автосохранение со статусом «Сохранение… / Сохранено / Ошибка сохранения».


5. Анатомия функции (из чего состоит)

Каждая функция хранит набор полей. Самые важные для вас: первые три.

ПолеЧто этоКто видит
Имя (name)Техническое имя, snake_case, уникально в проекте, 2-64 символаИИ (как имя инструмента)
Описание (description)Когда и зачем вызывать, 5-1000 символовИИ (решает по нему)
Параметры (parameters)Какие данные бот соберёт у клиента (до 20 шт.)ИИ + клиент
Тип действия (action_type)Куда направить: webhook или один из builtin_*система
ПодключениеURL вебхука или builtin_config (ID таблицы, токен и т.д.)система
Включена (is_active)Доступна ли боту прямо сейчасвы (переключатель)
ТаймаутСколько ждать ответа: от 1 до 60 секунд (1000-60000 мс)система
Триггер (trigger_type)ai_decides (по умолчанию) / по событию / по заполнению переменнойвы
Предохранитель (preconditions)Условия, без которых функция не выполнится, даже если бот решит её вызватьвы
Поведение при ошибке (fallback_behavior)silent / notify / retry / transfer + текст сообщениявы
Цепочка (chain_group, chain_order)Группировка и порядок связанных функцийвы
Иконка, категорияДля отображениявы

Имя, правила и подводные камни:

  • только a-z, 0-9, _, начинается с буквы;
  • уникально в рамках проекта (регистронезависимо);
  • нельзя использовать зарезервированные слова языков программирования (if, for, function, await и ещё ~200): система отклонит.

Тип действия (action_type) это все допустимые значения:
webhook, builtin_calendar, builtin_sheets, builtin_booking, builtin_telegram, builtin_email, builtin_whatsapp, builtin_crm, builtin_edu_crm, builtin_gmail, builtin_lead_meta, builtin_owner_payment, builtin_send_media.


5.1 Предохранитель: как запретить боту то, о чём вы его просили не делать

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

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

Открывается на шаге «Когда выполнять» в конструкторе функции, там же, где триггер и поведение при ошибке.

УсловиеЧто проверяетКогда ставить
Клиент прислал файлФото или документ среди последних сообщений клиента (число сообщений задаёте вы)Подтверждение оплаты по чеку, приём документов
Заполнено поле лидаНапример phone: без телефона счёт отправлять некудаВыставление счёта, запись, доставка
Сначала отработала другая функцияНазванная функция уже успешно вызывалась в этом же диалогеПодтверждать оплату только после того, как счёт реально выставлен
Клиент написал хотя бы N сообщенийДлина разговораЗащита от срабатывания на первом же «здравствуйте»
Оплата реально прошлаПо этому диалогу есть счёт со статусом «оплачен», подтверждённый банком, а не словами клиентаЗапись на время, отгрузка, выдача доступа после предоплаты

Условий можно поставить несколько, тогда должны выполниться все.

«Счёт выставлен» и «деньги пришли» это разные условия, не путайте их. Первое даёт «Сначала отработала другая функция», и оно проходит уже в момент, когда бот отправил ссылку на оплату. Второе даёт «Оплата реально прошла», и оно ждёт ответа банка. Для записи на время берите второе: между выставленным и оплаченным счётом клиент успевает сказать «я оплатил», и на этих словах бот займёт время, за которое никто не заплатил.

Что вы увидите. В раскрытой строке функции появляется отметка «Предохранитель». Каждый отказ попадает в раздел Логи проекта с причиной, поэтому «функция молчит» никогда не остаётся без объяснения.

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


6. Параметры: подробно

Параметр это данные, которые бот соберёт у клиента в разговоре и передаст в функцию. Например: имя, телефон, дата, сумма. В конструкторе каждый параметр: карточка с номером.

6.1 Поля параметра

  • Тип: String (Aa) / Number (#) / Boolean (да-нет) / Array (список []) / Object (объект {}). Для массива дополнительно указывается тип элементов.
  • Обязательность: переключатель *« ОБЯЗ»** / «НЕОБЯЗ». Обязательный параметр бот будет добиваться у клиента, прежде чем вызвать функцию.
  • Имя (snake_case).
  • Описание, что бот спросит у клиента. Пишите как живой вопрос: «На какую дату вы хотите записаться?». От этого зависит, поймёт ли ИИ, что туда подставить.
  • Enum (для строк), фиксированный список допустимых значений через запятую: low, normal, high. ИИ выберет только из них.
  • Перемещение (↑ ↓) и удаление (✕).

6.2 Подсказки для ИИ (делают функцию точнее)

У параметра можно задать (в шаблонах часто уже заданы):

  • examples: примеры значений, помогают ИИ понять формат;
  • minimum / maximum: границы для чисел;
  • format: date, date-time, email;
  • pattern: регулярное выражение (например дата ^\d{4}-\d{2}-\d{2}$).

6.3 Заблокированные параметры (locked): «ШАБЛОН»

У шаблонных функций часть параметров помечена бейджем «ШАБЛОН» и заблокирована: их нельзя переименовать, удалить или сменить тип. Это сделано специально, они завязаны на встроенный обработчик (например start_time у записи в календарь). Описание у некоторых можно дополнить, структуру, нет. Не заблокированные параметры шаблона (например необязательное customer_name) редактировать можно.

6.4 Пустое состояние

Если параметров нет: «Параметры, данные, которые бот соберёт у клиента. Например: имя, телефон, дата, услуга.» Кнопка «+ Параметр».


7. Какие функции есть

Готовые функции добавляются из каталога: Функции → Новая функция → Из готового шаблона. Полный список с техническими именами в справочнике функций, а как настроить каждую группу, в своей статье:

Категория каталогаЧто умеет ботСтатья
Уведомления владельцусообщить вам в Telegram, WhatsApp или на почтуУведомления владельцу
Запись на времясвободное время и запись в Google Календарь, движок окошек для нескольких специалистовЗапись на время · Google Календарь
Ресторан: iikoсвободные комнаты и столы, бронь на кассу, стоп-листiiko
Google Таблицычитать, искать, добавлять и обновлять строкиGoogle Таблицы
Приём оплаты (Kaspi)выставить клиенту счёт прямо в чатеБот выставляет счёт
Поведение ботатеги, пауза и отключение дожимов, остановка диалогараздел 9 ниже · Теги
Фото и видеоотправить материал из медиатекиМедиа-библиотека
Письмо клиентуписьмо на адрес, который назвал клиентПисьмо клиенту

Две вещи общие для всех готовых функций:

  • Поля настройки (ссылка на таблицу, ID календаря, токен) заполняете вы один раз, модель их не видит и не меняет. Параметры собирает бот у клиента в каждом вызове.
  • Функции CRM и АльфаCRM в каталоге не нужны: подключили CRM на странице «Интеграции», и бот получает её инструменты сам (CRM).

8. Своя интеграция по API

Нужной готовой функции нет, а у вашего сервиса есть API (своя CRM, склад, сайт): Функции → Новая функция → Своя интеграция по API. Адрес, метод, тело, авторизация, маппинг ответа, повторы и защита адресов разобраны в отдельной статье: Своя интеграция по API. Пример на настоящем сервисе: МойСклад.

У старых функций, созданных до появления полного редактора, встречается «простой режим» (только POST и все параметры одним JSON). Новые функции создаются сразу с полным набором вкладок.


9. Поведение бота: теги, паузы, остановки

Четыре функции управляют не внешним миром, а самим разговором. Три про паузы и остановки стоят у каждого проекта с рождения и включены, у проектов с 14 сентября 2026 к ним добавлена «Помечать лида тегами». Управляются здесь же, в разделе «Функции»: выключить тумблером, поправить описание «когда вызывать» под свою нишу, удалить.

9.1 Помечать лида тегами (set_lead_tags)

  • Бот добавляет теги к уже стоящим, не затирая операторские. Снять или заменить тег он может, только если включён тумблер «Разрешить боту снимать/менять теги».
  • Выбирает из словаря проекта (страница «Теги», с описаниями) или создаёт новый, если включён тумблер «Разрешить боту создавать новые теги».
  • Максимум 20 тегов на лида. Подробно: Теги и сегментация.

9.2 Отложить дожимы (pause_followups)

Когда: клиент написал «напишу в четверг», «наберу после 15-го», «свяжусь сам», «подумаю», «позже».

  • ставится пауза до даты (до 09:00 по поясу проекта, если указана только дата; либо точное время), а без даты на сутки;
  • счётчики дожимов сбрасываются, чтобы по истечении паузы пришло одно мягкое напоминание;
  • бот в чате НЕ выключается: если клиент напишет раньше, ответит как обычно;
  • пауза соблюдается, даже если раздел «Дожимы» выключен: в назначенный срок бот вернётся одним сообщением о договорённости.

9.3 Остановить диалог (stop_dialog)

Когда: клиент явно просит не писать или окончательно отказался после отработки возражений. На первое «дорого / подумаю» не вызывается: это возражение.

  • бот выключается на этом диалоге до ручного включения оператором;
  • причина «клиент попросил», и автовозобновление этот диалог не оживит;
  • все дожимы по диалогу отменяются автоматически.

Зачем так строго: защита от назойливости и от блокировки WhatsApp за спам.

9.4 Отключить дожимы (stop_followups)

Когда: клиент просит не напоминать («не надо дожимать», «сам напишу, когда решу», «еске салмаңыз»), но вопросы задавать продолжает.

  • автонапоминания по этому клиенту выключаются насовсем;
  • бот остаётся включённым и отвечает как раньше;
  • вернуть дожимы можно вручную в таблице дожимов.

Три способа одним взглядом: пауза = помолчи с напоминаниями до срока, отключить дожимы = напоминаний больше нет, бот отвечает, стоп-диалог = замолчи совсем.

9.5 Как вообще останавливается диалог

Бот никогда не решает остановиться сам: он дообщается с клиентом, пока его не остановят явно. Способов четыре:

  1. функция «Остановить диалог» (бот вызывает её, когда клиент просит не писать);
  2. галочка «Завершать диалог после выполнения этой функции» у любой функции (внизу настроек): функция успешно отработала, и бот выключается на этом чате и отменяет дожимы (удобно после записи или передачи заявки менеджеру);
  3. состоявшийся звонок, если включена настройка «Выключать ИИ после состоявшегося звонка» (включена по умолчанию, справочник настроек);
  4. вручную: тумблер ИИ в шапке диалога.

Рядом с галочкой «Завершать диалог» есть вторая, «Останавливать дожимы после этой функции»: она решает только судьбу напоминаний и не трогает бота. Включайте, когда после функции напоминать не о чем (заявку передали человеку, клиента записали, оплату приняли). Оставляйте выключенной для уведомлений, которые разговор не заканчивают: эскалация вопроса, пометка отказа, сигнал о жалобе.

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

Все три галочки действуют на вызовы, которые делает сам бот по ходу разговора. Если у функции выбран автозапуск (по событию или по смене статуса лида), этот путь галочки не учитывает; в настройках такой функции стоит та же пометка.

«Передать оператору» как отдельной встроенной функции нет: это уведомление владельцу (notify_telegram и соседи) плюс галочка «Завершать диалог после выполнения», если бот после передачи должен замолчать, и галочка «Это заявка», чтобы у клиента появились карточка лида и сделка в CRM.

10. Тестирование, версии, лог, импорт/экспорт

10.1 Тест функции («Проверить»)

Кнопка «Проверить» на карточке открывает тест-модалку «Тест: <имя>»:

  • кнопка «Заполнить пример» подставляет примеры;
  • по каждому параметру, поле ввода (для enum, выпадающий список), с подсказкой формата;
  • «Отправить тест» реально выполняет вызов (для вебхука: шлёт запрос на ваш URL);
  • результат: код статуса, отформатированный JSON-ответ, длительность (мс), ошибка если была.

Используйте перед запуском, чтобы убедиться, что подключение настроено верно.

10.2 Попробовать в чате

Пункт меню «Попробовать в чате» открывает тест-чат, где можно проверить, вызовет ли бот функцию сам по описанию (а не только технически работает ли вебхук). Это проверка качества описания.

10.3 История версий

Каждое изменение функции сохраняет снимок (хранятся последние ~50 версий). Меню → «История версий» → список с датами → «Восстановить» любую (с подтверждением). Спасает, если случайно сломали настройку.

10.4 Лог вызовов (Executions)

Меню → «Лог вызовов», все реальные вызовы функции ботом: статус (успех/ошибка), время, длительность, разворачиваемые детали запроса/ответа. Первое место, куда смотреть, если «функция не сработала».

10.5 Импорт / экспорт

  • Экспорт как JSON (меню карточки): выгрузить одну функцию.
  • Импорт (кнопка в шапке): вставить JSON одной функции или массива, либо перетащить файл (до 1 МБ). Удобно переносить функции между проектами.

10.6 Дублировать и превью

  • Дублировать: копия функции (быстро сделать похожую).
  • Превью запроса: посмотреть, как будет выглядеть запрос, не отправляя его.

10.7 «Улучшить с ИИ»

Кнопка у поля описания: ИИ дорабатывает формулировку описания, чтобы бот точнее понимал, когда вызывать функцию.


11. Связь функций с промптом бота

Функции и системный промпт (вкладка Промпт) работают вместе:

  • Описание функции говорит ИИ, что она делает и когда её звать. Это первично.
  • Промпт задаёт общий характер, правила и может явно направлять: «когда клиент готов записаться, вызови book_appointment».
  • Если в промпте упомянута функция, которой нет на странице «Функции» появится баннер рассинхрона (см. 3.5) с кнопкой создать её.
  • Полоса готовности предупреждает: «N не упомянуты в промпте», это намёк, что функция есть, но бот может про неё «забыть», если в промпте нет подсказки. Для важных функций стоит и хорошее описание, и упоминание в промпте.

Правило большого пальца: описание для понимания «что это», промпт для управления «в какой момент сценария это использовать».


12. Лимиты и ограничения

ОграничениеЗначение
Функций на проект40
Имя функции2-64 символа, ^[a-z][a-z0-9_]*$, без зарезервированных слов
Описание5-1000 символов
Параметров на функцию20
Значений enum на параметр50
Описание параметрадо 500 символов
Таймаут1000-60000 мс (1-60 секунд)
Заголовковпо стандарту HTTP; имя 1-200 символов, без переносов строк
Полей маппинга ответа50, путь 1-200 символов, обрезка 500-20000 символов
Параметров URL (query)30
Шаблон тела50 КБ
Повторов (retry)1-5
Страниц пагинации1-10
Версий на функцию~50
Медиа на диалог3 / 60 сек
Тегов на лида20
Лог вызовов (хранение)~90 дней

При попытке создать 41-ю функцию кнопка заблокируется, а импорт вернёт ошибку «лимит достигнут».


13. Безопасность и приватность

  • Секреты не показываются. Токены, пароли, ключи (bot_token, api_key, access_token, password, secret и т.п.) наружу не отдаются никогда: в ответах API вместо них стоит ***hidden***, а ключ авторизации (Bearer, Basic, API Key, свой заголовок) приезжает пустым, рядом с пометкой «сохранён» и последними четырьмя знаками для узнавания.
  • Пустое поле ключа означает «не менять». Открыли функцию на правку и не трогали поле с ключом, значит сохранится прежний ключ. Чтобы заменить, впишите новый; чтобы убрать, выберите тип авторизации «Без авторизации». Прислать обратно скрытое значение (***hidden*** или точки) тоже безопасно: платформа поймёт, что поле не меняли, и ключ останется прежним. Если прежнего ключа нет, а поле пустое, сохранение честно откажет, а не запишет пустоту.
  • Шифрование. Конфиги авторизации и встроенных функций хранятся в зашифрованном виде (AES-GCM).
  • Защита от SSRF. URL вебхуков нельзя указывать на внутренние адреса (127.0.0.1, 10.x, 192.168.x, IPv6-приватные): защита от обращения бота к внутренней инфраструктуре. Проверка идёт с учётом DNS-резолва.
  • Заголовки чистятся от переносов строк (защита от инъекций).
  • Права доступа. Создавать/менять/удалять функции может участник проекта с ролью editor и выше; просматривать, viewer. URL и секреты не отдаются участникам без прав владельца.
  • Аудит. Каждое создание/изменение пишется в журнал аудита.

14. Все статусы и состояния

Статус функции на карточке:

СтатусЦветЧто значитЧто делать
Работаетзелёныйпоследние вызовы успешныничего
Не проверенажёлтыйещё не тестировалась/не вызываласьнажмите «Проверить»
Ошибкакрасныйпоследние вызовы падалиоткройте «Лог вызовов», смотрите текст ошибки
Выключенасерыйпереключатель выключенвключите, если нужна боту

Предупреждения полосы готовности:

  • «N с ошибками»: функции с красным статусом.
  • «N не упомянуты в промпте»: есть функция, но в промпте нет наводки (бот может её не звать).
  • «N не протестированы»: нажмите «Проверить».

UX-состояния страницы: загрузка (скелетоны), пусто (см. 3.7), ошибка загрузки (инлайн-сообщение, не белый экран).


15. Лучшие практики и чек-лист

Описание функции:

  • Пишите от лица бота: «Записывает клиента на приём. Вызывай, когда клиент подтвердил время.»
  • Укажите когда вызывать и когда НЕ вызывать.
  • Не пишите формально «Функция записи»: ИИ не поймёт момент.

Параметры:

  • Описание параметра = живой вопрос клиенту.
  • Помечайте обязательным только то, без чего действие невозможно.
  • Используйте enum для фиксированных вариантов и examples для форматов.

Подключение:

  • Для Sheets/Calendar: выдайте доступ сервисному аккаунту (его email показан при настройке).
  • Для вебхука: верните боту короткий понятный ответ, а не сырой JSON (настройте маппинг).
  • Поставьте разумный таймаут (медленный сервер = клиент ждёт спиннер).

Перед запуском:

  • ☐ Нажал «Проверить», подключение работает.
  • ☐ «Попробовал в чате»: бот вызывает функцию сам по описанию.
  • ☐ Функция включена.
  • ☐ Если важная, упомянул её в промпте.
  • ☐ Статус «Работает», полоса готовности зелёная.

Сценарии управления:

  • Возражение «дорого/подумаю» → отрабатывай или pause_followups, не stop_dialog.
  • «Не пишите мне» → stop_dialog.
  • Готов платить → create_payment_invoice (не выдумывай сумму: уточни).

16. FAQ и крайние случаи

Бот не вызывает функцию, хотя она включена.
Причина почти всегда в описании. Откройте «Попробуй в чате» и проверьте, понимает ли ИИ момент. Улучшите описание (кнопка «Улучшить с ИИ»), при необходимости добавьте наводку в промпт.

Функция вызывается не вовремя / слишком часто.
Описание слишком широкое. Добавьте «вызывай ТОЛЬКО когда…» и «НЕ вызывай если…».

В тест-чате работает, в бою, нет.
Проверьте, что функция включена в боевом проекте, подключение настроено (не ⚠ не задано), и канал/интеграция активны. Логика ИИ одинаковая во всех 5 точках входа: расхождение обычно в настройке подключения.

Достиг лимита 40 функций.
Удалите неиспользуемые или объедините близкие. Часто несколько узких вебхуков можно заменить одним с параметром «действие».

Два клиента бронируют один слот.
Для Sheets используйте update_row с expected_current_value/expected_other_cell (запись только если слот свободен). Для Calendar: check_available_slots непосредственно перед book_appointment.

Случайно сломал настройку функции.
Меню → «История версий» → «Восстановить» нужную.

Нужно перенести функции в другой проект.
«Экспорт как JSON» в одном → «Импорт» в другом.

Где функции send_lead / escalate_to_owner / kb_search?
send_lead / escalate_to_owner это кастомные функции конкретных проектов (вебхуки или Telegram-уведомления), а не встроенные шаблоны. kb_search: служебный поиск по базе знаний, он работает автоматически, настраивать его как функцию не нужно.


17. Глоссарий

  • Функция / Инструмент / Tool: действие, которое бот может выполнить (синонимы).
  • action_type, тип действия: webhook (свой HTTP) или builtin_* (встроенный обработчик).
  • builtin_config: настройки встроенной функции (ID таблицы, токен и т.д.), которые ИИ не видит.
  • Параметр: данные, которые бот собирает у клиента и передаёт в функцию.
  • locked / ШАБЛОН: заблокированный параметр шаблона, его нельзя ломать.
  • enum: фиксированный список допустимых значений параметра.
  • Цепочка (chain): группа связанных функций с порядком вызова.
  • fallback: поведение при ошибке функции (silent / notify / retry / transfer).
  • Дожим (follow-up): автоматическое напоминание клиенту; управляется pause_followups / stop_dialog.
  • Сервисный аккаунт: технический Google-аккаунт DOS AI, которому вы даёте доступ к таблице/календарю.
  • RAG / База знаний: автоматический поиск по вашим документам, НЕ функция.
  • Где работает бот: тест-чат, WhatsApp, Instagram, Telegram и ответ после оплаты; функции работают одинаково везде. Дожимы функций не вызывают.

Простыми словами (вся статья в двух минутах)

Обычный бот умеет только разговаривать. Функции это «руки» бота: они позволяют ему делать дела, а не только отвечать словами, записать клиента в календарь, добавить строку в Google-таблицу, выставить счёт на оплату в Kaspi, скинуть тебе заявку в Telegram, отправить клиенту видео, поставить пометку на клиента. Каждая функция это «одно умение».

Самое важное и непривычное: ты не программируешь сценарий «если клиент сказал X, сделай Y». Ты просто по-человечески описываешь каждое умение: «эта функция записывает клиента, вызывай её, когда он подтвердил время», а бот сам решает, когда им воспользоваться, прямо посреди разговора. Поэтому в функциях главное поле, описание. Плохо описал, бот не поймёт, когда применять; хорошо описал, он сам всё свяжет (сначала проверит свободное время, потом запишет, потом подтвердит).

Делать функции можно двумя путями. Из шаблона это готовые умения (Google Таблицы, Календарь, Telegram, приём оплаты, отправка фото): тебе остаётся только подключить свою таблицу или номер, всё остальное уже настроено. Кастомная, если у тебя своя система (CRM, сайт), бот может «постучаться» на твой адрес и передать туда данные.

Есть и особые функции, которые управляют самим ботом: поставить напоминания на паузу («клиент сказал, напишу в четверг»), совсем остановить диалог («клиент попросил не писать»), пометить клиента тегом, выставить счёт. Их тоже бот применяет сам по смыслу разговора.

Что важно помнить на каждый день:

  • Функция работает, только если она включена и у неё настроено подключение (для таблицы, дать доступ, для оплаты: подключить Kaspi).
  • Всё новое проверяй в тест-чате: там видно, вызвал ли бот функцию или только написал «записал» словами.
  • Функций можно сделать до 40 на проект.
  • Секреты (токены, пароли) платформа прячет и шифрует, участники их не видят.
  • Не получается? Загляни в «Лог вызовов» функции: там видно, что именно пошло не так.

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


Документ описывает раздел «Функции» DOS AI по состоянию на август 2026. Каталог встроенных функций, источник истины: packages/@dos/admin/src/function-templates.ts. Логика выполнения: packages/@dos/ai-pipeline/src/pipeline/tool-executor.ts.

Документация › Инструменты бота › База знаний

База знаний (RAG)

Сюда грузишь факты о бизнесе (прайс, услуги, условия): бот сам подмешивает нужное в ответы и перестаёт выдумывать.

⏱ 8 мин · 👤 для владельца и оператора · 🟢 live

База знаний: загрузка документов (FAQ, прайс, описание услуг), бот использует их для точных ответов через векторный поиск
База знаний: загрузка документов (FAQ, прайс, описание услуг), бот использует их для точных ответов через векторный поиск
За 30 секунд:
  • База знаний = большие справочники бизнеса: полный прайс, каталог услуг, FAQ, условия, документы. Пара цен и адрес удобнее в поле «Информация о компании»: его бот видит всегда.
  • Грузишь текст, файл (TXT/CSV/PDF/DOCX) или ссылку (URL): система сама разбивает и индексирует.
  • Бот на каждое сообщение ищет подходящие куски и добавляет их в ответ (это RAG, автоматически).
  • Лимит: 100 записей на проект (всего, не только активных), до 1 000 000 символов при вставке текстом, из файла и со страницы по ссылке извлекается до 500 000, файл до 4 МБ.
  • Короткие факты, нужные всегда, держи в «Информации о компании»; большое и меняющееся сюда (что куда класть).

Зачем это нужно

Бот знает только то, что ты ему дал. Если прайс есть лишь «в голове» у тебя, бот начнёт выдумывать цифры. База знаний даёт ему точные факты: он ищет в них релевантное под вопрос клиента и отвечает по делу, а не фантазирует. Это разница между «кажется, около 20 тысяч» и «чистка, 18 000 ₸».

Что сюда класть

Объёмное и меняющееся: полный прайс, описания услуг, FAQ, условия, документы. Короткие факты, нужные в каждом ответе (адрес, часы, ключевые услуги), лучше в поле «Информация о компании», а поведение бота в промпт. Как разложить всё по местам: Что куда класть.

Как добавить

Вкладка проекта «База знаний» → «Добавить документ».

  1. Название: понятное («Прайс услуг», «FAQ доставки»);
  2. Тип, выбери источник:
  3. Текст: вставь напрямую (до 1 000 000 символов);
  4. Файл: TXT, CSV, PDF, DOCX (до 4 МБ, текст извлечётся сам);
  5. URL, ссылка на страницу сайта (можно с глубиной сканирования: только страница / +ссылки 1-2 уровня / максимум);
  6. (для URL) Автообновление, нет / еженедельно / ежемесячно;
  7. «Добавить»: пойдёт загрузка → индексация → готово.

⚠️ Обработка документа стоит немного (около $0.01 за документ на индексацию, минимальное списание, 1¢), спишется с баланса. При добавлении показывается оценка токенов.

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

Тебе ничего вызывать не надо, это работает само:

  1. Клиент пишет вопрос;
  2. Бот ищет в базе знаний тремя способами сразу: по смыслу (похожие формулировки), по словам (точное совпадение: артикул, марка, название модели) и с поправкой на опечатки. Результаты объединяются, и кусок, найденный двумя способами, идёт выше;
  3. Лучшие фрагменты (в сумме до 8 000 символов) добавляются в контекст ответа;
  4. Бот отвечает, опираясь на них.

📌 Пример. В базе это прайс и условия. Клиент: «делаете отбеливание и сколько?». Бот находит строку про отбеливание → отвечает с точной ценой. Про услугу, которой в базе нет, он честно скажет, что уточнит.

📌 Пример на точные слова. Клиент спрашивает «есть мойка 8102?». По смыслу «8102» не значит ничего, и поиск только по смыслу такой вопрос проваливал. Совпадение по словам находит строку каталога сразу.

«Всегда под рукой»

У каждой записи есть кнопка-булавка. Включённая, она означает: этот документ едет боту в каждом сообщении, минуя поиск.

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

Всё остальное, полный каталог, характеристики, регламенты, частые вопросы, должно искаться. Тогда за него платишь только тогда, когда оно понадобилось.

Проверь, что работает

В разделе есть «Тест поиска»: вводишь вопрос клиента → видишь, какие фрагменты база вернёт боту, из какого раздела документа они взяты и как нашлись: по словам, по смыслу или с поправкой на опечатку. Это ровно тот поиск, что бот делает на каждое сообщение. Если по важному вопросу ничего не находит, переформулируй контент или добавь похожий.

Плюс прогони реальные вопросы в Тест-чате: там в «технических деталях» видно, какие источники бот подтянул.

Управление записями

  • Фильтры: Все / Активные / Неактивные, поиск по названию;
  • Включить/выключить запись (выключенная не участвует в поиске);
  • Булавка «Всегда под рукой»: запись едет боту в каждом сообщении мимо поиска (см. выше);
  • Массовые действия: включить/выключить/удалить выбранные;
  • Большие документы система бьёт на фрагменты: их можно посмотреть и отредактировать.

Частые ошибки

СимптомПричинаЧто делать
Бот не знает то, что я загрузилЗапись выключена или вопрос непохож на текстВключи запись; проверь «Тест поиска», переформулируй контент
«Почти лимит» / не добавляетсяБлизко к 100 записямУдали ненужные, объедини мелкие
Загрузил, но бот выдумываетФакт есть в базе, но промпт не велит на неё опиратьсяВ промпте: «цены и факты бери из базы знаний, не выдумывай»
Файл не грузитсяБольше 4 МБ или не тот форматСократи / используй TXT, CSV, PDF, DOCX

Вопросы, которые обычно возникают

Это платно?
Да, чуть-чуть: и индексация документа, и каждый поиск стоят примерно по 1¢ ($0.01). Поиск идёт на каждое сообщение, это учитывается в расходе.

Бот читает весь документ каждый раз?
Нет. Только самые подходящие фрагменты под текущий вопрос: столько, сколько влезает в 8 000 символов контекста (обычно от 3 до 15, зависит от размера кусков).


Под капотом

  • RAG (Retrieval-Augmented Generation): документы режутся на чанки, для каждого считаются векторные embeddings. На каждое сообщение клиента идёт гибридный поиск: вектора (смысл) + полнотекстовый поиск с русской морфологией (точные слова) + триграммы (опечатки), результаты объединяются рангом. В контекст попадает столько лучших чанков, сколько помещается в 8 000 символов (не больше 15). Записи со «Всегда под рукой» подмешиваются без поиска, в пределах 1500 символов.
  • Лимиты: 100 записей/проект (всего), до 1 000 000 символов при вставке текстом, из файла и URL извлекается до 500 000 (MAX_EXTRACTED_LEN_KB / MAX_PAGE_SIZE), файл 4 МБ, в промпт идёт до 8 000 символов, не больше 15 чанков.
  • Форматы: TXT, CSV, URL (с глубиной до 3 и автообновлением), PDF, DOCX. URL-скан: до 20 подстраниц, каждая = отдельная запись.
  • Стоимость: ≈$0.01 индексация документа + ≈$0.01 за поиск (на каждое сообщение); минимальное списание за эмбеддинг, 1¢.
  • Обновления списка идут в реальном времени (use-realtime-kb). RAG это не функция, а внутренний шаг пайплайна; включать/вызывать не надо.

Простыми словами

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


Дальше: → Дожимы
Связано: Системный промпт · Как бот думает · Тест-чат
Не получилось? → Бот не отвечает

Документация › Инструменты бота › Медиа-библиотека

Медиа-библиотека

Бот умеет не только писать, но и показывать: отправить клиенту видео, фото работ, отзыв или прайс, в нужный момент диалога. Для этого ты заранее складываешь материалы в медиа-библиотеку.

⏱ 7 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Раздел «Медиа» проекта: твоя библиотека видео/фото/отзывов/прайсов.
  • Каждому файлу даёшь ярлык (media_key), по нему бот его и отправляет.
  • Бот сам решает, когда показать материал (через функцию «Отправить медиа»), если клиент сомневается или просит показать.
  • Лимиты: до 60 файлов на проект, до 50 МБ каждый (для Telegram фото до 5 МБ, остальное до 20 МБ). Работает в WhatsApp, Telegram и Instagram.
Раздел «Медиа»: предзагруженные фото, видео и файлы, которые бот отправляет по контексту
Раздел «Медиа»: предзагруженные фото, видео и файлы, которые бот отправляет по контексту

Зачем это нужно

Слова не всегда убеждают. «Покажите работы», «есть видео?», «скиньте прайс»: на такие моменты у бота должны быть готовые материалы. Медиа-библиотека (раздел «Медиа», /projects/<id>/media) это склад фото, видео, отзывов и прайсов, которые бот отправляет клиенту прямо в чат в подходящий момент: в диалоге и в дожимах.


Как загрузить

  1. Раздел проекта → «Медиа» → загрузи файл (нужна роль редактор+).
  2. Дай название: ярлык (media_key) подставится из него сам, кириллица разрешена, поправить можно. При желании добавь подпись и описание «когда отправлять».
  3. Сохрани. Готово: материал доступен боту.

Лимиты и форматы:

  • до 60 материалов на проект (превысишь, «Достигнут лимит медиа на проект (60). Удали ненужное и попробуй снова.»);
  • до 50 МБ на файл (больше, «Файл больше 50 МБ»). Файлы крупнее 4 МБ кабинет грузит прямо в хранилище, это занимает чуть дольше;
  • если бот отвечает в Telegram, держи фото до 5 МБ, а видео и документы до 20 МБ: файл больше Telegram по ссылке не принимает, и клиент его не получит;
  • форматы: изображения (JPEG/PNG/GIF/WebP/HEIC), аудио (MP3/OGG/WAV/MP4), видео (MP4/WebM/MOV), документы (PDF/DOC/DOCX/XLS/XLSX/PPT/PPTX/ZIP).
  • в один диалог бот отправляет не больше 3 материалов за минуту (защита от спама и от блокировки WhatsApp).

Как бот отправляет

Бот выбирает материал по ярлыку через функцию «Отправить медиа» (send_media). Ты включаешь эту функцию и описываешь, что и когда показывать, а бот сам решает момент: клиент сомневается → показать видео-отзыв; просит прайс → отправить файл; нужно снять возражение наглядно → фото работ.

💡 Описывай ярлыки понятно. Бот выбирает материал по описанию, «когда отправлять». Чем понятнее опишешь (video_otziv, «когда клиент сомневается в качестве»), тем точнее бот будет показывать нужное. Это как с функциями: хорошее описание = верный выбор.
📌 После отправки бот ссылается на материал словами («посмотрите видео выше 👆»), а не пересказывает его. Работает и в WhatsApp, и в Telegram.

Стоит ли это денег

Отправка готового материала из библиотеки: бесплатна (не списывает баланс). Деньги тратятся только когда бот распознаёт входящее медиа от клиента (расшифровка голоса, «разглядывание» картинки): см. Сколько стоит сообщение.


Простыми словами

Представь, что у бота есть папка с «продающими материалами»: видео твоих работ, фото до/после, отзывы клиентов, прайс в PDF. Ты один раз туда всё загружаешь и подписываешь, что это и когда показывать. Дальше бот сам, по ходу разговора, достаёт нужное: клиент засомневался, кинул видео-отзыв, попросил цены, отправил прайс. Это работает гораздо убедительнее, чем расписывать всё словами.

Загрузить можно до 60 файлов, каждый до 50 МБ (для Telegram лучше до 20 МБ), работает в WhatsApp, Telegram и Instagram. И приятный момент: отправлять эти материалы клиентам, бесплатно, баланс на это не тратится.


Дальше: → Дожимы
Связано: Функции · База знаний · Сколько стоит сообщение
Не получилось? → Функция не вызывается / падает

Документация › Инструменты бота › Дожимы

Дожимы (follow-up)

Клиент заинтересовался и пропал? Бот сам напомнит о себе через заданное время, и вернёт часть «потеряшек».

⏱ 9 мин · 👤 для владельца и оператора · 🟢 live

За 30 секунд:
  • Дожим = автонапоминание клиенту, который замолчал.
  • Настраиваешь последовательность касаний с задержками (минуты/часы/дни/недели).
  • Каждое касание это либо ИИ с учётом истории диалога, либо фиксированный текст.
  • Бот сам ставит дожимы на паузу, если клиент сказал «свяжусь сам», и отменяет, если просил не писать.
  • Минимальная задержка, 15 минут.
Раздел «Дожимы»: конструктор шагов-напоминаний с задержками для замолчавших клиентов
Раздел «Дожимы»: конструктор шагов-напоминаний с задержками для замолчавших клиентов

Зачем это нужно

Большинство клиентов не отвечают сразу: «подумаю», «спрошу мужа», просто отвлеклись. Без напоминания половина из них теряется навсегда. Дожимы возвращают их мягким сообщением через нужное время: без твоего участия и без навязчивости. Это один из самых окупаемых инструментов.

Где это

Вкладка проекта «Автоматизации» → подвкладка «Дожимы». Нужна роль editor+.

Как настроить последовательность

Дожим это цепочка касаний. Например: через 2 часа → через 1 день → ещё через 1 день. Задержка считается от прошлого касания, и вся цепочка должна уложиться в «Максимум тишины» (по умолчанию трое суток), иначе молчащему клиенту последние касания не дойдут. А при включённом «Сбросе при ответе» они не уйдут вообще никому: ответивший клиент начинает цепочку с первого касания. Если цепочка длиннее порога, под ней появится жёлтая плашка «Шаги 4-5 не дойдут до тех, кто замолчал» с кнопкой «Поднять порог»: одно нажатие ставит порог по длине цепочки с запасом в сутки. Для каждого касания задаёшь:

ПараметрВарианты
ЗадержкаЧисло + единица: минуты / часы / дни / недели (минимум 15 минут)
ТипИИ + история диалога (бот перечитает переписку так же, как при обычном ответе, и напишет про то место, где разговор остановился) или Фиксированный текст (твой готовый текст)
ТекстСообщение (для фикс.) или подсказка для ИИ
МедиаМожно прикрепить фото/видео
МодельСвоя модель для дожимов или общая

💡 Совет. Первое касание делай быстрым и мягким (через 1-2 часа: «Подскажите, остались вопросы?»), дальше реже. Тип «ИИ + история» обычно работает лучше шаблона: напоминание получается живым и в контексте разговора.

📌 Пример (мотошкола). Касание 1 через 2 часа: «Остались вопросы по обучению? С радостью подскажу 🙂». Касание 2 через 1 день: напоминание про ближайший набор. Касание 3 ещё через день: предложение пробного занятия.

Кто попадает в дожимы и кто выходит

  • Попадает: при включённых дожимах каждый клиент, которому бот ответил. Настройка «Авто-добавление» сужает круг: в цепочку попадут только лиды с выбранным статусом, в момент, когда статус на него сменится. Клиент, чью заявку уже передали функцией с галочкой «Останавливать дожимы», не попадает.
  • Бот сам ставит на паузу: если клиент сказал «свяжусь сам в четверг», дожимы молчат до этой даты (функция пауза дожимов), но бот в чате продолжает отвечать.
  • Бот сам отключает напоминания, не замолкая: клиент сказал «не надо мне напоминать, сам напишу», но вопросы задаёт: дожимы по нему выключаются насовсем, а бот в чате отвечает как раньше (функция отключить дожимы).
  • Бот сам отменяет: если клиент попросил не писать или отказался, дожимы отменяются (стоп-диалог).
  • Эти три функции стоят у каждого проекта с рождения и включены. Добавлять их из каталога руками больше не нужно; выключить или поправить описание можно в разделе «Функции».
  • Заявка передана, дожимы закрываются, если ты так решил. У каждой функции есть галочка «Останавливать дожимы после этой функции»: включи её у функции передачи заявки (уведомление в Telegram, на почту или в WhatsApp), записи или оплаты, и после неё напоминать клиенту «вы, наверное, заняты» никто не будет. Для уведомлений, которые разговор не заканчивают (вопрос менеджеру, жалоба), оставь выключенной. Бот при этом остаётся на связи: напишет клиент, ответит. Подробно: как останавливается диалог.
  • Вручную: ты можешь поставить на паузу, возобновить или отписать клиента в таблице дожимов.
  • Сообщения не доходят, дожимы останавливаются сами. Если наше напоминание целых 3 дня висит на одной галочке (WhatsApp не показывает, что тебя заблокировали, но сообщение в этом случае так и не доходит), а клиент после него не писал, дожимы ему отменяются. Каждое следующее сообщение человеку, который нас заблокировал, повышает риск жалобы и блокировки твоего номера. Такие люди собраны в списке «Не доставляется» на странице дожимов (вместо слова «заблокировал» там написано «Похоже, заблокировал» или «Не доходит»: точно знать это нельзя). Кнопка «Вернуть» снова включает человека в напоминания и рассылки. Если он напишет сам, пометка снимается без твоего участия. Список появляется, только когда в нём есть люди.

Статусы подписчиков

СтатусЗначит
АктивныйВ работе, дожимы идут
ПаузаВременно остановлен (тобой или «свяжусь сам»)
ЗавершёнВсе касания отправлены
ОтменёнОтписан вручную
ОтписалсяКлиент попросил не писать

Проверь и подсмотри, что отправится

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

Частые ошибки

СимптомПричинаЧто делать
Дожимы не идут вообщеFollow-up выключены на уровне проектаВключи «Follow-up включены» в разделе
Клиент получил дожим, хотя просил не писатьНе сработал стопПроверь, что у бота есть функция stop_dialog
Клиент сдал всю анкету, а дожимы всё равно идутФункция передачи заявки не сработала (например, бот удалён из твоей Telegram-группы)Открой диалог, если на нём стоит пометка «Ответь вручную», значит заявка тебе не доставилась, проверь настройки функции передачи
Хочу задержку «полчаса»Минимум 15 минутПоставь 30 минут: это разрешено
Дожим пришёл слишком навязчивоСлишком частые касанияУвеличь задержки, убери лишние касания

Вопросы, которые обычно возникают

Дожим выключает бота?
Нет. Дожим это напоминание. Бот продолжает отвечать в чате как обычно.

Что если клиент ответит на дожим?
Отлично, диалог продолжается обычным образом, дальнейшие касания не нужны (бот видит активность).

Можно совсем без текста, чтобы ИИ сам?
Да, тип «ИИ + история диалога»: бот сам сочинит уместное напоминание по контексту.


Под капотом

  • Задержки хранятся как delay_hours (дробное число), а в интерфейсе показываются человеческими единицами (минуты/часы/дни/недели) через DelayInput + formatDelayHuman. Минимум, 0.25 ч (15 минут), максимум, 720 ч (30 дней). Дробные часы пользователю не показываются.
  • Время следующего касания = max(последнее сообщение клиента, дата дожима, создание) + delay_hours.
  • Движок дожимов «тикает» регулярно (внешний планировщик QStash, ~каждые 5 минут).
  • Статусы подписчика: active / paused / completed / cancelled / opted_out. Пауза «свяжусь сам» это snoozed_until (per-subscriber), не трогает ai_on.
  • Связь с функциями: `pause_followups` ставит snooze; `stop_followups` переводит подписчика в cancelled, не трогая ai_on; `stop_dialog` выключает бота + отменяет дожимы (триггер БД). Общее правило: бот выключен в диалоге по любой причине → дожимы этого чата отменены.

Простыми словами

Дожимы это вежливые напоминания тем, кто заинтересовался и пропал. Ты заранее настраиваешь: через сколько и что написать. Например, через два часа, «остались вопросы?», через день, ещё разок, ещё через день: предложение попробовать. Можно дать боту самому придумывать текст по ходу разговора: так живее. Бот умный, если клиент сказал «напишу сам в четверг», напоминания подождут до четверга, а если попросил «не пишите», бот их отменит, чтобы не злить человека. В итоге ты возвращаешь часть клиентов, которые иначе бы просто потерялись.


Дальше: → Лиды
Связано: Функции · Лиды · Диалоги

Документация › Инструменты бота › Правила и комментарии

Правила и комментарии

Правило срабатывает само, без участия модели: клиент написал слово «стоп», и бот замолкает; спросил адрес, и уходит точный ответ с картой; бот создал заявку, и вам приходит уведомление. Правило собирается из трёх частей: когда, если и то. Для Instagram отдельная вкладка «Комментарии»: ответ автору комментария в директ и публично под постом.

⏱ 7 мин · 👤 для владельца и оператора · 🟢 live

За 30 секунд:
  • Автоматизации → Правила. Начните с готового набора для своей ниши («Включить набор») или нажмите «Новое правило».
  • Когда: клиент пишет слово, первое сообщение, клиент прислал файл, бот создал заявку, тег добавлен, стадия изменилась, клиент оплатил и другие поводы.
  • То: до трёх действий: ответить текстом, отправить файл, подсказать боту, поставить тег, перевести стадию, выключить бота, сообщить мне, дёрнуть вебхук.
  • «Проверить» показывает, какое правило сработает на фразу, ещё до включения.

Из чего состоит правило

Когда (повод):

ПоводКогда срабатывает
клиент пишетв сообщении есть ключевое слово (до 30 слов на правило). «Содержит слово» ищет с начала слова: «прайс» найдёт «прайслист», а «book» не сработает на «facebook»
первое сообщение клиентачеловек написал впервые
клиент прислал файлфото, документ, голосовое
бот создал заявкупоявилась карточка в «Лидах»
бот записал поле анкетынапример, бот узнал город или бюджет
бот выполнил функциюфункция отработала успешно
тег добавлен · стадия изменилась · статус лида изменилсясмена в карточке
бот передал разговор человекуэскалация на оператора
клиент оплатилпришла оплата по счёту
появилась запись · запись отмененасобытия раздела «Записи»
Instagram: комментарий, ответ на сторис, упоминание в сторис, переход по ссылке ig.meтолько для Instagram

Если (условия, необязательно): канал, статус лида, тег. Правило сработает, только если диалог им подходит.

То (до трёх действий):

ДействиеЧто делает
ответить текстомточный ответ без модели (до трёх вариантов, уходит случайный)
отправить файлфайл из медиа-библиотеки с подписью
подсказать ботубот отвечает сам, но с вашей подсказкой на этот ход
поставить тег · перевести стадиюмолча меняет карточку; стадия двигает и сделку в CRM, если вы сопоставили её в окне CRM
выключить бота в диалогедальше отвечает человек
сообщить мнеуведомление в ваш Telegram или на почту
дёрнуть вебхукPOST на ваш адрес

Частота: каждый раз, раз на диалог или раз на человека.


Как правило уживается с ботом

  • Точный ответ уходит вместо ответа модели, и денег за модель на этот ход не тратится. Подсказка боту, наоборот, оставляет ответ модели, но направляет его.
  • На одно событие отвечает одно правило с сообщением, первое по порядку в списке. Второе промолчит и останется в ленте с пометкой «клиенту уже ответило правило выше по списку»: два текста подряд это уже рассылка. Порядок меняют кнопки «Выше» и «Ниже» у правила.
  • Бот выключен в диалоге (оператор отвечает сам): правила с сообщениями молчат, а тег, стадия и уведомление работают.
  • Защита от зацикливания: не больше 5 срабатываний в час и 30 в сутки на один диалог. Правило, поставившее тег, не запускает правила «тег добавлен».
  • Отказ доставки попытку не сжигает: «раз на человека» считается по успешным срабатываниям.

Внизу страницы лента срабатываний: какое правило, на какой диалог, что сделало. В отчёте владельцу строка «Правила: сработали N раз, ответили клиентам без ИИ: M».


Проверить до включения

Блок «Проверить»: впишите фразу клиента («а цена какая?»), отметьте, первое ли это сообщение и есть ли вложение. Платформа покажет, какое правило сработает, или скажет «Ни одно правило не сработает: бот ответит сам». Условия «Если» здесь не проверяются, они зависят от конкретного диалога.


Комментарии в Instagram

Вкладка Автоматизации → Комментарии. Самое частое правило: «написали "цена" под постом, и прайс уходит автору в директ, а под комментарием короткий публичный ответ».

  • Написать автору в директ: одно сообщение на комментарий, до 1000 байт (около 500 русских букв).
  • Ответить под комментарием: короткий публичный ответ, минимум два варианта: одинаковый текст под сотней комментариев Instagram считает спамом и может ограничить аккаунт. Варианты чередуются сами. Пишете «ответили в директ», добавьте «не видите, загляните в Запросы»: тому, кто на вас не подписан, Instagram кладёт сообщение в папку запросов, и человек решает, что ему ничего не пришло. В готовых правилах эта подсказка уже стоит.
  • Только подписчикам Instagram (галочка у ответа в директ): вместо текста автору приходит кнопка «Получить». Нажал и подписан на ваш аккаунт: получает ваш текст. Не подписан: просьба подписаться (её можно написать своими словами) и кнопка «Я подписался»; после подписки тот же текст, а после трёх неудачных проверок разговор ведёт обычный бот. Та же галочка есть у ответа на слово в директе. Свои кнопки и фразы проверка пишет на языке вашего текста: русском, казахском или английском. Риск: правила Instagram против спама не одобряют обмен подписки на обещанное; многие так делают, но после жалоб Instagram может урезать охват аккаунта.
  • Ответить ИИ на вопрос: бот сам отвечает на настоящие вопросы под постами («Как к вам записаться?»), если ответ есть в промпте, информации о компании или базе знаний. Похвалу, эмодзи и спам пропускает, выдумывать запрещено. Ответ публично под комментарием или автору в директ. Готовое правило «Вопрос в комментарии → ответ ИИ» есть в наборе, включается вами. Ставьте его ниже правил по словам: на одно событие отвечает одно правило, и слово важнее. Каждый проверенный комментарий оплачивается с баланса, как ответ бота: до 60 в час, остальные ждут следующего часа.
  • Платформа держит ограничения Meta сама: не больше одного ответа на комментарий, свои потолки в час (60 публичных ответов и 200 сообщений в директ на проект).
  • Комментарий не теряется. Instagram изредка не присылает уведомление о комментарии, и правило о нём не узнаёт. Поэтому платформа раз в 10 минут сама сверяет комментарии под 15 последними публикациями и отвечает тем, кого пропустила. Такой ответ приходит с задержкой до 10-15 минут, в ленте комментариев он выглядит как обычный. Комментарии в эфире так не проверяются: Instagram не отдаёт их списком.
  • Ответ не теряется. Упёрлись в потолок часа, Meta временно не ответила, доступ к Instagram отозван или автоматика остановлена: ответ ждёт и уходит позже сам, пока Instagram его принимает (до 7 дней после комментария). В ленте он помечен «уйдёт позже», и второй комментарий того же человека не встанет в очередь вторым ответом.
  • Справа лента «Последние комментарии»: что писали под постами и сработало ли правило.

Ответ на сторис и переход по ссылке ig.me приходят в обычный диалог, а правила на них настраиваются здесь же. Подключить Instagram: Подключить Instagram.

ℹ️ На вкладке написано, что у канала нет доступа к комментариям: Instagram подключали без галочки «комментарии». Отключите его во вкладке «Каналы» и подключите снова со всеми галочками, правила сохранятся.

Простыми словами

Правило это «если случилось вот это, сделай вот то», и делает его платформа сама, без раздумий модели. Клиент написал «стоп»: бот замолкает. Спросил адрес: уходит готовый ответ с картой. Бот создал заявку: вам сообщение в Telegram. Начните с готового набора для своей ниши и проверьте фразой, прежде чем включать.


Дальше: → Теги
Связано: Дожимы · Уведомления владельцу · Записи · Подключить Instagram
Не получилось? → Функция не вызывается или падает

Документация › Инструменты бота › Теги и сегментация

Теги и сегментация

Теги это ярлыки на клиентах («VIP», «опт», «недозвон»), которые бот ставит сам по ходу разговора. По ним потом удобно фильтровать лидов и понимать, кто есть кто.

⏱ 6 мин · 👤 для владельца и оператора · 🟢 live

За 30 секунд:
  • Теги, свободные ярлыки на лиде (до 20 на одного): VIP, опт, Астана, недозвон.
  • У проекта, созданного с 14 сентября 2026, функция «Помечать лида тегами» уже включена, а стартовый набор тегов собран из трёх ответов при создании проекта. У проектов постарше функцию нужно включить в разделе Функции: без неё теги ставит только оператор вручную.
  • На странице «Теги» заводите теги с описанием, его видит и оператор, и бот (бот тегает осмысленнее).
  • Бот сначала выбирает из существующих тегов, и только если ничего не подходит, создаёт новый (если это разрешено под-флагом). Новый тег бота помечается бейджем «создано ИИ».
  • Бот добавляет теги, не стирая уже стоящие. Снять тег может оператор.
  • В разделе «Лиды» можно фильтровать по тегам (логика «И»); на странице «Отчёты» виден весь список тегов с числом лидов за период и выгрузкой в CSV.
Раздел «Теги»: авто-разметка клиентов ботом для сегментов и фильтров
Раздел «Теги»: авто-разметка клиентов ботом для сегментов и фильтров

Шаг 1. Заведите теги (с описанием)

Откройте страницу «Теги» проекта и создайте нужные ярлыки. У каждого тега, кроме имени и цвета, есть описание: короткое пояснение, что этот тег значит («VIP = чек от 1 млн», «Недозвон = не берёт трубку 2+ раза»).

Описание важно вдвойне: его читает бот, и тегает осмысленнее, а не угадывает по одному имени. Описание можно добавить при создании или отредактировать позже (иконка ✎).

Теги бывают двух «авторов»: заведённые оператором и созданные ботом (бейдж «создано ИИ»), но в работе это один общий набор.


Шаг 2. Включите функцию «Помечать лида тегами»

Чтобы бот ставил теги сам, в проекте должна быть включена функция «Помечать лида тегами» (раздел Функции). У нового проекта она стоит с рождения, проектам, созданным до 14 сентября 2026, её добавляют из каталога. Пока она выключена, бот теги не трогает, их ставит только оператор.

У функции два переключателя. Первый, «Разрешить боту создавать новые теги»:

  • включён, если подходящего тега в списке нет, бот заведёт новый (коротко, 1-3 слова) и сам добавит ему описание; тег появится на странице «Теги» с бейджем «создано ИИ»;
  • выключен: бот выбирает только из тегов, которые вы уже завели; ничего нового не придумывает.

Второй, «Разрешить боту снимать/менять теги»: по умолчанию бот только добавляет теги и не трогает уже стоящие. Включи, если хочешь, чтобы он мог убрать устаревший тег (например, снять «новый», когда клиент стал «постоянным»).

После этого опишите в промпте, что отслеживать («определяй город клиента», «помечай тип запроса»). Дальше бот вешает теги по ходу разговора сам.

Важно: бот добавляет теги к уже стоящим и не стирает чужие (в том числе ваши, поставленные вручную). Регистр выравнивается автоматически: «астана» от бота и «Астана» из списка станут одним тегом. Снять тег может оператор в карточке лида.


Шаг 3. Сегментация: фильтр и отчёты

В разделе «Лиды» фильтруйте список по тегам: выберите несколько, покажутся лиды, у которых есть все выбранные теги (логика «И»). Фильтр учитывается и при экспорте: выгрузите именно нужный сегмент, а в CSV будет колонка «Теги».

На странице «Отчёты» видны все теги проекта с числом лидов по каждому за выбранный период (теги с нулём тоже видны), и есть кнопка «Выгрузить CSV»: список тегов с описаниями и количеством за период.

Блок «По тегам» по умолчанию включён и в письме-отчёте владельцу. В настройках отчёта можно выбрать, какие теги в него попадут:

  • Топ-N: N самых частых тегов за период (по умолчанию топ-5; число задаёте сами);
  • Все: все теги, которые встречались за период, от частых к редким;
  • Выбранные: только отмеченные вами теги (даже с нулём, удобно следить, что какой-то тег пока не присваивается).
💡 Зачем это на практике. Навесил ботом тег опт на оптовиков, отфильтровал, выгрузил, сделал им отдельное предложение. Или отметил недозвон, и дожимаешь именно их. Теги превращают «кучу диалогов» в управляемые группы.

Шаг 4. Теги в правилах и рассылках

Тег это ещё и переключатель для автоматики:

  • Правило с поводом «тег добавлен». Бот повесил VIP: правило сообщает вам в Telegram, переводит стадию или дёргает ваш вебхук. Правило, которое само поставило тег, следующие правила «тег добавлен» не запускает, чтобы не было петли.
  • Правило с условием «если тег». Один и тот же повод (например, «клиент оплатил») может вести себя по-разному для опт и розница.
  • Правило с действием «поставить тег». Клиент написал слово «стоп» или прислал файл, и тег ставится без модели.
  • Рассылка по тегу в Telegram и исходящие по сегменту.
  • Функция «Помечать лида тегами» понимает клиента на любом языке: категорию она определяет по смыслу разговора, а не по словам.

Простыми словами

Теги это стикеры, которые лепятся на клиентов. У нового проекта первые стикеры заводятся сами из твоих ответов при создании, а на странице «Теги» ты их правишь, добавляешь свои и подписываешь, что каждый значит. Функция «Помечать лида тегами» у нового проекта уже включена, и бот развешивает стикеры сам прямо во время разговора: поговорил с оптовиком, повесил «опт», клиент из Астаны, «Астана». Что именно отслеживать, ты говоришь боту в промпте обычными словами.

Бот не плодит дубли: сперва смотрит, какие стикеры уже есть, и берёт существующий. Можно разрешить ему придумывать новые (он сам и подпишет их) или запретить, тогда он клеит только из твоего списка. Чужие стикеры бот не срывает, только добавляет; снять может оператор. На одного человека до 20 стикеров.

Зачем всё это? Чтобы потом в «Лидах» одним кликом отфильтровать, например, всех оптовиков или всех, кому не дозвонились, и поработать с ними отдельно. А на «Отчётах» видно сразу весь список тегов с числами и можно выгрузить в файл. Без тегов у тебя просто свалка диалогов, с тегами: аккуратные группы.


Дальше: → Диалоги
Связано: Лиды · Дожимы · Аналитика · Функции
Не получилось? → Функция не вызывается / падает

Документация › Инструменты бота › Уведомления владельцу

Уведомления владельцу

Бот сам пишет вам, как только появился горячий лид или нужно вмешаться: в Telegram, в WhatsApp или на почту.

⏱ 8 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Это функция №1: бот ловит заявку в чате и сразу сообщает вам.
  • Три способа: Telegram (мгновенно, в телефоне), WhatsApp (в личку или в рабочую группу) или Email (на почту, без настройки).
  • Для Telegram нужен бот-«вестник». Если настройку ведём мы, подключаем своего, @dosaitech_bot: вам остаётся добавить его в группу. Хотите бота со своим именем, заведите его за минуту сами.
  • В тексте уведомления можно подставлять данные клиента: {{name}}, {{phone}}, {{date}} и т.п. Имя и телефон бот берёт из разговора, то есть то, что клиент сам написал; не написал, подставятся имя и номер из профиля мессенджера. Поэтому письмо из тест-чата тоже приходит заполненным.
  • После уведомления бот может замолчать в чате и передать клиента вам, а галочка «Это заявка» заведёт карточку лида и сделку в CRM.
Каталог функций: шаблоны уведомлений владельцу в Telegram и на почту
Каталог функций: шаблоны уведомлений владельцу в Telegram и на почту

Зачем это нужно

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

📌 Пример (барбершоп). Клиент пишет ночью: «запишите на завтра на 14:00». Бот предлагает время, фиксирует заявку и шлёт вам в Telegram: «Новая запись: Асан, +7 705…, завтра 14:00». Утром вы уже знаете о записи.


Способ 1. Уведомление в Telegram

Что понадобится

  • ☐ Бот-«вестник»: наш @dosaitech_bot или свой, созданный через @BotFather
  • ☐ ID чата, куда слать (ваш личный чат или группа команды)

Шаги

1. Выберите бота

Уведомления приходят от бота, поэтому бот нужен в любом случае. Вариантов два.

Вариант А. Наш бот (по умолчанию, когда настройку ведём мы). Добавьте в вашу рабочую группу @dosaitech_bot (в Telegram он подписан «DOS AI») и пришлите нам номер группы, как его узнать, в шаге 2. Токен впишем мы, вам ничего копировать не нужно. Этот бот только приносит уведомления в вашу группу: переписку с вашими клиентами он не ведёт и не читает, для клиентов работает ваш собственный канал. Если написать ему в личные сообщения, ответит помощник DOS AI: там можно задать вопрос нам.

Вариант Б. Свой бот. Подходит, если настраиваете сами или хотите, чтобы уведомления приходили от бота с вашим названием и аватаркой. Откройте в Telegram @BotFather → команда /newbot → придумайте имя и username. BotFather пришлёт токен вида 123456789:AAExxxxxxxxxxxxxxxxxxxxxx. Скопируйте его и вставьте в поле «Токен бота» на шаге 3.

⚠️ Важно. Токен это пароль от бота, кто им владеет, тот управляет ботом. Поэтому свой мы не публикуем и вписываем сами при настройке, а вы свой никому не пересылайте. В DOS AI токен хранится зашифрованным и в интерфейсе показывается как ***hidden***.

2. Узнайте ID чата

  • Личный чат: напишите боту @userinfobot, он пришлёт ваш id (число вроде 512345678).
  • Группа: добавьте бота из шага 1 в группу, затем добавьте туда же @userinfobot: он покажет ID группы (число со знаком минус, например -1001234567890).

⚠️ Бот должен быть участником группы, иначе Telegram не даст ему туда написать. И номер группы меняется, если её превратить в супергруппу или добавить темы: после такого возьмите ID заново.

3. Создайте функцию

Функции → Новая функция → Из готового шаблона → Уведомления владельцу → Уведомление в Telegram.

Заполните:

  • Токен бота, из шага 1 (если работаем мы, это поле уже заполнено);
  • ID чата, из шага 2;
  • Шаблон сообщения: текст уведомления. Кнопками-чипами вставляйте переменные: {{name}}, {{phone}}, {{summary}} и системные {{date}}, {{time}} (двойные фигурные скобки).

📌 Пример шаблона: 🔔 Новая заявка от {{name}}, тел: {{phone}}\n{{date}} {{time}}.

4. Опишите, КОГДА слать

В поле «Когда боту это вызывать» опишите повод: например «когда клиент назвал имя и телефон и согласился записаться, отправь уведомление». По этому описанию ИИ решает, в какой момент дёрнуть функцию.

Что сделать после уведомления

У любой функции, и у уведомления тоже, в настройках есть раздел «После вызова»:

  • «Завершать диалог после выполнения этой функции»: после успешного уведомления бот замолкает на этом чате и передаёт клиента вам. Удобно для схемы «бот квалифицировал → дальше говорит человек».
  • «Останавливать дожимы после этой функции»: напоминания этому клиенту больше не уходят, а бот продолжает отвечать.
  • «Это заявка: создать лида и сделку в CRM»: ставьте у уведомления о заявке. Сработало, и у клиента появляется карточка в «Лидах» и сделка в подключённой CRM, даже если бот оценил его осторожнее. У уведомлений вроде «клиент задал вопрос не по теме» галочку не ставьте: это не заявка.

Способ 2. Уведомление в WhatsApp

Подходит, когда команда и так сидит в WhatsApp и заводить Telegram не хочется.

Функции → Новая функция → Из готового шаблона → Уведомления владельцу → Уведомление в WhatsApp. Укажите:

  • Куда слать: ваш номер в международном формате (+7 705 …) либо ID рабочей группы WhatsApp вида 120363…@g.us;
  • Текст сообщения с теми же переменными {{client_name}}, {{phone}}, {{channel}}.

Уведомление уходит с того же номера, который подключён к проекту как канал, поэтому WhatsApp у проекта должен быть подключён и на связи.

Если в тексте стоит подстановка, которую ничем не заполнить (например, {{course}}, а такого параметра у функции нет), редактор под полем текста напишет красным: «Эти подстановки ничем не заполнятся и придут пустыми». То же для Telegram и почты. Исправьте имя или добавьте параметр, иначе в уведомлении будет «Курс: » без значения.

⚠️ Своему же номеру бот не пишет: если указать номер канала, платформа отклонит отправку. Это защита от петли «бот написал себе и сам себе ответил».

Способ 3. Уведомление на почту

Самый простой вариант: работает сразу, ничего создавать в сторонних сервисах не нужно.

Функции → Новая функция → Из готового шаблона → Уведомления владельцу → Уведомление на почту. Укажите:

  • Email: куда слать;
  • Тема и Текст письма это с теми же переменными {{name}}, {{phone}}, {{date}}.

Письмо приходит вам с адреса noreply@dosai.pro.

Проверь, что работает

Откройте функцию → кнопка «Проверить» → заполните примеры значений → бот отправит тестовое уведомление вам в Telegram, в WhatsApp или на почту. В Telegram тестовое сообщение помечается префиксом «🧪 ТЕСТ».

Частые ошибки

СимптомПричинаЧто нажать
Уведомление не приходит в TelegramВы не написали боту первым / неверный chat_idНапишите боту любое сообщение; перепроверьте ID через @userinfobot
В группу не приходит, лично приходитБота убрали из группы или группу пересобралиДобавьте бота в группу заново и возьмите её ID ещё раз
Письмо не приходитОпечатка в адресеПроверьте email в настройках функции

Вопросы, которые обычно возникают

Можно слать в группу, а не лично?
Да. Добавьте бота в группу и используйте ID группы (с минусом).

Бот будет слать на каждое сообщение клиента?
Нет, только когда выполнено условие из описания (например, собраны имя и телефон). Опишите повод точно.

Обязательно заводить своего бота?
Нет. Если проект настраиваем мы, подключаем @dosaitech_bot, и вам остаётся добавить его в группу. Свой нужен в двух случаях: вы настраиваете сами (тогда поле «Токен бота» ждёт ваш токен) или хотите, чтобы уведомления приходили от бота с вашим названием и аватаркой. Перейти с нашего на свой можно в любой момент: создали бота у @BotFather, добавили в ту же группу, заменили токен в функции.

Ваш бот сидит в нашей группе. Он видит, что мы там пишем?
Нет. У него включён режим приватности Telegram: обычные сообщения группы боту просто не приходят, он их не получает. К переписке с вашими клиентами он тоже отношения не имеет, она идёт через ваш собственный канал WhatsApp, Instagram или Telegram. Если всё равно не хотите чужого бота в рабочей группе, заведите своего, вариант Б выше.


Под капотом

  • Telegram-уведомление: встроенная функция типа builtin_telegram; токен шифруется (AES-GCM), не хранится в открытом виде.
  • Токен обязателен: платформа не подставляет никакого бота «по умолчанию» сама. Когда проект настраиваем мы, в это поле уходит токен @dosaitech_bot, когда вы сами, ваш токен от @BotFather.
  • Тестовый чат помечает сообщение префиксом «🧪 ТЕСТ», чтобы не путать с боевым.
  • «Завершать диалог» ставит conversations.ai_on=false с причиной hand-off; включить бота обратно можно кнопкой «AI» в шапке диалога.
  • Email-уведомление (builtin_email) уходит через Resend с таймаутом 15 секунд; получатель: один адрес (множественные через запятую отклоняются как защита от рассылки).
  • WhatsApp-уведомление (builtin_whatsapp) уходит через канал проекта: одно и то же сообщение одному получателю не чаще раза в минуту, отправка себе заблокирована, при отключённом канале функция честно отвечает «номер сейчас не подключён» вместо тихого пропуска.

Простыми словами

Бот, как администратор, который сидит в чате круглосуточно. Когда приходит «горячий» клиент, бот толкает вас в плечо: «эй, тут заявка», и пишет вам в телеграм или на почту. Вы не читаете все переписки, а подключаетесь только когда реально нужно.


Дальше: → Запись на время
Связано: Функции · Письмо клиенту
Не получилось? → Функция не срабатывает

Документация › Инструменты бота › Запись на время

Запись на время

Бот сам показывает свободное время и записывает клиента: простым способом через Google Calendar или «движком окошек» для нескольких специалистов.

⏱ 12 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Три способа записи: выберите под свой бизнес (ниже шпаргалка).
  • Google Calendar: один специалист, простой график.
  • Движок окошек: несколько мастеров, график в таблице, обеды/отпуска/ограничения.
  • Google Таблицы, если вы уже ведёте слоты строками в таблице.
  • Ресторан на кассе iiko или учебный центр в АльфаCRM: бот записывает прямо в вашу систему, отдельная функция записи не нужна (iiko, АльфаCRM).
Каталог функций: шаблон записи на свободные окошки (Google Календарь / движок слотов)
Каталог функций: шаблон записи на свободные окошки (Google Календарь / движок слотов)

Как выбрать способ

Ваша ситуацияСпособ
Один мастер/кабинет, простой графикGoogle Calendar: бот смотрит занятость календаря и записывает
Несколько одинаковых объектов: бани, кабинеты, корты, столики, домикиGoogle Calendar: один календарь на группу, «Записей на одно время» = сколько объектов в группе
Несколько специалистов, график в таблице, есть обеды, отпуска, ограничения по дням/возрастуДвижок окошек: сервер сам считает свободные слоты, бот не ошибается
Вы уже ведёте слоты строками в таблицеGoogle Таблицы (см. статью про Таблицы)
Ресторан или кафе, брони ведутся на кассе iikoИнтеграция iiko: бот видит брони кассы, подбирает комнату или стол и ставит бронь прямо на кассу (см. iiko)
Учебный центр, расписание в АльфаCRMИнтеграция АльфаCRM: бот смотрит расписание и записывает на занятие в CRM (см. АльфаCRM)

Способ A. Google Calendar (один специалист)

Что понадобится

  • ☐ Google-календарь
  • ☐ Доступ для сервис-аккаунта (одна кнопка в настройках функции)

Шаги

  1. Функции → Новая функция → Из готового шаблона → Запись на время → группа «Google Calendar». Здесь 5 готовых действий: проверить свободное время, записать, перенести, показать записи, отменить.
  2. Сначала откройте доступ. Наверху настроек функции есть панель с адресом сервис-аккаунта и кнопкой «Копировать». В Google Календаре: нужный календарь → «Настройки и общий доступ» → «Добавить пользователей или группы» → вставьте этот адрес, выберите право «Изменять и просматривать все сведения о мероприятиях» и нажмите «Отправить». Без этого шага проверка на шаге 4 не пройдёт, боту просто некуда смотреть.
  3. Укажите Календарь это ID вашего календаря: для основного его ID = ваш email в Google (например ivan@gmail.com), для отдельного календаря адрес вида ...@group.calendar.google.com (он лежит там же, в настройках календаря, раздел «Интеграция календаря»). Можно вставить ссылку из адресной строки, ID вытащится сам. ⚠️ Слово primary не подойдёт, так бот попадёт в свой технический календарь, вам не видимый, и записи «пропадут».
  4. Нажмите «Проверить подключение». Зелёный ответ покажет, сколько событий бот видит, красный назовёт причину.
  5. Настройте расписание работы: рабочие дни, часы, обед, длительность слота, минимальный запас до записи. Это настройки самой функции: бот будет предлагать только время внутри них.

⚠️ Важно. Расписание работы задаётся прямо в настройках функции «Проверить свободное время». Бот предлагает слоты строго в этих рамках.

📌 Пример (стоматология). Функция «Записать клиента» с длительностью слота 60 минут, рабочие дни Пн-Сб 9:00-19:00, запас 60 минут. Бот не запишет на ближайший час и не предложит воскресенье.

Если объектов несколько и они одинаковые

Бани, кабинеты, корты, столики, домики: бот не выбирает конкретный объект, он считает, СКОЛЬКО их занято на это время. Кто именно поедет в баню номер 3, решаете вы, как и сейчас.

  1. Заведите один календарь на группу одинаковых объектов.
  2. В функции «Проверить свободное время» поставьте «Записей на одно время» = сколько объектов в группе. Четыре бани, значит 4: пятого клиента на это время бот уже не запишет.
  3. То же число продублируйте в функции «Записать клиента». Без этого она возьмёт вместимость у первой попавшейся функции проверки, и при нескольких группах числа перепутаются.

Объекты разной вместимости или цены это разные группы. У каждой свой календарь и своя пара функций «проверить» и «записать», иначе бот отправит компанию из 25 человек туда, где помещается 10.

📌 Пример (база отдыха). 4 бани, 7 юрт до 10 гостей и 2 больших юрты. Это 3 календаря и 6 функций: check_bath_slots и book_bath (вместимость 4), check_yurt_small_slots и book_yurt_small (7), check_yurt_big_slots и book_yurt_big (2). Имена функций должны отличаться, имя правится в мастере, раздел «Расширенные настройки».

💡 Свои брони, которые вы ставите руками, вносите в тот же календарь. Бот считает занятость по нему целиком и не различает, кто создал событие.

Способ B. Движок окошек (несколько специалистов)

Одна функция вместо цепочки «прочитай график → возьми занятость → посчитай сам». Сервер сам учитывает часы по дням, обеды, отпуска, ограничения дней и возраст, и отдаёт боту готовый список свободных слотов с именами специалистов.

Что понадобится

  • ☐ Google-таблица с графиком специалистов
  • ☐ Список услуг (заполняется в конструкторе: без JSON руками)
  • ☐ (если берёте занятость из CRM) подключённая АльфаCRM

Формат листа-графика

Лист должен содержать колонки: специалист, услуга (предмет), минимальный возраст, дни работы с часами, обеды, комментарии. Имена колонок по умолчанию: «Преподаватель», «Предмет», «Минимальный возраст», «Обеды», «Комментарии». Если у вас они называются иначе в настройках функции есть раздел «Колонки в листе называются иначе?».

Дни ведутся одним из двух способов, сервер определяет его сам по заголовкам:

СпособКак выглядят колонкиКогда удобнее
Неделясемь колонок пн вт ср чт пт сб вс, одна и та же неделя повторяетсяграфик стабильный, меняется редко
Календарьпо колонке на дату: 22.06.2026, 23.06.2026, …часы плавают, отпуска и подмены видно прямо в ячейке дня

В календарном режиме день, для которого колонки ещё нет, считается «расписание не заведено» и не показывается: бот не будет записывать в дату, которую вы не заполняли. Если весь запрошенный период за последней заполненной колонкой, функция так и скажет, вместо пустого списка, который читается как «все заняты». Держите заполненными хотя бы 2-3 недели вперёд.

В ячейках дней пишутся часы работы: 11:00-18:00, можно с перерывом 11:00-15:00 и 16:00-21:00. Пустая ячейка, в, вых или слово Отпуск означают, что в этот день специалист не работает. Маркеры в ячейке: (без ПЗ) это «в этот день новых на пробное не ставим», (день ПЗ) это «день выделен под пробные».

Какие фразы в колонке «Комментарии» сервер понимает

Пишите как удобно: понятные формы разбираются мгновенно, а необычную формулировку дочитывает ИИ (один раз, результат запоминается). Самые надёжные формы:

Пишите такКак поймёт сервер
«Пробные только во вторник, четверг и субботу»пробные разрешены лишь в эти дни
«Ни в одно воскресенье не ставить пробные»воскресенье вычёркивается
«Пробные занятия не ставить»специалист не берёт пробных вообще
«Не работает 13 и 14 августа», «Отпуск с 2.08 по 7.08», «больничный до 15.08»эти даты вычёркиваются

Одна мысль на фразу, разделяйте точкой.

💡 Условие, которое выполняет человек («по договорённости», «после согласования с мастером»), не прячет специалиста: бот покажет его время и предупредит клиента, что запись подтвердит менеджер, а бронировать сам не станет.

⚠️ Если смысл фразы непонятен даже ИИ, специалист скрывается с пометкой менеджеру. Лучше не показать того, кого можно, чем записать клиента к тому, кого нельзя. Такие случаи видно на экране «Проверка графика», и о них приходит уведомление.

Шаги

  1. Функции → Новая функция → Из готового шаблона → Запись на время → Свободные окошки для записи.
  2. Укажите ID Google-таблицы с графиком и нажмите проверку подключения. Затем «Найти лист автоматически»: сервер сам выберет лист с графиком и определит, как названы колонки, вам останется подтвердить.
  3. Услуги заполняются в конструкторе, для каждой услуги: название (как в колонке «Предмет»), синонимы через запятую, минимальный возраст, и (если занятость из CRM) branch_id / subject_id из вашей АльфаCRM.
  4. Источник занятости: «АльфаCRM (занятые уроки)» (берёт занятые уроки из CRM) или «Только график» (без CRM).
  5. Параметры окна: длительность слота, за сколько дней минимум можно записаться, горизонт показа (максимум 14 дней), окно работы бизнеса, таймзона.

💡 Совет. Не вводите JSON руками: конструктор услуг и колонок соберёт его за вас. Кнопка «Редактировать как JSON» оставлена на случай тонкой правки.

Напоминание клиенту перед визитом

Записали человека, дальше он про это забывает. Платформа напомнит сама, в тот же чат, где он записывался.

Где включить: Автоматизации → Записи. Настройки одни на весь проект: сколько бы у вас ни было функций записи (баня 1, баня 2), напоминания для всех включаются одним тумблером. Там же подтверждение «вы записаны», тексты, ночное окно и список всех записей с судьбой каждого сообщения. Подробно: Подтверждение и напоминания о записи.

  • Перенос записи двигает напоминания за собой, отмена снимает их.
  • Отправленное напоминание видно в переписке с пометкой «Напоминание».
  • В тест-чате напоминания не отправляются, это не сбой.
  • Запись, которую вы занесли в календарь руками, бот не видит. Если записи ведутся в вашей CRM, её можно подключить: см. статью по ссылке выше.

Проверь, что работает

Движок окошек: откройте функцию → «Проверить график». Это главный экран самопроверки: он показывает, что сервер понял из вашей таблицы: кого видит, что вычитал из каждого комментария, кто скрыт и почему, до какой даты заполнено расписание. Если кто-то из специалистов не появляется у клиентов, ответ будет здесь.

Дальше «Проверить» → передайте услугу (и возраст, если нужен) → вернётся список свободных слотов. Для Calendar: проверьте, что слоты попадают в ваши рабочие часы.

💡 Работа за полночь. Заведение работает ночью (сауна, караоке, доставка): в функции Calendar укажите конец раньше начала, например «с 11:00 до 02:00». Бот поймёт это как «до двух часов ночи следующего дня» и будет предлагать ночные окна, а под полями появится подсказка «Работа через полночь». Круглосуточно задаётся как 00:00-23:59. Подробно: Google Календарь.

⚠️ Когда график мешает записи (лист переименовали, специалиста пришлось скрыть, колонки с датами кончились), приходит уведомление владельцу: не чаще раза в сутки, чтобы не превратиться в шум.

Частые ошибки

СимптомПричинаЧто нажать
Бот предлагает время вне рабочих часовРасписание не настроено или взяты дефолтыОткройте функцию «Проверить свободное время», задайте часы/дни
Бот записал на 14:00, а в календаре 09:00 или 19:00Часовой пояс проекта не совпадает с часами бизнесаВкладка «Общие» → часовой пояс проекта; время записи бот ставит по нему
«нет специалистов по услуге»Название услуги не совпадает с колонкой «Предмет»Сверьте название/синонимы в конструкторе услуг
Не считается занятостьНе подключена АльфаCRM или нет branch_idПодключите CRM, заполните branch_id/subject_id
«Лист … не найден», в ответе перечислены другие листыЛист переименовали в таблицеВпишите новое имя листа в настройках функции
«не найдены ни колонки дней недели, ни колонки с датами»Поменяли раскладку листа или дни лежат не в заголовкахВерните дни в заголовки колонок: либо пн…вс, либо даты ДД.ММ.ГГГГ
«в графике нет колонок на даты …»Календарный лист заполнен по прошедшую датуДозаполните колонки на 2-3 недели вперёд
Специалист работает, но бот его не предлагаетКомментарий в графике не распознан, либо он не сматчился с CRM по имениПроверьте формулировку (см. таблицу выше); имя в графике должно совпадать с именем в CRM

Вопросы, которые обычно возникают

Можно показывать запись на сегодня?
Да: поставьте «Запись минимум за» = 0.

Сколько дней вперёд показывает движок окошек?
До 14 дней (горизонт настраивается).


Под капотом

  • Движок окошек: builtin_booking (find_free_slots), пересечение графика из Sheets ∩ RU-ограничений из комментариев ∩ занятости из edu-CRM. Модель не делает табличную математику: получает готовый ответ.
  • Google Calendar: builtin_calendar; расписание читается из настроек функции (builtin_config): рабочие дни/часы/слот/запас/таймзона.
  • Услуги хранятся в services_json, имена колонок: в columns_json; конструктор сериализует их за вас.

Простыми словами

Представьте администратора, который наизусть знает график всех мастеров: кто когда работает, у кого обед, кто в отпуске, кого нельзя ставить детям. Клиент говорит «хочу на гитару»: администратор мгновенно называет реальные свободные окошки. Движок окошек это и есть такой администратор внутри бота. А если мастер один, хватит простого календаря.


Дальше: → Бот выставляет счёт
Связано: Google Таблицы · Google Calendar
Не получилось? → Функция не срабатывает

Документация › Инструменты бота › Бот выставляет счёт

Бот выставляет счёт (Kaspi)

Бот сам выставляет клиенту счёт прямо в чате: клиент платит через push в Kaspi, деньги идут на вашу Kaspi-кассу.

⏱ 7 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Клиент готов платить → бот создаёт счёт → клиенту приходит push в приложение Kaspi.
  • Деньги идут напрямую на вашу Kaspi-кассу.
  • Сначала подключите платежи в разделе «Приём оплат» проекта.
  • Бот сам спрашивает у клиента сумму и номер, не выдумывает.
  • Отправив счёт, бот называет номер вслух и предлагает перевыставить, если Kaspi на другом телефоне.
Раздел «Приём оплат»: онбординг Kaspi-кассы и управление счетами клиентов
Раздел «Приём оплат»: онбординг Kaspi-кассы и управление счетами клиентов

Зачем это нужно

Чтобы не уводить клиента из переписки на сторонние ссылки. Договорились, бот тут же выставил счёт, клиент подтвердил оплату в Kaspi, не выходя из диалога. Меньше шагов, больше оплат.

📌 Пример (интернет-магазин). Клиент: «беру, сколько с меня?» Бот: «3 500 ₸, отправляю счёт на ваш номер». Клиенту приходит push в Kaspi, он подтверждает, заказ оплачен.

Что понадобится

  • ☐ Подключённые платежи: раздел «Приём оплат» проекта (мастер подключения)
  • ☐ Kaspi-касса бизнеса

Шаги

  1. Подключите платежи: Интеграции → Приём оплат и пройдите мастер. Без этого функция вежливо ответит клиенту, что оплата временно недоступна.
  2. Функции → Новая функция → Из готового шаблона → Приём оплаты (Kaspi) → Выставить счёт на оплату.
  3. (необязательно) Задайте описание по умолчанию: оно появится в Kaspi-push и чеке, если бот не передаст своё.
  4. В поле «Когда боту это вызывать» опишите момент: «когда клиент согласился оплатить и назвал сумму, выстави счёт».

Что бот собирает у клиента

  • Сумму в тенге (минимум 50, максимум 10 000 000);
  • Номер телефона, привязанный к Kaspi (любой казахстанский формат);
  • За что платит, короткая строка для чека.

Клиенту приходит push в приложение Kaspi: подтвердить нужно в течение 30 минут.

Управление в разделе «Приём оплат»

После подключения раздел «Приём оплат» показывает всё по оплатам проекта, обновляется сам, без перезагрузки страницы:

  • Сводка сверху: сколько получено за месяц и всего, сколько счетов ждут оплаты, сумма возвратов.
  • История счетов: кто, когда, на сколько и статус каждого счёта. Фильтр по статусу (все / ждут оплаты / оплачены / возвраты / отменены) и экспорт в CSV (для бухгалтерии).
  • Выставить счёт вручную, кнопка для счёта без диалога: указываете сумму, номер клиента и описание, клиенту приходит push в Kaspi.
  • Отменить неоплаченный счёт, если клиент передумал, счёт можно закрыть, чтобы он не висел.
  • Вернуть оплату по оплаченному счёту можно сделать возврат: полностью или часть суммы. Деньги уходят обратно на Kaspi клиента.

Проверь, что работает

В тест-чате счёт выставляется по-настоящему: назовите боту свой номер и получите push в Kaspi (или ссылку на оплату). Сумма тестового счёта всегда 100 ₸ (у кассы в сомах 100 сом): настоящую цену бот называет словами, а тест-чат пишет её пометкой под счётом. Счёт помечен «ТЕСТ» и через 10 минут откатывается сам: оплата возвращается, неоплаченный счёт отменяется, сбор платформы за тестовую оплату не берётся. Платить не обязательно: достаточно увидеть push. Счёт появится в истории раздела «Приём оплат».

Частые ошибки

СимптомПричинаЧто нажать
«оплата временно недоступна»Платежи не подключеныПройдите мастер в разделе «Приём оплат»
Бот просит сумму повторноКлиент не назвал сумму чёткоЭто нормально, бот не выдумывает сумму
Бот говорит клиенту «на этом номере Kaspi не найден»Клиент назвал номер, к которому Kaspi не привязан. Платформа уточняет это у Kaspi, счёт не выставляетсяНичего: бот сам просит номер, к которому привязан Kaspi, и выставляет счёт на него. Тревога владельцу в этом случае не приходит, касса исправна
Push не пришёл клиентуНеверный номер или не Kaspi-номерБот называет номер прямо в сообщении о счёте: клиенту достаточно ответить, что Kaspi на другом телефоне, и бот выставит счёт заново сам. Если он этого не сделал, уточните номер и выставьте счёт вручную

Вопросы, которые обычно возникают

Где деньги, у DOS?
Нет. Деньги идут напрямую на вашу Kaspi-кассу. DOS, только софт, который помогает выставить счёт.

Какая минимальная сумма?
50 ₸.


Под капотом

  • Встроенная функция builtin_owner_payment: создаёт счёт в кассе владельца и шлёт Kaspi-push. Валидация суммы (50 … 10 000 000 ₸) и номера: до обращения к провайдеру.
  • Структурированные коды ошибок (sub_merchant_not_connected, kaspi_auth_lost и т.п.) дают боту понять, как ответить клиенту.
  • В тест-чате счёт настоящий, но тестовый, всегда на 100 ₸: бот называет настоящую цену и говорит, что через 10 минут оплата вернётся, а неоплаченный счёт отменится. Сказать «выставил», не вызвав функцию, бот не может ни в тесте, ни в бою: платформа сверяет слова с действиями после каждого ответа.

Простыми словами

Раньше, чтобы взять оплату, нужно было кидать клиенту ссылку или реквизиты и надеяться, что он дойдёт. Теперь бот прямо в чате выставляет счёт, клиенту в Kaspi прилетает «оплатить 3 500 ₸?», он жмёт «да», и всё. Деньги: сразу на вашу кассу.


Дальше: → Письмо клиенту
Связано: Функции
Не получилось? → Функция не срабатывает

Документация › Инструменты бота › Письмо клиенту

Письмо клиенту

Бот сам пишет клиенту письмо: подтверждение, реквизиты, инструкцию или материалы. Ответ клиента приходит на вашу почту.

⏱ 5 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Бот отправляет письмо конечному клиенту от имени вашей компании.
  • Тему и текст бот составляет сам по ходу разговора.
  • Письмо уходит с адреса noreply@dosai.pro; если клиент ответит, придёт на ваш email.
  • Работает сразу, без подключения почтового сервиса.
Каталог функций: шаблон отправки письма клиенту на email
Каталог функций: шаблон отправки письма клиенту на email

Зачем это нужно

Иногда клиенту нужно прислать что-то письмом: подтверждение записи, реквизиты для оплаты, договор, инструкцию. Бот делает это сам, не отвлекая вас.

📌 Пример (автошкола). Клиент записался на занятие. Бот: «отправил на вашу почту памятку, что взять с собой и адрес». Клиент получает письмо, бот продолжает диалог.

Что понадобится

  • ☐ Ваш email для ответов клиента

Шаги

  1. Функции → Новая функция → Из готового шаблона → Письмо клиенту → Отправить письмо клиенту.
  2. Укажите «Куда придёт ответ клиента»: ваш рабочий email. Если клиент нажмёт «Ответить» на письмо, оно придёт сюда. Оставите поле пустым: ответы придут на email, с которым вы зарегистрированы в DOS AI.
  3. В поле «Когда боту это вызывать» опишите повод: «когда клиент попросил прислать реквизиты/памятку, отправь письмо».

Тему, текст и адрес клиента бот определяет сам по разговору: тему и текст составляет, email спрашивает у клиента, если тот не назвал.

⚠️ Важно. Письмо уходит с общего адреса noreply@dosai.pro от имени вашей компании (имя проекта в поле «От кого»). Личный почтовый ящик подключать не нужно.

Проверь, что работает

Откройте функцию → «Проверить» → передайте тестовый email, тему и текст → проверьте, что письмо пришло. Ответьте на него: ответ должен прийти на указанный вами адрес.

Частые ошибки

СимптомПричинаЧто нажать
«Email клиента неразборчив»Клиент не назвал почтуЭто нормально, бот переспросит
«уже отправлено недавно»Одинаковое письмо тому же адресу в течение минутыЗащита от повторов; подождите минуту
Ответ клиента приходит не тудаАдрес для ответа не заполнен, работает запасной вариантОтветы идут на email вашего аккаунта; чтобы получать на другой адрес, заполните «Куда придёт ответ клиента»

Вопросы, которые обычно возникают

Можно слать с моего собственного Gmail?
Есть продвинутый вариант «Отправить с Gmail (Workspace)»: он требует Google Workspace и технической настройки (domain-wide delegation). Для большинства проще обычное «Письмо клиенту».

Чем это отличается от уведомления на почту?
Уведомление, вам (владельцу). Письмо клиенту, конечному клиенту.


Под капотом

  • Встроенная функция builtin_email с операцией send_customer. Отправка через Resend; from = имя проекта <noreply@dosai.pro>, reply_to: ваш email из настроек (пусто → email аккаунта владельца).
  • Гарды: один валидный адрес получателя (защита от рассылки), очистка заголовков и три ограничителя подряд: одно и то же письмо на тот же адрес не чаще раза в минуту, на один адрес не больше 5 писем в час, по проекту не больше 60 писем в сутки. Живой переписке эти числа не мешают (письмо клиенту после разговора это единицы в день), а превратить бота в рассыльщик они не дают.
  • Тему/текст/получателя передаёт модель; владелец задаёт только адрес для ответа.

Простыми словами

Бот умеет не только писать в чат, но и отправить клиенту нормальное письмо: например, реквизиты или памятку. Письмо уходит как будто от вашей компании, а если клиент ответит, ответ придёт вам на почту. Ничего настраивать не нужно, только укажите свой email.


Связано: Функции · Уведомления владельцу
Не получилось? → Функция не срабатывает

Документация › Инструменты бота › Рассылки

Рассылки по базе контактов

Появилась акция или новость? Отправь сообщение сразу всей своей базе в Telegram, с сегментами, отложенным запуском и кнопками.

⏱ 7 мин · 👤 для владельца и админа · 🟢 live

За 30 секунд:
  • Раздел «Рассылки» в левом меню (рабочие разделы открытого проекта): массовое сообщение по своим контактам.
  • Только Telegram. WhatsApp недоступен намеренно: массовая отправка грозит баном номера.
  • Сегментируй по статусу лида, тегу или рекламной кампании; перед отправкой видно охват (сколько получателей).
  • Можно отложить на будущее время и прикрепить кнопки (ответ/ссылка).
  • Кто написал «стоп», исключается автоматически. Отправка идёт постепенно (бережно к анти-бану).
Раздел «Рассылки»: массовая отправка по сегментам с отложенным запуском
Раздел «Рассылки»: массовая отправка по сегментам с отложенным запуском

Зачем это нужно

Дожимы напоминают о себе одному клиенту по таймеру. А рассылка это когда нужно сказать всем сразу: «в субботу скидка 20%», «открылся новый филиал», «записи на январь открыты». Раньше для этого пришлось бы вручную писать каждому, теперь это одно сообщение и пара кликов.

📌 Пример. Барбершоп запускает акцию на стрижку. Владелец делает рассылку по тегу «постоянный клиент» в Telegram, 140 человек получают сообщение с кнопкой «Записаться», отправка растягивается на несколько минут, никто из отписавшихся не получает спам.

Что понадобится

  • ☐ Подключённый Telegram-канал (рассылки работают только по нему).
  • ☐ Роль владелец или админ проекта (раздел доступен только им).
  • ☐ Желательно, настроенные теги, чтобы точно выбрать, кому слать.

Шаги

1. Открой раздел «Рассылки»

В левом меню нажми «Рассылки». Создай новую это кнопка вверху.

2. Выбери, кому отправить (сегмент)

Сузь аудиторию любым из фильтров (или оставь пустым, уйдёт всей базе Telegram):

  • Статус лида: например только «горячие» или «потенциальные».
  • Тег: например «постоянный клиент» или «был на пробном».
  • Рекламная кампания: только тем, кто пришёл по конкретной рекламной ссылке.
💡 Совет. Под полем сегмента сразу показывается охват, сколько контактов получат сообщение. Сверься с числом перед отправкой.

3. Напиши сообщение и (по желанию) добавь кнопки

Введи текст. Можно прикрепить до 8 кнопок:

  • Кнопка-ответ: клиент жмёт, бот получает её как сообщение и продолжает диалог.
  • Кнопка-ссылка: открывает URL (только http/https).

4. Отправь сейчас или запланируй

  • Сейчас: рассылка уходит в очередь и начинает рассылаться постепенно.
  • На потом: укажи дату и время; рассылка будет ждать в статусе «запланирована» и стартует сама в нужный момент.

Проверь, что работает

Статус рассылки меняется: черновик → запланирована → в очереди → отправляется → отправлено. В списке видно счётчики (сколько ушло). Запущенную рассылку можно отменить, пока она в очереди или ещё идёт.

Частые ошибки

СимптомПричинаЧто нажать
Нет канала для рассылкиНе подключён TelegramПодключить Telegram
Охват = 0Слишком узкий сегмент или нет Telegram-контактовОслабь фильтр (убери тег/статус)
Хочу слать в WhatsAppНамеренно недоступно (риск бана номера)Используй Telegram

Вопросы, которые обычно возникают

Почему нельзя рассылать в WhatsApp?
Массовая отправка с подключённого номера WhatsApp: самый быстрый путь к его блокировке. Поэтому рассылки ограничены Telegram на уровне системы, а не спрятаны в интерфейсе.

А если человек просил больше не писать?
Контакты, которые написали «стоп» (отписались), исключаются из любой рассылки автоматически: отправлять им повторно нельзя.

Это то же самое, что дожимы?
Нет. Дожимы: авто-напоминания одному клиенту по таймеру после его действия. Рассылка: разовое сообщение сразу многим.


Под капотом (для разработчиков и любопытных)

  • Таблица project_broadcasts: scheduled_at (NULL = сейчас), buttons JSONB, статусы draft → scheduled → queued → sending → sent / failed / canceled.
  • API проекта: GET (список + ?count=1 превью охвата), POST (создать, снимок сегмента в строки-получатели, статус queued), PATCH {action:"cancel"}. Гейт: owner/admin.
  • Telegram-only хардлимит на слое данных: фильтр сегмента всегда добавляет .like("chat_id", "tg_%") и .eq("broadcast_opt_out", false). Поле channel сегмента: вестигиальное, WhatsApp исключён намеренно (ban-risk).
  • Сегмент: lead_status (.eq), tag (.contains tags), campaign (.filter full_data->source_detail->>campaign). Один и тот же фильтр применяется и к превью-COUNT, и к материализации, не могут разойтись.
  • Кнопки санитизируются как inline-кнопки бота: ≤8, label ≤64, url-кнопки только http(s).
  • Отправка paced воркером drip-tick (бережно к анти-бану); он же промоутит scheduled → queued по наступлению scheduled_at.

Простыми словами

Это как разослать одно объявление сразу всем своим клиентам в Telegram, но аккуратно: можно выбрать, кому именно (например только постоянным), приложить кнопку «Записаться», запустить сейчас или поставить на завтра. Тем, кто просил не беспокоить, ничего не уйдёт. В WhatsApp так нельзя: за массовую рассылку номер банят.


Дальше: → Лиды
Связано: Дожимы · Теги · Telegram
Не получилось? → Канал не работает

Документация › Инструменты бота › Исходящие диалоги

Исходящие диалоги (бот пишет первым)

Есть база заявок, но руки не доходят обзвонить? Бот сам напишет первым в WhatsApp по каждому номеру, аккуратно, по капле, с паузами и лимитами, чтобы не спалить номер.

⏱ 12 мин · 👤 для владельца и оператора · 🟢 live

За 30 секунд:
  • Исходящие = бот сам инициирует диалог с человеком из заявки (пишет первым), а не ждёт входящего.
  • Работает только через подключённый WhatsApp-канал (QRDOS).
  • Это серый режим: WhatsApp может забанить номер за сообщения незнакомцам. Включает только владелец, под свою ответственность.
  • Текст первого сообщения вы пишете сами (готовые варианты, без ИИ). Бот шлёт случайный из списка, с подстановкой имени и услуги.
  • Первый запуск ведёт мастер: Сообщение (что писать) → Номера (кому) → Проверка и запуск, включая тест на своём номере одной кнопкой.
  • Рассылка по списку номеров бесплатна (готовый текст, ИИ не тратится).

⚠️ Сначала прочтите про риск

Исходящие, это серый режим. Вы пишете первыми незнакомым номерам. WhatsApp считает это спам-паттерном и может заблокировать номер, а это ваш основной рабочий номер: при бане теряется вся переписка с текущими клиентами.

Все встроенные защиты (лимиты, паузы, прогрев, проверка номера, автопауза) только снижают риск, но не убирают его.

🚫 Не включайте на главном номере, если не готовы к риску бана. Лучше отдельный номер под холодную рассылку.

Перед запуском обязательно прочтите Гигиену и антибан.

Включить Исходящие может только владелец проекта, поставив галку «Понимаю риск и беру ответственность на себя».


Что нужно до старта

  1. Подключённый WhatsApp-канал (QRDOS). См. Подключение WhatsApp. Без живого канала бот физически не сможет писать: лиды будут копиться в очереди, но не отправляться. В кабинете вы увидите красное предупреждение «WhatsApp-канал не подключён».
  2. Роль владельца. Включение и приём ответственности доступны только владельцу.

Баланс для рассылки по списку не требуется: первое сообщение это готовый текст, ИИ не участвует, токены не тратятся.


Как устроена страница

Первый запуск: мастер. Пока кампания ни разу не запускалась, страница показывает один экран с текущим шагом: 1 Сообщение → 2 Номера → 3 Проверка и запуск. Формы прямо в шагах, ничего искать не нужно. Мастер можно пропустить ссылкой сверху; после запуска он больше не появляется.

Дальше: кабинет кампании.

  • Пульт (карточка сверху): статус кампании словами и, главное, почему бот молчит прямо сейчас: «Кампания на паузе: причина», «Защитная пауза после подключения: ещё ~N мин», «Сейчас нерабочие часы», «Дневной лимит исчерпан», «Работает: в очереди N» или «Очередь пуста». Рядом полоса «Сегодня: X из Y» (сколько первых сообщений уже отправлено против действующего лимита; при прогреве написано «прогрев номера, день N»). Справа всегда красная кнопка «Стоп всё» (мгновенная пауза), на паузе вместо неё «Снять паузу». Текст про риск свёрнут в маленькую ссылку.
  • Пульс кампании: четыре живые плитки (Новые / В очереди / Отправлено / Ответили). Обновляются сами; клик по плитке открывает список лидов уже с этим фильтром.
  • Четыре вкладки: «Рассылка» (номера, запуск, список лидов, ответы), «Сценарий» (тексты), «Безопасность» (лимиты), «Статистика» (воронка и доставка).
  • При первом ответе появится разовый баннер «Есть ответ!» с кнопкой к списку ответивших.

Шаг 1. Сценарий: что бот пишет первым

Вкладка «Сценарий». Здесь вы задаёте типы заявок и текст первого сообщения для каждого.

Тип заявки это категория обращений со своим текстом. Например, заявки на «SMM», «Таргет», «Сайт»: заведите три типа, для каждого свой текст. Если заявки однотипные, хватит одного типа «Основной».

Как заполнить:

  • Текст первого сообщения (обязательно). Вы пишете готовое сообщение, бот отправит его как есть, без ИИ.
  • Несколько вариантов (по желанию, до 10). Бот каждому новому человеку отправит случайный из списка. Это «ротация»: снижает риск блокировки, WhatsApp не любит, когда со всех номеров летит один и тот же текст.
  • Название типа (по желанию). Только для вас. Пустое → «Основной».
  • Авто-подбор типа (по желанию). Если в данных заявки есть поле с определённым значением (например, услуга = SMM), бот сам выберет нужный тип.

Подстановки

В текст можно вставить переменные:

  • {{имя}}: подставится имя из заявки.
  • {{услуга}}: подставится услуга.
  • {{любое поле}}: любое другое поле заявки по его названию. Загрузили список с колонкой «город», пишете {{город}}; пришла заявка по API с полем filial, пишете {{filial}}.

Если в заявке нужного поля нет, кусочек аккуратно уберётся (включая предлог перед ним), сырые скобки клиенту никогда не уходят.

Развилки: разное сообщение каждому

В одинарных скобках через вертикальную черту пишутся варианты кусочка фразы, и бот выбирает один при каждой отправке:

  • {Здравствуйте|Добрый день|Привет}, {{имя}}! даст три разных начала;
  • Напишите{, если удобно|} иногда добавит хвост, иногда нет (пустая ветка после черты это «ничего»);
  • развилки перемножаются: три начала × три середины × два конца это восемнадцать разных сообщений из одного шаблона.

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

⚠️ Не путайте скобки: двойные {{имя}} это подстановка из заявки, одинарные {а|б} это развилка. Одинарные скобки без черты остаются в тексте как есть.

📌 Пример: «Здравствуйте, {{имя}}! Вы оставляли заявку на {{услуга}}: подскажите, актуально?» → для заявки без имени и услуги превратится в «Здравствуйте! Вы оставляли заявку: подскажите, актуально?»

Несколько сообщений подряд, как пишет человек

Человек в WhatsApp не пишет одним абзацем: сначала «Здравствуйте!», потом мысль, потом вопрос. Чтобы бот писал так же, оставьте пустую строку между абзацами:

Здравствуйте, {{имя}}!

Вы оставляли заявку на {{услуга}}. Подскажите, ещё актуально?

Клиент получит два отдельных сообщения, и перед каждым увидит «печатает…». Так же работают тексты дожимов.

  • Больше трёх сообщений за раз не уходит: четвёртый абзац и дальше склеятся с третьим. Залп коротких сообщений подряд WhatsApp считает признаком автомата.
  • Обычный перенос строки (без пустой строки) остаётся внутри одного сообщения.
  • Превью «Так увидит клиент» сразу показывает текст отдельными пузырями.

💡 Пока вы печатаете, рядом с полем обновляется живое превью «Так увидит клиент»: ваше сообщение в виде WhatsApp-пузыря с подставленным примером имени. Видно, как текст выглядит у клиента, ещё до отправки. Кнопки-примеры («пример 1», «пример 2») вставят готовый текст, чтобы отредактировать под себя, а черновик сохраняется сам и не потеряется при переходе на другую вкладку. Проверить текст на конкретном номере из вашего списка можно кнопкой «Показать пример сообщения» в блоке «Добавить номера» (вкладка «Рассылка»). А если заданы дожимы, внизу «Сценария» появится лента «Вся цепочка глазами клиента»: первое сообщение и напоминания по порядку, как их получит человек.

Дожимы (необязательно)

Тут же можно задать напоминания тем, кто не ответил на первое сообщение. Это тоже готовый текст (с теми же подстановками, что и в первом сообщении), а не ИИ. Например: первое напоминание через 24 часа, второе через 72.

Дожимы работают только пока человек молчит. Как только он ответит, напоминания прекращаются и диалог переходит в обычный режим (подключается основной бот проекта). Подробнее про механику, Дожимы.

Автоответ на ваше первое сообщение бот за ответ человека не считает. Часто у номера стоит WhatsApp Business с приветствием или «нет на месте»: через секунду после вашего сообщения приходит шаблон вроде «Для записи напишите дату и время». Бот его сохраняет в диалоге, но не отвечает на него и не тратит деньги: настоящий человек напишет позже и получит ответ как обычно. В журнале событий это строка «Автоответ другого бизнеса: бот не отвечает».


Шаг 2. Номера: кому бот напишет

Вкладка «Рассылка», блок «Добавить номера» (у новой кампании раскрыт сразу, у работающей свёрнут в одну строку). Три способа добавить номера.

Способ 1. Вставить список (самый простой)

  1. Вставьте номера в поле, по одному в строке. Можно с именем через запятую: +7 705 123 45 67, Айгерим (имя необязательно). Или нажмите «Загрузить CSV».
  2. (по желанию) «Показать пример сообщения» покажет 1-2 сообщения в виде WhatsApp-пузырей, ничего не отправляя. «Проверить список» разложит базу по бейджам: всего / валидных / дублей / в стоп-листе / уже в работе / к загрузке / сколько номеров есть в WhatsApp.
  3. «Загрузить в очередь (N)»: на кнопке сразу видно, сколько номеров распознано. После нажатия номера станут лидами.

После загрузки прямо на месте появится зелёная строка «✓ Загружено N» с кнопкой «Запустить сейчас»: никуда переходить не нужно. Номера станут «лидами» (список ниже на той же вкладке). Бот напишет им не все разом, а по капле: по одному, с паузами и дневным лимитом. Например, 100 номеров при лимите 20 в день разойдутся примерно за 5 дней.

⚠️ Старые базы номеров = выше риск бана. Свежие заявки безопаснее.

Способ 2. Telegram-ловец заявок (автоматически)

Если заявки с рекламы падают в Telegram-группу (таргетолог / форма / CRM), можно поставить отдельного бота в этот чат: он сам распознает заявки, вытянет номер и превратит их в лидов. Ручные списки не понадобятся.

Настройка (только владелец):

  1. В @BotFather создайте нового бота, скопируйте токен. Там же /setprivacy → Disable (иначе бот не видит сообщения группы).
  2. Добавьте бота в вашу группу с заявками.
  3. Узнайте ID чата (например, через @getidsbot), обычно начинается с -100.
  4. Впишите токен и ID чата в кабинете, «Подключить ловец».

🔧 Как это работает: сначала бот бесплатно ищет телефон в тексте (regex). Если телефона нет, сообщение игнорируется без затрат. Если телефон есть, дешёвый ИИ-классификатор решает, заявка это или болтовня, и вытягивает имя/услугу. Только этот шаг тратит токены (лимит по умолчанию 200 распознаваний в сутки, нужен положительный баланс). Телефон всегда берётся из реального сообщения, ИИ его не выдумывает.

Способ 3. API (для разработчика)

Заявки с формы сайта можно слать прямо в очередь. Нужен API-ключ проекта (создаётся в настройках проекта).

POST https://dosai.pro/api/projects/<id>/outreach/intake
Authorization: Bearer dos_sk_live_...
Content-Type: application/json

{"phone":"+77051234567","name":"Айгерим","fields":{"услуга":"SMM"}}

Шаг 3. Запуск

Есть два режима (вкладка «Безопасность», блок «Режим запуска»):

  • Полу-ручной (по умолчанию): бот берёт номера в очередь только после вашей команды. Запустить можно тремя способами, все на виду: кнопка «Запустить сейчас» сразу после загрузки, оранжевая строка «N номеров готовы к запуску» вверху «Рассылки» или кнопка «Начать» у конкретного лида.
  • Авто: бот сам берёт новые номера в работу в ближайшие минуты, кнопку жать не надо.

После запуска следите за пультом (он сам объяснит, что происходит), плитками «пульса», списком лидов и воронкой во вкладке «Статистика».


Безопасность и лимиты

Всё настраивается на вкладке «Безопасность»: настройки собраны в три блока. Значения по умолчанию подобраны консервативно.

Блок «Режим запуска»: полу-ручной (оператор сам жмёт «Начать», полный контроль) или авто (система сама берёт новых лидов в работу в рамках всех лимитов).

Блок «Сколько и как часто» (главные ручки анти-бана):

ЗащитаПо умолчаниюЧто делает
Лимит новых сообщений в день20Больше этого числа первых сообщений в сутки бот не отправит. При значении выше 20 поле подсвечивается красным: высокий риск блокировки.
Плавный прогрев номерадни 1-2: до 5, дни 3-6: до 10, дни 7-13: до 20, с дня 14: полный лимитСвежий номер разгоняется постепенно, резкий старт = красный флаг для WhatsApp. Прогрев начинается заново и на другом номере, и когда WhatsApp ограничивал номер, а потом его вернул: такой номер под особым вниманием. Фактический план прогрева написан прямо под переключателем.
Пауза между сообщениями: от / до60-180 секБот берёт случайное время из диапазона: разброс выглядит по-человечески, а не как робот по таймеру.
Только в рабочие часывключеноБот пишет только в часы работы из расписания проекта (если оно задано).

Блок «Автозащита» (работает сама):

ЗащитаПо умолчаниюЧто делает
Автопауза при недоставке30% из последних 10Если много сообщений не доходит (мёртвые номера / блокировки), кампания сама встаёт на паузу и владельцу приходит уведомление.
Свежесть заявки10 мин (только для API-лидов)Старые заявки из API не холодятся (по разовым спискам это правило не действует).
Убирать из очередичерез 7 днейЛид, простоявший в очереди дольше, снимается сам: бот не пишет по совсем протухшей базе.
Требовать согласиевключено (для API-лидов)Писать только тем, кто отметил согласие в форме. Для списков и Telegram согласие покрыто модалкой ответственности.

Плюс защиты, которые работают всегда, без настройки:

  • Пауза после подключения канала, 15 минут. Сразу после подключения WhatsApp бот не пишет ещё 15 минут (это самое опасное окно для свежего соединения).
  • Проверка номера в WhatsApp. Перед отправкой бот проверяет, есть ли номер в WhatsApp. Нет → пропускает (отправка на несуществующий номер = сигнал бана).
  • Не пишет в существующий диалог. Если с номером уже есть переписка, бот не влезает (это уже не холодный контакт).
  • Не пишет на ваш собственный номер (тот, что подключён как канал).
  • Стоп-лист. Номер, добавленный в стоп-лист, бот больше никогда не тронет.
  • Не доставляется. Если первое сообщение или дожим 3 дня висит на одной галочке и человек не ответил, WhatsApp, скорее всего, нас заблокировал. Бот перестаёт писать такому человеку, заявка закрывается, а номер попадает в стоп-лист. При загрузке нового списка такие номера пропускаются сами. Увидеть их и вернуть можно кнопкой «Вернуть» в списке «Не доставляется» на вкладке «Безопасность».

🚨 Функция остановки диалога. Чтобы бот умел остановиться по просьбе клиента («не пишите мне»), в проекте должна быть включена встроенная функция остановки. На вкладке «Безопасность» видно, включена она (✓) или нет (✗).

Стоп всё. В любой момент кнопкой «Стоп всё» (красная, на пульте сверху) можно мгновенно поставить всю кампанию на паузу. Причина паузы будет написана на пульте, рядом появится кнопка «Снять паузу».


Как читать статусы лидов

Список лидов живёт внизу вкладки «Рассылка» и показывает, что с каждым номером. Есть поиск (телефон в любом формате или имя) и фильтр по статусу. Статусы отображаются цветными пилюлями (оранжевая = в работе, зелёная = успех, красная = ошибка); наведите на статус, всплывёт подсказка. Быстрый путь: клик по плитке «пульса» сразу открывает список с фильтром по этому статусу.

📌 Фильтр «Ответил» показывает не таблицу, а витрину ответов: кто ответил, что именно написал (первая реплика) и кнопка «Открыть диалог». Это главный экран результата: сюда стоит заглядывать каждое утро.

СтатусЗначение
НовыйЗагружен, но не запущен. Нажмите «Начать».
В очередиЖдёт отправки. Бот напишет по капле.
ОткрываетсяПрямо сейчас бот открывает диалог.
ОтправленоБот написал первым, ждём ответа.
ОтветилЛид ответил! Диалог перешёл в обычный режим (см. Диалоги).
ОшибкаНе удалось отправить. Можно повторить.
ПропущенНомер пропущен, рядом причина (см. ниже).
УстарелСлишком долго ждал в очереди, снят автоматически.

Причины у статуса «Пропущен»: нет в WhatsApp, это ваш номер, уже есть диалог, в стоп-листе, нет согласия, заявка устарела.

Во вкладке «Статистика»:

  • Воронка исходящих: Отправлено → Прочитано → Ответили, с процентами от отправленных. Сразу видно, где теряются люди: не доходит текст или доходит, но не цепляет.
  • Чипы «Пропущено / Ошибки / Устарело» под воронкой кликабельны: открывают список лидов с этим фильтром.
  • Оценка очереди: «В очереди N лидов, при лимите X в день это примерно Y дней».
  • Доставка первого сообщения: дошло ли до телефона (✓✓), прочитал ли лид, среднее и медианное время до прочтения, последние прочтения поимённо. Цифры обновляются сами, пока вкладка открыта.

Как проверить, что всё работает

Прежде чем запускать на реальной базе, прогоните тест на своём втором номере. Для этого в мастере (шаг «Проверка и запуск») есть блок «Сначала проверьте на себе»: введите номер, нажмите «Отправить тест», и статус теста будет виден тут же вживую.

Три условия честного теста:

  1. Канал подключён и «на связи» (иначе тест не уйдёт, пульт это прямо скажет).
  2. Свежий номер. Не тот, что подключён как канал («Пропущен: это ваш номер»), и без прошлой переписки с этим ботом («Пропущен: уже есть диалог»).
  3. Терпение 5-20 минут. Бот-рассыльщик просыпается раз в 5 минут, а первые 15 минут после подключения канала действует защитная пауза. Если сейчас что-то мешает (пауза, нерабочие часы, исчерпанный лимит), блок теста напишет это прямо под статусом, это не поломка.

✅ Сообщение пришло на телефон, а ответ с него перевёл статус в «Ответил» → связка работает от начала до конца, можно запускать базу.

❌ Тишина → посмотрите на пульт (он называет причину) и на статус тестового номера: «Пропущен» (и почему), «Ошибка» или «В очереди» (ещё не прошёл паузы/лимиты).


💬 Простыми словами

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

Вы делаете три вещи, и мастер сам ведёт по ним: пишете, что сказать (готовый текст, бот его не сочиняет), даёте список, кому написать, и жмёте «Запустить». Дальше бот пишет по одному, с паузами, чтобы номер не забанили, а пульт сверху показывает, что происходит, и объясняет любую задержку.

Главное помнить: это рискованно для номера (WhatsApp не любит, когда пишут незнакомцам), поэтому не ставьте на свой главный номер и начинайте с маленькой свежей базы. И не ждите, что бот напишет мгновенно после подключения: первые 15-20 минут он специально молчит, это защита (пульт так и напишет).


🔧 Под капотом (для разработчика)

  • Отправка идёт только через self-hosted WhatsApp-канал (QRDOS). На других провайдерах проект молча пропускается.
  • Рассыльщик, отдельный cron-тик (раз в 5 минут). За один тик, не больше 2 сообщений на проект и не больше 6 суммарно, с паузами.
  • Первое сообщение собирается без ИИ: случайный вариант из типа заявки + подстановка {{имя}}/{{услуга}}. Ноль токенов. Поэтому рассылка по списку бесплатна.
  • Холодный диалог не считается «диалогом» в аналитике, пока лид не ответит (чтобы не портить конверсию). Как ответит, засчитывается один раз.
  • Telegram-ловец, единственное место, где в Исходящих участвует ИИ (классификатор «заявка / не заявка»), поэтому у него отдельный дневной лимит распознаваний и нужен баланс.

Не получилось?

  • Бот молчит: если сообщения не уходят.
  • Канал недоступен: если WhatsApp-канал отвалился.
  • Посмотрите на пульт сверху страницы: он словами называет, почему бот молчит прямо сейчас. Статус конкретного лида в списке «Рассылки» уточнит причину по номеру.

Документация › Инструменты бота › Подтверждение и напоминания о записи

Подтверждение и напоминания о записи

Клиент записался, и платформа сама пишет ему «вы записаны», а перед визитом напоминает. Неважно, где появилась запись: бот записал в календарь, записал через вашу функцию или администратор записал клиента у вас в CRM.

⏱ 7 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Где: Автоматизации → Записи. Одни настройки на весь проект.
  • Записи бота приходят сами: в Google Календарь, бронь в iiko, урок в АльфаCRM, запись через свою функцию. Записи из вашей системы (CRM, сайт, сервис записи) приходят через API.
  • Подтверждение уходит сразу после записи. Напоминаний до пяти: «за 1 день», «за 2 часа» и так далее, у каждого свой текст.
  • Ночью не пишем: с 9:00 до 21:00 по часам проекта.
  • Первыми пишем только тем, кто уже писал на ваш номер WhatsApp. Остальным можно написать со своего телефона одной кнопкой.
  • Бесплатно: тексты шаблонные, ИИ не тратится.
  • Страница записи: клиент сам выбирает услугу и время, вносит предоплату в Kaspi, запись встаёт в ваш календарь после оплаты.

Как включить

  1. Откройте проект → Автоматизации → Записи.
  2. Включите тумблер «Подтверждать и напоминать о записи».
  3. Проверьте текст подтверждения и сроки напоминаний. По умолчанию одно напоминание «за 1 день».
  4. Посмотрите блок «Так увидит клиент»: там готовые сообщения на примере записи «завтра в 15:00».
  5. Нажмите «Сохранить».

В текстах можно использовать подстановки:

ПодстановкаЧто вставится
{{client_name}}Имя клиента
{{service}}Услуга
{{date}}Дата визита, например «23 сентября»
{{time}}Время визита, например «15:00»

Если имени или услуги нет, лишних запятых в тексте не останется: «Здравствуйте, {{client_name}}!» превратится в «Здравствуйте!».

Откуда берутся записи

ОткудаЧто нужно сделать
Бот записал в Google КалендарьНичего, подключено само
Клиент записался сам на странице записиНичего, подключено само: страница ставит запись в ваш Google Календарь, и дальше всё как у записей бота
Бот поставил бронь в iikoНичего: функция «Бронь в iiko» уже отмечена как создающая запись. Бронь, которую отменили или перенесли на кассе, платформа узнаёт по вебхуку iiko и двигает напоминания сама (iiko)
Бот записал на занятие в АльфаCRMНичего, подключено само: урок появляется в «Записях», и родителю уходит напоминание (АльфаCRM)
Бот записал через свою функцию во внешнюю системуОткройте функцию и в блоке «Эта функция создаёт запись» выберите, в каком параметре дата и время, где имя и услуга. Укажите и номер записи, если ваша система его возвращает: по нему мы узнаём ту же запись при переносе и отмене. Без него мы считаем переносом любую повторную запись этого клиента в том же разговоре в ближайшие 2 часа, а более позднюю считаем новой
Клиента записали у вас в CRM, на сайте, в сервисе записиВаш программист сообщает нам о каждой записи одним запросом. Готовый пример запроса лежит внизу страницы «Записи», подробности в статье про API

Перенос записи двигает напоминания за собой, отмена снимает их. Запись остаётся в списке с пометкой «Отменена».

Своя страница записи

Страница, где клиент записывается сам, без переписки: выбирает услугу, день и время, вносит предоплату в Kaspi, и запись встаёт в ваш Google Календарь. Ссылку можно поставить в шапку Instagram или отправлять клиентам вместо стороннего сервиса записи.

  1. Откройте Автоматизации → Записи, блок «Страница записи».
  2. Придумайте адрес: латиница, цифры и дефис, например massage-room. Ссылка будет dosai.pro/b/massage-room.
  3. Укажите Google Календарь для записей. Если бот уже проверяет время по календарю, он подставится сам. Календарь должен быть открыт для сервисного адреса DOS AI, как и для бота.
  4. Добавьте услуги: название, длительность в минутах и цену.
  5. Задайте часы приёма и рабочие дни. Если конец приёма это время последней записи, а сессия может идти дольше («последняя запись в 24:00»), включите переключатель под часами.
  6. Перерыв после сессии: столько минут страница оставит свободными после каждой записи.
  7. Записать не раньше чем через: например 120 минут, чтобы никто не записался на через десять минут.
  8. Предоплата: сумма, которую клиент вносит, чтобы запись подтвердилась. 0 значит без предоплаты.
  9. Включите тумблер и нажмите «Сохранить».

Как это работает для клиента:

ШагЧто происходит
Выбрал услугуСтраница показывает только то время, где эта услуга целиком помещается, с учётом перерыва и уже занятых записей в календаре
Выбрал время и оставил телефонВремя держится за ним 35 минут, в приложение Kaspi приходит счёт на предоплату
ОплатилЗапись встаёт в ваш Google Календарь, вам в Telegram приходит карточка «Новая запись», клиент видит «Вы записаны» и ваш текст после записи
Не оплатил за 30 минутСчёт истекает, время снова свободно

В календарь запись попадает только после оплаты. Пока счёт висит, время уже никто другой не займёт: двойную бронь платформа не пропускает.

Если оплата пришла, а время в календаре за эти минуты заняли вручную, вам придёт сообщение «Запись не встала в календарь», а клиент увидит, что вы с ним свяжетесь. Предоплата при этом у вас.

Для предоплаты нужна подключённая касса Kaspi (Интеграции → Приём оплат). Пока кассы нет, страница показывает свободное время и предлагает написать вам в WhatsApp. С каждой оплаты с баланса проекта списывается обычный сбор кассы.

Когда подтверждение не уходит

Подтверждение нужно, когда клиент ещё ничего от вас не слышал. Поэтому:

  • записи самого бота не подтверждаем: бот уже написал «записал вас» в этом же чате;
  • не шлём, если в чате только что был разговор (последние 30 минут): клиент прямо сейчас переписывается и о записи знает;
  • ваша система может выключить подтверждение сама, если отправляет его своими силами.

Напоминания уходят во всех трёх случаях.

Кому мы не пишем и почему

Сообщение о записи платформа отправляет первой, без свежего сообщения от клиента. WhatsApp блокирует номера, которые пишут незнакомцам. Поэтому:

  • пишем только тем, кто уже писал на ваш номер WhatsApp (в переписке с ботом или в вашем телефоне). Это проверяется в момент отправки: если клиент написал вам между записью и напоминанием, напоминание уйдёт;
  • незнакомому номеру не пишем никогда. Запись видна в списке с причиной «клиент ни разу не писал на ваш номер WhatsApp» и кнопкой «Написать со своего телефона»: она откроет WhatsApp на вашем телефоне с готовым текстом, отправите вы сами;
  • Instagram не участвует: там можно отвечать только в течение 24 часов после сообщения клиента, напоминание за сутки туда не пролезет;
  • Telegram участвует: чат с ботом существует, только если клиент написал сам.

Ночью не пишем

Сообщения уходят с 9:00 до 21:00 по часовому поясу проекта (он задаётся на вкладке Общие настройки → Основное).

  • Напоминание, которое выпало на ночь, уходит накануне в 20:30. Визит в 9:30 с напоминанием «за 2 часа» получит его вечером в 20:30.
  • Подтверждение записи, созданной ночью, уходит в 9:00 утра. Если визит раньше 10:00, подтверждение не уйдёт: клиента утром встретит напоминание.

Список записей

Под настройками список: Предстоящие · Прошедшие · Отменённые, поиск по имени, телефону и услуге. У каждой записи видно, откуда она пришла, и судьба каждого сообщения:

МеткаЧто значит
уйдёт 23.09 20:30Запланировано, время уже с учётом ночи
отправленоКлиент получил. Сообщение лежит в переписке с пометкой «Напоминание»
не отправлено: причинаНе уйдёт, причина написана словами
не доставленоКанал не принял сообщение (например, номер ограничен WhatsApp)
снятоЗапись отменили

Частые вопросы

Сколько стоит? Бесплатно. Тексты шаблонные, ИИ их не пишет, баланс не тратится.

Что если подписка закончилась? Сообщения перестают уходить и помечаются «подписка проекта закончилась».

А если WhatsApp ещё не подключён? Сообщения не уходят и сразу помечаются «WhatsApp проекта не подключён». Записи при этом сохраняются: подключите канал, и будущие напоминания пойдут как обычно.

А если клиент ответит на напоминание? Ответит боту в тот же чат, как обычно. Бот видит напоминание в переписке и понимает, о чём речь.

Я выключил тумблер, что с уже запланированными? Снимаются сразу, с причиной «подтверждение и напоминания выключены».

В тест-чате работает? Нет, в тест-чате записи не создаются и сообщения не уходят.


Простыми словами

Раньше напоминать клиентам умела только запись, которую бот сделал в Google Календарь. Теперь неважно, кто записал клиента: бот, ваша функция или администратор в вашей CRM. Платформа пишет клиенту «вы записаны» и напоминает перед визитом, днём, и только тем, кто уже вам писал, чтобы номер не заблокировали. Всё, что ушло или не ушло, видно в одном списке с причинами.


Дальше: → Теги и сегментация
Связано: Запись на время · Дожимы · Публичный API
Не получилось? → напишите в поддержку

Документация › Работа с клиентами › Диалоги

Диалоги: лента, перехват, «AI на паузе»

«Диалоги» это центр, где ты видишь все переписки бота с клиентами в реальном времени и можешь в любой момент вмешаться, взять разговор на себя, поставив ИИ на паузу.

⏱ 9 мин · 👤 для владельца и оператора · 🟢 live

За 30 секунд:
  • Раздел «Диалоги» (проект → chats): лента всех переписок, обновляется сама, без F5.
  • У каждого диалога в шапке, переключатель «Отвечает бот»: если на нём красным написано «Бот молчит», в этом чате бот выключен.
  • Начал писать клиенту вручную → ИИ автоматически встаёт на паузу (настраивается). Это перехват.
  • Если пишешь, а ИИ ещё включён, увидишь подсказку «ИИ всё ещё отвечает, выключите „AI" в шапке», чтобы не отвечать вдвоём.
  • Каналы WhatsApp, Telegram и Instagram видны вместе, помечены значком.
Раздел «Диалоги»: лента переписок в реальном времени, пауза AI и перехват оператором
Раздел «Диалоги»: лента переписок в реальном времени, пауза AI и перехват оператором

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

Бот общается с клиентами сам, но иногда нужно вмешаться: сложный вопрос, дорогой клиент, жалоба. Раздел «Диалоги» (route /projects/<id>/chats) показывает все переписки списком и панель открытого чата рядом. Всё обновляется в реальном времени: новые сообщения и статусы прилетают сами.

Слева, список диалогов с фильтрами, справа, переписка с клиентом и поле ввода. Сверху чата: управление ИИ и статусом.


Перехват: взять разговор на себя

Главная механика раздела. Есть два способа поставить ИИ на паузу в конкретном диалоге:

1. Просто начни писать клиенту вручную. Когда оператор отправляет сообщение из диалога, платформа (если включена настройка pause_on_operator) автоматически:

  • ставит ai_on = false в этом диалоге,
  • помечает причину operator_joined_chat,
  • запоминает время паузы.

То есть бот замолкает, разговор ведёшь ты. Это самый естественный перехват, «вошёл и говоришь».

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

2. Переключатель в шапке. Переключатель «Отвечает бот»: нажал, и бот выключен или включён вручную в этом диалоге. Красная надпись «Бот молчит» = выключен.

💡 Тонкие настройки перехвата живут на вкладке Промпт → Расширенные настройки → Контроль оператора:
  • pause_on_operator: ставить ли ИИ на паузу, когда оператор пишет (можно отключить, если хочешь писать «вместе» с ботом);
  • ignore_first_operator_message, не паузить на первом сообщении оператора (удобно, если первое: это пометка/приветствие);
  • exception_phrases: фразы-исключения, после которых пауза не ставится;
  • там же: пауза после состоявшегося звонка, автовозобновление и три функции про остановки (по просьбе клиента бот замолкает, откладывает или отключает дожимы).

Защита от «двойного ответа»

Если ты в режиме оператора начал печатать, а ИИ в этом диалоге ещё включён, платформа показывает предупреждение:

«ИИ всё ещё отвечает, выключите „AI" в шапке, чтобы вести диалог самому»

Это чтобы вы с ботом не ответили клиенту одновременно. Увидел подсказку: выключи бота переключателем в шапке.


Вернуть бота

Закончил разговор: снова нажми переключатель в шапке диалога, на нём появится «Отвечает бот». Бот продолжит вести клиента дальше. По умолчанию пауза снимается только вручную: платформа не включит ИИ за тебя, чтобы не влезть в твой живой разговор.

Если не хочешь возвращать его руками каждый раз, включи автовозобновление (вкладка Промпт → Расширенные настройки → Контроль оператора) и задай срок. Дальше правило простое: когда ты этот срок не пишешь в чат, а клиент напишет снова, бот ответит на его сообщение сам. Первым он не пишет и приветствие в тишину не шлёт, поэтому «оживший» диалог всегда начинается с вопроса клиента. Срок считается от твоего последнего сообщения: пока разговор идёт, бот не вмешивается.

Если бот замолчал сам (упёрся в потолок ответов на диалог или сработала защита от спама), та же настройка через тот же срок просто включит его обратно, и он ответит, когда клиент напишет. Первым он не пишет и тут.

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


Ответ с цитатой

Ответ бота привязан к сообщению клиента, как «Ответить» в WhatsApp: над первым пузырём ответа видно, на что именно бот отвечает. Так и клиенту, и тебе в ленте понятно, к какому вопросу относится ответ, особенно когда человек прислал несколько сообщений подряд.

  • Одно сообщение: цитируется оно.
  • Пачка сообщений: цитируется последнее из пачки (бот отвечает на всю пачку разом, а привязать ответ WhatsApp умеет к одному сообщению).
  • Голосовое, фото или файл: цитируется само голосовое, фото или файл, мессенджер сам рисует превью.
  • Цитата только на первом пузыре, остальные части ответа идут без неё.

В Telegram работает так же. В ленте «Диалогов» привязка видна той же цитатой, что у ответов оператора. Выключается в настройках бота: Расширенные настройки → Разделение сообщений → «Отвечать с цитатой сообщения клиента».


Отправить позже

Клиент написал в час ночи, ответ у вас готов, но будить его сообщением незачем. Нажмите на часы рядом с полем ввода, выберите время, и сообщение уйдёт само.

Есть три быстрые кнопки (через час, завтра в 9:00, в понедельник в 9:00) и обычный выбор даты со временем, если нужен другой момент. Всё, что стоит в очереди по этому диалогу, видно там же, любое можно отменить, пока оно не ушло.

Запланированное сообщение отправляется ровно так же, как обычное: тем же каналом, с той же паузой бота, и в переписке выглядит обычным сообщением оператора. Точность до пяти минут: платформа проверяет очередь каждые пять минут, поэтому «в 9:00» означает промежуток с 9:00 до 9:05.

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

Статусы и фильтры

У диалога есть статус: открыт (open), решён (resolved), закрыт (closed). В списке можно фильтровать:

  • по статусу (все / открытые / решённые / закрытые),
  • по каналу (все / WhatsApp / Telegram / Instagram),
  • по состоянию ИИ, можно отметить сразу несколько: on (бот ведёт), off (выключен вручную), paused (на паузе), operator (перехватил оператор), done (диалог доведён до конца), pre_existing (переписка была до подключения бота),
  • по тегам,
  • только непрочитанные (onlyUnread),
  • архив (showArchived),
  • отложенные: чаты, которые вы сами отложили на потом (кнопка «Отложить чат»), со счётчиком,
  • «Ждут ответа»: диалоги, где бот намеренно промолчал и ответить должен человек. Так бывает со старой перепиской после переподключения канала, со знакомым контактом и с клиентом, пришедшим не с рекламы. Рядом с фильтром стоит счётчик: видно, сколько таких накопилось.

Плюс сортировка (свежие / старые / самые длинные переписки) и сохранённые виды: набрал нужную комбинацию фильтров, сохранил её под именем и возвращаешься одним кликом.

💡 «Ждут ответа» стоит открыть прямо сейчас, если бот работает не первый день. Раньше такие чаты были помечены значком, но собрать их в одном месте было нельзя, и они копились незамеченными: это самая частая причина «клиент писал, а ему никто не ответил».

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

⚠️ Часть массовых действий (например, закрыть пачкой) требует роли администратор, как и одиночное действие того же типа. См. Роли и права.

Реалтайм без F5

Список и открытый чат обновляются автоматически: платформа подписана на изменения переписок проекта и получает их сразу. Новое сообщение клиента, смена статуса, пауза ИИ: всё появляется само. Обновлять страницу не нужно.


Звуковые уведомления

Когда вкладка с диалогами свёрнута или неактивна, платформа подаёт тихий звуковой сигнал:

  • двойной сигнал: написал новый клиент (появился новый диалог),
  • короткий сигнал: новое входящее сообщение в существующем диалоге.

Ответы бота и оператора звук не издают, сигналит только реальный клиент. Между сигналами всегда пауза в несколько секунд, поэтому активная переписка не превращается в пулемёт.

Настройки живут в списке диалогов: Фильтры → «Звуковые уведомления». Можно выключить звук целиком, оставить только «новый диалог» или только «новое сообщение», а также включить звук даже при открытой вкладке. Настройки сохраняются отдельно для каждого проекта в этом браузере: шумный бот с трафиком можно приглушить, не трогая остальные.


Звонки видны в переписке

Звонок в WhatsApp это не сообщение, и сам по себе он в переписке не остался бы. Платформа ставит на него отдельную отметку прямо в ленте чата, между сообщениями, чтобы разговор не выпадал из истории:

  • Пропущенный звонок клиента: красная отметка слева.
  • Звонок, на который ответили: зелёная отметка с длительностью разговора. Если у вас включена настройка «Выключать ИИ после состоявшегося звонка» (по умолчанию включена), бот в этом чате замолкает: дальше клиента ведёте вы. Вернуть его можно тумблером AI в шапке диалога.
  • Ваш звонок клиенту: отметка справа, как исходящее сообщение. WhatsApp сообщает о таком звонке подключённому устройству не сразу: обычно через несколько минут после разговора, иногда позже. Как только запись доходит, бот в этом чате замолкает по той же настройке. Звонок старше двух часов бота уже не выключает: клиента к тому моменту мог вести бот, и обрывать его молча было бы хуже.

Отметка о звонке видна и боту: он понимает, что разговор состоялся, и не начинает консультацию с нуля поверх вашей договорённости.

Отдельная настройка «Отвечать на непринятые звонки» (включена у всех проектов) решает другое: писать ли клиенту, до которого не дозвонились. Если клиент позвонил и трубку никто не взял, через полторы минуты ему уходит одно сообщение: «Здравствуйте! Сейчас не можем принять ваш звонок. Напишите, пожалуйста, сюда, мы ответим». Если вы взяли трубку или в чате уже кто-то написал, сообщение не уходит. Клиенту, который перезванивает несколько раз подряд, оно приходит один раз за 2 часа. Это готовый текст: ИИ его не пишет, баланс он не тратит, в переписке он подписан «Ответ на звонок». Отметки о звонках от этой настройки не зависят, они появляются всегда.


Каналы в одной ленте

WhatsApp, Telegram и Instagram показываются вместе; канал виден по значку. У Instagram свои сроки ответа: из кабинета ответить можно 24 часа после сообщения клиента, и боту, и оператору, подробно. Диалог, начатый ответом на комментарий, до первого сообщения человека помечен «Ждём сообщения». Подробнее: Обзор каналов.


Простыми словами

«Диалоги» это твоя диспетчерская. Здесь видно всё, что бот пишет клиентам, прямо вживую: ничего не надо обновлять. Если видишь, что в каком-то чате нужно вмешаться, просто начни писать клиенту сам, и бот тут же замолкает: дальше говоришь ты. Это и есть «перехват».

В шапке каждого чата есть кнопка «AI», зелёная значит бот отвечает, красная, он на паузе и ждёт тебя. Закончил разговор: включи бота обратно той же кнопкой, и он продолжит. Платформа специально не включает его сама, чтобы не влезть в твою беседу.

И маленькая страховка, если ты начал печатать, а бот ещё включён, появится подсказка выключить бота переключателем в шапке, чтобы вы случайно не ответили клиенту вдвоём.


Дальше: → Лиды и их статусы
Связано: Стадии диалога · Логи событий · Роли и права · Бот не отвечает
Не получилось? → Бот не отвечает, диагностика

Документация › Работа с клиентами › Лиды

Лиды и их статусы

Заявки, которые бот собрал из переписок: кто, как связаться, насколько «горячий». Твоя воронка продаж.

⏱ 8 мин · 👤 для владельца и оператора · 🟢 live

За 30 секунд:
  • Лид = потенциальный клиент с данными (имя, телефон) и статусом.
  • Бот сам создаёт лида, когда клиент квалифицировался и оставил контакт, или когда сработала функция с галочкой «Это заявка».
  • 7 статусов, от «Без статуса»/«Потенциальный» до «Сделка закрыта»/«Потерян».
  • Можно фильтровать, искать, экспортировать в CSV, заводить лида вручную.
  • Статус можно менять руками; «Сделка закрыта» и «Потерян»: финальные.
Раздел «Лиды»: список заявок со статусами, стадиями и источниками
Раздел «Лиды»: список заявок со статусами, стадиями и источниками

Зачем это нужно

Переписок много, а важны те, кто реально готов купить. Лиды это «выжимка»: бот вытаскивает из диалогов контакты и интерес, ставит статус, и ты видишь воронку: кому перезвонить, кто горячий, кто отвалился. Без этого заявки тонут в чатах.

Где это

Левое меню → «Лиды». Смотреть может viewer, менять, editor+.

Что такое лид

У каждого лида есть:

ПолеЧто это
ИмяКак зовут клиента (бот спросил/распознал)
ТелефонКонтакт для связи
EmailЕсли оставил
СтатусНасколько «горячий» (см. ниже)
ДатаКогда появился
РезюмеКраткая выжимка диалога от бота
ИсточникКанал (WhatsApp, Telegram, Instagram), откуда пришёл, и реклама, если пришёл с неё
Заметки оператораТвои пометки

Статусы лида

СтатусЧто значитСоздаёт лида?
Без статусаОбычный посетитель, без интересанет
ПотенциальныйЕсть интерес, но нет данных/решениянет
КвалифицированныйСогласен + есть контакт✅ да
ГорячийГотов покупать, обсуждает оплату✅ да
РезервОтложил, но вернётся✅ да
Сделка закрытаОплатил, сделка состояласьфинальный
ПотерянОкончательно отказалсяфинальный

💡 Как ставится. В основном бот сам по ходу разговора (если включена воронка продаж). Лид автоматически создаётся, когда статус становится «Квалифицированный», «Горячий» или «Резерв». Имя и телефон для этого не обязательны: если бот их уже узнал, они попадут в карточку. Ты можешь поменять статус вручную в любой момент.

📌 Пример. Клиент уточнил цены, согласился записаться, оставил телефон → бот ставит «Квалифицированный» → появляется лид. Дошёл до оплаты → «Горячий». Оплатил → ты ставишь «Сделка закрыта».

Кто создаёт лида: статус, телефон или функция «Это заявка»

Это место, где обычно путаются. Разложим по полочкам.

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

В каждом ответе бот (если включена воронка) выставляет скрытое поле, статус лида. Ты его не видишь, видит платформа. Как только бот ставит создающий статус («Квалифицированный» / «Горячий» / «Резерв»), платформа автоматически заводит карточку лида. Имя и телефон подставляются, если бот их уже узнал (по промпту он сначала их спрашивает).

То есть:

  • Квалификация это момент, когда бот сам решил «это заявка» и поставил создающий статус. Это его суждение по правилам из системного промпта, а не кнопка и не функция. Откуда берётся: бот читает разговор и определения статусов из промпта, и каждый ход выбирает подходящий.
  • Лид: карточка, которая появляется в результате этого статуса.

Если воронка выключена

Воронку продаж можно отключить: тогда бот не раскладывает разговор по статусам, а просто консультирует и продаёт. Раньше в этом режиме карточки лидов не появлялись вовсе, и человек, оставивший телефон, оставался только в переписке. Теперь по-другому:

Воронка выключена: карточку заводит телефон. Как только клиент назвал номер в разговоре, платформа сама создаёт лида и присылает уведомление в колокольчик. Ни статуса, ни функции для этого не нужно.

Номер самого чата в WhatsApp сигналом не считается, иначе лидом становился бы каждый написавший. Нужен именно номер, прозвучавший в переписке. Статус у такой карточки ставится «Квалифицированный», дальше меняй его руками как обычно.

Функция и создание лида

Функции (например «Уведомление в Telegram», «Запись на время», «Приём оплаты»): это действия, и сами по себе лида не создают:

  • функция «Уведомление владельцу» шлёт тебе сообщение в Telegram «лови заявку», но карточку лида создаёт статус, а не она;
  • можно квалифицировать клиента без единой функции: лид всё равно появится в разделе «Лиды».

Исключение одно: галочка «Это заявка: создать лида и сделку в CRM» в разделе «После вызова» у функции. Ставь её у функции, которая передаёт заявку человеку (менеджеру, администратору). Сработала такая функция, и карточка лида появляется, даже если бот оценил клиента осторожнее («Потенциальный»): статус карточки поднимается до создающего. Без галочки бывало, что заявка уже лежит в Telegram-группе менеджеров, а в «Лидах» и CRM клиента нет.

Часто статус и функция срабатывают в одном ходе (бот квалифицировал клиента и отправил тебе уведомление): отсюда и путаница. Без галочки это две независимые вещи: статус пишет карточку в CRM, функция делает действие во внешнем мире.

Нужны ли функции для аналитики?. Нет

Диалоги, лиды, конверсия, источники: аналитика считается сама, из статусов лида и факта «бот ответил». Чтобы видеть правильные цифры, не нужно настраивать ни одной функции. Функции добавляют только когда боту нужно реальное действие: уведомить, записать на время, принять оплату.

Свои статусы под твой бизнес

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

Два продукта (или направления)

Два пути:

  • Один проект + теги: бот вешает на лида тег «Продукт А» / «Продукт Б», статусы общие. В аналитике увидишь разбивку по тегам. Подходит, если процесс продажи похож.
  • Отдельные проекты, если у продуктов разные скрипты, каналы и логика квалификации, заведи отдельный проект на каждый (свой бот, своя воронка). Чище и не путается.

Что можно делать

  • Фильтр по статусу и поиск по имени/телефону/email;
  • Фильтр по источнику: каналу (WhatsApp, Telegram, Instagram) и для рекламных/кампанийных лидов по конкретному объявлению / площадке (Facebook/Instagram) / кампании / UTM, чтобы одним кликом собрать всех лидов с этого источника. Разрез появляется, когда такие лиды есть;
  • Колонка «Источник» в таблице показывает не только канал, но и название объявления / кампанию / площадку: видно сразу, откуда лид, без захода в карточку;
  • Колонка «Сумма» и сортировка по сумме (↓/↑) это крупные сделки наверх;
  • Диапазон дат;
  • Экспорт CSV (Имя, Телефон, Email, Статус, Теги, Дата): учитывает активные фильтры; для обзвона или своей таблицы;
  • Завести лида вручную (кнопка создания): если клиент пришёл не через бота;
  • Карточка лида (клик): полные данные, смена статуса, сумма сделки (₸/$, попадает в аналитику как выручка по объявлению/источнику, учитывает офлайн-продажи), заметки оператора, кнопки «позвонить/написать», резюме диалога и источник вплоть до объявления (превью, заголовок, площадка, ссылка, UTM) для рекламных лидов;
  • Массовые действия (editor+): сменить статус, удалить, экспортировать выбранных.

Связь с дожимами

Лиды, которые «зависли» (квалифицировались, но не дошли до оплаты), кандидаты на дожимы: бот напомнит о себе сам. Настраивается авто-зачисление по статусу.

Частые ошибки

СимптомПричинаЧто делать
Лидов нет, хотя переписки идутВыключена воронка / клиенты не оставляют контактВключи воронку, в промпте проси брать имя и телефон; у функции передачи заявки поставь «Это заявка»
Лид создался без телефонаБот квалифицировал по интересу, контакт позжеДозапросит в диалоге; можно вписать вручную в карточке
Не могу сменить статусРоль viewerНужна editor+ → Роли
Дубли лидовКлиент писал с разных номеровОбъедини вручную / веди по основному

Вопросы, которые обычно возникают

Чем лид отличается от диалога?
Диалог это вся переписка. Лид: «карточка клиента» с контактом и статусом, выжимка из диалога. Не каждый диалог становится лидом.

Бот сам ставит статусы или я?
В основном бот (если включена воронка). Но ты всегда можешь переопределить вручную.

Можно выгрузить базу клиентов?
Да, «Экспорт CSV».


Под капотом

  • Статусы (lead_status): none / potential / qualified / hot / converted / reserve / lost. converted и lost это терминальные.
  • Авто-создание лида (post-send.ts): при включённой воронке переход в qualified/hot/reserve (или в статус проекта с creates_lead); при выключенной, телефон из ответа модели (phone или full_data.phone), номер самого чата не считается; плюс успешный вызов функции с builtin_config.creates_lead. Один лид на диалог.
  • Статус ставит модель в JSON-ответе (поле lead_status) при включённой воронке; ручная смена: editor+.
  • Колонки таблицы: Имя, Телефон, Статус, Дата (email/резюме/заметки, в карточке). Экспорт CSV, фильтры, диапазон дат, массовые действия.
  • Карточка лида: /projects/[id]/leads/[leadId], источник (канал, utm), резюме ИИ, заметки (до 5000 символов, автосейв).

Простыми словами

Лиды это список твоих потенциальных клиентов, который бот собирает сам. Пока человек просто болтает это ещё не лид. Но как только он проявил интерес и оставил телефон, бот заводит на него «карточку» и помечает, насколько он близок к покупке: просто интересуется, готов записаться или уже горячий. Ты видишь весь список, можешь кому-то перезвонить, поменять статус руками, выгрузить в табличку. Когда клиент оплатил, ставишь «Сделка закрыта», и это видно в аналитике. Это и есть твоя воронка продаж, только заполняется она сама.


Дальше: → Биллинг
Связано: Диалоги · Дожимы · Аналитика

Документация › Работа с клиентами › Стадии диалога

Стадии диалога (воронка)

Каждый диалог проходит воронку из 6 стадий, от «Приветствия» до «Завершено». Бот сам двигает клиента по ним, а ты видишь, на каком этапе кто застрял.

⏱ 6 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Воронка: Приветствие → Квалификация → Презентация → Возражения → Закрытие → Завершено.
  • Бот сам определяет стадию по ходу разговора: это не ручная пометка.
  • Стадия хранится у диалога; новый диалог стартует с «Приветствие».
  • Дошёл до «Завершено»: бот не замолкает сам, он продолжает отвечать, пока его не остановит функция «Остановить диалог» или оператор.

Шесть стадий

#СтадияRU-меткаЧто значит
0greetingПриветствиеклиент только написал, идёт знакомство
1qualificationКвалификациябот выясняет потребность (что нужно, бюджет, сроки)
2presentationПрезентациябот предлагает решение/услугу/цену
3objectionВозраженияклиент сомневается, бот отрабатывает
4closingЗакрытиеподводим к заявке/записи/оплате
5doneЗавершенодиалог отработан

Это и есть «воронка продаж» внутри переписки. По ней видно, где клиенты отваливаются, если много застряло на «Возражениях», слабая отработка сомнений; много на «Презентации», не доводим до закрытия.


Как стадия меняется

Стадию определяет сам бот по смыслу разговора: это часть его «мышления» (см. Как бот думает). Не нужно вручную перетаскивать клиента по этапам: модель оценивает, на каком шаге диалог, и обновляет стадию.

  • Стадия хранится у диалога (поле stage).
  • Новый диалог начинается со стадии «Приветствие» (greeting).
  • Стадию может перевести и правило с действием «перевести стадию», например «клиент оплатил → Закрытие».
  • Стадия «Завершено» это пометка для аналитики, а не выключатель: бот продолжает отвечать. Раньше он мог сам замолчать на этой стадии (в старых диалогах ещё встречается причина паузы «Воронка завершена»), это убрали: модель закрывала разговор преждевременно. Остановить диалог теперь может только явная функция или оператор (см. JSON-ответ бота).
💡 Хочешь, чтобы бот точнее переключал стадии под твой бизнес, опиши логику в системном промпте, когда считать клиента «квалифицированным», что такое «закрытие» в твоём случае.

Стадии и внешняя CRM

Если подключена внешняя CRM (Bitrix24/amoCRM), внутренние стадии можно сопоставить со стадиями сделки в твоей CRM: тогда при смене стадии у диалога сделка автоматически двигается по воронке в CRM (через сопоставление стадий, см. CRM). Стадия, переведённая правилом, двигает сделку так же. Сделка едет только вперёд: продвинутую менеджером дальше бот назад не тянет, а закрывает сделку только менеджер.

📌 Платформа использует стандартный набор из 6 стадий и 7 статусов лида: он работает «из коробки» и покрывает большинство сценариев продаж. Возможность полностью заменить набор своим (кастомная воронка) временно недоступна: редактор убран из настроек, вернём в упрощённом виде. Если твоему бизнесу нужны свои стадии, напиши в поддержку, это ускорит возврат фичи.

Простыми словами

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

Польза простая: ты видишь, где клиенты застревают. Если куча диалогов зависла на «Возражениях», значит, бот плохо отвечает на сомнения, и это сигнал поправить промпт или базу знаний. А если хочешь, чтобы переходы между этапами совпадали с твоей CRM, связываешь их один раз, и сделки сами едут по воронке.


Дальше: → Аналитика
Связано: Диалоги · Лиды · Системный промпт · CRM
Не получилось? → Бот не отвечает

Документация › Работа с клиентами › Аналитика

Аналитика

Аналитика отвечает на три вопроса: работает ли бот (сколько людей написали и сколько стали лидами), во что он обходится (стоимость диалога и лида) и откуда приходят клиенты (каналы, реклама, кампании). Раздел Аналитика в левом меню.

⏱ 7 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Период: сегодня, 7, 30, 90 дней, за всё время или свои даты. По умолчанию 7 дней. Дни считаются по поясу проекта.
  • Конверсия = лиды ÷ диалоги за выбранный период. Стрелки рядом с цифрами сравнивают с прошлым таким же периодом.
  • Диалог это переписка, где бот реально ответил. Лид это карточка в разделе «Лиды».
  • Кнопка «Скачать»: отчёт за месяц в PDF, все лиды и сводка за период в CSV. Детализация расхода по дням скачивается в Excel.
Раздел «Аналитика»: диалоги, лиды, конверсия, время ответа и графики активности
Раздел «Аналитика»: диалоги, лиды, конверсия, время ответа и графики активности

Что считается

  • Диалог это переписка, где бот ответил хотя бы раз. Старые чаты, подтянувшиеся при подключении номера, и переписки, которые с начала вёл человек, в счёт не идут.
  • Лид это карточка в «Лидах»: бот создаёт её сам, когда доводит клиента до статуса «Квалифицированный», «Горячий» или «Резерв» (при выключенной воронке, когда клиент назвал телефон, и когда сработала функция с галочкой «Это заявка»). Функции для подсчёта настраивать не нужно. Цифра «Лиды» на любой странице платформы значит одно и то же.
  • Конверсия это доля диалогов, ставших лидами, за выбранный период. Нет диалогов, и вместо 0% стоит прочерк.

Единственное число с другим смыслом в блоке «По каналам» воронки: там у каждого канала диалоги с проявленным интересом (любой статус, включая «потенциальный»), поэтому оно подписано «с интересом».

  • Время ответа считается только по ответам, которые бот дал в течение суток после сообщения клиента: ответ на сообщение недельной давности (например, после пополнения баланса) среднее не портит.
  • У таблиц «Реклама» и «Кампании» написано, за какой период цифры: они следуют выбранному периоду страницы.
  • Те же четыре числа за 7 дней (диалоги, лиды, доля диалогов, ставших лидами, время ответа) стоят на «Обзоре» проекта, а на дашборде по всем проектам сразу.

Блоки страницы

БлокЧто показывает
Сегоднядиалоги и лиды за сегодня, сколько обработано
Финансы и качествостоимость диалога и стоимость лида, расходы по токенам за месяц, качество диалогов: среднее число сообщений, сколько сразу ушли, сколько передано оператору
Графикидиалоги и лиды по дням, лиды по статусам
Источники лидов и Лиды по тегамоткуда пришли и как размечены
Реклама / Креативыкакие объявления Instagram и Facebook приносят диалоги, лиды и деньги (ниже)
Кампанииссылки на Telegram-бота с меткой кампании: диалоги, лиды, конверсия по каждой (как сделать ссылку)
Вовлечённость в Telegramпоказы и нажатия кнопок под ответами бота, реакции, личные и групповые диалоги
Детализацияпо дням: диалоги, лиды, сообщения, расход и баланс на конец дня (ниже)
Воронка и когортыпуть лидов по шагам, по каналам и недельные когорты (окно всегда 8 недель, чтобы когорты были сравнимы)
Воронка по статусам · Тепловая карта · Топ необработанных вопросовгде лиды застревают, в какие часы пишут, на что бот не нашёл ответа

Реклама и креативы

Для клиентов, пришедших по рекламе «Написать в WhatsApp» или в директ, видно каждое объявление: диалоги, лиды, покупки и две денежные колонки. Сумма сделок берётся из карточек лидов (учитывает и офлайн-продажи), выручка в боте это оплаты, прошедшие прямо в переписке.

Нажмите на объявление, и откроется его окно: картинка и текст рекламы, как их увидел клиент, и цифры этого объявления. Картинка хранится у нас, поэтому видна и после того, как объявление удалили в рекламном кабинете.

Расход на рекламу можно вписать вручную (кнопка «Добавить» в блоке рекламы: сумма и период). Тогда платформа посчитает цену диалога и лида с рекламы.


Детализация по дням

Блок «По дням: диалоги, расход, баланс» отвечает, куда уходит баланс и сколько стоит один диалог: по каждому дню число диалогов и лидов, сообщения клиентов, конверсия, расход и баланс на конец дня. Кнопка «Скачать Excel» выгружает всю историю проекта, отдельный лист на каждый месяц.

Как считается расход: Сколько стоит сообщение.


Простыми словами

Аналитика показывает, работает ли бот и окупается ли он. Из 100 переписок 20 стали лидами: конверсия 20%. Растёт от недели к неделе, бот молодец; падает, смотрите в воронке, на каком шаге люди отваливаются. Рядом видно, сколько стоит один разговор и одна заявка, и какая реклама приводит клиентов, а какая только тратит деньги.


Дальше: → Логи событий
Связано: Лиды · Стадии разговора · Отчёты владельцу · Баланс и подписка
Не получилось? → напишите в поддержку с ID проекта

Документация › Работа с клиентами › Логи событий

Логи событий

«Что бот сделал за кадром»: вызвал функцию, прочитал ссылку клиента, искал в базе знаний, распознал голосовое, выключился в диалоге, двинул сделку в CRM. Эти события видны в двух местах: карточками прямо в ленте диалога и общим журналом на странице «Логи» проекта. По ним понятно, почему бот ответил так, а не иначе, и где именно сломалось.

⏱ 9 мин · 👤 для владельца и оператора · 🟢 live

За 30 секунд:
  • В диалоге между сообщениями стоят карточки событий: вызвал функцию, искал в базе знаний, изменил сделку в CRM.
  • Страница «Логи» (Аналитика → Логи): все события проекта подряд, фильтры «Все · Обработано · Ошибки · Telegram · WhatsApp», поиск по тексту, даты, выгрузка в CSV, обновление без перезагрузки.
  • Главные типы: вызов функции, прочитана ссылка клиента, поиск по базе знаний, голосовое распознано, бот включён или выключен в диалоге, WhatsApp подключён или отвязан, ответ остановлен: написал оператор.
  • Секреты в событиях маскируются, тело запроса и ответа функции обрезается.
  • Первое место, куда смотреть на «бот должен был записать, но не записал» и «почему бот замолчал».
Раздел «Логи», что бот делал, вызовы функций, поиск по знаниям, действия CRM
Раздел «Логи», что бот делал, вызовы функций, поиск по знаниям, действия CRM

Зачем это нужно

Сообщения показывают, что бот написал. Логи показывают, что он делал между сообщениями: дёрнул ли функцию записи, нашёл ли ответ в базе знаний, открыл ли ссылку, которую прислал клиент, отправил ли сделку в CRM, и почему вдруг замолчал. Без этого «почему бот так ответил» остаётся гаданием.

Два окна на одни и те же события:

  • Лента диалога. Карточки событий стоят между сообщениями в хронологии: удобно, когда разбираете один конкретный разговор. Обновляются в реальном времени.
  • Страница «Логи» (/projects/<id>/logs, подвкладка раздела «Аналитика», доступна с роли редактор). Все события проекта за выбранный период: удобно искать «что происходило вчера вечером» и «сколько раз падала функция».

Страница «Логи»: как пользоваться

  • Фильтры: «Все», «Обработано» (входящие, которые бот принял и обработал), «Ошибки» (всё, где в типе есть ошибка или сбой), «Telegram», «WhatsApp». У каждого фильтра счётчик.
  • Поиск по тексту: тип события, номер чата, содержимое деталей. Найдёт и по имени функции, и по номеру телефона, и по слову из ошибки.
  • Период: даты задаются сверху, старые дни подгружаются с сервера.
  • Строка события: время, значок канала, название по-русски («Бот вызвал функцию», «Голосовое сообщение распознано»), номер чата со ссылкой на диалог, короткое описание, метка «ошибка» или «обработано». Раскрывается в подробности (JSON события).
  • «Скачать CSV»: выгружает все события по текущим фильтрам, не только видимую страницу.
  • Живое обновление: новые события появляются сами, без F5.

Служебные отметки (замки на время обработки, «обслуживание отработало» раз в пять минут) в журнал не попадают: они нужны только платформе и прятались бы за ними настоящие события.


Какие события бывают

Самые частые и полезные, с названиями, как на странице «Логи»:

Тип событияНа страницеЧто значит и что в деталях
function_callБот вызвал функциюимя функции, успех или ошибка, длительность, запрос и ответ (обрезаны)
inbound_link_readссылка клиента прочитанабот открыл ссылку из сообщения клиента (до двух на сообщение) и что из неё понял; не открылась, здесь причина
action_claim_unbackedзаявление без действиябот написал «выставил», «передал», «записал», а функцию не вызвал: платформа дала ему круг на исправление. Повторы здесь значат, что описание функции не говорит боту, когда её звать
kb_searchпоиск по базе знанийзапрос, сколько источников нашёл, не ниже ли порога релевантности (база знаний)
whisper_transcription_billedГолосовое сообщение распознаноголосовое расшифровано, списание с баланса
vision_describe_billedФото распознанокартинка описана для модели, списание с баланса
ai_state_changedБот включён или выключен в диалогекто и почему: функция, оператор, звонок, защита; причина та же, что в шапке диалога (справочник причин)
reply_stopped_operator_joinedОтвет бота остановлен: написал оператороператор вмешался, пока бот готовил ответ, ответ не отправлен
operator_message_sentОператор отправил сообщениеручной ответ из кабинета или с телефона
buffer_drain_timeoutСообщения собраны в один ответ с задержкойклиент написал несколько сообщений подряд, бот ответил на всю пачку
unanswered_inbound_healedБот ответил на пропущенное сообщениесообщение осталось без ответа (сбой, пауза по балансу), платформа ответила на него позже сама
undecrypted_resend_askСообщение не расшифровалось, клиента попросили отправить ещё разпервое сообщение лида WhatsApp не прочиталось (что это)
wazzup_session_connected / wazzup_session_logged_outWhatsApp подключён / устройство отвязанособытия канала; события WhatsApp в журнале приходят с префиксом wazzup_ или baileys_, страница показывает их одинаково
channel_disconnected / instagram_channel_disconnectedКанал отключилсяWhatsApp или Instagram потерял связь (что делать)
wazzup_call_answeredВходящий звонок в WhatsAppзвонок состоялся; если включена настройка «Выключать ИИ после звонка», рядом будет ai_state_changed
wazzup_offhours_first_replyОтвет вне рабочих часовушёл дежурный текст по расписанию, модель не звалась
sticker_no_ai_replyСтикер: бот не отвечаетна стикер бот молчит намеренно
autoresponder_no_replyАвтоответ другого бизнеса: бот не отвечаетсобеседник оказался чужим автоответчиком, бот не ввязывается в переписку двух роботов
wazzup_backlog_message_skippedСтарое сообщение пропущено при подключениипереписка старше подключения бота не отвечается
tool_rounds_exceededпотолок вызововбот упёрся в 15 вызовов функций за один ответ и завершил ход (почему)
manual_review_requiredнужен ответ человекаплатформа пометила диалог «ответьте руками»: функция упала, бот дважды заявил то, чего не делал, потолок ответов
payment_confirmedОплата подтвержденаклиент оплатил счёт, выставленный ботом (приём оплат)
bot_first_reply / first_leadПервый ответ бота / Первый лидвехи проекта, по одному разу
owner_alert_undeliveredУведомление владельцу не доставленописьмо, Telegram или WhatsApp-уведомление не дошло: проверьте контакты в настройках уведомлений
project_createdПроект созданначало истории
crm_inbound_*событие из CRMсмена статуса сделки, обновление, удаление, заметка, обновление контакта в подключённой CRM

Правила раздела «Автоматизации» ведут свою ленту срабатываний внизу страницы Правил, а вызовы функций ещё и свой «Лог вызовов» в карточке каждой функции.

📌 Где искать падения функций. Если бот «должен был записать, но не записал», откройте логи диалога или страницу «Логи» с фильтром «Ошибки» и найдите function_call: там видно, вызвал ли он функцию и с какой ошибкой. Вызова нет вовсе, смотрите, не стоит ли рядом action_claim_unbacked или отказ предохранителя функции. → Функция не вызывается / падает
📌 Где искать, почему бот замолчал. Фильтр «Все», поиск по номеру чата: последняя запись ai_state_changed и её причина отвечают на вопрос. → Бот не отвечает

Безопасность данных в логах

  • Секреты маскируются. Токены, ключи, авторизация в параметрах функций редактируются перед сохранением.
  • Объём ограничен. Запрос и ответ функции обрезаются примерно до 2000 символов каждый, чтобы журнал не разрастался и не тёк.
  • Доступ по роли. Страницу «Логи» видит редактор и выше; наблюдатель и тестер видят только карточки в диалогах, к которым у них есть доступ.

Под капотом

  • Два журнала. Исходящие действия бота в CRM (создать, двинуть, прокомментировать сделку) пишутся в отдельный журнал crm_action_log (с полями action / result / error_message / crm_deal_id), а не в общий events_log. В ленте диалога они объединяются: «сырой» function_call для crm_* отбрасывается, показывается более информативная запись из crm_action_log (дедуп).
  • Forensic. events_log и crm_action_log это история для разбора инцидентов; при удалении проекта такие записи сохраняются (не каскадятся), чтобы можно было провести пост-мортем.
  • Realtime. Лента диалога подписана на оба журнала через Postgres Changes, страница «Логи» тоже обновляется живьём; события появляются без обновления страницы.
  • Служебные типы (замки *_lock, maintenance_run и подобные) исключаются из выборки страницы одним списком EPHEMERAL_EVENT_TYPES, тем же, по которому их чистит обслуживание.

Простыми словами

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

Зачем вам это? Чтобы понимать, почему бот ответил именно так. Сказал «записал вас на 15:00», а в плашке видно, реально ли сработала функция записи или упала с ошибкой. Замолчал, а в журнале написано: «выключен, потому что состоялся звонок». Это лучшее место, чтобы разобраться, когда что-то идёт не так. А чувствительные данные вроде паролей и ключей в этих логах автоматически замазываются, утечки не будет.


Дальше: → Обзор интеграций
Связано: Диалоги · Функции · База знаний · Бот не отвечает · Функция не вызывается / падает
Не получилось? → Функция не вызывается / падает

Документация › Работа с клиентами › Авто-отчёты владельцу

Авто-отчёты владельцу (Telegram и почта)

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

⏱ 7 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Раздел «Отчёты» (только для владельца), настраиваемая сводка: сколько диалогов, лидов, конверсия, расход, баланс.
  • Расписание: ежедневно / еженедельно / ежемесячно, в выбранное время и часовой пояс.
  • Доставка: Telegram (через бота отчётов) и/или e-mail уведомлений проекта.
  • Можно собрать свой текст отчёта из {{переменных}} и проверить превью перед запуском.
  • Кнопка «Отправить сейчас»: прислать отчёт немедленно, не дожидаясь расписания.
  • У проекта, созданного с 14 сентября 2026, ежедневный отчёт уже есть и выключен: открой его, выбери, куда слать, на почту или в Telegram, и включи.
Аналитика и отчёты проекта: метрики и графики для авто-отчётов владельцу
Аналитика и отчёты проекта: метрики и графики для авто-отчётов владельцу

Зачем это нужно

Аналитика в кабинете отвечает на вопрос «как дела?», но только когда ты сам зашёл посмотреть. Авто-отчёт переворачивает это: сводка сама приходит туда, где ты и так сидишь (Telegram или почта). Ты держишь руку на пульсе проекта, не открывая кабинет: видишь, что бот привёл, например, 12 лидов за вчера и потратил $3, и решаешь, что делать дальше.

Что понадобится

  • ☐ Роль владельца проекта (раздел «Отчёты» виден только владельцу).
  • ☐ Для Telegram-доставки это подключённый бот отчётов/уведомлений.
  • ☐ Для e-mail это заданный адрес уведомлений на вкладке Общие настройки → Уведомления проекта.

Шаги

1. Создай отчёт

Левое меню → «Аналитика» → подвкладка «Отчёты» → «Новый отчёт». Дай ему понятное имя («Утренняя сводка», «Итоги недели»).

2. Задай расписание

Выбери частоту и время:

  • Ежедневно: в указанное время;
  • Еженедельно: в выбранные дни недели;
  • Ежемесячно: определённого числа.

Время считается в часовом поясе, который ты укажешь (например, 9:00 утра по Астане).

⏱ Точность до получаса. Отправщик просыпается каждые 30 минут, поэтому отчёт уходит не секунда в секунду, а в течение получаса после указанного времени: поставил 00:01, сообщение придёт до 00:30. Сами цифры от этого не меняются: период закрывается по расписанию, а не по моменту отправки.

3. Выбери, что показать

Включи нужные блоки показателей:

БлокЧто показывает
Диалогисколько диалогов, где бот реально ответил
Лидысколько новых заявок за период
Конверсиякакая доля диалогов стала лидами
Потраченорасход на ИИ за период отчёта
Баланстекущий баланс проекта
Число из анкетысумма / среднее / количество по числовому полю анкеты: напр. сумма долга, бюджет, чек
Последние лидысписок свежих лидов (имя, телефон, статус): до 20
Разбивка по полю / Теги / Статусыразрезы по сегментам лидов (топ-N)

💡 Совет. Включи блок сравнения с прошлым периодом, тогда рядом с «Лиды: 12» будет видно «было 8», и сразу понятен тренд.

4. (по желанию) Собери свой текст

Вместо стандартного вида можно включить свой шаблон и собрать сообщение из {{переменных}}, например:

📊 Отчёт {{period}}, {{project}}
💬 Диалоги: {{dialogs}}
👤 Лиды: {{leads}}
📈 Конверсия в лида: {{conversion}}
💸 Потрачено: {{spend}}
💰 Баланс: {{balance}}

Доступны переменные по группам: Воронка ({{dialogs}}, {{leads}}, {{conversion}}, {{automation_runs}}, {{automation_replies}}), Деньги ({{spend}}, {{balance}}), Сегменты ({{by_city}}, {{by_status}}, {{all_tags}}, {{leads_list}}), Сравнение ({{prev_dialogs}} и т.д.), Прочее ({{project}}, {{period}}).

В стандартном виде отчёта строка «Правила: сработали N раз» появляется сама, если в этот период срабатывали правила автоматизации (раздел «Автоматизации → Правила»). Проект без правил её не видит.

5. Выбери, куда отправлять

В блоке «Куда отправлять этот отчёт» включи каналы:

  • Telegram: уйдёт в чат бота отчётов (или укажи ID конкретного чата/группы);
  • Email: на адрес уведомлений проекта.

⚠️ Важно. Если бот отчётов не подключён или e-mail не задан, соответствующий канал не сработает, и ты увидишь жёлтое предупреждение прямо в настройке. Подключи канал, иначе отчёт «уйдёт в никуда».

6. Проверь превью и сохрани

Внизу, превью с реальными числами за период: это ровно то, что придёт в Telegram/на почту. Нажми «Сохранить», отчёт встанет на расписание.

Проверь, что работает

Нажми «Отправить сейчас»: отчёт придёт немедленно в выбранные каналы. Это самый надёжный способ убедиться, что и текст, и доставка настроены верно, не дожидаясь расписания.

💡 История доставок видна владельцу, если отчёт не дошёл, по ней понятно, на каком канале сбой.

Частые ошибки

СимптомПричинаЧто делать
Раздела «Отчёты» нет в менюТы не владелец проектаРаздел доступен только владельцу; попроси владельца настроить
Отчёт не пришёл в TelegramНе подключён бот отчётов / неверный chat IDПодключи бота отчётов; оставь поле чата пустым для чата по умолчанию
Отчёт не пришёл на почтуНе задан e-mail уведомленийУкажи адрес на вкладке Общие настройки → Уведомления проекта
В отчёте нулиВыбран период, где не было активностиПроверь период и что бот в это время работал
Первая строка отчёта «WhatsApp ограничил номер бота» или «WhatsApp-канал отключён»В этот момент бот не принимает сообщения из WhatsAppЦифры за такой период неполные: нули значат не затишье, а неработающий канал. Состояние канала видно в разделе «Каналы»

Вопросы, которые обычно возникают

Чем отчёт отличается от уведомлений?
Уведомления это «событие случилось прямо сейчас» (новый лид, оплата). Отчёт, сводка за период по расписанию (итоги дня/недели).

Можно несколько отчётов на один проект?
Да: например, ежедневная короткая сводка в Telegram и подробный недельный отчёт на почту.

Кто увидит отчёт?
Только адресаты выбранных каналов (твой Telegram-чат бота отчётов и/или e-mail проекта). Клиенты ничего не получают.


Под капотом

  • Доставку гонит крон report-tick: на каждый «слот» расписания берётся claim (claim_report_slot), собирается тело (buildAndDeliverReport) и отправляется в заданные каналы; каждая попытка пишется строкой в report_deliveries (история доставок владельца).
  • Каналы: Telegram (telegram_report_bot_token + telegram_report_chat_id; пусто → чат по умолчанию) и Email (notify_email проекта).
  • Период данных: календарный (вчера / прошлая неделя / прошлый месяц) либо окно в часах: числа считаются тем же слоем метрик, что и Аналитика, поэтому отчёт и кабинет сходятся.
  • «Отправить сейчас» и крон используют один путь сборки+отправки: превью, ручная отправка и автоотправка дают идентичный текст.
  • Если WhatsApp-канал отключён или номер ограничен WhatsApp, первой строкой отчёта (и в плитках, и в своём тексте) идёт предупреждение об этом (channelStatusLine). Без него такой период выглядел бы как «Тихий период: 0 диалогов, 0 лидов».

Простыми словами

Это как будто у тебя есть помощник, который каждое утро кладёт на стол листок: вчера написали столько-то человек, из них столько-то оставили заявку, потрачено столько-то, на счету столько-то. Ты сам выбираешь, что в этом листке и когда он приходит, каждый день, раз в неделю или раз в месяц, в Telegram или на почту. Хочешь, соберёшь текст листка под себя. И есть кнопка «прислать прямо сейчас», чтобы проверить, что всё настроено. Клиенты этого не видят, отчёт только для тебя.


Дальше: → Логи событий
Связано: Аналитика · Лиды и статусы · Уведомления владельцу
Не получилось? → Бот не отвечает

Документация › Интеграции › Что можно подключить

Интеграции, что можно подключить

Интеграция связывает бота с сервисом, где уже живёт ваш бизнес: CRM, касса ресторана, таблица, календарь, склад. Бот сам кладёт туда заявки и сам берёт оттуда факты, а вы ничего не переносите руками. Ниже все интеграции одним списком, у каждой своя статья с подключением по шагам.

⏱ 5 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Подключение бывает двух видов: карточка на странице «Интеграции» (CRM, iiko, вебхуки) и функция бота (Google, МойСклад, ваш API).
  • Google подключается без пароля: вы делитесь таблицей или календарём с адресом бота, как с коллегой.
  • Нужной системы нет в списке, но у неё есть API: подключите её функцией «Своя интеграция по API».
  • Страница «Интеграции» и раздел «Функции» открыты роли редактор и выше.

Все интеграции

СервисЧто даётГде подключаетсяСтатья
Bitrix24сделки в вашей воронке, ответственный, поля, движение по этапамИнтеграции → CRMBitrix24
amoCRM / Kommoто же для amoCRM и её международной версииИнтеграции → CRMamoCRM
АльфаCRM (AlfaCRM)учебные центры: свободные места в группах, запись на занятие, поиск ученикаИнтеграции → АльфаCRMАльфаCRM
iikoрестораны: свободные комнаты и столы, бронь прямо на кассу, стоп-листИнтеграции → iikoiiko
Google Таблицыжурнал заявок, прайс, расписание, бронь ячейки в сеткеФункции → Новая функция → Из готового шаблона → Google ТаблицыGoogle Таблицы
Google Календарьсвободное время и запись клиента на приёмФункции → Новая функция → Из готового шаблона → Запись на времяGoogle Календарь
Gmailписьмо от бота с вашей корпоративной почты (только Google Workspace)по запросу в поддержкуGmail
МойСкладналичие и цена товара прямо в ответе ботаФункции → Новая функция → Своя интеграция по APIМойСклад
Вебхукиплатформа сама шлёт события проекта на ваш адресИнтеграции → ВебхукиВебхуки
Своя система по APIбот обращается к вашему сервису посреди разговораФункции → Новая функция → Своя интеграция по APIСвоя интеграция по API

Приём оплат (Kaspi) и API-ключи живут на соседних вкладках той же страницы: Приём оплат от клиентов, Публичный API. Каналы связи (WhatsApp, Telegram, Instagram) это не интеграции, у них своя страница: Каналы.


Два способа подключения

Карточка на странице «Интеграции». Подключается один раз на проект и работает сама: бот заводит сделку в CRM после разговора, касса ресторана получает бронь, события уходят на ваш адрес. Вы вставляете ключ доступа, нажимаете «Проверить и подключить», и платформа сама подтягивает ваши воронки, сотрудников или залы.

Функция бота. Это инструмент, который бот вызывает посреди разговора, когда он нужен: проверить свободное время в календаре, найти клиента в таблице, спросить склад. Функции добавляются из каталога в разделе «Функции», и у каждой есть описание, по которому бот решает, когда её звать.

CRM и АльфаCRM дают и то и другое. Подключили карточку, и бот сразу получает инструменты этой CRM без отдельной настройки: может сам завести сделку своего клиента, посмотреть её, обновить поля, оставить комментарий, а двигать этапы, если вы это включили (АльфаCRM: проверить свободное время, записать на занятие, найти учеников на номере клиента). Чужие сделки и чужих учеников бот не видит. У iiko функции добавляются кнопкой в окне интеграции.


Как подключить Google

У DOS AI нет кнопки «Войти через Google» с паролем. Вместо неё у платформы есть сервисный аккаунт: служебный Google-аккаунт со своим адресом почты. Вы делитесь с ним конкретной таблицей или календарём, ровно как поделились бы с сотрудником.

  1. Добавьте функцию Google из каталога (Таблицы или Календарь).
  2. Наверху настроек функции есть панель «Доступ к Google Sheets» (у календаря «Доступ к Google Calendar») с адресом и кнопкой «Копировать».
  3. Откройте свою таблицу или календарь → «Поделиться» → вставьте этот адрес с правами «Редактор» (у календаря: «Настройки и общий доступ» → «Добавить пользователей или группы», право «Изменять и просматривать все сведения о мероприятиях»).
  4. Вставьте в функцию ссылку на таблицу или ID календаря и нажмите «Проверить подключение». Зелёное «Подключение работает» значит, что бот видит ваши данные.

Почему так, а не через вход в Google. Вы не отдаёте платформе доступ ко всему своему аккаунту: бот видит ровно то, чем вы с ним поделились, и ничего больше. Захотели отключить, уберите адрес из «Поделиться», и связь разорвана.

⚠️ Самая частая ошибка: забыли поделиться или дали права только на чтение. Тогда «Проверить подключение» покажет красную ошибку с адресом, который надо добавить. Боту нужно и читать, и писать, поэтому права нужны «Редактор».

Нет нужного сервиса

  • У сервиса есть API (своя CRM, склад, сайт, ERP): подключите его функцией «Своя интеграция по API». Пример с настоящим сервисом: МойСклад.
  • Нужно, чтобы платформа сама сообщала вашей системе о событиях (новый лид, оплата, отключение канала): Вебхуки.
  • Ни то ни другое не подходит: напишите нам, мы подскажем или добавим интеграцию.

Под капотом

  • Google: вход сервисного аккаунта по JWT (GOOGLE_SERVICE_ACCOUNT_EMAIL + GOOGLE_SERVICE_ACCOUNT_KEY), права spreadsheets, calendar, calendar.events, gmail.send. Пользовательского OAuth нет намеренно. ID таблицы и календаря модель не выбирает: их задаёт владелец в настройках функции.
  • Ключи CRM, iiko и заголовки авторизации функций хранятся зашифрованными и на экран повторно не выводятся.
  • Каждый внешний адрес проходит проверку безопасности: запросы во внутреннюю сеть заблокированы (подробно).

Простыми словами

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


Дальше: → CRM: что бот делает в вашей CRM
Связано: Функции · Своя интеграция по API · Вебхуки
Не получилось? → Функция не вызывается или падает

Документация › Интеграции › Google Таблицы

Google Таблицы

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

⏱ 5 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Функции → Новая функция → Из готового шаблона → Google Таблицы: шесть готовых действий, на чтение и на запись.
  • Поделитесь таблицей с адресом сервисного аккаунта как «Редактор», как это сделать.
  • Вставьте ссылку на таблицу целиком, «Загрузить листы», выберите лист, «Проверить подключение».
  • У разных функций могут быть разные таблицы: одна под заявки, другая под прайс.

Что бот умеет с таблицей

ДействиеЧто делает
Узнать структуру таблицылисты, заголовки колонок, размеры
Прочитать таблицустроки (может сам скрыть строки с прошедшими датами)
Найти в таблицестроку по значению: имени, телефону, статусу
Добавить строкуновая строка, например заявка: имя, телефон, услуга, дата
Обновить запись в таблицеменяет строку или одну ячейку, умеет «записать, только если ячейка свободна»
Удалить строкуубирает строку по значению

Частые сценарии: журнал заявок (каждый клиент новой строкой), прайс или расписание (бот подсматривает и отвечает), бронь ячейки в сетке «сотрудник × время» через «Обновить запись» с защитой от занятой ячейки. Если записей много и есть несколько специалистов, удобнее движок окошек.


Подключение

  1. Функции → Новая функция → Из готового шаблона → Google Таблицы, выберите нужное действие.
  2. В панели «Доступ к Google Sheets» нажмите «Копировать». Откройте свою таблицу → «Поделиться» → вставьте адрес с правами «Редактор».
  3. В поле «Таблица Google Sheets» вставьте ссылку из адресной строки браузера целиком. ID таблицы платформа вытащит сама.
  4. Нажмите «Загрузить листы» и выберите лист. Не выбрали, и бот работает с первым листом.
  5. Нажмите «Проверить подключение»: появятся названия колонок и первые строки. Значит, бот видит таблицу.
  6. Проверьте в тест-чате: «запишите меня на завтра».
💡 Пустая таблица. Колонки создадутся сами из первой записи бота. Хотите свой порядок колонок, впишите заголовки в первую строку заранее.
🔒 Формулы не выполнятся. Если клиент напишет в имени что-то вроде =IMPORTXML(...), в таблицу ляжет текст, а не формула.

Если не работает

  • «Сервис-аккаунт не имеет доступа в таблицу». Вы не поделились таблицей с адресом бота или дали права «Читатель». Нужен «Редактор»: боту надо и писать.
  • «Таблица не найдена». Ссылка скопирована не целиком или таблицу удалили. Вставьте ссылку из адресной строки браузера ещё раз.
  • «Лист «…» не найден в таблице». Лист переименовали: нажмите «Загрузить листы» и выберите заново. Большие и маленькие буквы в названии различаются.
  • Бот пишет не в те колонки. Заголовки в первой строке должны совпадать со словами, которые бот передаёт. Посмотрите, что пришло, в логах функции, и поправьте заголовки или описание функции.

Остальные причины: Функция не вызывается или падает.


Простыми словами

Google-таблица это самый простой склад данных для бота. Он складывает туда заявки (каждый клиент новой строчкой) или подсматривает в неё цены и расписание. Подключение: поделиться таблицей с адресом бота как с коллегой и вставить ссылку. Бот говорит «нет доступа», значит забыли поделиться или дали права только на чтение.


Дальше: → Google Календарь
Связано: Что можно подключить · Функции · Запись на время
Не получилось? → Функция не вызывается или падает

Документация › Интеграции › Google Календарь

Google Календарь

Бот смотрит ваш Google Календарь, называет клиенту свободное время и сам ставит запись. Клиент может попросить перенести или отменить свою запись, и бот сделает это в том же календаре. Подключение: поделиться календарём с адресом бота и указать ID календаря.

⏱ 6 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Функции → Новая функция → Из готового шаблона → Запись на время: пять готовых действий календаря.
  • Поделитесь календарём с адресом сервисного аккаунта (право «Изменять и просматривать все сведения о мероприятиях»), как это сделать.
  • Календарь = ID вашего календаря: для основного это ваш email в Google. Слово primary не подходит.
  • Рабочие дни, часы, длительность и «Записей на одно время» задаются в функции «Проверить свободное время».

Что бот умеет

ДействиеЧто делает
Проверить свободное времясвободные окна на дату внутри ваших рабочих часов; говорит «занято с 14:00 до 16:00», не называя, что именно стоит в календаре
Записать клиентаставит событие в календарь
Перенести или изменить записьдвигает событие на другое время
Показать записипредстоящие записи этого клиента
Отменить записьснимает событие

Защита записи работает сама:

  • Нет двойных броней. Перед созданием события время проверяется ещё раз с учётом вместимости: если двое одновременно берут последнее окно, второй получит другое время. Повтор записи того же клиента на то же время в том же диалоге вторую бронь не создаёт.
  • Клиент видит и меняет только свои записи. Чужие брони и ваши личные события бот не покажет и отменить не даст, на любом канале.
  • В прошлое записать нельзя. Перепутал бот дату, и запись отклоняется с просьбой уточнить.

Подключение

  1. Функции → Новая функция → Из готового шаблона → Запись на время, добавьте нужные действия (обычно все пять).
  2. Откройте доступ. Наверху настроек функции панель «Доступ к Google Calendar» с кнопкой «Копировать». В Google Календаре: нужный календарь → «Настройки и общий доступ» → «Добавить пользователей или группы» → вставьте адрес, выберите право «Изменять и просматривать все сведения о мероприятиях» и нажмите «Отправить».
  3. Укажите календарь. Для основного календаря его ID это ваш email в Google (ivan@gmail.com). Для отдельного календаря адрес вида ...@group.calendar.google.com лежит в его настройках, раздел «Интеграция календаря». Можно вставить ссылку из адресной строки, ID вытащится сам.
  4. Нажмите «Проверить подключение»: зелёный ответ покажет, сколько событий бот видит, красный назовёт причину.
⚠️ Почему не primary. Бот заходит в Google под своим служебным аккаунтом, и primary для него это его собственный технический календарь, которого вы не видите. Записи туда «пропадают».
💡 Отдельный календарь под бота удобнее личного: в левой колонке Google Календаря «Другие календари» → «+» → «Создать календарь».

Расписание работы

Задаётся в функции «Проверить свободное время», бот предлагает время только внутри этих рамок:

  • Расписание работы: рабочие дни и часы.
  • Длительность слота и перерыв между записями.
  • Минимальный запас до записи (на ближайший час записать нельзя) и Дней вперёд (как далеко бот смотрит).
  • Записей на одно время: по умолчанию 1. Больше, если на одно время можно записать нескольких (несколько кресел, групповое занятие, четыре одинаковые бани).

Как настроить запись под разные случаи (услуги разной длины, несколько одинаковых объектов, объекты разной вместимости): Запись на время.

Удобные приёмы прямо в календаре:

  • Обед и перерывы: повторяющееся событие «Обед» с 13:00 до 14:00. Бот считает это время занятым.
  • Выходной или отпуск: событие «на весь день». Бот не предложит запись в этот день.
  • Свои брони вносите в тот же календарь: бот считает занятость по нему целиком и не различает, кто создал событие.
Работа за полночь. Если заведение работает ночью, укажите конец раньше начала, например «с 11:00 до 02:00». Бот поймёт это как «до двух часов ночи следующего дня» и будет предлагать и ночные окна, а под полями появится подсказка «Работа через полночь». Круглосуточно задаётся как 00:00-23:59.

Часовой пояс

Бот считает время по поясу проекта (Настройки → Общие). У функции можно задать свой пояс в поле «Часовой пояс», например для филиала в другом городе. Переход на летнее и зимнее время учитывается сам.


Приглашение и напоминания клиенту

  • Приглашение на почту. Тумблер «Отправлять клиенту приглашение на почту» в функции «Записать клиента»: если клиент дал email, ему придёт приглашение на встречу из Google Календаря. По умолчанию выключено: незваные приглашения часто принимают за спам.
  • Подтверждение «вы записаны» и напоминания перед визитом настраиваются один раз на весь проект в разделе Автоматизации → Записи, а не в функциях: Подтверждение и напоминания о записи.

Простыми словами

Клиент пишет «можно завтра в три?», бот смотрит в ваш календарь: свободно, записывает, занято, предлагает другое время. Подключение как у таблиц: поделиться календарём с адресом бота и указать, какой календарь. Свои личные события и обед просто ставьте в тот же календарь, бот их обойдёт.


Дальше: → Gmail
Связано: Запись на время · Записи и напоминания · Google Таблицы
Не получилось? → Функция не вызывается или падает

Документация › Интеграции › Gmail

Gmail

Письмо от бота с вашей корпоративной почты Google. Работает только с Google Workspace (почта на своём домене) и после настройки у администратора домена. Обычный ящик @gmail.com не подойдёт.

⏱ 3 мин · 👤 для владельца · 🟢 live

Сначала проверьте, нужно ли вам это. Письма клиенту (подтверждение, реквизиты, памятка) бот и так умеет отправлять без всякого Google: Письмо клиенту. Ответ клиента приходит на вашу почту. Уведомления себе: Уведомления владельцу.

Когда Gmail всё-таки нужен

Когда письмо должно уйти именно с адреса вашего домена через Google и лечь в «Отправленные» вашего Workspace. Для этого:

  • у вас Google Workspace, и администратор домена включил для сервисного аккаунта платформы делегирование на уровне домена (domain-wide delegation), либо назначил его разрешённым отправителем;
  • функцию «Отправить с Gmail (Workspace)» мы включаем в проект по запросу: в каталоге её нет, напишите в поддержку.

Без делегирования Google отвечает отказом 403, и бот сообщит, что письмо не ушло. Для обычного @gmail.com делегирования не бывает, поэтому и Gmail-функция там не заработает.

Функция отправляет письмо с полями «кому», «тема», «текст», по желанию копии и адрес для ответа. Все поля очищаются от переводов строк, поэтому подменить заголовки письма через текст клиента нельзя.


Дальше: → CRM
Связано: Письмо клиенту · Уведомления владельцу · Что можно подключить
Не получилось? → напишите в поддержку: Gmail требует Google Workspace

Документация › Интеграции › CRM

CRM, что бот делает в вашей CRM

Бот сам заводит сделку с итогом разговора, кладёт её в нужную воронку и этап, назначает менеджера, заполняет поля и двигает сделку по воронке вслед за разговором. Эта статья про то, что умеет связка и что настроить после подключения. Само подключение у каждой CRM своё: Bitrix24, amoCRM / Kommo, АльфаCRM для учебных центров.

⏱ 9 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Подключение: Интеграции → CRM, ключ доступа из CRM, кнопка «Проверить и подключить». Платформа сохраняет ключ только после успешной проверки и сама загружает воронки, этапы, поля и сотрудников.
  • Клиент оставил заявку, и в CRM появилась сделка: с итогом разговора, источником и ссылкой на переписку. На один диалог одна сделка.
  • После подключения выберите, куда падают заявки и кому достаются. По желанию: поля сделки, движение по воронке, копия переписки, обратная связь из CRM.
  • Бот видит и меняет только сделку своего клиента. Этапы сделки он двигает, только если вы это включили, и никогда не закрывает сделку сам.
  • CRM перестала принимать сделки или скоро истечёт токен amoCRM: вам придёт уведомление с причиной и тем, что сделать.

Что бот делает в CRM

  • Заводит сделку. Сделка появляется сама, когда бот понял, что клиент оставил заявку: статус лида «Квалифицированный», «Горячий» или «Резерв» (при выключенной воронке, когда клиент назвал телефон), либо сработала функция с галочкой «Это заявка» (обычно передача заявки менеджеру). Тогда же появляется карточка в разделе «Лиды». Бот может завести сделку и раньше, если по ходу разговора решил, что клиент готов. В сделке имя, телефон, источник (канал, реклама, метки UTM) и примечание: что хочет клиент и ссылка на переписку в DOS AI. На один диалог одна сделка: второй сделки в том же разговоре не будет.
  • Не плодит дубли клиентов. Сделка привязывается к контакту, который уже есть в CRM с номером, с которого пишет клиент. Нет такого контакта, и заводится новый.
  • Узнаёт постоянного клиента. На первом сообщении нового диалога платформа ищет клиента в CRM по номеру, с которого он пишет, и бот получает его имя. Поиска по имени нет намеренно: тёзка из CRM не станет «старым клиентом».
  • Работает со сделкой посреди разговора. Когда CRM подключена, бот сам получает её инструменты: завести или посмотреть сделку своего клиента, обновить её поля, оставить комментарий. Отдельно добавлять функции не нужно.
  • Передаёт заявку конкретному менеджеру. Ответственный выбирается один раз на заявку. Если в тексте уведомления менеджеру стоит подстановка {{responsible}}, там окажется тот же человек, что в сделке.

Чего бот не делает

  • Не видит чужие сделки и контакты. Все его инструменты работают только со сделкой клиента из этого диалога. Поиска по базе CRM у бота нет: попросить его «найти в базе Айгуль и скинуть номер» бесполезно.
  • Не меняет этап и ответственного сам, пока вы не включили «Бот сам переводит сделку по рабочим этапам». Даже с включённым переключателем он не закрывает сделку как выигранную или проигранную: это делает менеджер. Движение по воронке держит то же правило: только вперёд и не на итоговые этапы.
  • Не пишет в CRM из тест-чата. Проверка бота ничего не создаёт в настоящей CRM: бот отвечает так, будто сделку завёл, а читать (этапы, сделку) может по-настоящему.

Подключение

CRMЧто понадобитсяСтатья
Bitrix24входящий вебхук с правами «CRM» и «Пользователи»Bitrix24
amoCRM, Kommoдолгосрочный токен внешней интеграции и адрес аккаунтаamoCRM
АльфаCRM (учебные центры)e-mail и ключ API v2api из профиляАльфаCRM

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


Что настроить после подключения

Блоки появляются сразу после успешной проверки, в таком порядке.

1. Куда падают заявки и кому достаются

  • Воронка и этап для заявок бота. Если этап не выбрать, CRM положит сделку в свой первый этап (у amoCRM это «Неразобранное», где заявка теряется среди чужих). Итоговых этапов в списке нет: заявка не может появиться сразу закрытой. Если стадия разговора на момент заявки сопоставлена в пункте 4, сделка тут же переезжает на её этап.
  • Кому записывать заявки. Отметьте одного менеджера, и все заявки его. Отметьте нескольких, и заявки пойдут по очереди. Очередь двигает заявка, которую бот передал менеджерам (например, в Telegram-группу): поэтому в группе ответственные чередуются ровно. Сделка, которую бот завёл без такой заявки (например, «отложенный спрос»), получает того, чья очередь следующая, но очередь не двигает. Придёт по этому клиенту заявка, очередь назначит его честно, и если ответственный сменился, а сделку ещё никто не трогал, CRM получит того же человека, что назван в заявке. Клиент, у которого уже был ответственный по заявке, остаётся у него. Никого не отметили, и сделка может остаться ничьей.
  • Заголовок новой сделки. К нему добавится имя клиента. Пусто: сделка называется именем клиента.
  • Кнопка «Сохранить» у этого блока своя. Кнопка «Обновить воронки и поля» перечитывает CRM, если вы там что-то поменяли.

2. Что бот делает в CRM

Короткий список того, что описано выше, и переключатель «Бот сам переводит сделку по рабочим этапам». Выключен по умолчанию: этапы ведут менеджеры и правила из пункта 4.

3. Поля сделки

Выберите данные бота и поле CRM, куда их класть. Данные ложатся прямо в поле сделки, а не в общий комментарий. Имя, телефон, итог разговора и сумма обновляются на каждом ходе, где они изменились, поля анкеты когда бот их записал.

  • Имя, телефон, e-mail, итог разговора, сумма выбираются кнопками.
  • Своё поле анкеты (город, бюджет, размеры) тоже кнопкой: под стандартными данными окно показывает, что ваш бот уже собирал в диалогах, и рядом число диалогов. Бот называет одно и то же по-своему, например city, а не «город», поэтому берите название отсюда, а не по памяти. Ваш бот ещё ничего такого не собирал, впишите название сами в строке «+ Добавить поле».

Значение, которое не подходит к полю, пропускается, а остальные поля доходят: вариант не из списка в поле-списке, текст без числа в числовом поле. Сумму вида «50 000 тг» или «1,5 млн» платформа сама переводит в число. Если в CRM нет своих полей сделки, блок так и скажет: заполнять нечего.

4. Движение сделки по воронке

Сопоставьте стадии разговора (Приветствие … Завершено) с этапами вашей воронки. Меняется стадия разговора, ответом бота или правилом с действием «перевести стадию», и сделка сама едет по воронке CRM. Новая сделка сразу встаёт на этап своей стадии. Оставьте этап пустым, чтобы сделку на этой стадии не двигать. Воронок в CRM несколько: у каждой стадии выберите воронку, а если не выбрали, в списке этапы подписаны воронкой («Переговоры · Розница»), и сделка поедет в ту воронку, чей этап вы выбрали.

  • Только вперёд. Сделку, которую менеджер уже продвинул дальше, бот назад не тянет, а выигранную или проигранную не трогает вовсе. Клиент, написавший после оплаты, не утащит сделку из «Оплачено» обратно в «Переговоры».
  • Закрывает сделку только менеджер. Итоговых этапов («Успешно реализовано» и «Закрыто и не реализовано» у amoCRM, «Сделка успешна» и «Сделка провалена» у Bitrix24) в списке нет.
  • Стадии ведёт «Воронка продаж» в настройках бота, подвкладка «Расширенные настройки». Выключена: бот стадии не меняет, сделку двигают только правила, и окно CRM предупредит об этом.
  • Каждый переезд виден в ленте диалога строкой «Сделка переехала в «…» за стадией разговора».

5. Копия переписки в сделку

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

6. Обратная связь: CRM → DOS AI

Нажмите «Сгенерировать ссылку» и вставьте её в исходящий вебхук своей CRM (где это место, написано в статье про вашу CRM). Тогда смена этапа сделки, примечания и удаление сделки появятся в ленте диалога, а стадия разговора переедет по сопоставлению из пункта 4. Ссылку можно скопировать снова или выпустить новую (старая перестанет работать).


Как проверить, что всё работает

Тест-чат в настоящую CRM не пишет, поэтому проверка одна, настоящая:

  1. Напишите своему боту в WhatsApp, Instagram или Telegram со своего телефона, как клиент, и оставьте заявку: имя и что хотите.
  2. Через минуту в CRM появится сделка в выбранной воронке и на выбранном этапе, с вашим менеджером и примечанием «Заявка от бота DOS AI» со ссылкой на переписку.
  3. В ленте диалога этого разговора появится строка о созданной сделке, а в карточке контакта справа номер сделки со ссылкой в CRM.
  4. Удалите пробную сделку в CRM.

Сделки нет: откройте страницу «Интеграции». Если CRM отказала, над окном CRM будет красная плашка с причиной и тем, что сделать, а заявка останется в разделе «Лиды».


Если не подключается или перестало работать

Кнопка «Проверить и подключить» называет причину словами вашей CRM: токен amoCRM истёк (с датой) или скопирован не целиком, адрес аккаунта или портала не найден, вебхук Bitrix24 удалён или заблокирован, не хватает прав, CRM не оплачена, CRM не отвечает. Что делать в каждом случае, написано в статье про вашу CRM.

Уведомления владельцу (не чаще раза в сутки на одну причину):

  • «Заявки не доходят в CRM»: CRM отказала по причине, которую чините вы (истёк токен, удалили вебхук, не хватает прав, кончилась оплата). Временные сбои платформа повторяет сама и вас не тревожит.
  • «Заявка не дошла до CRM»: CRM не приняла заявку за сутки и пять попыток. В уведомлении имя клиента; сама заявка лежит в разделе «Лиды», её можно перенести в CRM руками.
  • «Токен amoCRM скоро истечёт»: за две недели и за три дня до конца срока. Срок записан в самом токене, окно CRM показывает его строкой «Токен действует до …».
🔒 Ключи CRM хранятся зашифрованными и на экран повторно не выводятся. Адрес CRM проходит проверку безопасности. Отключить CRM может администратор проекта; ключ при этом удаляется, и для повторного подключения понадобится новый токен amoCRM или адрес вебхука Bitrix24. Сделки в CRM и заявки в «Лидах» остаются.

Под капотом

  • Подключение: POST /api/projects/{id}/crm-connection проверяет вписанные данные адаптером CRM, сохраняет их только при успехе, сбрасывает кэш адаптера, загружает метаданные (воронки, поля, сотрудники) и читает срок токена amoCRM (crm_settings.token_expires_at).
  • Сделка для диалога: один путь createDealForConversation у автоматического создания по заявке (syncLeadToCRM) и у функции бота crm_create_deal: замок на диалог, поиск контакта по номеру канала, сделка в воронку и этап владельца, примечание, номер сделки в conversations.crm_deal_id. В Bitrix24 это crm.deal.add с карточкой контакта.
  • Инструменты бота: номер сделки берётся из диалога, а не от модели; поиска контактов нет; перемещение только при crm_settings.bot_moves_stages, и не на итоговые этапы. В тест-чате запись в CRM изображается. Если бот в одном ходе заводит сделку и, например, оставляет комментарий, сделка заводится первой: остальные функции CRM ждут её номер (раньше комментарий мог потеряться).
  • Движение по воронке: один путь syncDealStageToCrm у ответа бота, правила «перевести стадию» и создания сделки. Где сделка сейчас, спрашивается у CRM; только вперёд, закрытую не трогает, на итоговый этап не везёт. Стадия, пришедшая из CRM (обратная связь), обратно в CRM не едет. Сторож stage-writers-move-the-deal.test.ts находит каждого, кто пишет стадию диалога.
  • Поиск клиента: на первом сообщении нового диалога lookupCrmContact по номеру канала, совпадение по цифрам номера.
  • Поля: crm_settings.field_mapping; значение приводится к типу поля (coerceCrmFieldValue), неподходящее пропускается. Задачи CRM хода запускаются до отправки ответа и дожидаются после неё.
  • Копия переписки: крон раз в 2 минуты. CRM → DOS: POST /api/webhook/crm, секрет в ?secret= или заголовке x-crm-secret, по желанию подпись HMAC.
  • Метаданные CRM кэшируются, ручное обновление до 30 раз в час.

Простыми словами

Если вы уже работаете в CRM, бот встраивается в привычный процесс: каждый новый клиент из переписки сам становится сделкой в нужной воронке и у нужного менеджера, с коротким итогом, что он хочет, и ссылкой на переписку. Постоянного клиента бот узнаёт по номеру, с которого тот пишет, и не заводит ему вторую карточку. Чужие сделки боту недоступны, и закрыть сделку он не может. Подключение это скопировать одну ссылку или один токен и нажать одну кнопку. Сломается что-то потом, например скоро истечёт токен, и вам заранее придёт уведомление, что нажать.


Дальше: → Подключить Bitrix24
Связано: amoCRM · АльфаCRM · Лиды · Стадии разговора · Логи событий
Не получилось? → Функция не вызывается или падает

Документация › Интеграции › Bitrix24

Bitrix24

Бот заводит сделки в вашем Bitrix24, кладёт их в нужную воронку и этап, назначает менеджера и привязывает к карточке клиента. Подключение занимает 2 минуты: создать входящий вебхук в Bitrix24 и вставить его адрес. Что бот делает в CRM и что настроить после подключения, общее для всех CRM: CRM.

⏱ 5 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • В Bitrix24: Приложения → Разработчикам → Другое → Входящий вебхук, права CRM и Пользователи.
  • В DOS AI: Интеграции → CRM → Bitrix24, вставить адрес вебхука, «Проверить и подключить».
  • Нужна роль администратора портала Bitrix24.

Подключение за 2 минуты

  1. В Bitrix24 откройте Приложения → Разработчикам → Другое → Входящий вебхук.
  2. В правах отметьте CRM (crm) и Пользователи (user). «Пользователи» нужны, чтобы выбрать, кому из менеджеров достаются заявки бота. Без этого права CRM подключится, но выбора ответственного не будет, и кабинет об этом предупредит.
  3. Нажмите Сохранить и скопируйте адрес вебхука для вызова REST API. Он выглядит так: https://mycompany.bitrix24.kz/rest/1/abcd1234efgh5678/.
  4. В DOS AI: Интеграции → CRM → Bitrix24, вставьте адрес и нажмите «Проверить и подключить».

Скопировали адрес вместе с хвостом метода (.../crm.deal.list.json): ничего страшного, платформа его отрежет.

🔒 Адрес вебхука работает как пароль: в нём зашит ключ доступа. Не публикуйте его. Утёк, удалите вебхук в Bitrix24, создайте новый и вставьте новый адрес.

Дальше выберите воронку, этап и менеджеров: что настроить после подключения.


Что появится в Bitrix24

  • Сделка, а не лид, в той воронке и на том этапе, которые вы выбрали. Режим CRM (с лидами или простой) на это не влияет.
  • Карточка контакта, привязанная к сделке. Если клиент с этим номером уже есть в Bitrix24, сделка привяжется к нему, второй карточки не будет.
  • Комментарий в ленте сделки: что хочет клиент, откуда пришёл и ссылка на переписку в DOS AI.
  • Источник: метки UTM и описание источника в полях сделки, если клиент пришёл из рекламы.

Обратная связь: изменения из Bitrix24 в DOS AI

Чтобы смена этапа сделки, дела и удаление сделки появлялись в ленте диалога:

  1. В DOS AI в настройках CRM нажмите «Сгенерировать ссылку» и скопируйте её.
  2. В Bitrix24: Приложения → Разработчикам → Другое → Исходящий вебхук.
  3. В поле адреса обработчика вставьте ссылку.
  4. В событиях отметьте Обновление сделки, Удаление сделки и Создание дела.
  5. Сохраните.

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


Если не подключается

СообщениеЧто сделать
Bitrix24 не принял адрес вебхукаВебхук удалили, пересоздали или Bitrix24 его заблокировал (так бывает, если адрес попал в открытый доступ). Откройте Приложения → Разработчикам → Интеграции, у вебхука ≡ → Изменить, скопируйте адрес заново и вставьте. Вебхука в списке нет, создайте новый.
У вебхука Bitrix24 не хватает правОткройте входящий вебхук, отметьте «CRM (crm)» и «Пользователи (user)», сохраните.
Аккаунт CRM не оплачен или заблокированПродлите тариф Bitrix24.
Нужен полный адрес входящего вебхукаВставлен адрес портала, а не вебхука: в адресе вебхука есть /rest/.
Портал Bitrix24 по адресу … не найденОпечатка в начале адреса (имя портала). Скопируйте адрес вебхука заново.
CRM не ответила или отвечает слишком долгоПроверьте, открывается ли Bitrix24 в браузере, и повторите через минуту.
🏢 Коробочный Bitrix24 (на своём сервере) тоже подходит, если он открывается из интернета по https://. Адрес вебхука у него такой же, с /rest/.

Дальше: → amoCRM
Связано: CRM: общее · Лиды · Стадии разговора
Не получилось? → Функция не вызывается или падает

Документация › Интеграции › amoCRM

amoCRM и Kommo

Бот заводит сделки в вашей amoCRM (или в её международной версии Kommo), кладёт их в нужную воронку и этап, назначает менеджера и привязывает к контакту клиента. Подключение занимает 3 минуты: создать внешнюю интеграцию, сгенерировать долгосрочный токен и вставить его. Что бот делает в CRM и что настроить после подключения, общее для всех CRM: CRM.

⏱ 5 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • В amoCRM: amoМаркет → ⋯ → Создать интеграцию, потом Ключи и доступы → Долгосрочные токены → Сгенерировать токен.
  • В DOS AI: Интеграции → CRM → amoCRM, адрес аккаунта и токен, «Проверить и подключить».
  • Токен живёт до 5 лет. Окно CRM показывает, до какого числа, а за две недели и за три дня до конца приходит предупреждение.

Подключение за 3 минуты

Нужна роль администратора аккаунта amoCRM.

  1. В amoCRM откройте amoМаркет в левом меню.
  2. Справа вверху нажмите ⋯ и выберите Создать интеграцию (внешняя интеграция).
  3. В поле ссылки для перенаправления впишите https://dosai.pro, дайте доступ ко всем данным, впишите название (например, DOS AI) и сохраните.
  4. В карточке интеграции откройте Ключи и доступы → Долгосрочные токены → Сгенерировать токен. Срок поставьте максимальный (до 5 лет).
  5. Скопируйте токен: amoCRM показывает его один раз.
  6. В DOS AI: Интеграции → CRM → amoCRM. В поле адреса впишите адрес аккаунта, то есть начало адреса в браузере, например mycompany.amocrm.ru (можно просто mycompany; аккаунт Kommo пишется полностью: mycompany.kommo.com). Вставьте токен и нажмите «Проверить и подключить».

Дальше выберите воронку, этап и менеджеров: что настроить после подключения.

⏳ Срок токена. Дата окончания записана в самом токене: окно CRM показывает её строкой «Токен действует до …», а за две недели и за три дня до конца вам придёт уведомление «Токен amoCRM скоро истечёт». Создайте новый токен и вставьте его в то же поле, кнопка «Проверить и сохранить». Если токен всё же истёк, придёт уведомление «Заявки не доходят в CRM»; заявки за это время не теряются, они лежат в разделе «Лиды».
ℹ️ Этап «Неразобранное». В сопоставлении стадий его нет, и так задумано: amoCRM пускает в него только новую заявку, а перевести туда существующую сделку не даёт даже вручную по API.

Что появится в amoCRM

  • Сделка в выбранной воронке и на выбранном этапе, с ответственным менеджером.
  • Контакт: если клиент с этим номером уже есть в amoCRM, сделка привяжется к нему, второго контакта не будет.
  • Примечание в сделке: что хочет клиент, откуда пришёл и ссылка на переписку в DOS AI.
  • Метки: канал (whatsapp, telegram), а для клиентов из рекламы площадка и «Реклама».

Обратная связь: изменения из amoCRM в DOS AI

Чтобы смена этапа, примечания и удаление сделки появлялись в ленте диалога:

  1. В DOS AI в настройках CRM нажмите «Сгенерировать ссылку» и скопируйте её.
  2. В amoCRM: amoМаркет → ⋯ → Веб-хуки → Добавить хук.
  3. Вставьте ссылку в поле адреса.
  4. Отметьте события сделок: смена этапа, изменение, удаление, примечание.
  5. Сохраните.

Если не подключается

СообщениеЧто сделать
Срок этого токена amoCRM закончился (дата)Создайте новый долгосрочный токен в той же интеграции и вставьте его.
Это не похоже на долгосрочный токен amoCRMТокен скопирован не целиком. Он длинный, начинается с eyJ и состоит из трёх частей через точку.
amoCRM не приняла токен для адреса …Токен создан в другом аккаунте, чем адрес в поле, или интеграцию в amoCRM удалили. Проверьте адрес аккаунта; не помогло, создайте интеграцию и токен заново.
Аккаунт CRM не оплачен или заблокированПродлите подписку amoCRM.
Нужен адрес аккаунта amoCRMВписано что-то другое: нужен mycompany.amocrm.ru, mycompany.kommo.com или просто mycompany.
Аккаунт amoCRM по адресу … не найденОпечатка в имени аккаунта.
CRM не ответила или отвечает слишком долгоПроверьте, открывается ли amoCRM в браузере, и повторите через минуту.

Дальше: → АльфаCRM для учебных центров
Связано: CRM: общее · Bitrix24 · Лиды
Не получилось? → Функция не вызывается или падает

Документация › Интеграции › АльфаCRM

АльфаCRM для учебных центров

Бот смотрит расписание преподавателей в вашей АльфаCRM (AlfaCRM), называет свободное время и сам записывает ученика на пробное занятие. Нового ученика он заводит в CRM сам, существующего находит по номеру, с которого пишет клиент. Урок появляется и в разделе «Записи», и родителю уходит напоминание. Подключение: e-mail и ключ API из вашего профиля АльфаCRM.

⏱ 5 мин · 👤 для владельца учебного центра · 🟢 live

За 30 секунд:
  • Раздел Интеграции → АльфаCRM: адрес CRM, e-mail, ключ API (v2api), «Проверить и подключить».
  • Филиалы, предметы и преподаватели подтянутся сами.
  • В «Настройках расписания» задайте длительность пробного занятия, перерыв, рабочие часы и минимальное время до записи.
  • Заявки сами в АльфаCRM не уходят: ученик и занятие появляются там, когда бот записывает на пробное.

Подключение

  1. Откройте АльфаCRM, наведите на своё имя справа вверху и выберите Мой профиль.
  2. Скопируйте E-mail и Ключ API (v2api). Ключа нет: администратор CRM должен дать вашей роли доступ к модулю v2api.
  3. Адрес CRM это адрес из браузера, например https://myschool.s20.online (подойдёт и адрес открытой страницы, платформа сократит его до начала). Можно вписать просто имя школы: myschool.
  4. В DOS AI: Интеграции → АльфаCRM, вставьте адрес, e-mail и ключ и нажмите «Проверить и подключить».
💡 Лучше завести для бота отдельного пользователя АльфаCRM с доступом только к нужным филиалам: так бот не увидит лишнего.

Настройки расписания

Под подключением есть блок «Настройки расписания». По нему бот считает свободное время:

НастройкаЧто значит
Длительность пробного занятияна сколько минут бот ставит занятие в CRM
Перерыв между занятиямизапас между уроками преподавателя
Начало и конец рабочего днябот не предложит время вне этих часов
Минимальное время до записи (часов)на ближайшие N часов записать нельзя

Сохраните кнопкой «Сохранить расписание».


Что бот умеет

Как только АльфаCRM подключена, бот получает три инструмента, отдельно добавлять функции не нужно:

  • Проверить свободное время по предмету, дате и, если клиент просит, конкретному преподавателю. Дата не названа: бот смотрит ближайшие три дня.
  • Записать на занятие, когда известны имя ученика, предмет, преподаватель, дата и время. Телефон берётся из WhatsApp сам, бот спрашивает его, только если клиент хочет оставить другой. На один номер часто записаны несколько детей: бот ставит урок тому, чьё имя назвали, а если такого ребёнка на номере нет, заводит нового ученика. Перед записью время проверяется ещё раз, поэтому двое клиентов не займут одно окно.
  • Найти учеников на номере, с которого пишет клиент, чтобы понять, кого он уже записывал. Бот видит только имена своих учеников: по чужому номеру или имени он никого не найдёт.

Урок, на который записал бот, появляется и в разделе «Записи»: родителю уйдёт напоминание по вашим настройкам. «Сегодня» и «уже прошло» бот считает по часовому поясу проекта.

В тест-чате урок в АльфаCRM не создаётся: свободное время бот читает настоящее, а запись только изображает.

Нужна запись по графику из Google-таблицы с занятостью из АльфаCRM (например, у каждого преподавателя свой график и минимальный возраст по предметам)? Это функция «Свободные окошки для записи»: Запись на время.


Если не подключается

Кнопка «Проверить и подключить» называет причину:

  • «По этому адресу АльфаCRM не отвечает». Опечатка в адресе (такой школы нет) или CRM сейчас недоступна. Откройте CRM в браузере и скопируйте начало адреса.
  • «Неверный e-mail или ключ API». Скопируйте их заново из «Моего профиля»: ключ мог смениться.
  • «У этого пользователя нет доступа к API». Попросите администратора АльфаCRM включить вашей роли модуль v2api.
  • Бот не видит преподавателей или предметы. Проверьте, к каким филиалам у пользователя есть доступ, и нажмите «Синхронизировать».

Дальше: → iiko для ресторанов
Связано: CRM: общее · Запись на время · Лиды
Не получилось? → Функция не вызывается или падает

Документация › Интеграции › МойСклад

МойСклад: наличие и цены в ответах бота

Клиент спрашивает «есть ли такой товар и почём», бот в этот момент смотрит ваш МойСклад и отвечает настоящим остатком и настоящей ценой. Прайс в промпте держать не надо, дублировать товары никуда не надо.

⏱ 12 мин · 👤 для владельца магазина или сервиса · 🟢 live

За 30 секунд:
  • Подключается функцией «Своя интеграция по API» в продвинутом режиме. Писать код не нужно, всё заполняется в полях.
  • От вас нужен токен доступа из аккаунта МойСклад.
  • Маппинг ответа обязателен: без него бот получит сотню полей на каждый товар и начнёт путаться.
  • Цены в МойСкладе хранятся в копейках: 4 900 ₸ лежит как 490000. Не предупредить бота значит назвать клиенту сумму в сто раз больше.

Что получится в итоге

Клиент:  Здравствуйте, есть шумоизоляция StP Аэро?
Бот:     Да, есть. StP Аэро, 12 листов на складе, 4 900 ₸ за лист.
         Возьмёте? Могу записать на установку.

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


Шаг 1. Токен доступа

Токен это длинная строка, которая заменяет логин с паролем. Создаётся в веб-версии МойСклада: Настройки → Токены → «+ Токен», токен показывается в открывшемся окне, скопируйте его. Создавать токены может пользователь с правами администратора.

⚠️ Прочитайте до того, как нажмёте кнопку. По документации МойСклада новый токен, выпущенный запросом, отзывает прежние токены того же пользователя. Если этим пользователем уже работают ваш сайт, касса или 1С, они могут отвалиться.

Заведите для бота отдельного пользователя с правами только на просмотр справочников и остатков и выпускайте токен ему. Менять документы и отгружать товар боту не нужно.

Если удобнее получить токен запросом: POST https://api.moysklad.ru/api/remap/1.2/security/token с обычной авторизацией логином и паролем, в ответ приходит токен.


Шаг 2. Создайте функцию «Своя интеграция по API»

Раздел Функции → Новая функция → «Своя интеграция по API». Понадобятся вкладки за разделителем «Продвинутое»: «Параметры URL» и «Что бот увидит в ответе». Без них здесь не обойтись.

Основное:

ПолеЗначение
Названиеcheck_stock
Описание для бота«Проверить наличие и цену товара на складе. Вызывай, когда клиент спрашивает про конкретный товар, его цену или наличие»
МетодGET
URLhttps://api.moysklad.ru/api/remap/1.2/entity/assortment

Описание читает не человек, а бот. По нему он решает, звать функцию или нет, так что пишите словами клиента: «спрашивает про товар, цену, наличие».

Вкладка «Параметры URL»:

КлючЗначение
search{{товар}}
limit5

{{товар}} это подстановка: бот сам положит туда название из вопроса клиента. limit держите небольшим: пяти позиций хватает, а сотня забьёт боту контекст.

Параметр функции (раздел «Параметры»):

ИмяТипОписание для ИИ
товарстрокаНазвание товара из вопроса клиента, как он его назвал

Авторизация: тип Bearer, в значение ваш токен. Он хранится зашифрованным и вырезается из логов вместе с остальными заголовками авторизации. Адрес проверяется на безопасность, см. Своя интеграция по API.


Шаг 3. Маппинг ответа. Без него не заработает как надо

МойСклад отдаёт на каждый товар под сотню полей: ссылки, идентификаторы, штрихкоды, налоги, даты правок, атрибуты. Бот всё это видит, платит за это токенами и хуже соображает.

В настройках функции откройте вкладку «Что бот увидит в ответе» и включите «Включить маппинг ответа», а следом тумблер «Поиск по запросу клиента».

Дальше три поля:

Поле в интерфейсеЧто вписатьЧто это значит
1. Где в ответе лежит список товаровrowsМойСклад кладёт товары в массив rows
2. По какому полю искатьnameискать по названию товара
3. Откуда AI возьмёт запрос клиентатовартот самый параметр из шага 2

Какие поля передавать AI:

ПутьКороткое имя
rows[*].nameназвание
rows[*].salePrices[0].valueцена
rows[*].stockостаток
⚠️ Звёздочка обязательна. rows[*].name означает «имя у каждого товара в списке». Если написать rows.name без [*], поле окажется пустым, потому что rows это список, а не один товар. На этом спотыкаются чаще всего.

salePrices[0] это первая цена продажи. Если у вас несколько типов цен (розница, опт, для своих), нужный индекс подберите опытным путём, начните с нуля.

Короткие имена справа необязательны, но с ними бот тратит меньше токенов и реже путается.

Что бот получит на выходе:

{
  "matches": [
    { "название": "StP Аэро", "цена": 490000, "остаток": 12 }
  ],
  "count": 1
}

Аккуратный список вместо простыни. Если совпадений окажется слишком много, ответ обрежется по границе товара и бот получит подсказку попросить клиента уточнить запрос. Максимальную длину ответа можно поднять там же, по умолчанию 8000 символов.

Про остаток. Рядом с stock МойСклад отдаёт reserve (зарезервировано), inTransit (в пути) и quantity (доступно с учётом резерва). Если у вас часто бронируют товар, берите rows[*].quantity, оно честнее. Если складов несколько и нужен конкретный, добавьте в параметры запроса stockStore со ссылкой на нужный склад.


Шаг 4. Скажите боту про копейки

Это единственное место, где ошибаются все.

В МойСкладе все суммы хранятся в копейках. Цена 4 900 ₸ лежит в базе как 490000. Не сказать об этом значит услышать от бота «четыреста девяносто тысяч тенге», и клиент уйдёт молча, даже не написав в ответ.

Допишите в системный промпт:

Цены из функции check_stock приходят в копейках.
Перед тем как назвать цену клиенту, раздели на 100.

Шаг 5. Что говорить, когда товара нет

Ответ «нет в наличии» заканчивает разговор. Дайте боту продолжение, отдельной строкой в промпте:

Если товара нет в наличии, не заканчивай на этом.
Предложи похожий товар из того же ответа функции
или спроси, записать ли клиента, когда товар придёт.

Так вопрос про отсутствующую позицию превращается в заявку.


Шаг 6. Проверьте до того, как включите бота клиентам

Откройте тест-чат и спросите про товар, цену которого знаете наизусть.

Что смотреть:

  • цена совпадает с той, что у вас в МойСкладе (если больше в сто раз, вернитесь к шагу 4);
  • остаток совпадает с реальным;
  • бот нашёл товар, когда вы назвали его так, как называют клиенты, а не так, как он записан в учёте.

Третье проверьте отдельно. В учёте товар может лежать как «Шумоизоляция StP Aero 8мм», а клиент напишет «стп аэро». Поиск нечувствителен к регистру и ищет вхождение, но если расхождение сильное, добавьте в описание параметра примеры народных названий.


Что ещё можно, кроме остатков

Тем же способом бот дотягивается до любой части вашего МойСклада, меняется только адрес запроса:

ЗадачаЧто дёргать
Наличие и ценысправочник ассортимента
Остатки по конкретному складуотчёт по остаткам
Проверить, есть ли такой покупательсправочник контрагентов
Создать заказ прямо из перепискисоздание заказа покупателя, метод POST

Заказы из переписки настраиваются так же, только методом POST и с телом запроса. Тогда пользователю, под которым выпущен токен, нужны права на создание документов.


Если не работает

СимптомПричинаЧто делать
Все поля пустыеВ путях забыта звёздочкаrows[*].name, а не rows.name. Шаг 3
Цена в сто раз большеКопейкиШаг 4
Бот говорит, что не смог проверитьТокен отозван или перевыпущен под другую программуВыпустите новый и вставьте в функцию. Помните: прежний токен того же пользователя может перестать работать
Бот находит не тот товарКлиент называет товар иначе, чем он записан в учётеДобавьте в описание параметра примеры народных названий
Ответ обрезается, бот просит уточнитьСлишком много совпаденийУменьшите limit или поднимите максимальную длину ответа
Функция долго думаетМойСклад отвечает медленноПоднимите таймаут функции, повторы при сбоях уже встроены, см. Своя интеграция по API

Подробный разбор ошибок в статье Функция не вызывается или падает.


Простыми словами

У вас товары и цены живут в МойСкладе. Раньше, чтобы бот про них знал, пришлось бы переписывать весь прайс к нему в настройки и обновлять руками каждый раз.

Теперь бот спрашивает ваш МойСклад сам, посреди разговора с клиентом. Человек пишет «есть такое?», бот за секунду смотрит ваш учёт и отвечает честной цифрой: столько-то штук, столько-то тенге. Меняете цену у себя, бот говорит новую, ничего поддерживать не надо.

Чтобы это включить, нужен один ключ из вашего аккаунта МойСклад и минут двадцать настройки по шагам выше.

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

Проверьте всё на одном знакомом товаре в тест-чате, прежде чем включать бота клиентам.


Дальше: → iiko для ресторанов
Связано: Функции · Своя интеграция по API · Тест-чат
Не получилось? → Функция не вызывается или падает

Документация › Интеграции › iiko

iiko для ресторанов

Бот смотрит занятость комнат и столов по броням в iiko, ставит бронь прямо на кассу ресторана и отвечает по стоп-листу. Администратору не нужно переносить заявку из чата в кассу: бронь уже там.

⏱ 8 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Нужно одно значение: ключ API ресторана (iikoWeb → Интеграции → API-ключи). Регистрироваться на портале разработчика iiko не нужно.
  • Выберите кассу: залы и столы загрузятся сами, вебхук для отмен и переносов включится сам. Отметьте, какой зал это комнаты (каждый стол = комната), какой общий зал, а какие залы бот не трогает («на вынос», кофейня).
  • Кнопка «Добавить функции бота» в том же окне ставит боту три функции: свободны ли комнаты, бронь в iiko, брони гостя.
  • Брони через API включает ресторан или его дилер iiko. Пока они выключены, бот честно работает по старинке: заявка администратору карточкой.

Что понадобится

ЧтоГде взятьЗачем
Ключ API ресторанаiikoWeb → Интеграции → API-ключи, создаёт ресторан или его дилердоступ к организации, залам, броням и стоп-листам этого ресторана
Брони (резервы) включены на кассересторан или дилер iikoиначе бот не увидит занятость и не поставит бронь

Реквизиты приложения iiko (App ID и Client Secret) держит платформа: ресторану их вводить не нужно.

Подключение за 5 шагов

  1. Интеграции → iiko → «Подключить». Вставьте ключ ресторана и нажмите «Проверить и подключить». Платформа получит доступ, покажет организацию и кассы. Ключ хранится зашифрованным, повторно на экране не показывается.
  2. Выберите кассу (терминальную группу), к которой привязаны залы, и сохраните. У ресторана с кофейней их две. Залы и столы загрузятся сами (потом обновить можно кнопкой «Обновить залы»), и сам включится вебхук для отмен и переносов.
  3. Роли залов. Для каждого зала выберите роль: Комнаты (каждый стол это отдельная комната или кабина, бот называет их по имени), Общий зал (бот считает свободные столы) или Не использовать. Если в iiko у столов не заполнена вместимость (часто так), впишите её здесь: по ней бот подбирает комнату под число гостей. Подпись к столу (например, «свой санузел») бот тоже видит.
  4. Функции бота. В блоке «Функции бота для броней» нажмите «Добавить функции бота»: появятся «Свободны ли комнаты и столы», «Бронь в iiko» и «Брони гостя». Без них бот не видит занятость и не бронирует. Функции лежат в разделе «Функции», там их можно выключить или поправить.
  5. Настройки брони: сколько минут занимает одна бронь (по умолчанию 3 часа) и зазор между бронями одного стола. Сохраните.

«Стоп-лист iiko» имеет смысл, когда меню ресторана выгружено в облако iiko: Функции → Новая функция → Из готового шаблона → «Ресторан: iiko».

Как бот бронирует

  1. Гость назвал дату, время и число гостей. Бот вызывает «Свободны ли комнаты и столы» и получает: какие комнаты свободны на это время, какие подходят по числу гостей, сколько столов свободно в зале.
  2. Гость выбрал. Бот вызывает «Бронь в iiko»: занятость проверяется ещё раз, бронь ставится на кассу со статусом «новая». Компании больше одного стола достаётся несколько свободных столов зала, рассаживает администратор. Телефон гостя берётся из WhatsApp сам, бот его не спрашивает.
  3. Бронь попадает и в раздел «Записи» проекта: напоминание гостю уйдёт по вашим настройкам.
  4. Администратор видит бронь на кассе. Чтобы он сразу о ней узнал, в промпте бота можно попросить после брони отправить ему карточку с номером брони: такая карточка ложится в ту же запись, второй записи и второго напоминания не будет.

Статуса «подтверждена» у брони в iiko нет: у неё только «новая», «гости пришли», «закрыта» и отмена. Поэтому подтверждает гостю администратор в переписке.

Вебхук iiko включается сам после выбора кассы (если не вышло, в окне есть кнопка «Включить вебхук»). Он сообщает платформе об изменениях брони: отменённую на кассе бронь платформа снимает в «Записях», и напоминание гостю не уходит; перенесённую на другое время переносит, и напоминание уходит к новому времени.

Касса не на связи (например, ночью, когда ресторан закрыт) или iiko не отвечает: функция сразу говорит об этом боту, и он передаёт заявку администратору обычной карточкой (функция «Уведомление в Telegram»). Гостю о технике бот не рассказывает. Занятые комнаты, полный зал и такие ответы кассы бот обрабатывает сам: они не ставят диалогу пометку «ответьте руками» и не шлют вам тревогу.

В тест-чате бронь в iiko не создаётся: ответ кассы моделируется, а занятость читается настоящая. Телефона в тест-чате нет, и бот его не спрашивает, как и в WhatsApp.

Что бот НЕ делает через iiko

  • Не переносит и не отменяет брони сам: в iikoCloud API таких операций нет. Бот находит бронь гостя («Брони гостя») и передаёт просьбу администратору.
  • Не называет гостю номер стола в общем зале: он проверяет, что места есть, и ставит бронь на подходящие свободные столы. Пересадить может администратор на кассе.
  • Не пишет гостю «бронь подтверждена» сам: такого события у iiko нет, подтверждает администратор.
  • Не берёт меню из iiko: цены и состав бот читает из вашей базы знаний. Из iiko идут только брони и стоп-лист.

Частые вопросы

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

«iiko не принял ключ». Ключ скопирован не целиком или удалён в iikoWeb. Откройте iikoWeb → Интеграции → API-ключи, скопируйте ключ заново (или создайте новый) и нажмите «Сменить ключ».

У всех столов вместимость 0. Так iiko отдаёт незаполненные поля. Впишите вместимость в настройках интеграции или попросите ресторан заполнить её в iikoOffice.

Можно ли подключить несколько ресторанов группы? Да, каждый ресторан это отдельный проект со своим ключом API.

Кто может отключить iiko? Администратор проекта. Ключ и роли залов удаляются, брони в «Записях» и в iiko остаются.


Дальше: → Вебхуки
Связано: Что можно подключить · Запись на время · Записи и напоминания · Функции

Документация › Интеграции › Вебхуки

Вебхуки, события проекта на ваш адрес

Платформа сама отправляет POST-запрос на ваш адрес, когда в проекте что-то произошло: бот создал заявку, начался новый диалог, прошла оплата, отключился WhatsApp. Так ваша система, Zapier, Make или своя таблица узнают о событии сразу, без опроса.

⏱ 6 мин · 👤 для владельца и разработчика · 🟢 live

За 30 секунд:
  • Интеграции → Вебхуки → «Добавить вебхук»: название, адрес https://, события, по желанию заголовки для авторизации.
  • Кнопка «Тест» шлёт пробный запрос и говорит честно: адрес ответил 2xx и вебхук работает, или ответил ошибкой (и какой), или до него не достучаться.
  • Ваш сервер не ответил или ответил 5xx: платформа повторит, до пяти раз.
  • Не путайте с функцией «Своя интеграция по API»: там бот сам идёт к вам посреди разговора, а здесь платформа сообщает о событиях.

Как подключить

  1. Интеграции → Вебхуки → «Добавить вебхук».
  2. Название для себя (например, «CRM вебхук»).
  3. Адрес: только https:// и только публичный адрес (не localhost и не внутренняя сеть).
  4. События: отметьте нужные (список ниже).
  5. Заголовки запроса (по желанию): JSON для авторизации, например {"Authorization": "Bearer ваш_токен"}. Не нужны, оставьте поле пустым. При редактировании заголовки не показываются: пустое поле сохраняет прежние.
  6. Сохраните и нажмите «Тест»: на адрес придёт запрос с "event": "test", project_id, integration_id, timestamp и message. На экране появится «Адрес ответил 200: вебхук работает» или, если адрес вернул ошибку, её код и что проверить.

События

СобытиеКогда приходит
lead_createdбот оформил заявку
conversation_startedбот ответил в новом диалоге
message_receivedбот ответил в уже существующем диалоге
payment_receivedклиент оплатил счёт, который выставил бот
ai_errorбот не смог ответить клиенту из-за ошибки ИИ
whatsapp_disconnectedWhatsApp отключился
instagram_disconnectedInstagram отключился (сменили пароль или сняли доступ)
schedule_problemдвижок записи не смог разобрать график
tokens_lowбаланс проекта на исходе
trial_expiringзаканчивается бесплатный период

Что приходит

Тело всегда одной формы:

{
  "event": "lead_created",
  "project_id": "…",
  "timestamp": "2026-10-01T10:15:00.000Z",
  "data": { … }
}

Что лежит в data:

  • lead_created: client_name, phone, lead_status, summary, source_event_name.
  • conversation_started, message_received: chat_id, user_message (что написал клиент), ai_response (что ответил бот), channel.
  • Остальные события: event, project_id, project_name, title и body (готовый текст уведомления, тот же, что получает владелец), data (подробности события) и fired_at.

Надёжность

  • Срок ответа 10 секунд. Не уложились, и это считается сбоем.
  • Повторы. Сбой связи, таймаут, ответ 5xx, 408 или 429: событие встаёт в очередь повторов. Очередь разбирается раз в три часа, попыток до пяти, паузы растут, последняя попытка примерно через полтора дня после первой. Ответ 4xx значит «не приму», и такое событие не повторяется: исправьте адрес или авторизацию.
  • Перенаправления не выполняются. Укажите конечный адрес, а не тот, что отвечает 301 или 302.
  • Дубли возможны. Событие вроде «мало баланса» приходит снова, пока причина не устранена, а повтор после сбоя может прийти к уже обработавшему серверу. Считайте приём идемпотентным: ориентируйтесь на event + timestamp и содержимое data.

Журнал доставок. Под списком вебхуков кнопка «Показать» открывает лог последних 30 доставок: событие, адрес, код ответа, время и ошибка.


Авторизация и безопасность

  • Подписи у запросов нет. Проверяйте секрет в заголовке (поле «Заголовки») или в адресе (?secret=…). В журнале доставок адрес хранится без параметров, поэтому секрет из адреса участники проекта не увидят.
  • Служебные заголовки (Host, Content-Length и подобные) задать нельзя, они отбрасываются.
  • Адрес проверяется перед каждой отправкой: внутренние и частные адреса заблокированы, запрос идёт ровно на тот IP, который прошёл проверку.

Дальше: → Своя интеграция по API
Связано: Публичный API · Логи событий · Что можно подключить
Не получилось? → нажмите «Тест» и посмотрите код ответа в журнале доставок

Документация › Деньги › Биллинг проекта

Биллинг проекта: токены, подписка, пополнение

Две статьи расходов: токены (топливо для ответов бота) и подписка (доступ к каналам и функциям). Здесь, как пополнять и не остаться без бота.

⏱ 9 мин · 👤 для владельца · 🟢 live

Биллинг проекта: баланс и тариф вверху, ниже, пополнение через Kaspi или картой с готовыми суммами
Биллинг проекта: баланс и тариф вверху, ниже, пополнение через Kaspi или картой с готовыми суммами
За 30 секунд:
  • Токены, расходник: каждый ответ бота их тратит. Кончились → бот молчит в бою.
  • Подписка ($25/мес): нужна, чтобы бот отвечал в WhatsApp и Instagram после бесплатных 14 дней. Telegram, тест-чат, CRM и функции работают и без неё.
  • Пополнить можно картой, Kaspi-push или Kaspi QR (без номера телефона; из Кыргызстана через приложение «Мой O!»).
  • Баланс показывается в долларах, тенге: в скобках.
  • Прогноз подскажет, на сколько дней хватит при текущем расходе.

Зачем это нужно

Бот работает на двух «топливах». Если их перепутать или не следить, бот внезапно замолкает, и клиенты остаются без ответа. Эта статья объясняет, за что ты платишь и как держать бота в эфире.

Где это

Оплата живёт одним окном поверх любой страницы, отдельной страницы у неё нет. Окно открывают:

  • плашка баланса в шапке и «Оплата и подписки» в левом меню;
  • кнопки «Пополнить», «Продлить», «Оплатить» в любом месте кабинета (карточка бота на «Обзоре», предупреждения, тест-чат, красная плашка сверху).

Внутри пять разделов: баланс (пополнение, подписка, автопополнение, калькулятор расхода), подписки, проекты, история платежей и движений баланса, способы оплаты. Кнопка внутри проекта сразу выбирает в окне этот проект. Старые ссылки вида /billing в письмах и закладках тоже открывают это окно.

Пополнять и оплачивать подписку могут владелец и администратор проекта. Карта оплаты, автопополнение и перенос баланса остаются только у владельца.

Две вещи, которые важно не путать

🔋 Токены🎟️ Подписка
Что этоРасходник за каждое сообщение ботаДоступ к платформе
Как тратитсяСписывается за каждый ответ ИИФиксированно в месяц
Сколько1 диалог ≈ $0.06-0.13, около 30-60 ₸ (зависит от модели и длины)$25/мес (в тенге по курсу на момент счёта, около 11-12 тысяч ₸)
Если кончилосьБот молчит во всех каналахБот перестаёт отвечать в WhatsApp и Instagram, канал остаётся привязанным; Telegram работает дальше
Что даётСами ответы ботаРаботу WhatsApp и Instagram после бесплатного периода
💵 Цена в долларах, тенге считается от неё. Подписка стоит $25 в месяц, и это базовая цена. Сумма в тенге (около 11-12 тысяч ₸) это пересчёт по курсу на момент выставления счёта: курс меняется, значит и сумма списания месяц к месяцу немного отличается. То же с балансом: он ведётся в долларах, а тенге показывается справочно, чтобы понимать порядок списания. Оплатить можно картой казахстанского банка или через Kaspi (push по номеру или QR-код). Из Кыргызстана QR-код Kaspi оплачивают в приложении «Мой O!» (O!Bank).

💡 Аналогия. Подписка это «абонемент в зал» (доступ), токены, «вода, которую пьёшь на тренировке» (расходник). Нужны оба.

Что показывает страница

  • Баланс: крупно, в долларах с тенге в скобках («$50.00 (~22 400 ₸)»), полоса заполнения и прогноз на сколько дней хватит при текущем расходе;
  • Тариф: твой план, статус проекта (Активна / Канал офлайн / Неактивна), до какой даты подписка, отсчёт триала WhatsApp;
  • Счета в ожидании: начатые, но не завершённые оплаты;
  • Пополнить / Подписка: единая панель оплаты (переключатель);
  • История операций: все пополнения и списания с фильтрами;
  • Калькулятор стоимости: прикинуть расход под модель и объём;
  • Автопополнение баланса: включил, и платформа сама пополняет баланс, когда он падает ниже порога (см. ниже).

Как пополнить токены

Плашка баланса в шапке (или «Оплата и подписки» в левом меню) → раздел «Баланс», выбери проект:

  1. Выбери сумму (готовые: $5 / $10 / $25 / $50 / $100 или впиши свою, целое число долларов, от $5 до $1000);
  2. Пополняешь на $100 и больше, дарим сверху $10. Подарок приходит вместе с пополнением, отдельной строкой в истории операций. Своя сумма от сотни считается так же, как готовая плитка;
  3. Выбери способ:
  4. Картой (TipTopPay): оплата картой;
  5. Kaspi Push: введи номер, придёт push в Kaspi;
  6. Kaspi QR: номер не нужен, на экране появится QR-код, отсканируй его в Kaspi.kz. Из Кыргызстана его оплачивает приложение «Мой O!» (O!Bank), спишется в сомах по курсу твоего банка. QR живёт около трёх минут: не успел, нажми «Новый QR». Свернул окно, QR остаётся в «Счетах в ожидании» с кнопкой «Показать QR»;
  7. Подтверди оплату → баланс пополнится.

Как оформить/продлить подписку

Та же панель → вкладка «Подписка»:

  • Выбери период: 1 / 3 / 6 / 12 месяцев (за длинные, скидка: 3 мес −5%, 6 мес −10%, 12 мес −20%);
  • Оплати тем же способом.

Скидка первых двух недель

Когда подключишь канал, на 14 дней открывается сниженная цена: месяц −20% ($20), 3 мес −15%, 6 мес −25%, 12 мес −30%. Год в этом окне стоит $210 вместо $300 по обычной цене за месяц. Сколько осталось до конца окна, написано прямо на плитках.

Две вещи, которые важно знать заранее:

  • Бесплатные дни не сгорают. Оплатишь, пока они ещё идут, и оплаченный период начнётся после них, а не вместо них. Дата начала показана под кнопкой оплаты.
  • Дальше цена обычная. Скидка действует на эту покупку; следующее продление пойдёт по $25 в месяц.
🏷️ Акции. Иногда мы снижаем цену тарифа на ограниченный срок. Тогда в окне оплаты под тарифом написано, до какого дня действует цена по акции, а после этой даты обычная цена возвращается сама. Акция слабее скидки первых двух недель её не перебивает: в окне всегда показана лучшая из цен.

Окно даётся один раз на проект и только до первой оплаты подписки. По той же причине бесплатные дни не выдаются повторно: если проект уже был на подписке и она кончилась, дальше идёт продление, а не новый пробный период.

⚠️ Без активной подписки после пробного периода бот перестаёт отвечать в WhatsApp и Instagram (см. Подключить WhatsApp). Бесплатное окно одно на проект: его открывает первый из этих двух каналов. Номер и аккаунт при этом остаются привязанными, переписка и настройки никуда не деваются: оплатил, и ответы пошли снова. Telegram работает без подписки: там платишь только за ответы бота с баланса.

Проверь, что всё в порядке

Перед тем как полагаться на бота в бою:

  1. Статус проекта, «Активна»;
  2. Баланс токенов не на нуле (прогноз показывает запас дней);
  3. Подписка действует (дата в будущем).

💡 Помни: Тест-чат подписку не проверяет, поэтому «в тесте отвечает» не значит «клиентам ответит». Для клиентов нужны и баланс, и подписка (для WhatsApp и Instagram).

Светофор в списке проектов

Открывать каждый проект не обязательно: в левом меню, в списке «Проекты», у каждого проекта горит значок-индикатор. Статус закодирован формой значка, а не только цветом, различимо и при дальтонизме:

  • галочка (зелёная): подписка и баланс в порядке, бот работает;
  • треугольник с «!» (жёлтый), скоро проблемы: мало токенов, подписка истекает в ближайшие 3 дня или канал WhatsApp отвалился;
  • крестик (красный), бот не отвечает клиентам: баланс на нуле и подписки нет;
  • пунктирный кружок (серый) это черновик, проект ещё не запущен.

Наведи курсор на значок: подсказка скажет, что именно не так и куда идти чинить.

Частые ошибки

СимптомПричинаЧто делать
Бот замолчал у клиентовКончились токеныПополни баланс
Бот молчит в WhatsApp или Instagram, канал подключёнКончился пробный период, подписки нетОформи подписку
Статус «Канал офлайн»Канал отвалилсяСм. Канал отвалился
Оплатил, баланс не изменилсяПлатёж в обработкеГлянь «Счета в ожидании», подожди; не прошёл → Платёж не прошёл
Дорого выходитТяжёлая модель / длинные ответыСмени модель на mini, см. Стоимость сообщения

Автопополнение баланса

На странице биллинга проекта есть секция «Автопополнение баланса» (видна владельцу). Включаешь, платформа каждые ~30 минут проверяет баланс, и если он упал ниже порога (по умолчанию $5), сама пополняет до целевого уровня (по умолчанию $40):

  • Счёт в Kaspi: выставляется автосчёт, тебе приходит пуш в Kaspi и уведомление «оплати». Счёт действует 24 часа; пока он висит, новый не выставляется, даже если ты не успел оплатить сразу. Ночью счёт тоже приходит, чтобы утром он уже ждал тебя. Если отказался от счёта в приложении, новый придёт не раньше чем через 3 часа, а неоплаченных счетов за сутки будет не больше трёх.
  • Списание с карты, если у тебя сохранена карта (TipTopPay), сумма списывается автоматически; о каждом списании приходит уведомление.

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

Автопродление подписки

Тумблер «Автосчёт на продление подписки» стоит на той же странице биллинга, отдельной строкой внизу. За 3 дня до конца подписки на номер Kaspi, с которого оплачивали в прошлый раз, придёт счёт на продление, и вместе с ним уведомление, что это автопродление.

  • Это счёт, а не списание. Деньги уходят только когда вы сами подтвердите оплату в Kaspi. Не подтвердили, счёт просто истечёт, а подписка закончится в свой срок. Новый счёт на продление приходит не чаще раза в сутки: пока прежний можно оплатить (24 часа), второй не выставляется.
  • Включено у тех, кто уже платил через Kaspi. Если оплата через Kaspi была хотя бы раз, автопродление стоит включённым: это тот же способ, которым вы платите, просто счёт приходит сам и вовремя.
  • Выключается одним тумблером там же, в биллинге проекта. Он работает отдельно от автопополнения баланса: можно оставить только продление подписки, только пополнение баланса, оба или ничего.

Уведомления о балансе

Платформа сама сообщает о деньгах, эти сигналы включены всегда (их нельзя пропустить):

  • Пополнение, как только баланс пополнен (Kaspi, картой или вручную), приходит уведомление с суммой и новым балансом.
  • Низкий баланс, когда денег осталось мало, приходит напоминание пополнить (не чаще раза в сутки). В нём сказано, на сколько дней хватит остатка при вашем расходе за последнюю неделю.
  • Бот остановлен на нуле, если баланс кончился и бот перестал отвечать клиентам, приходит тревога, чтобы вы быстро пополнили.

Куда слать, выбираете вы. В настройках проекта → вкладка «Уведомления» → блок «Баланс проекта» отметьте нужные каналы: Telegram-группа, Email, Webhook. Колокольчик в шапке сайта получает эти уведомления всегда: его отключить нельзя, это ваш гарантированный канал.

Перенос баланса между проектами

Если проектов несколько, баланс можно перенести с одного на другой: в окне оплаты, раздел «Проекты», в списке балансов у проекта с деньгами есть кнопка «Перенести». Перенос мгновенный и виден в истории обоих проектов. Перенос предлагается и при удалении проекта: диалог удаления честно предупреждает, что баланс и остаток оплаченной подписки сгорят безвозвратно, и даёт сначала перекинуть деньги на другой проект.

Вопросы, которые обычно возникают

Почему баланс в долларах?
Расходы ИИ считаются в долларах (так считают модели). Тенге показывается в скобках по курсу для удобства.

Подписка и токены это одно и то же?
Нет. Подписка, доступ (фиксированно в месяц). Токены, расходник за ответы. Нужны оба.

Сколько стоит один диалог?
Обычно $0.06-0.13, то есть около 30-60 ₸ по курсу. Это весь разговор целиком: клиент спросил цену, уточнил время и записался. Короткие ответы про цены и адрес обходятся в копейки, долгий подбор по прайсу на сотни страниц стоит дороже. Цифры из расхода живых проектов за 30 дней. Подробно, Сколько стоит сообщение.

Kaspi написал «отменён», а деньги списались. Платить ещё раз?
Нет. Kaspi иногда присылает отмену раньше, чем проводит оплату. Касса такую оплату принимает, и деньги зачислятся сами в течение 10 минут. Окно оплаты в это время пишет «Проверяем, не пришла ли оплата» и само сменится на «Оплата прошла».

Это я плачу платформе. А как брать деньги с моих клиентов?
Это другое, Приём оплат: бот выставляет счёт твоему клиенту, деньги идут на твою Kaspi-кассу.


Под капотом

  • Баланс хранится в центах; формат: formatBalanceUSD → "$X.XX (~Y₸)", курс-фолбэк 485 ₸/$.
  • Подписка: базовая цена subscription_price_usd = $25 (сумма к оплате в тенге считается по курсу НБК в момент счёта), скидки за период 5/10/20%, в окне активации 20/15/25/30% за 1/3/6/12 месяцев (subscription_offer_discount_*). Цену и для витрины, и для счёта считает один серверный расчёт, он же отдаётся на GET /api/billing/quote.
  • Пополнение через useTopup → /api/projects/<projectId>/tokens/topup → провайдер (карта, Kaspi-push или Kaspi QR с method: "qr"). До подтверждения Kaspi-push кабинет показывает окно ожидания, у QR окно с картинкой QR и отсчётом до срока Kaspi (payments.provider_method, checkout_url, expires_at, billing/sql/0101).
  • Страница (редизайн 2026-06-05): BalanceHero + PendingInvoices + PaymentPanel (Пополнить|Подписка) + History + калькулятор. Прогноз дней, из среднего расхода по окну транзакций.
  • Тест-чат баланс не блокирует; в бою eligibility требует active + (триал ИЛИ подписка) для платных каналов PAID_CHANNEL_IDS (WhatsApp и Instagram).
  • Автопополнение (2026-06-10): таблица project_auto_topup, cron auto-topup-tick каждые 30 мин; карта, TipTopPay charge по сохранённому токену, Kaspi, автосчёт в Kaspi. Перенос баланса: атомарная пара журнальных проводок через клиринговый счёт.
  • Статусы счетов: pending → paid / failed (отклонён банком) / cancelled (отменён вами) / expired (истёк срок); истёкший или отменённый счёт можно выставить заново той же суммой из истории платежей. cancelled и expired у Kaspi не окончательны: касса принимает оплату и после них (LATE_PAYABLE), крон dospay-platform-reconcile раз в 10 минут двое суток перечитывает такие счета, а окно оплаты на этих статусах пишет «если вы всё же оплатили, деньги зачислятся сами» и ещё 12 минут ждёт «оплачено» (kaspiOutcomeOf, @/lib/kaspi-late-payment).

Простыми словами

У бота два счёта, и их легко не перепутать на одной аналогии. Подписка это как абонемент: платишь раз в месяц ($25, в тенге около 12 000 ₸ по курсу) и бот работает в WhatsApp и Instagram. Telegram абонемента не требует. А токены это топливо: каждый ответ бота немного их тратит, как бензин. Если кончится бензин (токены), бот замолчит, даже если абонемент (подписка) активен. Поэтому следи за обоими: пополняй баланс (картой или через Kaspi) и продлевай подписку. На странице есть прогноз, на сколько дней хватит денег: удобно не доводить до нуля. И помни: в тестовом чате подписка не нужна, но баланс нужен и там: на нуле тест-чат тоже не ответит. Живым клиентам бот отвечает, только когда есть и баланс, и подписка.


Дальше: → Функции (научить бота действиям)
Связано: Сколько стоит сообщение · Приём оплат · Подключить WhatsApp · AI-модель
Не получилось? → Бот не отвечает

Документация › Деньги › Сколько стоит сообщение

Сколько стоит сообщение

Бот списывает с баланса за каждый ответ по факту. Один разговор с клиентом обычно стоит 6-13 центов, чаще всего около 8 центов (примерно 35 ₸). Ниже от чего это зависит, что бесплатно и как сэкономить.

⏱ 5 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Платишь по факту за каждый ответ бота, баланс в долларах, тенге в скобках по курсу.
  • Цена ответа складывается из модели, длины промпта и информации о компании, истории переписки, глубины размышления, поиска по базе знаний и распознавания голоса и фото.
  • Бесплатно: точный ответ правила, отправка файла из медиатеки, служебные шаблоны (вне рабочих часов, на пропущенный звонок), стикеры.
  • Расход по дням и цена одного диалога видны в Аналитике.

Сколько стоит разговор

Замер на живых ботах за 30 дней (9 проектов, сентябрь 2026): медиана 7,8 цента за разговор, у половины ботов от 6,5 до 13 центов. Короткие ответы про цены и адрес на экономной модели выходят около 5 центов, бот с прайсом на сотни позиций, флагманской моделью и глубоким размышлением доходит до 50 центов.

Свою цифру смотрите в Аналитике: «Стоимость диалога» и «Стоимость лида», а по дням в блоке «Детализация».


От чего зависит цена ответа

ФакторКак влияет
Модельмощная модель дороже лёгкой за тот же ответ
Длина промптапромпт и «Информация о компании» уходят модели с каждым сообщением целиком
История перепискибот перечитывает разговор: чем длиннее история, тем дороже ответ
Глубина размышления«Обычная» примерно удваивает цену ответа против «Выкл» (подробно)
Функцииодин ответ с функцией это 2-5 обращений к модели: вызвать, прочитать результат, ответить
Поиск по базе знанийоколо 1 цента за поиск (база знаний)
Голосовые и фоторасшифровка голосового и распознавание картинки списываются отдельно
Ссылки от клиентатекст открытой страницы добавляется к запросу, такой ответ немного дороже обычного; отключается в расширенных настройках («Читать ссылки из сообщений»)
Повторный текстпромпт и информация о компании одинаковы от ответа к ответу, и модель их кеширует: второй и следующие ответы в проекте обходятся дешевле первого за сутки

Что бесплатно

  • точный ответ правила (модель не зовётся);
  • отправка готового файла из медиатеки;
  • служебные шаблоны: ответ вне рабочих часов, ответ на пропущенный звонок;
  • стикеры: бот на них не отвечает;
  • сообщения, на которые бот не отвечает (выключен, пауза, пустой баланс).

Как сэкономить

  • Лёгкая модель там, где хватает. Для записи и типовых вопросов gpt-5.4-mini справляется: Выбор модели.
  • Короткий промпт. Лишнее из промпта и информации о компании вычеркни, объёмные справочники вынеси в базу знаний: там платишь только за нужный кусок.
  • Ограничь историю. Настройка «История переписки» на вкладке Промпт → Расширенные настройки: меньше история, дешевле ответ, но бот меньше помнит.
  • Частые вопросы правилами. «Где вы находитесь», «как оплатить»: точный ответ правилом ничего не стоит.
  • Выключи ненужное распознавание. Не принимаешь голосовые или фото, отключи их распознавание.

Где смотреть расходы


Простыми словами

Как со счётчиком: платишь за то, что бот реально сделал. Обычный разговор с клиентом стоит несколько центов, около 35 тенге. Дороже выходит, если выбрать самую мощную модель, написать очень длинный промпт или включить глубокое размышление. Бесплатно: готовые ответы правил, видео из медиатеки и вежливое «ответим утром» ночью.


Дальше: → Приём оплат от клиентов
Связано: Баланс и подписка · Выбор модели · Аналитика
Не получилось? → Платёж не прошёл

Документация › Деньги › Приём оплат от клиентов

Приём оплат от клиентов (Kaspi)

Бот может не только отвечать, но и принимать оплату от твоих клиентов: выставлять счёт прямо в переписке. Деньги идут тебе напрямую, не через DOS.

⏱ 7 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Бот умеет выставить клиенту счёт на оплату прямо в чате (Kaspi).
  • Деньги поступают тебе напрямую: платформа их не держит и не является посредником по деньгам.
  • Касса бесплатная: ни платы за подключение, ни месячного тарифа. За каждую оплату, которая дошла до тебя, с баланса проекта списывается $0.25.
  • Подключает Владелец проекта: отдельный номер кассира в Kaspi Pay и код из SMS. Анкета и реквизиты не нужны, название и БИН касса получит из Kaspi сама.
Раздел «Приём оплат»: подключение кассы Kaspi и управление счетами
Раздел «Приём оплат»: подключение кассы Kaspi и управление счетами

Что это даёт

Клиент в переписке говорит «готов оплатить», и бот тут же выставляет счёт (функция «Счёт на оплату», owner_payment_invoice). Клиент платит, ты видишь оплату. Не нужно вручную скидывать реквизиты и сверять переводы.

🔑 Важно про деньги. Платёж идёт напрямую тебе (на твой Kaspi как продавца): платформа DOS деньги клиентов не принимает и не хранит. DOS только помогает боту выставить счёт; расчёт между тобой и твоим клиентом.

Кто подключает и кто работает со счетами

Подключает и отключает кассу только Владелец проекта: к боту привязывается его касса Kaspi, и код подтверждения приходит на телефон кассира. Когда касса работает, Администратор проекта тоже выставляет, отменяет и возвращает счета (см. Роли).


Как подключить

Шаг 1. Подготовь кассира (один раз, пара минут)

Боту нужен отдельный номер кассира в твоём Kaspi Pay. Не тот, с которым ты сам заходишь в Kaspi Pay: после подключения под этим номером в приложение Kaspi Pay входить нельзя. Kaspi держит номер только на одном устройстве, и вход с телефона отключит кассу у нас.

Один номер кассира работает только на одной кассе. Если у тебя два проекта с приёмом оплат, каждому нужен свой кассир: добавь в Kaspi Pay второго сотрудника с другим номером. Занятый номер мы не примем и сразу скажем об этом, иначе вторая касса отключила бы первую.

  1. В Kaspi Pay открой Сервисы → Профиль компании → Сотрудники → Добавить.
  2. Выбери роль «Кассир», точку продаж, введи номер и имя. Добавить кассира может руководитель компании или управляющий.
  3. Kaspi пришлёт на этот номер SMS со ссылкой на приложение Kaspi Pay. Устанавливать его и входить не нужно.
  4. Держи телефон с этой SIM-картой рядом: на следующем шаге на него придёт код.

Путь по меню взят из гида Kaspi для партнёров.

Шаг 2. Подключи кассу в DOS AI

Вкладка Интеграции → Приём оплат → «Подключить кассу Kaspi»:

  1. Введи номер кассира, которого добавил на шаге 1, и нажми «Отправить SMS».
  2. Kaspi пришлёт на этот номер SMS с кодом, введи его и нажми «Подтвердить код». Подключение займёт до 15 секунд.
  3. Готово: название ИП или ТОО и БИН касса получит из Kaspi сама.

После этого бот сможет выставлять счета твоим клиентам. Включи функцию «Счёт на оплату» и опиши в промпте, когда бот предлагает оплату.

💡 Если касса потом отключится (например, кто-то вошёл в Kaspi Pay под номером кассира), бот перестанет выставлять счета, пока ты не подтвердишь кассу заново кодом из SMS. Мы сразу сообщим.

Сколько стоит

Касса бесплатная: подключение и работа ничего не стоят, тарифа нет. За каждую оплату, которая дошла до тебя, с баланса проекта списывается $0.25. Это тот же баланс, с которого бот платит за ответы (см. Биллинг). Счёт, который клиент не оплатил или отменил, ничего не стоит. Если покупателю потом вернули деньги, сбор не возвращается.

Когда на балансе меньше $0.25, бот не выставит новый счёт: клиенту он скажет, что передаёт вопрос владельцу, а тебе сразу придёт уведомление пополнить баланс. Держи баланс пополненным, чтобы не терять продажи.

Касса выставляет не больше 300 счетов в сутки. Это защита от сбоя, а не тариф: обычному бизнесу хватает с большим запасом.


Если что-то не подключается

Что видишьЧто это значитЧто делать
«У этого номера нет доступа к Kaspi Pay»номер не добавлен сотрудником в твой Kaspi Payдобавь его кассиром (шаг 1) и нажми «Отправить SMS» ещё раз
«Этот номер кассира уже работает на другой кассе в DOS AI»номер уже подключён к кассе другого твоего проекта, а Kaspi держит один номер только на одной касседобавь в Kaspi Pay ещё одного кассира (шаг 1) и введи его номер; либо сначала отключи кассу в том проекте, где этот номер стоит сейчас
«Kaspi не принял код из SMS»код введён с ошибкой или уже устарелвведи код ещё раз; если с SMS прошло больше нескольких минут, нажми «Отправить SMS снова»
SMS не приходитKaspi не отправил код на этот номерпроверь номер и что SIM-карта в телефоне; через минуту можно запросить код снова
«Kaspi сейчас не пускает подключение касс через DOS AI»Kaspi требует обновить версию приложения на нашей стороне, номер ни при чёмповторять не нужно: мы уже знаем и сообщим, когда подключение заработает
«Kaspi принял код из SMS, но не дал завершить подключение кассы»отказ на последнем шаге на стороне Kaspi, номер и код ни при чёммы уже получили сигнал и разбираемся; попробуй ещё раз через 10 минут с новым кодом, если снова не выйдет, напиши в поддержку
Касса работала, а потом «Авторизация Kaspi потеряна»под номером кассира вошли в Kaspi Pay на телефоненажми «Запустить авторизацию заново» и введи новый код; под этим номером в Kaspi Pay больше не входи

Не нашёл своего случая, напиши в поддержку с названием проекта: мы видим состояние подключения со своей стороны и подскажем, что не так.


Когда счёт клиенту не выставился, ты узнаешь об этом сам

Бот может попросить кассу выставить счёт и получить отказ. Клиент в этот момент видит вежливое «сейчас не могу создать ссылку на оплату, передам владельцу», а продажа висит на волоске. Поэтому о каждом таком отказе приходит уведомление в колокольчик, не чаще одного раза в сутки на проект, чтобы занятый чат не превратил подсказку в поток.

Что случилосьЧто делать
На балансе проекта меньше $0.25пополнить баланс в Биллинге
Касса выставила 300 счетов за суткиподождать до завтра; если упираешься в предел регулярно, напиши в поддержку
Касса потеряла авторизацию в Kaspiподтвердить кассу заново, нужен код из SMS. В кабинете приём оплат при этом выглядит рабочим, а на деле не заплатит ни один клиент
Касса вообще не подключена, а функция оплаты у бота включенаподключить кассу либо выключить функцию оплаты, чтобы бот не обещал того, чего не может
Kaspi отклонил счётв уведомлении будет причина словами

Ещё бот сам не выставит счёт в четырёх случаях, и это защита, а не поломка: второй счёт на тот же номер, пока первый может быть оплачен; больше трёх счетов на один номер за час; четвёртый разный номер в одном разговоре за сутки; больше 60 разных номеров за сутки по проекту. Номер для счёта бот берёт из переписки, и без этих пределов собеседник мог бы уговорить его слать push на чужие номера от имени твоей кассы. В таких случаях бот говорит клиенту, что ты свяжешься, и передаёт разговор тебе.


Простыми словами

Это про то, чтобы бот не только болтал, но и брал деньги. Клиент написал «беру»: бот сразу выставил ему счёт в чате, тот оплатил через Kaspi. Удобно: не надо вручную диктовать номер карты и потом сверять, кто и сколько перевёл.

Три важных момента. Первый: деньги идут тебе напрямую, DOS их не трогает, мы просто помогаем боту выставить счёт. Второй: касса бесплатная, платишь только $0.25 с каждой прошедшей оплаты, и только пока на балансе есть деньги. Третий: подключить кассу может только владелец проекта: подтверждение приходит по SMS на телефон кассира, как обычный вход в Kaspi. Когда касса работает, счета выставляет, отменяет и возвращает и администратор проекта.

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


Дальше: → Рефералы и вывод
Связано: Биллинг · Функции · Роли и права
Не получилось? → Платёж не прошёл или напиши в поддержку

Документация › Деньги › Промокоды и партнёрская программа

Промокоды и партнёрская программа

Промокод применяется к конкретному проекту и удваивает старт: $10 на баланс вместо $5 и 30 бесплатных дней вместо 14. Отдельно есть партнёрская программа для тех, кто продвигает DOS AI постоянно.

⏱ 4 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Промокод вводится только при создании проекта: поле «Промокод (необязательно)» в форме. Ни при регистрации, ни позже в «Биллинге» его нет.
  • Код удваивает старт проекта: $10 на баланс вместо $5 и 30 бесплатных дней вместо 14 (для WhatsApp и Instagram). Диалоги не ограничены ни с кодом, ни без него.
  • Правило: один проект = один промокод.
  • Бесплатный период привязан к номеру: один номер получает его один раз.

Как применить промокод

  1. Создавая проект, впиши код в поле «Промокод (необязательно)» под формой.
  2. Нажми «Применить».
  3. Код сразу докидывает баланс до $10 и привязывает проект к пригласившему партнёру. Бесплатные 30 дней начнутся, когда подключишь WhatsApp или Instagram (без кода их 14).
📌 Самая частая ошибка: ищут поле для кода при регистрации. Его там нет: код применяется к проекту, и только пока проект создаётся. Создал без кода, применить его к этому проекту уже нельзя.
📌 Один проект = один промокод. Применить второй к тому же проекту нельзя.

Что даёт код

Старт проекта удваивается, и это видно сразу:

Без кодаПо коду партнёра
Баланс при старте$5$10
Бесплатных дней канала (WhatsApp, Instagram)1430
Ограничение по диалогамнетнет

Баланс докидывается в момент применения кода, дни начинают идти при подключении номера.

📌 Код открывает бесплатный период и второму-третьему проекту. Обычно бесплатные дни даются только первому проекту аккаунта. Проект с промокодом получает их независимо от этого: удобно, если собираешь ботов сразу нескольким клиентам.
📌 Окно скидки на подписку от кода не зависит: оно всегда 14 дней с подключения канала, см. Биллинг. Оплата внутри окна не сжигает оставшиеся бесплатные дни, платный период начнётся после них.
📌 Бесплатный период привязан к номеру: один номер получает его один раз. Повторное подключение того же номера на новом проекте уже потребует подписки.
⚠️ Бесплатен канал, а не ответы бота. Каждый ответ списывается с баланса проекта, и в бесплатные дни тоже. Кончится баланс раньше, чем дни, и бот замолчит посреди бесплатного периода, поэтому просто пополни счёт.

Партнёрская программа

Личный код есть у тебя с регистрации. Он лежит в меню аккаунта: «Настройки аккаунта» → «Рефералы», ждать первой оплаты не нужно. Комиссия по нему 10% с подписок клиентов, которых ты привёл, в течение года с их первой оплаты.

Применить его можно к любому проекту, включая свой. Свой проект получит тот же удвоенный старт: $10 на баланс и 30 бесплатных дней. Комиссия при этом идёт только с чужих проектов, то есть с тех, где владелец не ты: пока проект твой, начисления нет.

Это сделано для тех, кто собирает ботов на заказ. Создаёшь проект под своим кодом, настраиваешь бота, показываешь клиенту и передаёшь ему владение. Комиссия включается сама, как только владельцем стал он.

Для тех, кто продвигает DOS AI постоянно (медиа, агентства, сообщества), есть именные промокоды на особых условиях. Выдаются по договорённости: напиши нам, если хочешь стать партнёром.

📌 Комиссия начисляется только с подписок, а не с пополнений баланса на сообщения.

Когда код закреплён за тобой, в разделе «Рефералы» (Настройки аккаунта) появляется блок твоего кода: сам код с кнопкой «Копировать», сколько человек его применили, сколько из них уже оплатили и сколько начислено.

Начисления копятся в кошельке. Свежая сумма замораживается на 3 дня после оплаты приведённого клиента: это защита на случай возврата платежа. В кошельке это видно строкой «Заморожено».

Вывод накопленного, два способа.

1. На карту.

  • Минимум $10.
  • Оформляешь заявку (нужны последние 4 цифры карты).
  • Заявка уходит на проверку, выплата вручную (обычно около 3 дней) на карту через Kaspi.
  • Статусы заявки: «в обработке», затем «выплачено».

2. В токены.

  • Переводишь размороженный баланс кошелька в токены своего проекта, мгновенно и без минимума (кроме совсем мелких сумм).
  • Удобно, если сам активно пользуешься платформой.

Простыми словами

Промокод это слово-пропуск для проекта. Вписал его в момент создания проекта, и старт удваивается: на баланс падает $10 вместо $5, а бесплатных дней у канала становится 30 вместо 14. Число диалогов не ограничено ни с кодом, ни без него. Позже применить код к тому же проекту уже нельзя, поэтому вводи сразу.

Свой код есть у каждого с регистрации, и ставить его можно куда угодно, хоть на свой проект: старт удвоится. Деньги он приносит только с чужих проектов, где владелец не ты.

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


Дальше: → Роли и права
Связано: Биллинг · Сколько стоит сообщение
Не получилось? → Платёж не прошёл

Документация › Команда и аккаунт › Роли и права

Роли и права (viewer / tester / editor / admin / owner)

В проект можно пустить команду, но с разным уровнем доступа. Пять ролей: Просмотр → Тестер → Редактор → Администратор → Владелец. Каждая следующая включает права предыдущей.

⏱ 9 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Роли по возрастанию: Просмотр (viewer) → Тестер (tester) → Редактор (editor) → Администратор (admin) → Владелец (owner).
  • Просмотр: только смотреть (без email-ов участников). Тестер, то же, что Просмотр, плюс тест-чат (гоняет бота, но ничего не меняет). Редактор, функции, база знаний, дожимы, интеграции и ручные ответы клиентам. Администратор, промпт и настройки + приглашать людей. Владелец: деньги, роли, удаление, передача.
  • Промпт правит только Администратор и выше. Редактор настраивает всё вокруг бота, но не его характер.
  • Подключить кассу, передать и удалить проект может только Владелец. Администратор пополняет баланс, оплачивает подписку и выставляет клиентам счета. Остальные роли в окне оплаты видят только баланс и историю.
  • Права проверяются и на сервере, и в интерфейсе (кнопки чужих действий просто не видны).

Пять ролей

РольRUКратко
viewerПросмотрсмотреть переписки, лиды, аналитику: без изменений
testerТестер+ тест-чат: гонять бота на пробных сообщениях; правки промпта/функций/настроек недоступны
editorРедактор+ функции, база знаний, дожимы, интеграции, медиа; вести диалог вручную; сбросить историю чата
adminАдминистратор+ промпт и все настройки проекта, закрывать диалоги, приглашать участников
ownerВладелец+ деньги, роли, передача и удаление проекта

Роли иерархичны: тестер умеет всё, что просмотр, плюс тест-чат; редактор, всё, что тестер, плюс правки; администратор, всё, что редактор, и так далее.

📌 Где проходит граница между Редактором и Администратором. Редактор настраивает всё вокруг бота: функции, базу знаний, дожимы, интеграции, медиа, и сам отвечает клиентам. Характер бота (системный промпт, информация о компании, модель, расширенные настройки) правит только Администратор: это одна правка, которая мгновенно меняет ответы во всех живых диалогах, поэтому она закрыта уровнем выше.

Кто что может (матрица)

ДействиеПросмотрТестерРедакторАдминистраторВладелец
Смотреть диалоги, лиды, аналитику✅✅✅✅✅
Видеть список участников✅✅✅✅✅
Тест-чат (гонять бота на пробе)❌✅✅✅✅
Видеть email-ы участников❌❌✅✅✅
Функции, база знаний, интеграции, дожимы, медиа❌❌✅✅✅
Правила, комментарии, записи (вкладка «Автоматизации»)❌❌✅✅✅
Логи событий❌❌✅✅✅
Подключить канал (WhatsApp, Telegram, Instagram)❌❌❌✅✅
Рассылки по базе❌❌❌✅✅
Вести диалог вручную (перехват)❌❌✅✅✅
Сбросить историю чата❌❌✅✅✅
Закрыть диалог (статус «closed»)❌❌❌✅✅
Промпт, модель и настройки проекта❌❌❌✅✅
Приглашать участников❌❌❌✅✅
Назначить роль Администратор❌❌❌❌✅
Менять роли / удалять участников❌❌❌❌✅
Пополнить баланс проекта❌❌❌✅✅
Оплатить подписку проекта❌❌❌✅✅
Выставлять счета клиентам, отменять и возвращать❌❌❌✅✅
Подключить или отключить кассу❌❌❌❌✅
Карта оплаты и автопополнение❌❌❌❌✅
Включить исходящие (бот пишет первым)❌❌❌❌✅
Отчёты владельцу❌❌❌❌✅
Передать проект другому❌❌❌❌✅
Удалить проект❌❌❌❌✅
⚠️ Email-ы видны только с роли Редактор. Просмотр и Тестер видят участников, но их адреса скрыты: защита персональных данных команды.
🧪 Тестер для «дай пощупать бота». Ровно один шаг над Просмотром: открывается тест-чат, где человек гоняет бота пробными сообщениями. При этом он не может менять промпт, функции, настройки или отвечать реальным клиентам. Удобно давать тому, кто помогает проверять качество ответов, но кого не пускаешь в настройку.

Владелец против Администратора

Администратор это «правая рука» владельца, и деньги, которые идут внутрь проекта, ему доступны: он оплачивает подписку, пополняет баланс, выставляет счета клиентам, отменяет и возвращает их. Смысл простой: без оплаченной подписки и баланса бот молчит, и ждать владельца из отпуска значит стоять без ответов клиентам. Отобрать деньги этим правом нельзя: получателя выбирает не тот, кто нажимает кнопку.

Только Владелец может:

  • подключить и отключить кассу: это привязка кассы Kaspi компании, подтверждается кодом из SMS на телефон кассира;
  • распоряжаться своей картой: сохранённая карта, автопополнение и отчёт по его списаниям;
  • менять роли и удалять участников;
  • назначать роль Администратор («Only the project owner can grant the admin role»);
  • передать проект («Only the project owner can transfer ownership»);
  • удалить проект.
💡 Передача проекта. Владелец может передать проект другому: «После подтверждения вы станете владельцем: сможете пополнять баланс, менять настройки, управлять командой и удалять проект. Текущий владелец будет понижен до администратора.» То есть старый владелец становится Администратором.

Как добавить человека

Раздел проекта → «Участники» → пригласить по email. По умолчанию приглашённому даётся роль «Тестер» (самый частый кейс: «дай пощупать бота»; можно выбрать любую другую). Роль Администратор при приглашении может дать только Владелец. Подробнее: Участники и приглашения.


Где права проверяются

Права работают на двух уровнях (нельзя обойти, отключив одно):

  • На сервере: каждый запрос к API проверяет роль (requireProjectMember с минимальной ролью). Не хватает прав → отказ.
  • В интерфейсе: кнопки и разделы, которых тебе нельзя, просто не показываются (хук useProjectRole). Изменения роли подхватываются почти мгновенно (реалтайм).
📌 Платформенные админы: отдельно. У команды DOS есть служебный доступ суперадмина (is_superadmin) для поддержки всей платформы: это не роль внутри твоего проекта и не пересекается с ролями участников.

Простыми словами

Когда над проектом работает несколько человек, не всем нужен полный доступ. Поэтому есть пять уровней. Просмотр, для тех, кто только смотрит (например, руководитель глянуть статистику). Тестер, для тех, кому надо просто погонять бота в тест-чате, но без права что-то менять. Редактор, для тех, кто настраивает всё вокруг бота (функции, базу знаний, дожимы, интеграции) и отвечает клиентам руками, но сам характер бота не меняет. Администратор: твоя правая рука: правит промпт и настройки и зовёт людей в команду. И Владелец это ты: только у тебя ключи от денег и право удалить или передать проект.

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


Дальше: → Участники и приглашения
Связано: Диалоги (перехват) · Биллинг
Не получилось? → напиши владельцу проекта, чтобы повысил роль

Документация › Команда и аккаунт › Участники и приглашения

Участники и приглашения

Добавляй команду в проект по email с нужной ролью. Приглашённому не нужен заранее созданный аккаунт: он создаст его при принятии.

⏱ 6 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Приглашение, по email, ссылка действует 7 дней.
  • По умолчанию даётся роль «Тестер» (можно выбрать любую); роль Администратор может выдать только Владелец.
  • Приглашать может Администратор и выше. Максимум, 20 участников на проект.
  • Поменять роль в висящем приглашении нельзя, отзови и пригласи заново.
Раздел «Участники»: приглашение команды и уровни доступа
Раздел «Участники»: приглашение команды и уровни доступа

Как пригласить

  1. Раздел проекта → «Участники» (/projects/<id>/members).
  2. Введи email и выбери роль.
  3. Отправь. Человеку придёт письмо с кнопкой «Принять приглашение».

В письме указано: «Ссылка действительна 7 дней. Если вы не ожидали это письмо, просто проигнорируйте его.» Приглашённому не нужен заранее аккаунт: он зарегистрируется при принятии и сразу попадёт в проект с выданной ролью.

📌 Кто кого может звать. Приглашать участников может Администратор и Владелец. Но роль Администратор при приглашении вправе выдать только Владелец: админ может звать максимум редакторов, тестеров и наблюдателей. См. Роли.

Лимит участников

На один проект, до 20 участников. Достиг лимита, освободи место (удали неактивных) или используй отдельный проект.


Управление приглашениями

  • Отозвать висящее приглашение: можно в любой момент (пока не принято).
  • Сменить роль в уже отправленном приглашении нельзя. Если ошибся с ролью, отзови приглашение и отправь заново с правильной: «У этого пользователя уже есть отправленное приглашение. Отзовите его и пригласите заново с новой ролью.»
  • Повторное приглашение с той же ролью, не плодит дубль.
⚠️ Сменить роль уже принятого участника или удалить его может только Владелец (см. Роли).
🔔 Люди узнают об изменениях сами (с 2026-08-07). Сменили роль или закрыли доступ, участник получит уведомление: раньше о снятой роли он узнавал, только упёршись в отказ посреди работы. Принял приглашение, уведомление придёт владельцу и тому, кто звал. Настройка контактов, в Уведомлениях, категория «Команда».

Простыми словами

Добавить человека в проект просто: вводишь его почту, выбираешь, что ему можно (только смотреть, настраивать бота или быть администратором), и отправляешь приглашение. Ему придёт письмо со ссылкой: нажал, завёл аккаунт (если ещё нет) и оказался внутри. Ссылка живёт неделю.

Пара нюансов. Звать людей может администратор, но сделать кого-то таким же администратором, только ты как владелец. Всего в проект помещается 20 человек. И если случайно дал не ту роль в приглашении, поменять «на лету» не выйдет: просто отзови это приглашение и отправь новое с правильной ролью.


Дальше: → Профиль, пароль, безопасность
Связано: Роли и права · Передача проекта
Не получилось? → напиши в саппорт с ID проекта

Документация › Команда и аккаунт › Профиль, пароль, безопасность

Профиль, пароль, безопасность

Личные настройки твоего аккаунта (не проекта): имя, телефон, пароль, выход со всех устройств. Эта страница, про тебя, а не про конкретного бота.

⏱ 5 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Настройки аккаунта это окно поверх любой страницы: слева разделы Профиль, Безопасность, Рефералы, Данные, Настройки.
  • Открыть окно: клик по своему имени в правом верхнем углу → «Настройки». Старые ссылки вида /account/... из писем тоже открывают это окно.
  • Можно сменить имя и телефон (вкладка «Профиль»), пароль (вкладка «Безопасность»); email меняется через саппорт.
  • Пароль: минимум 8 символов; главное правило - не брать популярный (платформа сверяет с базой утёкших и отклонит слишком известный).
  • Можно выйти со всех устройств разом, если потерял доступ или забыл выйти где-то.

Что где в окне

РазделЧто внутри
Профильимя, телефон, email, дата регистрации, число проектов, статус пробного периода
Безопасностьсмена пароля, активные сессии (выход с устройств), журнал действий
Рефералыпартнёрский код, кто его применил, начисления и вывод (раздел появляется у партнёров)
Данныевыгрузка своих данных (GDPR) и удаление аккаунта
Настройкиязык интерфейса, регион, тема оформления

Что можно изменить

ЧтоКак
Имявкладка «Профиль», кнопка «Сохранить»
Телефонвкладка «Профиль»: контактный номер, необязательно
Парольвкладка «Безопасность»: ввести текущий + новый
Emailпока через саппорт (не самообслуживание), напиши, поможем
Язык / регион / темавкладка «Настройки»

Смена пароля

Окно настроек аккаунта → раздел «Безопасность» → смена пароля. Требования к новому:

  • минимум 8 символов (максимум 128), без обязательных заглавных и спецсимволов: длина и редкость важнее состава;
  • пароль не должен быть слишком популярным: платформа сверяет его с базой паролей, утёкших в открытый доступ, и отклонит что-то вроде Aidar2024! или Qwerty123. Придумай редкое сочетание, которого нет в словарях.

Не выполнил, увидишь подсказку, какое именно правило нарушено. После смены тебя выйдет из аккаунта на всех устройствах: это нормально, войди заново с новым паролем.

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

Выход со всех устройств

Если зашёл с чужого компьютера и забыл выйти, или подозреваешь, что доступ утёк, кабинет → «Безопасность» → можно завершить сессии:

  • на других устройствах (текущее остаётся);
  • на всех (включая текущее: тебя перекинет на вход).
🔔 Вход с незнакомого устройства тоже заметен. Если в аккаунт зашли с браузера, которым раньше не пользовались, придёт уведомление с указанием устройства, сети и времени. Обновление вашего браузера за новое устройство не считается, а самый первый вход при регистрации не тревожит.
💡 Это быстрый способ «отрезать» все активные входы, не меняя пароль (но пароль сменить тоже не помешает, если переживаешь за безопасность).
📌 Двухфакторной аутентификации (2FA) пока нет. Защита аккаунта: надёжный пароль + выход со всех устройств при подозрении.

Смена почты (email)

Почту в кабинете сам не поменять: она служит логином, поэтому её меняет команда DOS AI вручную.

  1. Напишите в WhatsApp на номер DOS AI (там отвечает помощник DOS, он передаст Ернару): старая почта и новая почта.
  2. Пишите с номера, который указан в профиле аккаунта: так мы убеждаемся, что аккаунт ваш. Номера в профиле нет, Ернар уточнит другие данные.
  3. Старая почта утеряна или удалена и войти не получается: напишите так же. Ернар сверит данные и перепривяжет вход к новой почте.

После смены входите с новой почтой и прежним паролем. Проекты, баланс и диалоги остаются на месте.


Удаление аккаунта

Окно настроек аккаунта → раздел «Данные» → «Опасная зона» → «Удалить аккаунт». Для подтверждения нужно ввести слово УДАЛИТЬ и текущий пароль.

Что произойдёт сразу:

  • удалятся все ваши проекты вместе с диалогами, лидами, базой знаний, функциями и настройками;
  • WhatsApp-номера отвяжутся от платформы, Telegram-боты перестанут получать сообщения;
  • баланс проектов и остаток оплаченной подписки сгорят, вернуть их после удаления нельзя;
  • сохранённая карта отвяжется, автосписаний больше не будет;
  • открытые счета на оплату закроются.

Это необратимо: восстановить удалённый аккаунт нельзя. Записи о платежах платформа хранит обезличенно, как требует учёт.

💡 Перед удалением:
  • Хотите сохранить переписки и лиды, сначала скачайте их: тот же раздел «Данные» → «Скачать мои данные» (файл JSON, до 3 раз в сутки).
  • Есть деньги на балансе и второй проект в другом аккаунте? Перенести баланс можно только между проектами одного аккаунта, подробнее в Оплате и балансе.
  • Нужно убрать только один бот, а не весь аккаунт: удалите проект в его настройках, остальные останутся.

Пароль забыт, а удалить аккаунт нужно: сначала восстановите пароль по ссылке «Забыли пароль?» на странице входа.


Аккаунт ≠ настройки проекта

Не путай: настройки аккаунта это про тебя (имя, телефон, пароль, сессии, язык). Настройки конкретного бота (промпт, каналы, функции) живут в настройках проекта (/projects/<id>/settings). Один твой аккаунт может владеть несколькими проектами: их число видно во вкладке «Профиль».


Простыми словами

Это окно настроек твоего аккаунта, всё про тебя самого собрано в одном месте, по разделам. Открыть просто: вверху справа кликни по своему имени и выбери «Настройки». На вкладке «Профиль» меняешь имя и телефон, на «Безопасности», пароль (платформа просит минимум 8 символов и отклонит слишком популярный, чтобы аккаунт не увели). Почту пока меняем через поддержку, напиши, если надо.

Полезная кнопка на «Безопасности», «выйти со всех устройств»: зашёл с чужого ноутбука и забыл выйти, или просто переживаешь, нажал, и все входы сбросились. Двухфакторной защиты по SMS пока нет, так что главная твоя броня, хороший пароль. Язык интерфейса, регион и тему меняешь на вкладке «Настройки», а свои данные можно выгрузить на вкладке «Данные». И помни: тут настройки твоего аккаунта, а характер ботов настраивается отдельно, в каждом проекте.


Дальше: → Уведомления и личные настройки
Связано: Участники · Роли и права
Не получилось? → напиши в саппорт (смена email, тоже через саппорт)

Документация › Команда и аккаунт › Уведомления

Уведомления и личные настройки

Платформа сообщает о важном: мало токенов, канал отвалился, пришёл платёж. Уведомления приходят в кабинет, на email, в личный Telegram или на твой вебхук. Здесь, что бывает и как задать контакты один раз на весь аккаунт.

⏱ 6 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Каналы доставки: колокольчик в кабинете, email, личный Telegram, личный WhatsApp-номер, свой вебхук.
  • Контакты отсюда используются как запасные: если у проекта канал не заполнен, системное уведомление уйдёт по адресу из аккаунта. Настройки проекта главнее.
  • Личный Telegram подключается через свой бот-токен и chat_id: токен хранится зашифрованным.
  • Самое важное, деньги и каналы связи: именно их пропуск приводит к тому, что бот тихо замолкает.

Куда приходят уведомления

КаналЧто это
Колокольчик в кабинетесписок уведомлений прямо в интерфейсе (страница /notifications)
Emailна указанную почту
Telegramалерты в твой Telegram через твоего бота
WhatsAppсообщение на твой личный номер; уходит через подключённый WhatsApp-канал одного из твоих проектов, поэтому без живого канала эта нога молчит
ВебхукPOST-запрос с JSON на свой URL (Slack, Discord, n8n, своя система)

Какие события можно получать

В настройках уведомлений включаются/выключаются 10 типов событий:

ТипКогда присылается
Оплата и балансклиент оплатил счёт бота, низкий баланс, баланс пополнен, подписка оплачена, сработало автопополнение, заканчивается бесплатный период, подписка или окно скидки
Безопасностьвход с нового устройства, смена пароля, выход на всех устройствах, создан API-ключ
Статус проектовбот не смог ответить клиенту, сработала защита от спама, бот дошёл до потолка ответов в диалоге, тёплый клиент в Instagram ждёт, а окно скоро закроется, исходящая кампания остановлена, проблема в графике записи, первое сообщение лида не читается, бот впервые ответил живому клиенту
Сводка по лидампервая заявка проекта
Каналы связиWhatsApp отключён, Instagram отключился, канал молчит
Лимиты и расходпока событий нет
Командаприглашение, новый участник, смена роли, закрытие доступа
Интеграциипока событий нет
Еженедельный отчётотчёт по проекту по расписанию, любая периодичность
Обновления платформыновости о новых возможностях (по умолчанию выключено)

Какое событие проекта к какому тумблеру относится, по кодам: Типы уведомлений. События без категории (функция проекта перестала работать, технические работы, срабатывание вашего правила «Сообщить мне», новый диалог) тумблеры аккаунта не глушат.

✅ Как это работает (с 2026-08-06). Настройки проекта главнее: если у бота задан свой контакт, платформа шлёт туда. А вот пустой канал теперь подхватывается отсюда: не указал в проекте почту или Telegram, системное уведомление уйдёт по тому, что стоит на этой странице. Так один раз заполненный аккаунт закрывает все проекты сразу.

Что важно помнить:
  • подхват работает для системных событий (деньги, каналы, график, состояние бота), то есть ровно для тех, из-за которых бот замолкает;
  • тумблеры выше управляют этим подхватом: снял «Оплата и баланс», по деньгам с аккаунта писать не будут (контакт, заданный в самом проекте, при этом продолжит получать);
  • если в проекте канал снят галочкой (Настройки проекта → уведомления о балансе), это считается осознанным «не пиши мне сюда», и аккаунт его не воскрешает.

Полный список событий и что из них всегда-включённое: Типы уведомлений.

События самого аккаунта: безопасность, команда, новости

Три категории выше относятся не к проекту, а к аккаунту, поэтому и работают иначе. Их подключили 2026-08-07.

Безопасность. Приходит, когда:

  • в аккаунт вошли с браузера или устройства, которым раньше не пользовались (первое устройство при регистрации не считается, обновление браузера тоже);
  • сменили пароль, в настройках или по ссылке восстановления из письма;
  • нажали «выйти на всех устройствах» или «на других устройствах»;
  • создали API-ключ. Ключ работает без пароля и без браузера, поэтому его появление вы видите сразу.

Команда. Приходит:

  • владельцу, когда администратор кого-то пригласил или добавил (сам владелец про свои действия уведомление не получает);
  • владельцу и пригласившему, когда человек принял приглашение;
  • самому участнику, когда ему сменили роль или закрыли доступ. До этого о снятой роли человек узнавал, только упёршись в отказ посреди работы.

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

Ответ «стоп» на письмо. Любое наше письмо можно остановить, ответив на него одним словом «стоп»: рассылки платформы на этот адрес прекращаются сами, искать тумблер не нужно. На уведомления о деньгах и каналах это не действует: они про работу вашего бота, а не про новости.

Повторы не копятся. Если одна и та же беда повторяется, пока вы не прочитали прошлое уведомление (заявки не доходят из-за одной поломки, клиенты ждут оператора), в колокольчике остаётся одна строка с пометкой «Повторяется: N-й раз, впервые …», а не десяток одинаковых.

📌 Важная разница. Тумблеры на странице управляют письмами, Telegram и вебхуком. Безопасность и команда всё равно остаются в колокольчике: это история вашего аккаунта, и прятать из неё «пароль изменён» было бы неправильно. Для обновлений платформы выключенный тумблер значит «не присылать совсем».

Личный Telegram для алертов

Самый быстрый способ узнавать о проблемах, получать уведомления в Telegram через своего бота:

  1. Создай бота в @BotFather (как для канала, но отдельного, для алертов себе).
  2. Укажи его токен и свой chat_id: на этой странице, чтобы алерты шли по всем твоим проектам, или в настройках конкретного проекта, если для него нужен отдельный получатель.
  3. Готово: важные события будут падать тебе в Telegram.
🔒 Токен этого бота хранится зашифрованным, как и все ключи на платформе. В настройках показывается только признак «токен задан»: сам токен не отображается.
📌 Это отдельный бот от того, что общается с клиентами. Один, отвечает клиентам (канал), другой, шлёт алерты тебе.
💡 Регулярные отчёты по проекту шлёт бот, заданный в проекте. Подключить или сменить его можно в настройках проекта и прямо на странице Отчёты: в блоке «Кто отправляет».
📱 Как выглядит уведомление в Telegram. Первая строка значок и название: 🔴 бот не может работать, 🟠 стоит посмотреть, ✅ и 🎉 хорошие новости, 💰 деньги. Ниже проект, что случилось и ссылка «Открыть …» сразу на тот экран кабинета, где это чинится: баланс, каналы, диалог, функции.
📌 Контакт проекта перебивает аккаунт. Удобно, когда ведёшь чужие проекты: по одному алерты идут тебе, по другому, клиенту, а аккаунт остаётся подстраховкой для всего остального.

Простыми словами

Платформа присматривает за твоими ботами и дёргает тебя, когда что-то важное: кончаются деньги, отвалился WhatsApp, пришла оплата. Эти сигналы можно получать сразу в кабинете (колокольчик), на почту и, удобнее всего, себе в Telegram.

Настроить можно двумя способами, и они дополняют друг друга. Внутри проекта указываешь контакты для конкретного бота: удобно, когда ведёшь чужие проекты и алерты по ним должны идти разным людям. А на этой странице задаёшь свои контакты один раз на весь аккаунт: их платформа возьмёт для любого проекта, где ты ничего не заполнил. Важнее всего два сигнала, «кончаются деньги» и «WhatsApp отвалился»: именно из-за их пропуска бот тихо перестаёт отвечать клиентам, а узнаёшь ты поздно. Для Telegram-алертов заведи отдельного бота в @BotFather: это не тот, что общается с клиентами, а твой личный «вестник».


Дальше: → Удаление, передача, дублирование проекта
Связано: Профиль и безопасность · Биллинг · Канал отвалился
Не получилось? → напиши в саппорт

Документация › Команда и аккаунт › Удаление, передача, дублирование

Удаление, передача, дублирование проекта

Три необратимых (или почти) действия с проектом: все только для Владельца. Удалить, передать другому человеку или склонировать готовую настройку.

⏱ 7 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Все три действия, только Владелец (см. Роли).
  • Удаление сносит проект и его данные (диалоги, лиды, базу знаний); финансовая история сохраняется. Необратимо.
  • Передача делает владельцем другого человека, а тебя: администратором.
  • Дублирование копирует настройку (промпт, функции, дожимы, базу знаний) в новый проект: без диалогов и канала.

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

Вкладка проекта «Общие настройки» → подвкладка «Удаление» (блок «Опасная зона») → Удалить проект. Доступно только Владельцу.

Что удаляется: сообщения, диалоги, лиды, подписчики дожимов, настройки, база знаний, интеграции, функции. Сохраняется финансовая история (платежи, транзакции), для отчётности она не сносится, а отвязывается.

⚠️ Это необратимо. Восстановить удалённый проект нельзя. Перед удалением, выгрузи нужное (экспорт лидов).

Удаление идёт в фоне и устойчиво к сбоям: если процесс прервётся, повторный клик продолжит с того же места, уже вычищенное второй раз не трогается. Поэтому можно увидеть «Удаление этого проекта уже запущено…» или «Удаление прервалось при очистке…». Это нормально: подожди пару минут, обнови страницу и, если проект ещё на месте, нажми «Удалить» снова.

Если одно и то же сообщение приходит и на третий раз, дальше сам ничего не сделаешь: напиши в поддержку и назови код из сообщения (DELETE_PHASE1_PARTIAL, DELETE_PHASE2_PARTIAL или DELETE_FINAL_FAILED). Проект в таком состоянии уже не показывается в списке и не считается в лимитах, а система раз в час пробует довести удаление сама.


Передача проекта

Вкладка «Общие настройки» → «Удаление» → блок передачи владения. Только Владелец.

  1. Указываешь email нового владельца: ему придёт письмо «Принять владение» (ссылка действует 7 дней).
  2. Он принимает, и становится Владельцем.
  3. Ты автоматически становишься Администратором этого проекта: «Текущий владелец будет понижен до администратора.»
📌 Передача не происходит без согласия, пока человек не нажал «Принять владение», ничего не меняется. «Если вы не ждали это письмо, проигнорируйте его, передача не произойдёт без вашего согласия.»

Зачем: продаёшь бизнес, передаёшь проект клиенту, меняешь ответственного в команде.


Дублирование проекта

Вкладка «Общие настройки» → «Удаление» → Дублировать проект. Только Владелец.

Копируется: настройки, функции, дожимы, база знаний (с содержимым). Можно задать имя новой копии (иначе добавится «(копия)»).

НЕ копируется: подключённые каналы (WhatsApp, Telegram, Instagram), история диалогов и лиды, баланс/биллинг, личный Telegram для алертов.

💡 Зачем дублировать. Настроил идеального бота для одного филиала, клонируй под второй, подключи там свой номер, и не настраивай всё заново. Или держи «эталон» и экспериментируй на копии, не трогая боевой проект.

Простыми словами

Три «больших» действия с проектом, и все, только для тебя как владельца, чтобы сотрудник случайно ничего не натворил.

Удалить, снести проект совсем: уйдут переписки, лиды, база знаний (платёжная история останется для отчётности). Назад не вернёшь, так что сперва выгрузи нужное. Если при удалении выскочит «подождите 1-2 минуты», не пугайся, это система аккуратно дочищает, просто повтори.

Передать, сделать хозяином другого человека: он получает письмо, принимает, и проект, его, а ты становишься администратором. Удобно, если продаёшь бизнес или отдаёшь бота клиенту. Без его согласия ничего не произойдёт.

Дублировать, снять копию готовой настройки: промпт, функции, база знаний переедут в новый проект, а вот канал и переписки, нет. Шикарно, когда настроил одного бота идеально и хочешь такого же под другой филиал, не собирая всё с нуля.


Дальше: → Публичный API и ключи
Связано: Роли и права · Участники · Создание проекта
Не получилось? → напиши в саппорт с ID проекта

Документация › Команда и аккаунт › DOS AI в ChatGPT и Claude

DOS AI в ChatGPT и Claude

Подключите DOS AI к своему ChatGPT или Claude и спрашивайте обычными словами: «сколько заявок за неделю», «почему бот вчера молчал», «добавь в прайс чистку за 15 000». Без ключей и настроек: одна кнопка «Разрешить».

⏱ 6 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • В ChatGPT или Claude добавляете коннектор с адресом https://dosai.pro/api/mcp.
  • Открывается DOS AI: вы входите, отмечаете, что ассистенту можно, и жмёте «Разрешить».
  • Три уровня: смотреть всё, менять настройки бота, писать клиентам (каждое сообщение ассистент сначала покажет вам).
  • Деньги и удаление ассистент не трогает: такое подтверждаете вы сами в кабинете.
  • Отключить можно в любой момент: меню аккаунта, «ИИ-ассистенты».

Подключить ChatGPT

Работает на любом личном тарифе ChatGPT, и на бесплатном тоже (проверено 28.09.2026).

  1. В ChatGPT откройте Настройки → Безопасность и вход и включите Режим разработчика. ChatGPT подпишет его «повышенный риск»: это общее предупреждение про чужие серверы, деньги и удаление DOS AI ассистенту всё равно не даёт.
  2. Откройте Плагины, нажмите + → Создать приложение → Создать MCP-приложение.
  3. Назовите «DOS AI», вставьте адрес https://dosai.pro/api/mcp, способ входа оставьте OAuth. Отметьте «Я понимаю и хочу продолжить» и нажмите Создать.
  4. Нажмите Войти через DOS AI. Откроется DOS AI: войдите, отметьте, что можно, и нажмите «Разрешить».
  5. Обновите страницу ChatGPT, в новом чате нажмите +, выберите DOS AI и спросите, например, «сколько заявок за неделю». Без обновления страницы DOS AI в списке может не появиться: ChatGPT подтягивает приложения при загрузке.

В английском ChatGPT это Settings → Security and login → Developer mode, затем Plugins → + → Create app → Create MCP App.

Подключить Claude

Работает на тарифах Claude Pro и Max; в Team и Enterprise коннектор добавляет владелец организации.

  1. В Claude откройте Settings → Connectors и нажмите Add custom connector.
  2. Назовите «DOS AI», вставьте адрес https://dosai.pro/api/mcp и нажмите Connect.
  3. Откроется DOS AI: войдите, отметьте, что можно, и нажмите «Разрешить». В чате DOS AI включается кнопкой +.

Адрес и эти же шаги лежат в кабинете: меню аккаунта, «ИИ-ассистенты».


Что отметить на странице «Разрешить»

ГалочкаЧто сможет ассистентКогда ставить
Смотреть всё (всегда включена)Цифры и аналитику, диалоги, заявки, настройки ботовВсегда
Менять настройки ботаСоздать проект, собрать промпт бота, подключить Telegram, базу знаний, рабочие часы, дожимы и правила, статусы заявок, записи, отчёты. Дожимы, ответы правил и подтверждения записи уходят клиентам сами, по вашим текстамКогда хотите собрать или править бота из чата
Писать клиентам от вашего имениОтвечать клиентам в WhatsApp, Instagram и Telegram. Текст ассистент сначала показывает вамКогда хотите отвечать клиентам из чата

Ниже выбираете, к каким проектам доступ: ко всем или к одному.

⚠️ Деньги и удаление не выдаются никогда. Удалить проект, вернуть деньги, выставить счёт, запустить рассылку ассистент не может: такие действия вы подтверждаете сами в кабинете.

Что ассистент умеет, а что нет

Список собран по самому серверу подключения (77 инструментов на 14.10.2026), а не по обещаниям. Ассистент работает только через кабинет DOS AI: то, чего нет в кабинете, он не сделает.

Смотреть (всегда, галочка «Смотреть всё»)

ОбластьЧто видит
Проектысписок ваших проектов, карточку проекта, что ещё не настроено, ссылку на нужную страницу кабинета
Боттекущие настройки и промпт, историю версий промпта, список функций, подробности одной функции, её последние вызовы и сводку «работают ли функции»
Каналыподключён ли WhatsApp и почему нет, подключён ли Telegram-бот
Знаниясписок документов базы знаний, текст любого документа, медиатеку
Диалогисписок диалогов, переписку одного диалога, карточку диалога, поиск по словам внутри него, заметки команды, отложенные сообщения, сколько диалогов стоит на паузе
Заявкисписок заявок, карточку заявки, историю по ней, напоминания, статусы воронки, теги, саму воронку с цифрами
Автоматикадожимы и их результат, шаги дожимов, правила «когда / если / то» и их запуски, настройки подтверждения записи, список записей, рассылки (только список)
Цифрыаналитику за период, деньги по дням, историю баланса, остаток на балансе, расход на рекламу, счета клиентам, журнал событий, запланированные отчёты, кто работает в проекте
Справкастатьи этого руководства, чтобы ответить «как сделать в кабинете»

Менять (галочка «Менять настройки бота»)

  • Создать проект и собрать промпт бота из трёх ответов (платно, цену ассистент называет заранее).
  • Изменить промпт и настройки бота: модель, рабочие часы, поведение.
  • Подключить Telegram-бота по ключу от @BotFather. WhatsApp подключаете вы сами по QR, ассистент даст ссылку.
  • База знаний: добавить документ, поправить его текст, включить, выключить или переименовать, проверить, что бот найдёт на вопрос клиента.
  • Функции: включить или выключить. Правила: включить или выключить.
  • Диалог: сменить статус, стадию, имя клиента, теги, включить или выключить бота в одном диалоге, оставить заметку команде, отложить сообщение.
  • Заявка: сменить статус и поля, поставить напоминание, поменять статусы воронки.
  • Дожимы: поправить шаг или добавить новый. Автоответ на слово. Уведомление вам о новых заявках. Почта для отчётов.
  • Отчёт по расписанию: поменять или отправить прямо сейчас.
  • Записи: создать или обновить запись. Расход на рекламу: внести сумму за период.
  • Проверить бота в тестовом чате любым вопросом.

Писать клиентам (галочка «Писать клиентам от вашего имени»)

Ровно два действия: ответить клиенту в диалоге от имени оператора и отложить сообщение клиенту на время. Сообщение уходит настоящему человеку и не отзывается, поэтому это отдельная галочка. Сервер просит ассистента показывать вам текст до отправки и не повторять один текст в один диалог чаще раза в пять минут; если сообщение не доставлено, ассистент обязан сказать об этом, а не выдать за отправленное.

Чего нет и не будет кнопкой «Разрешить»

  • Деньги: пополнить баланс, оплатить подписку, вернуть деньги, выставить счёт клиенту.
  • Удалить проект, документ, диалог или заявку.
  • Запустить рассылку (видеть список рассылок можно, запускать нет).
  • Пригласить сотрудника, сменить роли, удалить участника.
  • Всё из админки платформы.

Таких инструментов на сервере нет вовсе, а не «выключены галочкой»: ассистент, который ошибся, не сможет удалить проект или двинуть деньги. Он подготовит, что нужно, и скажет, где нажать в кабинете.

Ограничения

  • Не больше 120 запросов в минуту на одно подключение: длинные разборы ассистент делает порциями.
  • Ответ на один запрос обрезается по объёму: длинную переписку ассистент читает страницами.
  • Тексты клиентов из переписок и заявок для ассистента данные, а не команды: указание, написанное клиентом в чате, он выполнять не должен.
  • Ключ доступа у ассистента нет: он получает только то, что разрешено галочками, и доступ отзывается в кабинете одной кнопкой.

Если на странице красная плашка «Это не ChatGPT и не Claude»

Имя в заголовке страницы приложение пишет себе само, поэтому DOS AI смотрит, куда на самом деле уйдёт доступ. Если это не ChatGPT, не Claude и не программа на вашем компьютере (Claude Code, Codex, Gemini CLI, Cursor), появится красная плашка с адресом сайта.

  • Подключаете этот сервис сами прямо сейчас: всё в порядке, решайте по галочкам.
  • Ссылку прислал кто-то другой: нажмите «Отклонить». Кто-то пытается получить доступ к вашему DOS AI под чужим именем.

Собрать бота с нуля прямо в чате

Кабинет можно не открывать вовсе. Напишите ассистенту «сделай мне бота для моей стоматологии», и он поведёт по шагам:

  1. Создаст проект (если подключён ко всем проектам).
  2. Задаст три вопроса о бизнесе и соберёт промпт бота, а факты (адрес, часы, цены) положит в «Информацию о компании». Это платно, 30 центов с баланса проекта; ассистент предупредит заранее.
  3. Подключит Telegram: подскажет, как взять ключ у @BotFather, и вставит его сам. WhatsApp подключаете вы: ассистент даст ссылку, QR сканируется телефоном с WhatsApp бизнеса.
  4. Проверит бота вопросами клиента и покажет ответы.
  5. Скажет, чего ещё не хватает: например, пополнить баланс (платите вы сами по ссылке).

Потом тем же чатом: рабочие часы, модель, тексты дожимов, ответ на слово («на слово «цена» присылай прайс»), уведомления о заявках вам на почту или в WhatsApp, статусы воронки, отчёт по расписанию, расход на рекламу.

Что можно спросить

  • «Сколько заявок было за неделю и какая конверсия?»
  • «Почему бот вчера не отвечал клиентам?»
  • «Покажи последние пять заявок с телефонами.»
  • «В информацию о компании нужно добавить: по воскресеньям мы не работаем.»
  • «Какие вопросы клиенты задают чаще всего, а бот на них не ответил?»
  • «Сколько осталось денег на балансе?»
  • «Бот должен отвечать с 9 до 18, в воскресенье выходной.»
  • «Когда клиент пишет «адрес», отправляй: ул. Абая 10, 2 этаж.»
  • «Присылай мне отчёт каждый вечер в 21:00 на почту.»
  • «Сообщай мне о новых заявках в WhatsApp.»

Отключить ассистента

Меню аккаунта → «ИИ-ассистенты» → «Отключить» рядом с ассистентом. Доступ пропадает сразу. Подключить снова можно в любой момент, страница «Разрешить» откроется заново.

При каждом подключении вам приходит уведомление «Подключён ИИ-ассистент». Если это были не вы, отключите его.

Если не работает

Что видитеЧто делать
В меню + на странице «Плагины» нет пункта Создать приложениеВключите Режим разработчика: Настройки → Безопасность и вход. Без него пункта нет ни на каком тарифе
Нажимаете Создать, и ничего не происходитВ ChatGPT уже есть приложение с названием «DOS AI» (например, от прошлой попытки). ChatGPT об этом не пишет. Удалите старое: Настройки → Плагины → DOS AI → «…» → Удалить, или назовите новое иначе
В чате в меню + нет DOS AIОбновите страницу ChatGPT: список приложений подтягивается при её загрузке, кнопка «Новый чат» его не обновляет
После «Разрешить» ассистент пишет «доступа нет»Отключите его на странице «ИИ-ассистенты» и подключите заново
Ассистент говорит «владелец не разрешил писать клиентам»Так и задумано: вы не отметили эту галочку. Подключите заново с галочкой или отправьте текст сами в «Диалогах»
Нужен доступ для программы разработчика (Claude Code, Cursor)Это ключ, а не кнопка: Подключить ИИ-агента

Простыми словами

ChatGPT или Claude становятся вашим помощником по DOS AI: вы пишете им вопрос, как сотруднику, а они сами заходят в кабинет и отвечают цифрами. Чтобы они могли зайти, вы один раз нажимаете «Разрешить» и выбираете, что им можно: только смотреть, ещё и настраивать бота, или ещё и отвечать клиентам. Деньги и удаление они не трогают никогда. Передумали, нажали «Отключить».


Дальше: → Публичный API
Связано: Подключить ИИ-агента (для разработчиков) · Роли и права · Аналитика

Документация › Для разработчиков › Публичный API

Публичный API и ключи dos_sk_live_…

[для разработчиков] Дёргай платформу из своего кода: API-ключ dos_sk_live_… авторизует запросы как тебя самого, с теми же правами на проекты, что и в браузере.

⏱ 8 мин · 👤 для разработчика · 🟢 live

За 30 секунд:
  • Ключ формата dos_sk_live_…, передаётся в заголовке Authorization: Bearer ….
  • Ключ работает от имени твоего аккаунта: действуют те же роли/доступы, что и в кабинете.
  • Ключи бывают read и read+write, на весь аккаунт или на один проект.
  • Хранится только SHA-256-хеш, сырой ключ показывается один раз при создании. Потерял, выпусти новый.
Раздел «Для разработчиков»: выпуск и управление API-ключами
Раздел «Для разработчиков»: выпуск и управление API-ключами

Создание ключа

В кабинете → управление API-ключами → создать. При создании:

  • задаёшь права: только чтение (read) или чтение+запись (read+write);
  • задаёшь область: весь аккаунт (все твои проекты) или один проект;
  • опционально, срок жизни (1-365 дней).
🔑 Сырой ключ виден ОДИН раз. Платформа хранит только его SHA-256-хеш и не может показать ключ повторно. Скопируй сразу в надёжное место. Потерял, просто отзови и выпусти новый.

Лимиты: до 50 ключей на аккаунт; запросы по ключу до 120 в минуту (при превышении API вернёт 429 Too Many Requests, сделайте паузу и повторите). Управлять ключами можно только из браузера (залогиненная сессия), сам ключ не может создавать другие ключи (защита от эскалации прав).


Использование

Передавай ключ в заголовке:

Authorization: Bearer dos_sk_live_…

Платформа резолвит ключ в твоего пользователя, дальше работают те же правила доступа, что и в кабинете: ключ видит ровно те проекты и может ровно то, что роль твоего аккаунта на этих проектах. Никаких отдельных «прав ключа» сверх твоих собственных нет.

СвойствоПоведение
Праваread: только GET; write, позволяет POST/PUT/PATCH/DELETE. Ключ только для чтения на мутирующем запросе → отказ
Областьaccount-scoped (все проекты) или project-scoped (заблокирован на один)
RBACнаследует роли твоего аккаунта на проектах, не выше
Отзывотозванный ключ перестаёт работать сразу

Базовый адрес: https://dosai.pro. Пример запроса:

curl https://dosai.pro/api/projects \
  -H "Authorization: Bearer dos_sk_live_…"

Машиночитаемое описание

АдресЧто это
https://dosai.pro/api/openapi.jsonПолная спецификация OpenAPI 3.1: все эндпоинты, параметры, коды ошибок. Открыта без ключа, подходит для генераторов клиентов и Postman
https://dosai.pro/llms.txtКороткая памятка для ИИ-агентов: что за платформа, как авторизоваться, куда идти дальше
https://dosai.pro/api/mcpMCP-сервер: тот же каталог как готовые инструменты для Claude Code, Codex и Cursor. См. Подключить ИИ-агента

Каталог эндпоинтов

Все пути, относительно https://dosai.pro, авторизация, Authorization: Bearer dos_sk_live_… (мутирующие запросы требуют ключ с правом write).

Проекты

МетодПутьЧто делает
GET/api/projectsСписок всех проектов пользователя
POST/api/projectsСоздать новый проект: { name, company_name, industry, … }
GET/api/projects/:idПолучить проект по ID
PATCH/api/projects/:idОбновить проект
DELETE/api/projects/:idУдалить проект

Лиды

МетодПутьЧто делает
GET/api/projects/:id/leadsСписок лидов. Query: page, limit, status (none/potential/qualified/hot/converted/reserve/lost), before (курсор)
GET/api/projects/:id/leads/:leadIdПолучить лид по ID
PATCH/api/projects/:id/leads/:leadIdОбновить лид: { lead_status, client_name, phone, email }
DELETE/api/projects/:id/leadsМассовое удаление: { ids: string[] }
GET/api/projects/:id/leads/exportЭкспорт лидов в CSV
GET/api/projects/:id/lead-statusesСтатусы воронки проекта
GET/api/projects/:id/leads/:leadId/activityИстория лида
GET/api/projects/:id/leads/:leadId/remindersНапоминания по лиду
POST/api/projects/:id/leads/:leadId/remindersПоставить напоминание: { due_at, note? }
GET/api/projects/:id/tagsТеги проекта

Записи (подтверждение и напоминания)

Если клиент записывается у вас в CRM, на сайте или в сервисе записи, ваша система сообщает нам о записи одним запросом, а платформа сама подтверждает её клиенту в WhatsApp или Telegram и напоминает перед визитом. Тексты и сроки владелец задаёт в кабинете: Автоматизации → Записи (подробно).

МетодПутьЧто делает
POST/api/projects/:id/bookingsСоздать или обновить запись: { external_id, phone, client_name, service, start_at, end_at?, status?, confirm? }. Повтор того же external_id обновляет, новое start_at переносит, status: "cancelled" отменяет
GET/api/projects/:id/bookingsСписок записей с планом сообщений. Query: status (upcoming/past/cancelled/all), from, to, q, page, limit
GET/api/projects/:id/bookings/:externalIdОдна запись по вашему номеру и её сообщения
DELETE/api/projects/:id/bookings/:externalIdОтменить запись: ожидающие сообщения снимаются
GET/api/projects/:id/booking-settingsНастройки подтверждения и напоминаний
PATCH/api/projects/:id/booking-settingsИзменить настройки: { enabled, confirmation: { enabled, text }, reminders: [{ offset_minutes, text? }], template }

Пример: ваша CRM создала запись.

curl -X POST https://dosai.pro/api/projects/<id проекта>/bookings \
  -H "Authorization: Bearer dos_sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"external_id":"A-1024","phone":"+77011234567","client_name":"Анна","service":"Маникюр","start_at":"2026-09-23 15:00"}'

Что важно знать программисту:

  • Время без смещения (2026-09-23 15:00) читается по часовому поясу проекта. В ответе есть start_at_local: сверьте, так ли мы поняли время.
  • Писать первыми можно только знакомым. Поле contact в ответе это подсказка на момент записи, перед каждой отправкой проверка повторяется:
  • known: сообщения уйдут;
  • unknown: человек ни разу не писал на номер WhatsApp проекта. Запись сохранена, но первыми мы ему не пишем, так номер не заблокируют. Такие записи видны в кабинете с кнопкой «Написать со своего телефона»;
  • unverified: проверить не удалось прямо сейчас (например, канал проекта в этот момент офлайн), платформа попробует позже;
  • instagram: у Instagram окно ответа 24 часа, напоминание за сутки туда не пролезет.
  • Ночью не пишем: сообщения уходят с 9:00 до 21:00 по часам проекта. Ночное напоминание уходит накануне в 20:30.
  • Подтверждение не уходит, если в этом чате за последние 30 минут был разговор (клиент только что записался через бота). confirm: false выключает его явно, если ваша система подтверждает сама.
  • Ключ нужен со скоупом write. Лимит 120 запросов в минуту.

Диалоги

МетодПутьЧто делает
GET/api/projects/:id/conversationsСписок диалогов. Query: page, limit, status (open/resolved/closed), include_archived
GET/api/projects/:id/conversations/:convIdДетали диалога
PATCH/api/projects/:id/conversations/:convIdИзменить диалог: { client_name, phone, tags[], status, archived_at, pinned_at }
GET/api/projects/:id/conversations/:convId/messagesСообщения диалога
POST/api/projects/:id/conversations/:convId/sendОтправить сообщение от оператора: { text: string }, опционально заголовок Idempotency-Key. Ответ 200 ещё не значит «доставлено»: смотрите поле ok
GET/api/projects/:id/conversations/ai-pausedСколько диалогов бот сейчас не ведёт: { count }
POST/api/projects/:id/conversations/:convId/toggle-aiПереключить бота в одном диалоге (вкл ↔ выкл), ответ { ai_on } после переключения
GET/api/projects/:id/conversations/:convId/notesВнутренние заметки к диалогу
POST/api/projects/:id/conversations/:convId/notesДобавить заметку: { body }
GET/api/projects/:id/conversations/:convId/scheduledОтложенные сообщения клиенту
POST/api/projects/:id/conversations/:convId/scheduledЗапланировать сообщение клиенту: { text, send_at } (от минуты до 31 дня)
GET/api/projects/:id/conversations/:convId/searchПоиск по сообщениям одного диалога. Query: q
GET/api/projects/:id/broadcastsРассылки и их итоги (запуск только в кабинете)

Функции ассистента

МетодПутьЧто делает
GET/api/projects/:id/functionsСписок функций бота. Значения секретов (токены, ключи) маскируются сервером

Интеграции

МетодПутьЧто делает
GET/api/projects/:id/integrationsСписок интеграций
POST/api/projects/:id/integrationsСоздать интеграцию (webhook): { name, type, url, events[], headers? }
PUT/api/projects/:id/integrations/:intIdИзменить интеграцию: те же поля, что при создании
DELETE/api/projects/:id/integrations/:intIdУдалить интеграцию

Аналитика и отчёты

МетодПутьЧто делает
GET/api/projects/:id/analyticsСтатистика проекта это query from, to (YYYY-MM-DD)
GET/api/projects/:id/reportsСкачать PDF-отчёт за месяц, query period=2026-03
GET/api/projects/:id/analytics/funnelВоронка, источники и когорты за период (по умолчанию 30 дней). Query: from, to
GET/api/projects/:id/logsЖурнал событий. Query: category, search, dateFrom, dateTo, event_type, before, limit, page
GET/api/projects/:id/report-configОтчёты по расписанию (владелец)

Биллинг

МетодПутьЧто делает
GET/api/projects/:id/tokensБаланс токенов проекта
GET/api/projects/:id/tokens/historyИстория транзакций
GET/api/projects/:id/payments/invoicesСчета клиентам бизнеса (только просмотр). Query: page, per_page, status

Бот, база знаний, функции и автоматизации

Эти же маршруты зовут кнопки кабинета и ИИ-ассистенты (ChatGPT, Claude по кнопке «Разрешить»), поэтому ответы приходят в том виде, в каком их получает экран кабинета.

МетодПутьЧто делает
GET/api/projects/:id/overview-insightsНеделя против прошлой (диалоги, лиды, % изменения), лиды по статусам, минуты с последнего диалога и лида
GET/api/projects/:id/baileys/statusСостояние WhatsApp-номера проекта
GET/api/projects/:id/telegram/statusСостояние Telegram-бота
GET/api/projects/:id/agent-configНастройки бота: кому отвечает, расписание, буфер, пауза оператора, дожимы, память
PUT/api/projects/:id/agent-configИзменить настройки: только нужные ключи, ответ это настройки целиком
GET/api/projects/:id/prompt-versionsСохранённые версии системного промпта
POST/api/projects/:id/test-chatСпросить бота в тест-чате как клиент: { message, history? }, списывает с баланса как обычный ответ
GET/api/projects/:id/knowledgeДокументы базы знаний. Query: limit, offset
POST/api/projects/:id/knowledgeДобавить документ: { name, file_type, content?, file_url? }
PATCH/api/projects/:id/knowledge/:kbIdВключить или выключить документ, переименовать, прикреплять к каждому ответу: { is_active?, always_include?, name? }
GET/api/projects/:id/knowledge/:kbId/chunksТекст документа кусками, как его видит бот
GET/api/projects/:id/mediaМедиатека, которую бот отправляет клиентам
GET/api/projects/:id/functions/:funcIdОдна функция, секреты замаскированы
PATCH/api/projects/:id/functions/:funcIdИзменить функцию, например { is_active: false }
GET/api/projects/:id/functions/:funcId/executionsПоследние вызовы функции. Query: limit
GET/api/projects/:id/functions/healthВызовы, ошибки и доля успешных по каждой функции. Query: range (24h/7d/30d)
GET/api/projects/:id/dripКлиенты в дожимах. Query: page, limit
GET/api/projects/:id/drip/statsРезультаты дожимов по статусам и касаниям
GET/api/projects/:id/automationsПравила «когда, если, то»
PATCH/api/projects/:id/automationsВключить или выключить правило: { ruleId, is_active }
GET/api/projects/:id/automations/runsКогда правила сработали. Query: limit, kind
GET/api/help/articlesОглавление этого руководства: название, ссылка, выжимка (для ИИ-ассистентов, отвечающих «как сделать»)

Лимиты запросов

  • API-ключ: до 120 запросов/мин на ключ; сверх: 429 Too Many Requests.
  • Ориентиры по типам: GET ≈ 30-60/мин, POST/PATCH ≈ 10-30/мин, PDF-отчёты ≈ 5/мин (точные значения у каждого роута свои).
  • В каждом ответе, заголовки X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset; при 429 ещё и Retry-After (секунды до сброса).

Безопасность ключа

  • Это пароль доступа к твоим проектам: храни как секрет, не коммить в репозиторий, не клади в открытый фронтенд.
  • Светанул ключ, немедленно отзови и выпусти новый.
  • Для интеграции, которой нужно только читать, выдавай read-only ключ.
  • Нужен доступ только к одному проекту это делай project-scoped ключ, не account-wide.

Простыми словами

Если ты разработчик и хочешь дёргать платформу из своего кода, заводишь API-ключ. Это длинная строка вида dos_sk_live_…, которую ты прикладываешь к запросам в заголовке Authorization. Важная идея: ключ это «ты в виде кода». Он видит ровно те проекты и умеет ровно то, что и ты сам в кабинете, не больше. Хочешь дать интеграции только читать, выпусти ключ «только чтение». Хочешь ограничить одним проектом: выпусти ключ на этот проект.

Главное правило безопасности: ключ показывается один-единственный раз при создании, мы храним только его «отпечаток» и заново показать не сможем. Скопировал, сохранил надёжно. Потерял или засветил, не страшно, заходишь и отзываешь, выпускаешь новый. И никогда не клади такой ключ в открытый код или фронтенд: это как пароль.


Дальше: → Кастомные вебхуки
Связано: Роли и права · Формат данных
Не получилось? → напиши в саппорт

Документация › Для разработчиков › Своя интеграция по API

Своя интеграция по API

Бот посреди разговора обращается к вашему сервису: проверить остаток на складе, создать заказ, достать данные из своей базы. Делается функцией «Своя интеграция по API», писать код не нужно, всё заполняется в полях. Готовый пример на настоящем сервисе: МойСклад.

⏱ 8 мин · 👤 для разработчика и владельца · 🟢 live

За 30 секунд:
  • Функции → Новая функция → «Своя интеграция по API». Адрес, метод, тело, авторизация, описание для бота.
  • В адрес, тело и заголовки подставляются данные разговора через выражения: {{phone}}, имя, дата.
  • Большой ответ API сжимается вкладкой «Что бот увидит в ответе», иначе бот утонет в сотне лишних полей.
  • Таймаут до 60 секунд, повторы при сбое, ключи к вашему API хранятся зашифрованными. Внутренние адреса заблокированы.
📌 Не путайте с вебхуками. Здесь бот сам идёт к вам, когда нужно по разговору. Если нужно, чтобы платформа сообщала вашей системе о событиях (новый лид, оплата), это Вебхуки.

Как настроить

Создайте функцию «Своя интеграция по API» (см. Функции) и заполните:

  • Адрес вашего API. Данные разговора подставляются выражениями: https://api.shop.kz/order?phone={{phone}}.
  • Метод: GET, POST, PUT, PATCH или DELETE.
  • Описание для бота: когда звать функцию. Его читает бот, а не человек, поэтому пишите словами клиента: «клиент спрашивает про наличие или цену товара».
  • Параметры функции: что бот должен выяснить у клиента и передать (например, search_term).

Вкладки под адресом:

ВкладкаЧто задаёт
Тело запросачто отправить (JSON подходит 9 API из 10)
Заголовкисвои HTTP-заголовки, обычно не нужны
АвторизацияBearer-токен, Basic, API-ключ в заголовке или свой заголовок
Параметры URLquery-параметры, которые подставит бот
Что бот увидит в ответекакие поля ответа отдать боту, и поиск по запросу клиента
Повторы при сбоечисло попыток и паузу между ними
Постраничная загрузкасобрать все страницы ответа (cursor, offset, page)

Вкладки после разделителя «Продвинутое» нужны не всегда. Точка рядом с названием вкладки значит, что в ней что-то настроено.


Что бот увидит в ответе

API часто отвечает сотней полей на каждый объект. Бот видит их все, путается и платит за лишние токены. На вкладке «Что бот увидит в ответе»:

  1. Включите «Включить маппинг ответа» и укажите, какие поля передавать боту (слева путь в ответе, например rows[*].name, справа короткое имя для бота).
  2. Для каталога включите «Поиск по запросу клиента»: сервер сам отфильтрует ответ по словам клиента, и бот получит десятки позиций вместо тысяч.
  3. Ограничьте максимальную длину ответа: чем она выше, тем дороже каждый вызов.

API отвечает «не нашлось» с кодом 200 и {success:false}? Отметьте, что такой ответ считается нормальным, иначе функция будет числиться сбойной.


Надёжность

ПараметрПоведение
Таймаутпо умолчанию 10 секунд, можно до 60
Повторынастраиваются на вкладке «Повторы при сбое»: число попыток и пауза
Всегда повторяются408, 429, 502, 503, 504, 522, 524; для 429 пауза берётся из заголовка Retry-After

Сервис лёг, и бот не зависнет: отработает таймаут и повторы, а клиенту честно скажет, что сейчас не получается, и пометит диалог «ответьте руками». Подробно: Функция не вызывается или падает.


Безопасность адреса

Раз бот умеет ходить по чужим адресам, кто-то мог бы попытаться направить его во внутреннюю сеть сервера (атака SSRF). Поэтому каждый адрес проверяется перед запросом:

  • запрос не пойдёт, если адрес ведёт в частную или служебную сеть: 127.x, 10.x, 192.168.x, 172.16-31.x, 169.254.x, 100.64-127.x, IPv6 ::1, fc/fd, fe80::;
  • адрес с логином и паролем внутри (https://user:pass@…) не принимается, протоколы только http и https;
  • после проверки запрос идёт ровно на тот IP, который её прошёл: подменить адрес между проверкой и запросом нельзя;
  • размер ответа ограничен.

Что это значит для вас: адрес должен быть публичным и лучше по HTTPS, а пароли и токены к вашему API кладите во вкладку «Авторизация» (они хранятся зашифрованными), а не в сам адрес. Подписи у исходящих запросов нет: если вашему API нужно убедиться, что запрос от бота, проверяйте секретный заголовок.


Простыми словами

Это для тех, у кого есть своя программа или сайт с API. Вы говорите боту: вот адрес, вот как войти, вот что отправить. И бот по ходу разговора спрашивает вашу систему и отвечает клиенту настоящими данными: есть товар или нет, сколько стоит, создан ли заказ. Сервер тормозит, и бот не зависнет, а честно скажет клиенту, что сейчас не получается.


Дальше: → Язык выражений
Связано: Функции · МойСклад: готовый пример · Вебхуки
Не получилось? → Функция не вызывается или падает

Документация › Для разработчиков › Язык выражений

Язык выражений (expressions)

Подставляй в тексты бота живые данные: Привет, {{client_name}}!. Выражения работают в промпте, дожимах и шаблонах: на основе Handlebars, безопасно.

⏱ 8 мин · 👤 для владельца и разработчика · 🟢 live

За 30 секунд:
  • Синтаксис это двойные фигурные скобки: {{client_name}}, {{phone}}, {{stage}}.
  • Работает в системном промпте, дожимах, шаблонах уведомлений, тест-чате.
  • Есть помощники: даты/время, текст ({{upper …}}), условия ({{#if …}}), математика.
  • Это безопасный шаблонизатор (Handlebars): произвольный код не выполняется.

Что это и где работает

Выражения это «вставки» в тексты бота, которые на лету заменяются на реальные данные диалога. Например, Здравствуйте, {{client_name}}! превратится в Здравствуйте, Алмас!.

Работают в: системном промпте, сообщениях дожимов, шаблонах уведомлений, тест-чате.

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


Переменные и помощники: живой справочник

Полный список переменных ({{client_name}}, {{phone}}, {{stage}}, {{data.поле}}…) и помощников (даты, текст, условия {{#if}}, математика, {{digits}}): в живом справочнике выражений. Он строится прямо из кода движка, поэтому всегда совпадает с тем, что реально умеет бот: здесь копию не держим, чтобы она не устаревала.

💡 {{client_name}} и {{name}}: одно и то же, оба работают. Аналогично {{client_phone}} и {{phone}}.

🔒 {{phone}} берёт номер, который клиент сам назвал и бот сохранил в анкете, а если такого нет, номер чата. Решаете по номеру, что показать (проверка заказа, брони, личного кабинета), берите {{channel_phone}}: это номер, с которого человек пишет, его не меняют ни анкета, ни ИИ. В Telegram и Instagram номера чата нет, там {{channel_phone}} пустой.

Пример:

{{#if client_name}}Здравствуйте, {{client_name}}!{{else}}Здравствуйте!{{/if}}
Сегодня {{day_of_week}}, {{date}}. Ваш статус: {{default lead_status "новый"}}.
🕐 Дата и время ({{date}}, {{time}}, {{now}}, {{day_of_week}}, {{format_date}}) считаются по часовому поясу проекта из настроек бота. Если пояс не задан, по Алматы. Другой пояс можно указать первым параметром: {{time "Europe/Moscow"}}.
💡 Числа из анкеты сравниваются как числа: {{#if (eq data.amount 100)}} сработает и тогда, когда клиент написал «100» текстом, а {{#if (gt data.amount 1000)}} понимает «5 000» с пробелом.

Безопасность

Это безопасный шаблонизатор, а не выполнение кода. Нельзя запустить произвольный JS, обратиться к файлам или сети. Встроены защиты от перегрузки: ограничения на длину шаблона, число и глубину условных блоков, размер данных и времени выполнения. Если шаблон «слишком тяжёлый», условные блоки останутся текстом, а простые вставки всё равно подставятся, бот не зависнет.

📌 Невалидное выражение (опечатка в скобках) не ломает сообщение: оно останется текстом, а остальные вставки в том же тексте подставятся как обычно.

Простыми словами

Выражения это способ вставлять в тексты бота «живые» кусочки. Пишешь в промпте Привет, {{client_name}}!, и каждому клиенту бот подставит его имя. Можно вставлять телефон, текущую дату, стадию разговора и собранные данные. Есть и помощники посложнее: написать дату в нужном формате, сделать текст заглавными буквами, показать разный текст в зависимости от условия («если имя известно, поздоровайся по имени, иначе просто привет»).

Звучит как программирование, но бояться нечего: это безопасные «шаблоны», а не настоящий код, сломать или взломать через них ничего нельзя, и даже если ошибёшься в скобках, сообщение не развалится. Работают они в промпте, дожимах: везде, где бот пишет текст.


Дальше: → Формат данных и интеграция фронта
Связано: Системный промпт · Дожимы · Кастомные вебхуки
Не получилось? → напиши в саппорт

Документация › Для разработчиков › Формат данных

Формат данных и интеграция фронта

[для разработчиков] Единые правила API, как выглядят успех и ошибка, пагинация, realtime, авторизация. Если строишь интеграцию или свой фронтенд, начни отсюда.

⏱ 8 мин · 👤 для разработчика · 🟢 live

За 30 секунд:
  • Успех: { "data": … }. Ошибка: { "error": "текст", "code": "КОД" }.
  • Пагинация: ?page=&limit= (по умолчанию 100, максимум 200).
  • Realtime: через Supabase-каналы (INSERT/UPDATE/DELETE по таблице с фильтром проекта).
  • Авторизация: сессия-cookie (браузер) или API-ключ Bearer dos_sk_live_… (API).

Конверт ответа

Все ответы API это в едином формате.

Успех:

{ "data": { ... } }

HTTP 200 (или другой 2xx).

Ошибка:

{ "error": "Человеко-читаемое сообщение", "code": "ERROR_CODE" }

Коды ошибок и статусы

HTTPcodeКогда
400INVALID_INPUT / INVALID_UUIDневерные/неполные данные
401UNAUTHORIZEDнет/невалидны учётные данные или подпись
403FORBIDDENавторизован, но нет прав (роль)
404NOT_FOUNDобъект не существует или не виден
429RATE_LIMITEDпревышен лимит (смотри заголовок Retry-After)
500INTERNAL_ERRORнеобработанная ошибка (полный текст в логах и Sentry, наружу только общий)
500DATABASE_ERRORсбой запроса к базе

Сообщения безопасны: внутренние детали (трейсы, токены) в ответ не попадают, полный текст уходит только в серверные логи.


Пагинация

Параметры запроса: ?page= и ?limit=.

  • по умолчанию limit = 100, максимум 200;
  • page начинается с 1 (ограничен сверху, чтобы не уехать в гигантский offset);
  • в ответ обычно приходит блок pagination: { page, limit, total, has_more }.

Realtime

UI обновляется без перезагрузки через Supabase Realtime: подписка на изменения таблицы (postgres_changes) с фильтром по проекту (project_id=eq.<id>), события INSERT / UPDATE / DELETE.

Что важно интегратору:

  • подписка возвращает статус (подключено / ошибка / закрыто) и умеет переподключаться после обрыва сети;
  • на DELETE приходит только первичный ключ (если не включён полный снимок строки);
  • глобальный индикатор «нет связи» загорается, только когда отвалились все каналы.
💡 На клиенте это обёрнуто в хуки use-realtime-* (по одному на сущность), после любой мутации список обновляется сам. Подробнее про продукт-поведение: Диалоги.

Авторизация

СпособДля чего
Сессия-cookieбраузерный кабинет (httpOnly-cookie Supabase)
API-ключ Authorization: Bearer dos_sk_live_…внешние интеграции, серверный код, см. Публичный API

Оба проходят одни и те же проверки доступа (роли/проекты): отдельной «облегчённой» авторизации нет. Ключ только для чтения на мутирующем методе → отказ.


Простыми словами

Это шпаргалка для тех, кто пишет код поверх платформы. Договорённости простые и одинаковые везде, если всё хорошо в ответе лежит data с данными; если плохо, error с понятным текстом и коротким code, по которому удобно ветвить логику. Списки отдаются порциями (постранично, до 200 за раз). Живые обновления (новое сообщение, новый лид) прилетают сами через подписку, не надо опрашивать сервер по таймеру.

Заходить можно двумя дверями: обычной сессией из браузера или API-ключом для своего кода, и за обеими дверями работают одни и те же правила доступа, так что ключ не даёт ничего сверх твоих прав. Если строишь свой интерфейс или интеграцию, этих правил достаточно, чтобы начать.


Дальше: → Бот не отвечает
Связано: Публичный API · Кастомные вебхуки
Не получилось? → напиши в саппорт

Документация › Для разработчиков › Подключить ИИ-агента

Подключить ИИ-агента (MCP)

[для разработчиков] Подключите Claude Code, Codex или Cursor к DOS AI одной командой и управляйте проектами прямо из своего ИИ-инструмента: «покажи вчерашних лидов», «поправь промпт», «сколько потратили за неделю».

⏱ 7 мин · 👤 для разработчика и интегратора · 🟢 live

За 30 секунд:
  • Адрес сервера: https://dosai.pro/api/mcp, авторизация тем же ключом dos_sk_live_…, что и у API, либо кнопкой «Разрешить» (ChatGPT, claude.ai, Claude Code) без ключа.
  • В Claude Code подключается одной командой, в Codex и Cursor через конфиг.
  • Агент получает 79 инструментов: создание проекта и сборка бота с нуля, подключение Telegram, чек-лист готовности, здоровье проекта, настройки бота, рабочие часы и тест-чат, база знаний, функции и уведомления о заявках, диалоги и заметки, лиды, статусы и напоминания, дожимы и правила, записи, рассылки (просмотр), аналитика, отчёты, деньги по дням и расход на рекламу, руководство.
  • Удалять проекты и проводить платежи агент не может: этого нет в наборе инструментов намеренно.
  • Готовые команды с подставленным ключом лежат в кабинете: раздел для разработчиков.

Что это даёт

Обычный API нужно программировать. MCP (Model Context Protocol) это стандартный «разъём», через который ИИ-инструмент видит платформу как набор понятных действий и вызывает их сам, по просьбе на человеческом языке.

Практический смысл для интегратора, который ведёт несколько клиентов:

  • «Покажи все проекты, где вчера не было ни одного лида», вместо обхода кабинетов руками.
  • «Прочитай промпт барбершопа, добавь правило про запись на выходные, сохрани»: правка без переключения окон.
  • «Сколько диалогов и лидов у стоматологии за июль, какая конверсия»: сводка в одном ответе.
  • «Открой последний диалог и ответь клиенту, что мастер перезвонит в 10:00»: ответ оператором из терминала.

Шаг 1. Выпустить ключ

Ключ выпускается в кабинете, раздел для разработчиков (/developers). Подробно про права и область действия написано в статье Публичный API.

Что важно выбрать правильно:

ВыборКогдаЧто сможет агент
Только чтениеАналитика, отчёты, разбор диалоговСмотреть, но ничего не менять
Чтение и записьПравка промпта, ответы клиентамЕщё и менять промпт, статусы лидов, отправлять сообщения
Один проектРабота по одному клиентуТолько этот проект. dosai_list_projects вернёт ровно его, остальные недоступны
Весь аккаунтВедёте несколько проектовВсе проекты аккаунта
🔑 Ключ показывается один раз. Скопируйте сразу; потеряли, отзовите и выпустите новый.

Шаг 2. Подключить свой инструмент

Готовые команды с уже подставленным ключом появляются в кабинете сразу после создания ключа, проще скопировать оттуда. Ниже те же команды, если подключаете позже.

Claude Code

claude mcp add --transport http dosai https://dosai.pro/api/mcp \
  --header "Authorization: Bearer dos_sk_live_ВАШ_КЛЮЧ"

Проверка: claude mcp list, сервер dosai должен быть в списке. Дальше просто просите словами: «покажи мои проекты в DOS AI».

Codex

В ~/.codex/config.toml:

[mcp_servers.dosai]
url = "https://dosai.pro/api/mcp"
bearer_token_env_var = "DOSAI_KEY"

И ключ в профиль оболочки (~/.zshrc или ~/.bashrc):

export DOSAI_KEY="dos_sk_live_ВАШ_КЛЮЧ"

Так ключ не лежит в конфиге, который легко утащить в репозиторий или синхронизировать между машинами. Если ваш Codex ругается на поле url, он старый: обновите его, поддержка удалённых серверов там встроенная.

Cursor

В ~/.cursor/mcp.json:

{
  "mcpServers": {
    "dosai": {
      "url": "https://dosai.pro/api/mcp",
      "headers": { "Authorization": "Bearer dos_sk_live_ВАШ_КЛЮЧ" }
    }
  }
}

Cursor умеет подставлять переменные окружения, так что ключ тоже можно не держать в файле: "Authorization": "Bearer ${env:DOSAI_KEY}".

Любой другой инструмент

MCP это открытый стандарт, а не список из трёх программ. Клиенты, которые умеют искать серверы сами, найдут нас в официальном реестре MCP под именем pro.dosai/dos-ai (домен подтверждён, запись активна). Проверить можно так:

curl "https://registry.modelcontextprotocol.io/v0/servers?search=dosai"

Всем остальным нужны всего две вещи:

ЧтоЗначение
Адрес сервераhttps://dosai.pro/api/mcp (транспорт streamable HTTP)
ЗаголовокAuthorization: Bearer dos_sk_live_ВАШ_КЛЮЧ

Большинство инструментов настраиваются файлом такого вида:

{
  "mcpServers": {
    "dosai": {
      "url": "https://dosai.pro/api/mcp",
      "headers": { "Authorization": "Bearer dos_sk_live_ВАШ_КЛЮЧ" }
    }
  }
}

Проверить связь до настройки инструмента можно одной командой: в ответ придёт список инструментов.

curl -s https://dosai.pro/api/mcp \
  -H "Authorization: Bearer dos_sk_live_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Если инструмент вообще не умеет MCP, остаётся обычный путь: публичный REST API с тем же ключом.

ChatGPT и Claude на сайте: без ключа

Веб-версии ChatGPT и claude.ai ключ не принимают, они входят по кнопке «Разрешить» (OAuth 2.1). С 27.09.2026 это работает: в коннекторе указывается только адрес https://dosai.pro/api/mcp, дальше открывается страница DOS AI, человек входит, отмечает права и жмёт «Разрешить». Пошагово для владельца: DOS AI в ChatGPT и Claude.

Как устроено для интегратора:

  • Без входа сервер отвечает 401 с заголовком WWW-Authenticate: Bearer resource_metadata="https://dosai.pro/.well-known/oauth-protected-resource/api/mcp". По этим метаданным клиент находит сервер входа (Supabase Auth, OAuth 2.1 с динамической регистрацией клиентов) и сам регистрируется.
  • Права решает страница согласия, а не пропуск: смотреть всегда, менять настройки и писать клиентам отдельными галочками, плюс все проекты или один свой. Ассистент без права записи не видит инструментов записи в tools/list; без права «писать клиентам» dosai_send_operator_message отвечает понятным отказом.
  • Отключение на странице «ИИ-ассистенты» снимает доступ сразу; следующий вызов получит 401 с error="invalid_token", и клиент предложит войти заново.
  • Claude Code тоже умеет этот вход: claude mcp add --transport http dosai https://dosai.pro/api/mcp без заголовка откроет браузер со страницей «Разрешить». Ключ по-прежнему работает, если он вам удобнее.

Что умеет агент

ИнструментЧто делаетПрава ключа
dosai_list_projectsСписок проектов, у каждого видно, работает ли WhatsApp-каналчтение
dosai_get_projectНастройки проекта: статус, канал и работает ли он сейчас (whatsapp_channel: online, offline, banned когда WhatsApp ограничил номер, not_connected, unknown), модель, балансчтение
dosai_get_promptПрочитать системный промптчтение (роль админа или владельца)
dosai_update_promptЗаменить системный промптзапись (роль админа или владельца)
dosai_list_functionsСписок функций ассистентачтение
dosai_list_leadsЛиды постранично, с фильтром по статусу (none, potential, qualified, hot, converted, reserve, lost)чтение
dosai_get_leadПолная карточка лида с ответами анкетычтение
dosai_update_leadСтатус лида, имя, телефон, почтазапись
dosai_list_bookingsЗаписи клиентов (бот, функции, ваша система) и что платформа им отправит: подтверждение, напоминания, и почему что-то не уйдётчтение
dosai_upsert_bookingСообщить о записи из вашей CRM: платформа подтвердит её клиенту и напомнит перед визитом. Тот же external_id обновляет, status: "cancelled" отменяетзапись
dosai_list_conversationsДиалоги, с фильтром по статусу (open, resolved, closed) и включением архивныхчтение
dosai_get_messagesПереписка одного диалогачтение
dosai_send_operator_messageНаписать клиенту от лица операторазапись
dosai_get_analyticsДиалоги, лиды, конверсия, время ответа, воронка, источники и расход за период (без указания дат: последние 7 дней)чтение
dosai_get_balanceОстаток и расходчтение
dosai_get_overviewНеделя против прошлой: диалоги, лиды, % изменения, лиды по статусам, минуты с последней активностичтение
dosai_get_whatsapp_status · dosai_get_telegram_statusПодключён ли канал, последняя ошибка связи (QR привязки не отдаётся никогда)чтение
dosai_count_paused_conversationsСколько диалогов бот сейчас не ведётчтение
dosai_get_bot_settings · dosai_update_bot_settingsНастройки бота: вкл/выкл, кому отвечает, пояс, буфер, пауза оператора, автовозобновление, дожимы, глубина размышления, память. Выдуманное поле возвращается ошибкой, а не молчаливым «сохранено»чтение · запись (админ)
dosai_list_prompt_versionsИстория версий промпта (дата и начало текста)чтение
dosai_test_botСпросить бота в тест-чате как клиент и получить настоящий ответ; живым клиентам ничего не уходит, с баланса списывается как обычный ответзапись
dosai_list_knowledge · dosai_read_knowledge_documentДокументы базы знаний и текст документа кускамичтение
dosai_add_knowledge_text · dosai_update_knowledge_documentДобавить текстовый документ; включить, выключить, переименовать. Удаления нет: устаревший документ выключаетсязапись
dosai_list_mediaМедиатекачтение
dosai_get_function · dosai_set_function_activeОдна функция (секреты замаскированы); включить или выключитьчтение · запись
dosai_list_function_runs · dosai_get_functions_healthПоследние вызовы функции; успехи и ошибки по всем функциямчтение
dosai_get_conversation · dosai_update_conversationКарточка диалога; статус, теги, имя, архив, закрепление, отложитьчтение · запись
dosai_toggle_bot_in_conversationПереключить бота в одном диалоге (сначала прочитать ai_on)запись
dosai_list_conversation_notes · dosai_add_conversation_noteВнутренние заметки к диалогучтение · запись
dosai_list_scheduled_messages · dosai_schedule_messageОтложенные сообщения клиенту; запланировать (уходит живому клиенту)чтение · запись
dosai_search_conversationПоиск по словам в одном диалогечтение
dosai_get_lead_statuses · dosai_get_lead_history · dosai_list_tagsСтатусы воронки, история лида, тегичтение
dosai_list_lead_reminders · dosai_add_lead_reminderНапоминания по лидучтение · запись
dosai_list_followups · dosai_get_followup_statsКлиенты в дожимах и результаты дожимовчтение
dosai_list_rules · dosai_set_rule_active · dosai_list_rule_runsПравила «когда, если, то», включить или выключить, лента срабатыванийчтение · запись
dosai_get_booking_settingsПодтверждение и напоминания о записичтение
dosai_list_broadcastsРассылки и их итоги (запуск только в кабинете)чтение
dosai_get_funnel · dosai_list_logs · dosai_list_report_settingsВоронка за период, журнал событий, отчёты по расписаниючтение
dosai_list_balance_history · dosai_list_invoicesИстория баланса; счета клиентам бизнеса (только просмотр)чтение
dosai_list_help_articlesОглавление этого руководства: ассистент отвечает на «как сделать» ссылкой на статьючтение
dosai_create_projectСоздать проект (нового бота). Только при подключении ко всем проектамзапись
dosai_compose_bot_descriptionСобрать промпт бота из трёх ответов владельца, как кнопка в кабинете. Платно (30 центов с баланса проекта, только при успехе), заменяет прежний промпт, он остаётся в историизапись (админ)
dosai_connect_telegram_botПодключить Telegram-бота по ключу от @BotFatherзапись (админ)
dosai_get_setup_checklistЧто ещё не готово: промпт, канал, баланс, проверка, и чем это сделать. Тот же чек-лист, что на обзоре проектачтение
dosai_get_cabinet_linkСсылка на нужную страницу кабинета для того, что делает только владелец: QR WhatsApp, пополнение, команда, рассылка, удалениечтение
dosai_set_model · dosai_set_notify_emailМодель бота; почта владельца для уведомлений и отчётовзапись (админ)
dosai_update_bot_settings (schedule)Рабочие часы: все семь дней Пн…Вс, время ЧЧ:ММ, начало равно концу = круглосуточнозапись (админ)
dosai_edit_knowledge_document · dosai_search_knowledgeПоправить текст документа базы знаний по кускам; что бот найдёт по вопросу (доли цента)запись
dosai_list_followup_steps · dosai_add_followup_step · dosai_update_followup_stepЦепочка дожимов: тексты, паузы, время, включить или выключить шагчтение · запись
dosai_add_keyword_replyПравило «клиент написал слово, платформа отвечает этим текстом без ИИ»запись
dosai_add_lead_notificationСообщать владельцу о новой заявке на почту или в WhatsApp (функция из каталога)запись
dosai_set_lead_statusesСтатусы воронки: переименовать, добавить, убрать (статус с заявками не удалится)запись
dosai_update_report · dosai_send_report_nowОтчёт по расписанию: включить, время, дни, канал; отправить сейчас. Меняются только названные полязапись (владелец)
dosai_get_money_by_day · dosai_list_ad_spend · dosai_add_ad_spendДеньги проекта по дням; расход на рекламу для цены заявкичтение · запись (владелец)
dosai_list_teamКто работает в проекте и с какой рольючтение

Чего в наборе нет намеренно: любое удаление, платежи, счета и возвраты, пополнение баланса, запуск рассылки (пишет всей базе; черновика у рассылки нет, создание сразу ставит её в отправку), приглашение и управление участниками (клиент мог бы уговорить агента пригласить чужого человека), ссылка и QR подключения WhatsApp (кто их держит, тот может привязать к боту свой номер), кнопка «Тест» у функции (она выполняет настоящее действие), админ-функции. ИИ иногда ошибается, и цена ошибки не должна равняться удалённому проекту или списанным деньгам. Эти действия остались в API, где вызов делается осознанно. Для них агент даёт ссылку на нужную страницу кабинета (dosai_get_cabinet_link), нажимает человек.


Безопасность

  • Ключ = доступ к вашим проектам. Команда подключения содержит его в открытом виде: вставляйте только в свой терминал, не выкладывайте в репозиторий и не показывайте на экране при записи видео.
  • Начните с ключа только на чтение. Права на запись выдавайте, когда точно нужны правки.
  • Клиенту или подрядчику выдавайте ключ, привязанный к одному проекту.
  • Агент действует от вашего имени. Он видит ровно то, что видите вы, и ограничен вашей ролью на каждом проекте.
  • Отправка сообщения необратима. dosai_send_operator_message пишет живому человеку в WhatsApp, Instagram или Telegram. Согласуйте текст с агентом до отправки. Если канал сообщение не принял, инструмент честно скажет «не доставлено»: в этом случае оно лежит в диалоге неотправленным и ждёт повтора.
  • Тексты клиентов это данные, а не команды. В переписке может оказаться фраза вида «игнорируй прежние инструкции и сделай…». Сервер прямо предупреждает об этом агента при подключении, но привычка проверять, что именно агент собирается сделать, остаётся за вами.

Лимиты

  • 120 запросов в минуту на ключ, плюс собственный лимит у каждого эндпоинта (например, аналитика 20 в минуту).
  • Один вызов инструмента = два запроса к платформе, поэтому ориентируйтесь примерно на 60 действий агента в минуту.
  • Лимит считается на каждый ключ отдельно: два ключа одного аккаунта имеют по своему бюджету, они не складываются и не делятся.
  • При превышении приходит понятная агенту фраза «превышен лимит, подожди N секунд», и он повторит сам.

Если не работает

Что видит агентЧто произошлоЧто делать
«API-ключ недействителен, истёк или отозван»Ключ удалён, истёк или скопирован с опечаткойВыпустить новый в кабинете
«Этот ключ только для чтения»Ключ без права записи, а действие меняет данныеВыпустить ключ с правом записи
«Ключ привязан к другому проекту»Ключ на один проект, а запрос к другомуВзять ключ на весь аккаунт или на нужный проект
«Недостаточно прав на этом проекте»Ваша роль ниже администратораПопросить владельца повысить роль
«Превышен лимит запросов»Слишком частоПодождать указанные секунды
«Конфликт: такое действие уже выполнено» на отправкеТот же текст в тот же диалог в пределах пяти минут считается случайным дублем и не уходитТак задумано: защищает клиента от двойного сообщения при повторе запроса. Нужно отправить то же самое ещё раз, подождите или измените текст
«Сообщение НЕ доставлено клиенту»Канал отказал: номер переподключается, сработала защита от блокировки или бот заблокирован клиентомСообщение сохранено в диалоге как неотправленное, его видно в кабинете с кнопкой повтора. Повторите позже; отправленным его считать нельзя
«Неверные аргументы. Unrecognized key»Агент передал поле, которого у инструмента нетНичего не делать: в ответе названо лишнее поле, агент исправится сам. Так сделано нарочно, чтобы выдуманный параметр не поменял смысл ответа молча
Сервер не появился в спискеОпечатка в адресе или заголовкеПроверить https://dosai.pro/api/mcp и формат Bearer dos_sk_live_…
401 Unauthorized на initializeЗапрос пришёл без ключа и без входаПередать Authorization: Bearer dos_sk_live_… или пройти вход кнопкой «Разрешить» (клиенты с OAuth делают это сами)
«Владелец отключил этого ассистента»Подключение к ChatGPT или Claude отключено на странице «ИИ-ассистенты»Подключить заново, откроется страница «Разрешить»

Под капотом

Сервер работает по streamable HTTP и не хранит сессий: каждый вызов самодостаточен, поэтому переключение серверов между двумя запросами агента ничего не ломает.

Каждый инструмент внутри вызывает тот же публичный REST-эндпоинт, что и обычная интеграция. Это сделано намеренно: права, лимиты, проверки и запись в журнал живут в одном месте, и агент получает ровно те же ответы, что получил бы curl. Отдельной «агентской» логики доступа не существует, поэтому она не может разойтись с основной.

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

Машиночитаемое описание REST-части лежит на https://dosai.pro/api/openapi.json, краткая памятка для агентов на https://dosai.pro/llms.txt.


Простыми словами

Обычно, чтобы связать программу с платформой, нужен программист: он пишет код, который ходит по адресам и разбирает ответы. MCP убирает этот шаг для ИИ-инструментов. Вы один раз даёте своему ИИ-помощнику адрес и ключ, и дальше говорите обычными словами: «сколько заявок пришло вчера», «поправь промпт у бота стоматологии», «ответь этому клиенту, что перезвоним в десять». Помощник сам понимает, какое действие вызвать.

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

И главное, что мы решили заранее: помощник не умеет удалять проекты и трогать деньги. Даже если он что-то неправильно поймёт, худшее, что произойдёт, это изменённый текст промпта или одно лишнее сообщение клиенту. Всё это видно и поправимо.


Дальше: → Кастомные вебхуки
Связано: Публичный API · Роли и права
Не получилось? → напиши в саппорт

Документация › Решение проблем › Бот не отвечает

Бот не отвечает: диагностика

«Бот молчит» это 9 разных причин, а не одна. Эта статья, порядок проверки от частого к редкому, чтобы за 2 минуты понять, в чём дело: деньги, выключатель, подписка, канал, или это вообще не баг.

⏱ 10 мин · 👤 для владельца и оператора · 🟢 live

За 30 секунд (проверь по порядку):
  1. ИИ включён? Рубильник «Статус бота» живёт на вкладке «Промпт» → «Расширенные настройки» (настройки бота), а у отдельного диалога свой переключатель «AI» в шапке.
  2. Деньги на балансе есть? Пусто → бот шлёт короткое «Скоро ответим» вместо нормального ответа.
  3. Проект активен, подписка/триал в силе? Иначе бот не отвечает по правилам доступа.
  4. Отвечает ли в тест-чате? Да в тесте, нет в бою → проблема в канале/деньгах/доступе, не в промпте.
  5. Реже: первое сообщение в новом WhatsApp-чате (баг WhatsApp Web), старая переписка (бот в них не лезет), только что переподключил канал (пауза 15 мин), авто-ответ WhatsApp Business (бот ответил раз и замолчал → п. 8).
Раздел «Логи»: первое место диагностики, если бот повёл себя странно
Раздел «Логи»: первое место диагностики, если бот повёл себя странно

Главный принцип: не гадай, сравни и посмотри

Самая частая ошибка: придумать причину и чинить не то. Правильный порядок:

  1. Сравни с другими чатами. Бот молчит везде или в одном диалоге? Везде → деньги/доступ/канал. В одном → этот конкретный чат (старая переписка, оператор перехватил, стоп-диалог).
  2. Проверь в тест-чате. Там бот отвечает всегда (даже если выключен для клиентов и баланс пуст). Отвечает в тесте, молчит в бою → дело не в боте, а в канале/деньгах/доступе.
  3. Только потом меняй промпт, если бот реально «думает не то», а не «молчит».

1. Проверь выключатель ИИ

У каждого диалога есть флаг ai_on. Если ИИ выключен, бот сохраняет входящие, но не отвечает (это не баг, это пауза).

Бот мог встать на паузу сам у платформы есть причины автопаузы (ai_off_reason):

Причина (ai_off_reason)Что значитЭто нормально?
operator_joined_chatоператор написал в диалоге, из кабинета или со своего телефона (или сработал авто-ответ WhatsApp Business: см. п. 8)да, если это человек; если это авто-ответ WhatsApp, отключи его. Бот вернётся сам, если включено автовозобновление
chat_started_by_operatorдиалог начат вручную операторомда
client_stopклиент попросил остановить бота (функция stop_dialog)да
pipeline_stage_done«Воронка завершена»: устаревшая причина, бот больше не останавливается сам на стадии «Завершено»; встречается только у старых диалоговда, включи ИИ вручную, если нужно
pre_existing_dialogпереписка существовала до подключения ботада: см. п. 5
backlog_offlineсообщение пришло в момент переподключения каналада: временно
guards_violationсработала защита от спамапроверь, не флуд ли
💡 Если причина из списка «да», бот молчит намеренно. Включи ИИ обратно вручную в диалоге, если нужно перехватить.

2. Проверь доступ (подписка, триал, бан)

Перед каждым ответом платформа проверяет «можно ли боту отвечать» (checkProjectEligibility). Если нет, молчит. Возможные причины (коды):

КодЧто значитЧто делать
PROJECT_NOT_ACTIVEпроект в статусе «черновик»подключи канал, проект активируется сам
INSUFFICIENT_BALANCEпустой баланспополни
NO_SUBSCRIPTION / SUBSCRIPTION_EXPIREDнет активной подпискиоформи подписку
WHATSAPP_TRIAL_EXPIREDбесплатные дни проекта кончились (WhatsApp и Instagram)оформи подписку
SUBSCRIPTION_NO_EXPIRYподписка помечена активной, но без даты окончания (сбой данных)напиши в саппорт, сами не чините
ACCOUNT_BANNEDаккаунт заблокированнапиши в саппорт
📌 Ограничения по числу пробных диалогов больше нет (отменено 2026-08-04). Если встретишь в старых заметках код TRIAL_CONVERSATIONS_EXHAUSTED или «10 пробных диалогов», это неактуально: внутри бесплатных дней диалогов сколько угодно, ограничивает только баланс проекта.
⚠️ Telegram против WhatsApp и Instagram. Telegram-боту для ответа нужен только активный проект + баланс. WhatsApp и Instagram дополнительно требуют активный пробный период или подписку (см. Биллинг).
✅ С 2026-07-23 такие блокировки видны в Диалогах. Раньше сообщение клиента, пришедшее при истёкшей подписке / пустом балансе / проекте на паузе, вообще не попадало в CRM: полная тишина без следа. Теперь входящее сохраняется в диалоге, а на диалоге появляется бейдж причины («Нет подписки» / «Нет баланса» / «Проект на паузе»). После продления/пополнения бейдж снимается сам. Если клиент написал за последний час, бот ответит ему сам в течение пары минут; на более старые сообщения он ответит, когда клиент напишет снова (ответ на вчерашнее выглядит хуже, чем молчание).

3. Проверь баланс

Это частая причина «бот вдруг замолчал». Когда баланс ниже минимума, платформа не запускает AI-ответ, а вместо него:

  • клиенту уходит короткий дежурный текст вроде «Спасибо, что написали! Скоро ответим.» (чтобы человек не остался без ответа);
  • тебе как владельцу приходит уведомление «мало токенов» (tokens_low);
  • в логах диалога это причина no_token_balance.

Увидел у клиента короткое «Скоро ответим» вместо нормального ответа бота: это маркер пустого баланса. Пополни.


4. Канал жив? (WhatsApp, Telegram, Instagram)

Если бот молчит во всех диалогах, возможно, отвалился сам канал, а не бот:

  • WhatsApp мог отвязать устройство («Сессия разлогинена») или поймать бан;
  • Telegram мог перестать работать, если токен отозвали в @BotFather.

Это отдельная тема: см. Канал отвалился / WhatsApp забанили.


Instagram: бот отвечает только 24 часа после последнего сообщения клиента (правило Meta). Молчит в старом диалоге, значит окно закрылось: ответит, когда клиент напишет снова. → Подключить Instagram

5. Это контакт, который был до подключения?

В режиме «Только новым обращениям» бот намеренно не отвечает в чатах, которые существовали до того, как ты подключил канал (pre_existing_dialog). Так он не влезает в давние разговоры твоих менеджеров и не «выстреливает» в личные контакты, за что WhatsApp может забанить номер.

Это не баг, а настройка. Если старым клиентам отвечать НУЖНО, поменяй «Кому отвечает бот» на «Всем, кто напишет» (вкладка «Промпт» → «Расширенные настройки», карточка сразу под статусом бота, подробности в статье про расширенные настройки). Переключение сразу снимает паузу с таких диалогов, и бот отвечает в них на следующее сообщение клиента. Разовая альтернатива для одного чата: включить ИИ вручную в шапке диалога.

⚠️ Пометка держится сама по себе: пока режим прежний, следующие сообщения этого клиента бот тоже пропустит, а не «подхватит».

На сообщения, отправленные до подключения номера, бот не ответит ни в одном режиме. Это защита от бана: иначе после каждого сканирования QR он разослал бы ответы на всю переплывшую историю.


6. Первое сообщение в новом WhatsApp-чате (баг WhatsApp Web)

Иногда самое первое сообщение в совершенно новом WhatsApp-чате приходит не текстом, а системной заглушкой вроде === SYSTEM WZ === Check this message on your device. Это баг WhatsApp Web на стороне Meta: телефон сообщение видит, а привязанная сессия, нет, поэтому расшифровать его нельзя.

Что делает платформа: такое нечитаемое сообщение пропускается (ответить на пустоту нельзя), но:

  • создаётся карточка диалога (чтобы лид не потерялся);
  • в диалог пишется внутренняя заметка о ситуации;
  • тебе как владельцу уходит оповещение.

То есть бот «молчит» на первое сообщение не из-за поломки, а потому что физически не смог его прочитать. Обычно клиент пишет второе: на него бот уже отвечает.

📌 Если видишь в WhatsApp сообщение клиента, которого нет в кабинете как текст: это та самая заглушка. Лид не потерян, карточка создана.

7. Только что переподключил канал?

После подключения или переподключения WhatsApp платформа 15 минут держит номер молча: это защита от бана, свежеавторизованный номер, который сразу начинает писать людям, Meta принимает за спам-бота.

Что важно понимать про эти 15 минут:

  • придерживаются любые автоответы бота, не только дожимы и рассылки: на новое сообщение клиента бот в это окно тоже не ответит;
  • сообщения не теряются: они принимаются, сохраняются в Диалогах и помечаются как требующие ответа, чтобы ты видел их сразу;
  • окно снимается по времени, ровно через 15 минут после подключения, а не «когда пойдут входящие»;
  • проверить бота можно сразу: открой диалог и включи в нём «AI» вручную, для такого диалога пауза не действует. Ещё быстрее, в тест-чате, он не зависит от канала вообще.

Подробнее: Антибан.


8. Бот ответил один раз и замолчал (авто-ответ WhatsApp Business)

Частый случай именно для WhatsApp Business: бот отвечает клиенту первый раз нормально, а потом в этом же чате замолкает, причина паузы, operator_joined_chat.

Что произошло: у твоего номера в WhatsApp Business включён встроенный авто-ответ, приветствие или «сообщение об отсутствии». Когда клиент пишет, WhatsApp сам отправляет это сообщение от твоего имени. Платформа видит исходящее «от владельца» и логично считает, что оператор вступил в диалог вручную → ставит бота на паузу, чтобы не перебивать человека. В итоге бот замолкает.

Как починить (одна настройка, один раз): в приложении WhatsApp Business → Настройки → Инструменты для бизнеса → отключи «Приветственное сообщение» и «Сообщение в нерабочее время». Бот и так сам здоровается с клиентами: родной авто-ответ только конфликтует с ним.

💡 Это касается только аккаунтов WhatsApp Business с включёнными авто-ответами. Обычный WhatsApp такого не делает. Чтобы снова включить бота в уже «запауженном» чате, открой диалог и включи ИИ вручную.

Шпаргалка: «бот молчит» за 60 секунд

Молчит во ВСЕХ чатах?
 ├─ да → 1) ИИ включён? 2) баланс не пуст? 3) подписка/триал? 4) канал жив (разлогин/бан/токен)?
 └─ в ОДНОМ чате?
     ├─ контакт был до подключения? → норма; нужен ответ → «Кому отвечает бот» = «Всем, кто напишет»
     ├─ оператор перехватил / стоп-диалог? → норма, ai_off_reason
     └─ первое сообщение в новом WhatsApp? → баг WhatsApp Web, ждём второго

Отвечает в тест-чате, молчит в бою → НЕ промпт. Смотри канал/деньги/доступ.

Простыми словами

Когда бот «замолчал», не спеши лезть в его настройки, чаще всего дело вообще не в нём. Пройди по-простому, сверху вниз.

Сначала глянь: бот включён? Бывает, его поставили на паузу, сам или оператор. Потом, деньги на счету есть? Если ноль, бот не отвечает, а вместо него клиенту уходит короткое «Скоро ответим» это верный знак, что пора пополнить. Дальше, оплачен ли проект (подписка или пробный период). И проверь, жив ли сам канал (WhatsApp, Instagram или Telegram): может, отвалилась связь, а не бот.

Первое, что стоит сделать: открой тест-чат и напиши боту там. Подписка тесту не нужна, а вот включённый бот и деньги на балансе нужны и ему. Если в тесте отвечает, а реальным клиентам нет, значит, бот в порядке, а проблема в деньгах, подписке или канале. Не трогай промпт зря.

И про старые переписки: отвечает ли в них бот, зависит от настройки «Кому отвечает бот». У проектов, созданных до 14 сентября 2026, по умолчанию стоит «Только новым обращениям» (новые проекты создаются в режиме «Всем, кто напишет»), и тогда сообщения давних клиентов видны в «Диалогах», но бот в них молчит: переключается на вкладке «Промпт» → «Расширенные настройки», карточка «Кому отвечает бот». Отдельная не-поломка: иногда бот молчит на самое первое сообщение в новом чате WhatsApp, это глюк самого WhatsApp, клиент просто пишет ещё раз, и бот отвечает.


Дальше: → Функция не вызывается / падает
Связано: Как бот думает · Тест-чат · Биллинг · Канал отвалился
Не получилось? → напиши в саппорт с ID проекта и примером чата

Документация › Решение проблем › Функция не вызывается / падает

Функция не вызывается / падает

Две разные проблемы: бот не вызвал функцию (хотя должен был), или вызвал, но она упала. Чинятся они по-разному. Эта статья, как отличить и где смотреть.

⏱ 10 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Не вызвал? Проверь: функция включена? описание понятное? не требует ли она от модели посчитать что-то (координаты/индексы: модель этого не умеет)?
  • Упала? Бот видит ошибку и обычно переспрашивает или сообщает клиенту, не молчит. Смотри причину в Диалогах или тест-чате.
  • Где смотреть: карточки вызовов функций видны в Диалогах, на странице Логи и в тест-чате («Действия бота»): там видно имя функции, аргументы, результат/ошибку.
  • Сказал «записал», а записи нет? Платформа это ловит сама: бот получает круг на исправление, в логах запись action_claim_unbacked. Чините описание функции.
  • Частое: функция требует подключённой интеграции (Google Sheets/Calendar), а её нет. О функции, которая падает раз за разом, вам придёт уведомление «функция проекта перестала работать».

Сначала пойми: не вызвал или упал?

СимптомЭтоКуда смотреть
Бот «не сделал» действие, в логах вызова функции нетне вызвалраздел «Не вызывается»
В логах вызов есть, но с ошибкой; бот переспросил/извинилсяупалраздел «Падает»

Открой тест-чат → блок «Что понял бот»: там видно, какие функции бот дёрнул, с какими параметрами и что вернулось. Если функции в списке нет, он её не вызвал.


Бот не вызывает функцию

1. Функция выключена

У каждой функции есть переключатель (is_active). Если она выключена, платформа не передаёт её модели, бот физически не может её вызвать. Проверь в разделе «Функции», что нужная функция включена.

2. Модель не поняла, когда её звать

Бот решает вызвать функцию по её описанию. Если описание размытое («работа с таблицей»), модель не сообразит, в какой момент её применить. Чините описанием, а не уговорами в промпте: опиши понятно, что функция делает и когда её звать. → Функции: как писать описание

3. Не хватает обязательного параметра

Если функция требует параметр, которого в разговоре ещё нет (например, телефон для заявки), модель либо переспросит клиента, либо не вызовет. Это нормально, добавь в промпт, что нужно сперва собрать.

3а. Сработал предохранитель

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

3б. Бот сказал, что сделал, но функцию не вызвал

Модель иногда пишет «счёт отправил» или «передала менеджеру» без вызова. С 14 октября 2026 платформа сверяет такие заявления (на русском, казахском и английском) с журналом вызовов хода и даёт боту один круг на исправление: вызвать функцию или ответить честно. Не исправился, в рабочем чате клиенту уходит нейтральный ответ, а диалог получает пометку «ответьте руками» и запись action_claim_unbacked в логах. Если такие записи повторяются у одной функции, её описание не говорит боту, когда её звать: перепишите его от лица бота с условием вызова. В тест-чате бот в такой ситуации прямо говорит, что здесь счёт или бронь не выставляются.

3в. Клиент пишет не по-русски

Решение вызвать функцию принимается по смыслу сообщения, а не по языку: «кейін жазамын» и «I'll text you later» ставят паузу напоминаний так же, как «напишу позже». Описания стандартных функций поведения с 14 октября 2026 содержат примеры на трёх языках, и у всех проектов с функциями стоит общее правило «функции по смыслу на любом языке». Если своя функция срабатывает только на русские фразы, допишите в её описание примеры на казахском и английском.

4. Функция требует «посчитать», а модель не умеет считать

🚫 Ключевое правило. Языковая модель плохо считает: координаты ячеек, индексы строк, «какая буква колонки», арифметику. Если функция ждёт от неё вычисленный адрес (G7, номер строки), она будет ошибаться или не вызывать.

✅ Решение архитектурное, не промптовое. Функция должна принимать человеческие метки («запиши к инструктору Вячеслав на 14:00»), а адрес/ячейку сервер вычисляет сам. У платформы для этого есть label-based функции (например, бронь по target_cell с описанием строки/колонки, а не по координате). Если своя функция упирается в «модель не туда пишет», переведи её на метки. Никакие уточнения в промпте «считай внимательно» это не лечат.

→ Подробнее об этом классе проблем: Функции


Функция падает (возвращает ошибку)

Хорошая новость: ошибки не теряются. Когда функция падает, платформа возвращает модели структурированную ошибку ({ error, error_code }), и бот её видит, обычно переспрашивает клиента или вежливо сообщает, что не получилось. Молча проглотить ошибку он не должен.

Типичные причины

ЧтоПоведение ботаКак чинить
Нет обязательного параметра{ error, missing_params } → бот переспрашиваетнорма; убедись, что промпт собирает данные
Неверное значение (вне допустимого набора/диапазона){ error, invalid_params } → бот пробует сновапроверь enum/границы в настройке функции
Интеграция не подключена (Google Sheets/Calendar)бот говорит «владелец не подключил…»подключи интеграцию и укажи ID таблицы/календаря
Внешний сервис не ответил (таймаут/5xx)если клиент ждал результата (цену, свободное время), бот честно говорит, что сейчас узнать не получается; если функция работает в фоне (карточка в CRM, уведомление сотрудникам), бот клиенту о сбое не пишет и продолжает разговор. В обоих случаях диалог получает пометку «ответьте руками»проверь сервис, на который ходит функция; для своих вебхуков настрой retry и таймаут
Приём оплаты не настроен (sub_merchant_not_connected)бот: «приём оплаты сейчас недоступен»подключи приём оплат
На номере клиента нет Kaspi (kaspi_client_not_found)бот просит номер, к которому привязан Kaspiничего чинить не нужно, это про номер клиента
Бота убрали из группы, куда функция пишет (Telegram-группа менеджеров)уведомление не доходит; напоминание «функция не работает» приходит вам раз в неделю, а не каждый день: это выбор владельца группыверните бота в группу или укажите другой chat_id

Уведомление «функция проекта перестала работать»

Если функция не отрабатывает много раз подряд за последние часы, вам приходит уведомление function_failing (колокольчик, почта, Telegram). Это отдельный сигнал от «бот не смог ответить»: там сорвался ход модели и чинить нам, здесь сломана интеграция владельца и почти всегда чинить вам: истёк ключ, не заполнена настройка, лёг сервис, на который функция ходит, кончился тариф кассы. В уведомлении имя функции и текст ошибки.

Таймауты и повторы

  • У функции есть таймаут, по умолчанию 10 секунд, настраиваемый в пределах 1-60 сек.
  • Для своих вебхук-функций («Своя интеграция по API») можно настроить повторы: при кодах 429/502/503/504 платформа повторяет с нарастающей задержкой, уважая Retry-After.
  • Внешние интеграции (Google/оплата) возвращают понятный клиенту русский текст ошибки, а не технический трейс.

Защита от зацикливания

Бот может вызвать несколько функций за один ход, но не бесконечно: лимит, 15 раундов вызовов на один ответ. Если упёрся в потолок, платформа аккуратно завершает ход осмысленной репликой, а не ошибкой (и пишет событие tool_rounds_exceeded). Если видишь такое часто, функция, вероятно, возвращает данные, которые провоцируют новый вызов по кругу; упрости сценарий.


Где увидеть вызовы функций

Все вызовы пишутся в журнал событий (events_log, тип function_call) и показываются:

  • в Диалогах: карточками прямо в ленте переписки (имя функции, успех/ошибка);
  • на странице Логи проекта: фильтр «Ошибки» и поиск по имени функции, выгрузка в CSV;
  • в карточке функции: «Лог вызовов» (все вызовы этой функции) и «История версий»;
  • в тест-чате: в панели «Действия бота».
📌 Важно: вызовы функций живых диалогов лежат в журнале событий, а не среди сообщений. Поэтому в «сырой» переписке их не видно: смотри именно карточки функций в Диалогах. Секреты (токены/ключи в параметрах) в журнале маскируются.

Под капотом

  • Загрузка функций: loadProjectFunctions() фильтрует .eq("is_active", true), выключенные не попадают в схему для модели (tool-executor.ts).
  • Валидация аргументов: перед выполнением аргументы приводятся к типам (coerceArgs) и проверяются по ограничениям (validateArgConstraints: enum/min/max/pattern). Невалидные → ошибка модели на самокоррекцию.
  • Детект ошибки результата: toolResultHasError() считает результат ошибкой, если есть error, success:false или непустой errors.
  • Логирование: logFunctionCall() пишет event_type:"function_call" с function_name / duration_ms / success / error / request / response; чувствительные ключи редактируются (REDACT_KEYS), payload обрезается до 2000 символов.
  • Игнор устаревших полей: если модель вернёт selected_service / services (удалённая фича «Услуги»), схема ответа их молча отбрасывает (ai-response-schema.ts): это не ошибка.

Простыми словами

С функциями бывает две разные беды, и их легко перепутать.

Первая: бот вообще не вызвал функцию. Чаще всего она просто выключена (проверь тумблер в «Функциях»), либо у неё непонятное описание, и бот не сообразил, когда её применять. И есть особый случай, если функция требует от бота что-то посчитать, номер ячейки, координату, индекс, он будет ошибаться, потому что языковая модель считать не умеет. Лечится это не уговорами в промпте, а тем, чтобы функция принимала понятные слова («запиши к Вячеславу на 14:00»), а все вычисления делал сервер.

Вторая беда: функция вызвалась, но упала. Тут хорошая новость: бот ошибку видит и обычно либо переспрашивает клиента, либо честно говорит «не получилось, попробуем позже», он не зависает молча. Самая частая причина, функция лезет в Google-таблицу или календарь, которые не подключены. Подключи интеграцию, и заработает.

А чтобы понять, что вообще произошло, открой тест-чат или Диалоги: там каждый вызов функции показан карточкой, видно, что бот дёрнул, с какими данными и что вернулось. Это лучшее место для диагностики.


Дальше: → Канал отвалился / WhatsApp забанили
Связано: Функции (полный гайд) · Интеграции · Тест-чат · Бот не отвечает
Не получилось? → напиши в саппорт с ID проекта и именем функции

Документация › Решение проблем › Канал отвалился

Канал отвалился / WhatsApp забанили

Бот молчит во всех чатах разом, обычно дело не в боте, а в канале: WhatsApp отвязал устройство, номер словил бан или закончился неоплаченный бесплатный период. Эта статья, как понять, что именно, и что делать.

⏱ 9 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • «Переподключаемся...» это короткий обрыв, платформа чинит сама: ничего не делай.
  • «Сессия разлогинена, привяжите заново» = устройство отвязано → нужно отсканировать QR заново (на сайте, не ковыряясь в телефоне).
  • «Номер заблокирован WhatsApp» = бан → повторный QR тем же номером бесполезен, нужен новый прогретый номер: кнопка «Подключить другой номер» в Каналах или новый проект.
  • Кончился бесплатный период без подписки → номер остаётся привязанным, но бот молчит; вернуть = оплатить подписку.
  • Telegram «падает» только если отозвали токен в @BotFather → переподключи.

Шаг 1. Понять состояние канала

Открой проект → «Каналы» → блок WhatsApp. Статус написан словами:

СтатусЧто этоСамо пройдёт?Что делать
Подключён (номер)канал в эфире-всё ок; если бот всё равно молчит, дело не в канале → Бот не отвечает
Поднимаем подключение... / Переподключаемся...короткий обрыв связи с телефоном, платформа восстанавливает✅ да, за минутуподожди; держи телефон в сети
Сессия разлогинена, привяжите зановоWhatsApp отвязал устройство (телефон долго был офлайн, отвязали вручную в «Связанных устройствах», сменили телефон)❌ нетотсканируй QR заново
Номер заблокирован WhatsApp, отправки остановленыбан номера❌ нетновый номер
Ошибка подключениясбой на шлюзеобычно данажми «Подключить» ещё раз; повторяется, напиши в поддержку
Не подключёнканал не привязан-подключи WhatsApp

Плановое обслуживание платформы тоже мягкий случай: номера на несколько минут переподключаются по очереди и возвращаются сами, QR при этом не нужен. Уведомление придёт, только если номер не вернулся в течение 15 минут после окончания работ.

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

Текст уведомления тоже разный, и по нему сразу видно, с чем имеешь дело:

  • «WhatsApp отключился» → сессия завершилась, нужен повторный QR.
  • «Устройство DOS AI отвязали в WhatsApp на телефоне» → кто-то нажал «Выйти» в разделе «Связанные устройства». Если это был не ты, просто отсканируй QR заново.
  • «WhatsApp ограничил номер» → бан. Про повторное подключение там не сказано ни слова намеренно: оно не сработает, нужен другой номер.
💡 Если в кабинете видишь сообщение, что не удалось загрузить статус канала: это временная недоступность, не бан. Обнови через минуту.

Шаг 2. «Сессия разлогинена»: отсканируй QR заново

Это значит, что привязанное устройство на стороне WhatsApp оборвалось (телефон надолго ушёл в офлайн, разлогинили связанные устройства, сменили телефон). Бот молчит, потому что физически отключён от WhatsApp.

Что делать:

  1. На сайте, в блоке WhatsApp, нажми «Обновить QR» (или «Подключить свой номер») и отсканируй QR заново, как при первом подключении.
  2. Не разрывай и не «чини» связь руками на телефоне: это только усугубит.
  3. Держи телефон с интернетом: иначе сессия снова слетит.

После нового скана снова идёт 15 минут прогрева (плашка с отсчётом), это нормально.

⚠️ Если разлогин прилетает сразу после подключения на свежем/«холодном» номере: это, скорее всего, бан, замаскированный под обрыв сессии. См. ниже.

Бан: что делать

Статус «Номер заблокирован WhatsApp» (или мгновенный разлогин на новом номере) = Meta заблокировала номер за подозрение в спам-автоматизации. Это происходит на стороне WhatsApp/Meta, вне платформы: снять бан можем не мы, а только WhatsApp по заявке владельца номера.

Что делать:

  • Реанимировать тот же номер обычно бесполезно, забаненные номера не разбанивают. Платформа это знает: забаненный номер сама не переподключает ни по расписанию, ни после обновления, а ссылка для клиента на подключение по нему отвечает отказом.
  • В разделе Каналы на карточке забаненного номера есть кнопка «Подключить другой номер»: она отвязывает старый номер от бота и показывает QR-код для нового. Настройки бота, функции и история диалогов остаются в проекте. Все остальные экраны кабинета (обзор проекта, дашборд, диалоги, оплата) в это время показывают именно «WhatsApp ограничил номер», а не «канал отключён», и ведут к этой же кнопке.
  • Пока номер ограничен, дожимы по WhatsApp ждут, а не сгорают. Отложенные сообщения, назначенные на этот номер, помечаются «не отправлено» с понятной причиной, чтобы не висеть в очереди сутки. Написать клиенту из Диалогов с ограниченного номера тоже нельзя: кабинет сразу ответит, что нужен другой номер, а не «попробуйте через минуту».
  • После подключения другого номера дожимы прежним собеседникам закрываются, а не продолжаются с нового: человек, который писал на старый номер, нового не знает, и «вы ещё думаете?» с незнакомого номера читается как спам, а для WhatsApp это холодное сообщение со свежего номера, то есть тот самый признак, за который ограничили предыдущий. Кто напишет на новый номер сам, начинает переписку заново, и дожимы у него будут свои. Холодные рассылки на новом номере начинаются с малого дневного лимита, даже если проект давно «прогрет»: прогрев считается по номеру.
  • Холодные рассылки («Исходящие») на ограниченном номере встают и прямо говорят, что нужен другой номер. Люди, которым первое сообщение ушло со старого номера, после замены помечаются пропущенными: писать им продолжение с нового номера нельзя, они его не знают. Их телефоны при этом освобождаются, и новую кампанию по ним можно запустить заново, обычным первым сообщением.
  • После подключения другого номера (после бана или просто при переносе бота) людям прежнего номера первым писать нельзя: в их диалогах поле ввода закрыто и стоит пометка «прежний номер», пока человек не напишет на новый номер сам. Подробно: Если переносишь бота на другой номер.
  • Помощник DOS в WhatsApp и письма платформы про этот номер говорят то же самое: нужен другой номер. Совета «отсканируйте QR заново» при ограничении ты не увидишь нигде.
  • Оплата подписки ограничение не снимает, и платформа скажет об этом прямо. Если оплатить, пока номер ограничен, придёт отдельное сообщение: подписка активна, деньги на месте, но отправлять с этого номера нельзя, нужен другой. Письма «бесплатный период заканчивается» и «скидка заканчивается» в такой момент тоже называют настоящую причину, а не зовут просто заплатить: сроки в них настоящие, но одной оплаты будет мало.
  • Если ограничение поймали сразу несколько номеров в один день, это не авария платформы, и писем «ведутся технические работы» из-за этого не будет. Такие письма приходят только когда проблема действительно на нашей стороне, и тогда переподключать ничего не нужно.
  • Недоставленные сообщения на ограниченном номере не висят в очереди часами: они сразу помечаются с причиной, чтобы было видно, что именно не дошло.
  • Хочешь начать совсем с чистого листа, заведи новый проект и подключи в нём новый, прогретый номер.
  • Перед подключением ответь себе на пять вопросов про номер: иначе новый номер забанят так же.
🚫 Почему не переподключить тот же номер на том же проекте? Meta помнит граф контактов даже после нашей чистки канала. Надёжнее: чистый проект + чистый номер. Подробно: Гигиена и антибан.

Бесплатный период кончился, подписки нет

Если 14 (или 30 по промокоду) бесплатных дней закончились и подписку не оформили, канал никуда не исчезает: номер остаётся привязанным, переписка и настройки на месте. Просто бот перестаёт отвечать. Признаки:

  • на диалогах появляется бейдж «Нет подписки», входящие сообщения при этом сохраняются;
  • тебе приходит уведомление о том, что бот остановлен;
  • в блоке WhatsApp статус по-прежнему «Подключён».

Что делать: оформи подписку, и бот ответит на следующее же сообщение клиента. Если за это время устройство успело разлогиниться, новый QR на неоплаченном проекте платформа не выдаст до оплаты: сначала подписка, потом скан.


Telegram «отвалился»

У Telegram нет банов и разлогинов, он ломается только в одном случае: токен отозвали или сбросили в @BotFather. Тогда проверка (getMe) не проходит, и платформа помечает бот как отключённый (telegram_bot_connected = false).

Что делать:

  1. Кабинет → «Каналы» → Telegram → «Проверить подключение». Покажет «Бот не отвечает. Проверьте токен.»: токен невалиден.
  2. В @BotFather возьми актуальный токен (или выпусти новый через /token//revoke).
  3. Вставь и переподключи. → Подключить Telegram

Instagram «отвалился»

У Instagram нет банов номера, а отключается он по двум причинам:

  • Доступ отозван (на карточке «Доступ отозван»): в Instagram сменили пароль или убрали наше приложение в настройках аккаунта. Подключи заново: «Каналы» → Instagram → «Подключить Instagram», все галочки включены.
  • Бот молчит в одном диалоге, а канал работает: прошло больше 24 часов с последнего сообщения клиента. Это правило Meta, бот ответит, когда клиент напишет снова. Оператор может ответить сам из приложения Instagram: из кабинета позже суток Instagram не пускает ни бота, ни оператора.

→ Подключить Instagram


Простыми словами

Если бот молчит сразу во всех чатах, почти всегда «упал» не бот, а канал, через который он общается.

С WhatsApp бывает три ситуации. Первая, безобидная: связь ненадолго оборвалась («Переподключаемся...»), платформа поднимет её сама, делать ничего не надо. Вторая: сессия разлогинена, это как если бы на телефоне отвязался «WhatsApp на компьютере»; надо просто зайти на сайт и заново отсканировать QR-код (важно на сайте, а не ковыряться в телефоне). Третья, неприятная: бан, WhatsApp заблокировал номер. Тут тот же номер уже не спасти, нужен другой, заранее «прогретый» номер: подключить его можно кнопкой «Подключить другой номер» в Каналах или в новом проекте, обязательно прочитав про антибан.

Отдельный случай, когда бесплатный период кончился, а подписки нет: тогда бот просто перестаёт отвечать. Номер при этом остаётся привязанным, настройки и переписка на месте, и бот включится сразу после оплаты. А вот заново отсканировать QR-код без подписки уже не получится.

С Telegram проще: он не банится и не слетает. Сломаться может только если ты сам отозвал токен бота в @BotFather, тогда возьми токен заново и переподключи. Кнопка «Проверить подключение» сразу покажет, в токене ли дело.


Дальше: → Платёж не прошёл
Связано: Подключить WhatsApp · Гигиена и антибан · Подключить Telegram · Биллинг
Не получилось? → напиши в саппорт с ID проекта

Документация › Решение проблем › Платёж не прошёл

Платёж не прошёл

Оплатил пополнение или подписку, а баланс не вырос? В девяти случаях из десяти это задержка подтверждения, а не потеря денег. Эта статья: что проверить по порядку, что значат надписи в окне оплаты и когда писать нам.

⏱ 7 мин · 👤 для владельца · 🟢 live

За 30 секунд:
  • Kaspi по номеру (push): чаще всего счёт ждёт подтверждения в приложении Kaspi на телефоне. Подтверди его там.
  • Kaspi QR: код живёт около трёх минут. Не успел, нажми «Новый QR»; свернул окно, QR лежит в «Счетах в ожидании».
  • Картой: баланс зачисляется сразу после оплаты. Нет через 5 минут, напиши нам.
  • Kaspi написал «отменён», а деньги списались: платить второй раз не нужно, касса примет оплату сама в течение 10 минут.
  • Деньги списались, а баланса нет через 15 минут: напиши нам с ID проекта, суммой и временем. Платёж не теряется.

Как устроено пополнение

Пополнить баланс и оплатить подписку можно тремя способами, все в окне «Оплата» (где оно):

  • Kaspi по номеру (push). Вводишь номер телефона, платформа выставляет счёт в приложение Kaspi, ты подтверждаешь его на телефоне, баланс пополняется. Между «подтвердил» и «баланс вырос» бывает задержка в пару минут: это нормально.
  • Kaspi QR. Номер не нужен: на экране QR-код, сканируешь его в Kaspi.kz. Из Кыргызстана тот же QR оплачивает приложение «Мой O!», списание в сомах по курсу твоего банка.
  • Картой. Visa или Mastercard казахстанского банка, баланс зачисляется сразу после оплаты, подтверждения в Kaspi не требуется.

Большинство вопросов «платёж не прошёл» относятся к Kaspi: счёт создан, но не подтверждён, или подтверждён, но ещё не дошёл.


Что проверить по порядку (Kaspi по номеру)

1. Подтверди счёт в Kaspi. Самое частое: счёт создан и висит в ожидании. Открой приложение Kaspi на телефоне и подтверди оплату. Окно платформы в это время так и пишет: ждём подтверждения в Kaspi.

2. Проверь номер. Надпись «На этом номере нет приложения Kaspi. Укажите номер, на котором установлен Kaspi» значит, что счёт не выставлен вовсе: на этом номере нет Kaspi. Укажи номер, к которому привязано твоё приложение, или оплати QR-кодом, где номер не нужен.

3. Подожди и обнови. Уже подтвердил, деньги списались, а баланс прежний: подожди 5-10 минут и обнови страницу. Подтверждение от Kaspi иногда приходит с задержкой, платформа сама досверяет такие счета каждые 10 минут в течение двух суток.

4. Не плоди новые счета. Пока висит неоплаченный счёт, он лежит в «Счетах в ожидании» в окне оплаты: заверши его или дождись, когда истечёт. Счёт, который истёк или который ты отменил, можно выставить заново той же суммой прямо из истории платежей.

5. Kaspi показал «отменён», а деньги ушли. Платить второй раз не нужно. Kaspi иногда присылает отмену раньше, чем проводит оплату. Касса такую оплату принимает, и деньги зачисляются сами в течение 10 минут. Окно оплаты пишет «Проверяем, не пришла ли оплата…» и само сменится на «Оплата прошла»; статусы «отменён» и «истёк» у Kaspi не окончательные.

6. Временная ошибка сервиса. Надпись о том, что оплата через Kaspi сейчас недоступна, значит сбой на стороне платёжного сервиса. Подожди несколько минут и попробуй снова, или оплати картой.


Если платил QR-кодом

  • QR действует около трёх минут. Не успел, нажми «Новый QR»: старый уже не примет оплату.
  • Свернул окно до оплаты: QR не пропал, он в «Счетах в ожидании» с кнопкой «Показать QR».
  • Оплатил, а баланс не вырос: те же правила, что для оплаты по номеру, подожди до 10 минут, платёж досверится сам.

Если платил картой

Баланс зачисляется сразу. Если банк отклонил оплату, в истории платежей статус «отклонён банком»: проверь лимиты карты и попробуй снова или через Kaspi. Деньги списались, а баланса нет через 5 минут: напиши нам.


Автопополнение и автопродление: почему счёт не пришёл или пришёл не сразу

Эти два механизма сами выставляют счета в Kaspi, и у них свои правила (подробно):

  • Один счёт за раз. Пока предыдущий автосчёт можно оплатить (24 часа), новый не выставляется, даже если баланс всё ещё ниже порога. Оплати висящий или дождись, когда он истечёт.
  • Отказался от счёта в приложении: следующий придёт не раньше чем через 3 часа, и неоплаченных автосчетов за сутки будет не больше трёх.
  • Пополнил вручную: висящий автосчёт отменяется сам, оплачивать его не нужно.
  • Списание с карты не прошло три раза подряд или карта удалена: автопополнение выключается, тебе приходит уведомление. Включи заново после того, как разберёшься с картой.
  • Автопродление подписки это тоже счёт, а не списание: он приходит за 3 дня до конца подписки на номер Kaspi, с которого платили в прошлый раз, не чаще раза в сутки. Не подтвердил, подписка закончится в свой срок.

Что ты увидишь, когда всё прошло

  • В окне оплаты статус счёта сменяется на «оплачен», баланс и дата подписки обновляются без перезагрузки.
  • Приходит одно уведомление «баланс пополнен» (или «подписка оплачена») с суммой и новым балансом: в колокольчик, на почту и в Telegram, если он подключён. Одна оплата это одно сообщение, повторов не бывает.
  • В истории операций появляется строка пополнения, а при пополнении от $100 рядом отдельная строка подарка $10.

Когда писать нам

Если деньги реально списались, а баланс не появился спустя 15 минут, напиши нам: платёж не теряется, у нас есть досверка и ручное проведение зависших платежей. Укажи:

  • ID проекта,
  • сумму и время оплаты,
  • способ (Kaspi по номеру, Kaspi QR, карта),
  • что деньги списались: скриншот из Kaspi или банка.

Контакты поддержки: FAQ.


Простыми словами

Главное, не паникуй: деньги почти никогда не теряются, чаще всего это просто задержка.

Платил через Kaspi по номеру? Скорее всего, просто не подтвердил: зайди в приложение Kaspi и нажми «Подтвердить». Если Kaspi пишет, что на номере нет приложения, укажи другой номер или оплати QR-кодом. Если уже подтвердил и деньги ушли, а баланс не вырос, подожди минут десять и обнови страницу: подтверждение иногда запаздывает, и система сама подхватит платёж. Kaspi написал «отменён», а деньги списались: тоже не плати второй раз, зачислится само.

Платил QR-кодом? Код живёт три минуты, после этого нужен новый.

Платил картой? Баланс зачисляется сразу. Нет через пять минут, пиши нам.

Если деньги точно списались, а через пятнадцать минут баланса всё нет, напиши нам с ID проекта, суммой, временем и способом оплаты. Мы найдём этот платёж и проведём его руками, он никуда не денется.


Дальше: → Частые вопросы (FAQ)
Связано: Биллинг · Сколько стоит сообщение · Приём оплат
Не получилось? → напиши нам с ID проекта, суммой, временем и способом оплаты

Документация › Решение проблем › FAQ

Частые вопросы (FAQ)

Короткие ответы на самые частые вопросы, с ссылками, где копнуть глубже.

⏱ 8 мин · 👤 для владельца · 🟢 live


Старт и пробный период

Можно попробовать бесплатно?
Да. Проект на пробном периоде получает $5 на баланс, а WhatsApp-канал работает бесплатно 14 дней, без ограничения по числу диалогов. С промокодом партнёра старт удваивается: $10 и 30 дней. Карта и предоплата не нужны. Бесплатный период открывает канал, а сами ответы бота идут с баланса: закончится он раньше дней, просто пополни. → Что такое DOS AI, Подключить WhatsApp

Нужна ли карта, чтобы начать?
Нет. Пробуешь без карты; оплата нужна, только когда захочешь продолжить после триала. → Биллинг

Сколько проектов можно создать?
Проектов на аккаунт до 50, а вот бесплатный старт (деньги на баланс + бесплатные дни WhatsApp) даётся первому проекту. Если ты зарегистрировался по чьей-то партнёрской ссылке, бесплатный старт получают первые три проекта. И отдельно: любому проекту, где ты применил промокод партнёра, бесплатный период открывается независимо от очерёдности. Удобно, если пробуешь ботов сразу нескольким клиентам.


Каналы

Бот может работать в WhatsApp, Telegram и Instagram одновременно?
Да, в одном проекте все каналы сразу, мозг у бота общий. → Обзор каналов

Что выбрать новичку, WhatsApp или Telegram?
Telegram, быстрее и без рисков (официальный бот). WhatsApp, где сидят клиенты, но нужен «прогретый» номер и осторожность с баном. → Telegram, Антибан

Почему WhatsApp могут забанить?
Meta банит «холодные» номера за подозрение в спаме. Поэтому перед подключением стоит честно ответить на пять вопросов про номер: живой ли он, есть ли переписка, не в эмуляторе ли, не банился ли раньше. → Гигиена и антибан

Можно пользоваться телефоном после подключения WhatsApp?
Да. Бот работает как привязанное устройство (WhatsApp Web), не вместо тебя. → Подключить WhatsApp


Поведение бота

Бот не отвечает, что делать?
Проверь по порядку: включён ли ИИ, есть ли деньги, активна ли подписка/триал, жив ли канал. → Бот не отвечает

Можно отвечать клиенту вручную?
Да. Начни писать в диалоге, бот сам встанет на паузу. Закончил, включи «AI» обратно. → Диалоги

Бот «тупит» на сложных вопросах, как улучшить?
Сначала поправь промпт и базу знаний. Если не помогает, поставь модель мощнее. → Выбор модели

Бот пишет ерунду / выдумывает.
Опиши в промпте «бери только из базы знаний, не выдумывай» и наполни базу знаний. Проверяй в тест-чате.

Бот не записал клиента, хотя обещал.
Смотри логи диалога: вызвалась ли функция и с какой ошибкой. С 14 октября 2026 платформа сама ловит «записал» без вызова функции и даёт боту круг на исправление. → Функция не вызывается / падает

Бот ответил не так, как я хочу. Обязательно лезть в промпт?
Нет. В тест-чате под ответом бота есть ссылка «Не так ответил? Поправить словами»: напиши замечание, как сотруднику, и оно встанет правилом в конец промпта. → Тест-чат

Клиент прислал ссылку на свой сайт. Бот её откроет?
Да: бот читает до двух ссылок из сообщения и отвечает по содержимому страницы, а не гадает по адресу. Выключается в расширенных настройках бота. → Как бот думает

Бот понимает казахский и английский?
Да. Отвечает на языке последнего сообщения клиента, казахские голосовые расшифровывает, функции («напишу позже», «кейін жазамын») вызывает по смыслу на любом языке. → Системный промпт


Деньги

Сколько стоит одно сообщение?
Разговор с клиентом обычно стоит 6-13 центов, чаще всего около 8 (примерно 35 ₸). Зависит от модели, длины промпта и того, что бот делает (база знаний, распознавание медиа). → Сколько стоит сообщение

Оплатил, а баланс не вырос.
Чаще всего это задержка подтверждения. Подтверди в Kaspi, подожди 5-10 минут, обнови. → Платёж не прошёл

Можно зарабатывать на платформе?
Да, чаще всего так: собирают ассистентов бизнесам за настройку и дальше ведут их проекты на помесячном сопровождении. Отдельно есть партнёрская программа для тех, кто продвигает DOS AI постоянно. → Промокоды и партнёрская программа

Бот может принимать оплату от моих клиентов?
Да: выставляет счёт в чате через Kaspi, деньги идут тебе напрямую. → Приём оплат

А можно, чтобы вы настроили за меня?
Да, это отдельная разовая услуга, цена идёт ступенями: стартовые $50 за всю настройку держатся до 16.10.2026, с 17.10.2026 настройка стоит $75, и это предложение действует до 31.12.2026. Мы расспрашиваем про бизнес, пишем боту инструкцию, подключаем канал, загружаем прайс и частые вопросы, проверяем на живых диалогах. Дальше ты меняешь что угодно сам. Подписка на платформу оплачивается отдельно, $25 в месяц. Написать: WhatsApp или Telegram.


Команда и данные

Как дать доступ сотруднику?
Пригласи по email в «Участниках», выбери роль. Пополнять баланс и платить за подписку может и администратор, а касса, передача и удаление проекта только у владельца. → Роли и права

Безопасны ли данные / ключи?
Токены и ключи хранятся в зашифрованном виде, в логах секреты маскируются. → Логи событий

Подключается ли моя CRM / Google?
Да: Bitrix24, amoCRM (Kommo), АльфаCRM, iiko, Google Таблицы и Календарь, МойСклад, а любую систему с API можно подключить своей функцией. Google подключается без пароля, через «Поделиться». → Что можно подключить


Как связаться с поддержкой

  • Telegram: @dosaitech, рабочий аккаунт поддержки и сотрудничества.
  • WhatsApp: +7 705 205 1992.
  • Помощник DOS AI отвечает на вопросы о платформе круглосуточно: чат на главной странице сайта, Telegram-бот @dosaitech_bot, директ Instagram @dosai.pro. Если пишешь с номера, на который зарегистрирован аккаунт, помощник видит состояние твоих проектов и подскажет по ним.
  • Из кабинета: раздел «Поддержка» в меню помощи в шапке: обращение с вложениями, история ответов там же.

Напиши с ID проекта и описанием проблемы (а лучше: скриншотом). Если бот ведёт себя странно в конкретном диалоге, укажи, в каком. Что изменилось в платформе за последнее время, смотри на странице «Что нового» (ссылка в том же меню помощи).


Простыми словами

Это шпаргалка на «быстро спросил, быстро узнал». Если коротко по главному: попробовать можно бесплатно и без карты; бот работает в WhatsApp, Instagram и Telegram сразу; если он молчит, почти всегда дело в деньгах, выключателе или канале, а не в поломке; платишь по факту за сообщения; а доступ сотрудникам даёшь с разными правами, оставляя деньги под собой. На каждый вопрос есть ссылка на подробную статью, если нужно копнуть глубже, иди по ней. А если ответа тут нет, пиши в саппорт с ID проекта, разберёмся.


Дальше: → Что такое DOS AI
Связано: Бот не отвечает · Биллинг · Роли · Антибан

Документация › Решение проблем › Лиды из рекламы с задержкой

Лиды из рекламы приходят с задержкой

Клиент написал из рекламы Instagram/Facebook, на телефоне сообщение есть сразу, а боту прилетает через несколько часов (или ИИ на него не отвечает). Это не поломка бота и не ваша вина: так устроена доставка WhatsApp на «второе устройство». Эта статья: почему так и как свести задержку к минимуму за 10 минут настройки телефона.

⏱ 6 мин · 👤 для владельца и оператора · 🟢 live

За 30 секунд:
  1. Бот подключён к WhatsApp через QR-код это телефон главный, платформа «второе устройство».
  2. WhatsApp не всегда сразу отдаёт рекламные сообщения на второе устройство: они ждут на телефоне.
  3. Сильнее всего задержка ночью, когда телефон «спит».
  4. Лечится телефоном: держать его онлайн, не выгружать WhatsApp, отключить экономию батареи.
  5. Платформа уже страхует: предупреждает «канал молчит» и метит такие чаты «✋ Ответьте вручную».

Почему так происходит

Бот подключается к WhatsApp сканированием QR-кода: ровно как WhatsApp Web на компьютере. В этой схеме:

  • Главное устройство: телефон. Все сообщения сначала приходят на него.
  • Платформа: «связанное устройство». Она получает сообщения через телефон, который их «раздаёт».

Для обычных сообщений раздача мгновенная. Но первое сообщение из рекламы (Click-to-WhatsApp, когда человек кликнул объявление в Instagram/Facebook), особый случай: WhatsApp нередко держит его на телефоне и не передаёт на связанное устройство сразу. Бот его просто ещё не видит.

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

Это ограничение самого WhatsApp для рекламных диалогов, а не бага платформы. Ни мы, ни провайдер канала не можем заставить WhatsApp отдать сообщение, которое он держит на телефоне.

Как свести задержку к минимуму (сделайте это с телефоном канала)

Телефон, на котором отсканирован QR канала, должен быть всегда активен. Чек-лист:

  1. Телефон онлайн 24/7: на зарядке (особенно ночью), стабильный Wi-Fi или мобильный интернет.
  2. Не закрывайте приложение WhatsApp свайпом. Пусть висит в фоне.
  3. Отключите экономию батареи для WhatsApp:
  4. Android: Настройки → Приложения → WhatsApp → Батарея → «Без ограничений».
  5. iPhone: не убивайте приложение из шторки; ночью выключите «Режим энергосбережения».
  6. Уберите лишние связанные устройства. В телефоне: WhatsApp → Связанные устройства (на iPhone в «Настройках», на Android в меню ⋮) → выйдите из всех лишних сессий WhatsApp Web/Desktop. Оставьте только связку с платформой. Чем меньше связанных устройств, тем стабильнее синхронизация.
  7. Идеал, отдельный телефон под канал: всегда на зарядке, со стабильным интернетом, без посторонних приложений.

После этого бóльшая часть задержек уходит, рекламные лиды начинают доходить за минуты, а не часы.

⚠️ Это сильно лучше, но не 100% гарантия: само ограничение WhatsApp иногда задерживает первое рекламное сообщение даже при онлайн-телефоне. Полностью убрать задержку можно только переходом на официальный WhatsApp Business API: обсуждается отдельно.

Что платформа уже делает за вас

Чтобы лид не потерялся, пока вы настраиваете телефон:

  • Предупреждение «канал онлайн, но молчит». Если входящие перестали приходить, владелец получает уведомление в Telegram/почту, сигнал зайти и проверить телефон. Подробнее: канал отвалился.
  • Метка «✋ Ответьте вручную». Лид, который приехал с задержкой и которого бот не подхватил, помечается в разделе Диалоги: оператор сразу видит, кому ответить руками.

Так даже задержанный лид не теряется молча: вы либо отвечаете вручную, либо он доходит до бота, когда телефон синхронизируется.


Связанные статьи

Документация › Справочники › Каталог функций

Каталог встроенных функций

Готовые инструменты бота в том порядке и с теми названиями, что в окне «Новая функция → Из готового шаблона». Как функции работают и настраиваются в гайде по функциям; здесь справочная таблица «что есть».

⏱ 8 мин · 👤 справочник · 🟢 live


Как читать таблицы

  • Название это то, что вы видите в каталоге и в списке «Функции»: с 12 октября 2026 функции показаны строками с человеческими именами, подробности открываются по нажатию на строку.
  • Техническое имя (snake_case) видит модель, оно же встречается в журнале вызовов, в тест-чате в панели «Действия бота» и в логах. В промпте функцию можно звать и по нему: «когда клиент подтвердил время, вызови calendar_create_event».
  • Восемь групп и 26 шаблонов. Ещё два шаблона скрыты и в окно не попадают, о них в конце.
  • У каждого шаблона уже заданы параметры, которые бот собирает у клиента, и поля настройки, которые заполняете вы один раз (ссылка на таблицу, календарь, токен). Модель поля настройки не видит.

Уведомления владельцу (3)

НазваниеТехническое имяЧто делает
Уведомление в Telegramtelegram_sendсообщение вам или в группу менеджеров через вашего бота-вестника: заявка, вопрос, жалоба
Уведомление на почтуemail_notifyто же письмом на ваш адрес
Уведомление в WhatsAppwhatsapp_notifyто же на ваш номер или в рабочую группу WhatsApp через подключённый канал проекта

У каждой есть галочки «Завершать диалог после выполнения», «Останавливать дожимы» и «Это заявка: создать лида и сделку в CRM». Как их ставить: Уведомления владельцу.

Запись на время (6)

НазваниеТехническое имяЧто делает
Свободные окошки для записиbooking_find_free_slotsдвижок окошек: свободные слоты из графика специалистов в Google-таблице с учётом возраста, перерывов и занятости в CRM учебного центра
Проверить свободное времяcalendar_check_slotsсвободные слоты в Google Календаре на дату; с длительностью услуги сам считает, куда она помещается
Записать клиентаcalendar_create_eventсоздаёт событие в календаре: время, имя, телефон, повод; может отправить клиенту приглашение на почту
Перенести или изменить записьcalendar_update_eventновое время, название, место у существующей записи
Показать записиcalendar_list_eventsближайшие записи клиента
Отменить записьcalendar_delete_eventудаляет событие из календаря

→ Запись на время · Google Календарь. Запись из любой из них попадает в раздел «Записи», и клиенту уходят подтверждение и напоминания.

Ресторан: iiko (4)

НазваниеТехническое имяЧто делает
Свободны ли комнаты и столыiiko_check_availabilityзанятость по броням кассы на дату, время и число гостей; комнаты, общий зал или всё
Бронь в iikoiiko_create_reservationставит бронь прямо на кассу ресторана: имя, телефон, повод, предзаказ, пожелания
Брони гостяiiko_find_reservationнаходит брони этого гостя по номеру диалога
Стоп-лист iikoiiko_stop_listчто сейчас нельзя заказать: весь стоп-лист или по названным блюдам

→ iiko для ресторанов. Эти четыре добавляются и кнопкой в окне интеграции iiko.

Google Таблицы (6)

НазваниеТехническое имяЧто делает
Узнать структуру таблицыsheet_infoлисты, заголовки, размеры: бот зовёт её первой, чтобы понять таблицу
Прочитать таблицуsheet_readстроки с лимитом и пропуском, умеет скрывать прошедшие даты в расписаниях
Найти в таблицеsheet_findстроку по значению в колонке
Добавить строкуsheet_add_rowзаявка, заказ, запись в конец листа
Обновить запись в таблицеsheet_update_rowменяет найденную строку; есть защита «обновить, только если ячейка всё ещё пуста» (два клиента не займут одно время)
Удалить строкуsheet_delete_rowудаляет строку

→ Google Таблицы

Приём оплаты (Kaspi) (1)

НазваниеТехническое имяЧто делает
Выставить счёт на оплатуowner_payment_invoiceсчёт в Kaspi прямо в чат: сумма и назначение из разговора; о поступлении денег бот узнаёт сам и продолжает разговор

→ Бот выставляет счёт · Приём оплат. Нужна подключённая касса.

Поведение бота (4)

НазваниеТехническое имяЧто делает
Помечать лида тегамиlead_set_tagsдобавляет лиду теги из словаря проекта (до 20), новые создаёт, только если разрешено
Отложить дожимыfollowups_pause«напишу в четверг»: напоминания ждут до даты, бот в чате остаётся включённым
Отключить дожимыfollowups_stop«не напоминайте»: напоминаний больше нет, бот продолжает отвечать
Остановить диалогstop_dialog«не пишите мне»: бот выключается в этом чате до ручного включения

Эти четыре стоят у каждого нового проекта с рождения и включены. С 14 октября 2026 их описания понимают клиента на русском, казахском и английском: «кейін жазамын» и «I'll text you later» ставят паузу так же, как «напишу позже».

Фото и видео (1)

НазваниеТехническое имяЧто делает
Отправить медиа из библиотекиsend_mediaфайл из медиатеки по ярлыку: видео работ, прайс, отзыв; не чаще трёх в минуту в один диалог

Письмо клиенту (1)

НазваниеТехническое имяЧто делает
Отправить письмо клиентуemail_send_customerписьмо на адрес, который назвал клиент, с нашего проверенного домена; одинаковое письмо на один адрес не чаще раза в минуту, до 5 писем на один адрес в час и до 60 писем на проект в сутки

→ Письмо клиенту


Что добавляется не из каталога

  • CRM (Bitrix24, amoCRM, АльфаCRM): подключили на странице «Интеграции», и бот получил их инструменты сам: создать сделку, добавить комментарий, записать на занятие. В каталоге их нет намеренно. → CRM
  • Своя интеграция по API: путь «Новая функция → Своя интеграция по API» (тип действия webhook). Адрес, метод, тело, авторизация, маппинг ответа и повторы. → Своя интеграция по API, пример на живом сервисе: МойСклад.

ℹ️ Два скрытых шаблона. Они помечены hidden в коде и в окно «Новая функция» не попадают: gmail_send («Отправить с Gmail (Workspace)»: письмо с рабочего Gmail, требует Google Workspace с техническим доступом для сервисного аккаунта; всем остальным подходит «Отправить письмо клиенту») и sheets_book_grid_slot (бронь ячейки расписания по подписям, оставлена ради одной живой функции у давнего проекта). Нужен первый, напишите нам: он рабочий, просто требует настройки на стороне вашего Google Workspace.

Про старые функции Sheets

Старые обёртки sheets_* (с «s»: sheets_get_structure, sheets_read_grid и т.п.) убраны из каталога: в новых проектах используйте современные sheet_* (без «s»), они покрывают всё то же. Несколько старых функций ещё работают у давних проектов для обратной совместимости, но новым их не создать.


Простыми словами

Это список «что бот умеет делать руками», с теми же названиями, что в кабинете: записать в таблицу, поставить встречу в календарь, найти свободное окошко, забронировать стол в ресторане, отправить письмо или сообщение вам, навесить тег на клиента, выставить счёт, поставить напоминания на паузу, показать видео из библиотеки. Всё разбито по темам, как в окне «Новая функция». Как их включать и настраивать, в гайде по функциям, а тут, чтобы быстро глянуть, что вообще есть и как это называется.


Дальше: → Справочник настроек
Связано: Функции (гайд) · Google Таблицы · Статусы и типы

Документация › Справочники › Справочник настроек

Справочник настроек (agent_config)

Полная таблица настроек бота со значениями по умолчанию. Объяснения и сценарии в Продвинутых настройках; здесь, справочник «всё в одном месте».

⏱ 9 мин · 👤 справочник · 🟢 live


Основное

НастройкаУмолчаниеЧто делает
bot_activetrueглавный выключатель бота
default_chat_activetrueновые чаты с включённым ИИ
temperature0.5«температура» модели (0-2): ниже = предсказуемее; принимают только модели семейства GPT-4.1
frequency_penalty0.0штраф за повторы (только GPT-4.1)
presence_penalty0.0штраф за «топтание на месте» (только GPT-4.1)
reasoning_effortпусто (у нового проекта medium)глубина размышления: none / low / medium / high; пусто значит «как решает платформа»
max_messages_per_conversation (поле проекта, не agent_config)200«Макс. ответов бота на диалог»: дошёл до потолка, диалог передаётся вам с пометкой «ответьте руками» и уведомлением dialog_too_long

Разбивка ответа

НастройкаУмолчаниеЧто делает
split_messagestrueразбивать ответ на части
split_delay_seconds4пауза между частями
split_threshold300с какой длины разбивать (символы)
split_max_length500макс. длина части
split_max_parts3макс. число частей

Буферизация

НастройкаУмолчаниеЧто делает
buffer_delay_seconds1ждать новых сообщений перед ответом
buffer_delay_media_seconds5доп. ожидание для медиа

Перехват оператором

НастройкаУмолчаниеЧто делает
pause_on_operatortrueпауза ИИ, когда пишет оператор
ignore_first_operator_messagefalseне паузить на первом сообщении оператора
exception_phrases[]фразы-исключения (пауза не ставится)
auto_resume_enabledfalseчерез заданный срок бот снова отвечает клиенту, как только тот напишет; первым не пишет никогда
auto_resume_days / _hours / _minutes0/0/3срок: от последнего сообщения оператора, а если бот замолчал сам (потолок ответов, защита, очистка диалога), от момента паузы

Рабочие часы

НастройкаУмолчаниеЧто делает
schedule_enabledfalseвключить расписание
scheduleПн-Пт 09-20, Сб 09-18, Вс выклграфик по дням
timezoneпояс браузера при создании проекта (иначе Asia/Almaty)часовой пояс проекта. Задаётся на вкладке Общие настройки → Основное и действует на весь проект: время у сообщений, «сегодня» в фильтрах и графиках, отчёты, расписание бота и дожимы
offline_messageдежурный текставтоответ вне часов

Память диалога

НастройкаУмолчаниеЧто делает
history_message_limit30сколько сообщений «помнит»; в диалоге, где писал оператор, до 200
history_time_limit2_weeksза какой период история

Защита от спама

НастройкаУмолчаниеЧто делает
spam_protection_enabledfalseвключить лимиты
spam_message_limit5сообщений за окно
spam_duration_seconds60длина окна
spam_daily_limit100сообщений в день от одного
spam_repeat_threshold3сколько одинаковых сообщений подряд считать спамом
spam_response_message«Пожалуйста, подождите, я обрабатываю ваш запрос.»ответ при срабатывании
spam_auto_blocktrueавто-блок при нарушении

Распознавание медиа

НастройкаУмолчаниеЧто делает
recognize_audiotrueрасшифровывать голосовые
recognize_imagestrue«видеть» картинки
recognize_pdftrueчитать PDF
recognize_documentstrueчитать документы
read_linkstrue«Читать ссылки из сообщений»: бот открывает до двух ссылок из сообщения клиента (сайт, Instagram, объявление), читает заголовок, описание и начало текста и отвечает по сути, а не гадает по адресу. Не дольше 8 секунд на ссылку, закрытые и внутренние адреса не открываются; не открылось, бот знает причину и не выдумывает содержимое

Дожимы

НастройкаУмолчаниеЧто делает
followup_enabledfalseвключить дожимы
followup_touches_count3число касаний
followup_interval_hours24интервал между касаниями
followup_max_silence_hours72стоп при молчании дольше
followup_reset_on_replytrueсброс счётчика при ответе клиента
followup_send_weekendsfalseслать в выходные
followup_max_silence_mark_lostfalseпометить лида «потерян» по истечении followup_max_silence_hours
followup_model(наследует)модель для дожимов

Видимость данных клиента боту

НастройкаУмолчаниеЧто делает
nickname_visibilitytrueбот видит имя из профиля мессенджера
number_visibilityfalseбот видит номер телефона клиента
messenger_visibilityfalseбот знает, из какого мессенджера пришёл клиент

Кому бот отвечает

НастройкаУмолчаниеЧто делает
default_chat_activetrueв новых чатах ИИ сразу включён
engage_modeallкому отвечает бот (карточка на вкладке «Промпт»): all = только новым обращениям, existing_too = плюс контактам, которые писали на номер до подключения, ad_gated = только лидам с рекламы (Click-to-WhatsApp или «Написать в Instagram Direct»); действует в WhatsApp и Instagram, Telegram отвечает всем
engage_ad_ids[]пусто = любая реклама; список = только эти объявления. Лид с объявления не из списка получает паузу ad_not_allowlisted
instagram_engage_modeпустосвой режим «Кому отвечает бот» для Instagram (те же значения all / existing_too / ad_gated); пусто значит как у engage_mode. С 09.10.2026: в WhatsApp бот может отвечать всем, а в Instagram только лидам с рекламы, или наоборот
respond_in_groupsfalseотвечать в групповых чатах
respond_to_missed_callstrueесли клиент позвонил в WhatsApp и трубку никто не взял, через полторы минуты ему уходит одно сообщение «Здравствуйте! Сейчас не можем принять ваш звонок. Напишите, пожалуйста, сюда, мы ответим». Если звонок приняли или в чате уже написали, сообщение не уходит; перезванивающему клиенту оно приходит раз в 2 часа. Это готовый текст, ИИ его не пишет и баланс он не тратит
pause_ai_after_answered_calltrueсостоявшийся звонок выключает бота на этом чате: дальше клиента ведёт человек. Клиент позвонил и вы взяли трубку: сразу. Звонили вы сами: когда WhatsApp пришлёт запись о звонке, обычно через несколько минут; звонок старше двух часов бота уже не выключает. Пропущенный звонок бота не выключает. Чтобы бот замолчал сразу после своего звонка, напишите что-нибудь в этот чат либо снимите тумблер AI в шапке диалога. Включить обратно, тем же тумблером
inline_buttons_enabledfalseразрешить боту кнопки под ответом (Telegram)
quote_client_messagetrueпервый пузырь ответа привязан к сообщению клиента, как «Ответить» в WhatsApp (у пачки цитируется последнее, у голосового/фото само голосовое/фото; в Telegram так же)
highlight_key_factstrue«Выделять главное»: жирный для цены, даты и времени, адреса (если модель не выделила, ставит платформа), курсив для короткой ремарки и нумерованные шаги (WhatsApp и Telegram рисуют жирный, Instagram нет). Переносы строк между мыслями бот пишет всегда, без этой настройки
collect_variables[]поля анкеты, которые бот собирает по ходу разговора

Что получает новый проект

Таблицы выше показывают умолчание платформы, то есть то, что действует у проекта, где настройку никто не менял. С 14 сентября 2026 новый проект создаётся уже настроенным, и при создании ему записываются вот эти значения:

НастройкаУ нового проектаЗачем
buffer_delay_seconds7люди пишут очередью коротких сообщений, бот отвечает на всю пачку. Одиночное сообщение отвечается быстрее, 7 секунд это тишина после второго сообщения подряд
buffer_delay_media_seconds7то же для фото, голосовых и файлов
engage_modeexisting_tooбот отвечает всем, кто напишет, включая контакты, которые были в телефоне до подключения
spam_protection_enabledtrueзащита включена
spam_message_limit / spam_duration_seconds30 / 60порог под флуд, а не под живого человека
spam_daily_limit300сообщений в сутки от одного клиента
spam_repeat_threshold5одинаковых сообщений подряд
spam_auto_blockfalseсработавшая защита пропускает ответ, а не выключает бота на диалоге
history_time_limitno_limitклиент, вернувшийся через месяц, продолжает разговор
reasoning_effortmediumглубина размышления модели

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

Дожимы: расписание отправки

НастройкаУмолчаниеЧто делает
followup_schedule_enabledfalseограничить дожимы часами
followup_schedule_start / _end00:00 / 23:59окно отправки дожимов
followup_disabled_days[]дни недели без дожимов
followup_system_promptпустоотдельная инструкция боту для дожимов
auto_enroll_statusпустоавто-подписка на дожимы при этом статусе лида

⚠️ Настроек записи на приём в agent_config нет. Ключи calendar_* остались в схеме как наследство и ничего не делают (убраны из работы 2026-06-13). Длительность приёма, горизонт записи, рабочие часы и минимальное предупреждение задаются внутри самой функции записи (её конфиг: slot_duration 60 мин, days_ahead 7, working_hours_start / working_hours_end, working_days, min_notice_minutes 60, break_minutes). См. Google Календарь и Запись на приём.

Простыми словами

Это полная «панель приборов» бота: все тумблеры и ручки в одной таблице со значениями по умолчанию. Большинство уже выставлено по уму, трогать не обязательно. Сюда удобно заглянуть, когда хочешь точно понять, как называется настройка и какое у неё значение из коробки. Одно исключение стоит запомнить: настройки записи на приём живут не здесь, а внутри самой функции записи. Что каждая делает по-человечески и когда её крутить в статье Продвинутые настройки.


Дальше: → Коды ошибок и состояния
Связано: Продвинутые настройки · Лимиты и квоты

Документация › Справочники › Коды ошибок

Коды ошибок и состояния

Справочник кодов и состояний, которые встречаются в системе: почему бот не отвечает, какие ошибки отдаёт API, что значат состояния канала. Диагностика по шагам: в Бот не отвечает.

⏱ 7 мин · 👤 справочник · 🟢 live


Доступ к ответу бота (eligibility)

Почему бот может не отвечать (проверка перед ответом):

КодHTTPЗначение
PROJECT_NOT_ACTIVE403проект в черновике
ACCOUNT_BANNED403аккаунт заблокирован
INSUFFICIENT_BALANCE402пустой баланс
NO_SUBSCRIPTION402нет подписки
SUBSCRIPTION_EXPIRED402подписка истекла
WHATSAPP_TRIAL_EXPIRED402бесплатный период WhatsApp кончился (14 дней с подключения номера, 30 с промокодом партнёра)
SUBSCRIPTION_NO_EXPIRY402подписка есть, но у неё нет даты окончания (расходится журнал, чинится на нашей стороне)
TRIAL_EXPIRED_PAYMENT_REQUIRED402попытка подключить или переподключить номер после бесплатного периода без подписки
CHANNEL_BANNED409WhatsApp ограничил этот номер: ссылка для подключения его не поднимает, а отправить с него из Диалогов нельзя; нужен другой номер (кнопка «Подключить другой номер» в Каналах)
PREVIOUS_NUMBER409номер проекта сменили, а этот человек писал на прежний и новый не знает; первым писать ему с нового номера нельзя, отправка откроется, когда он напишет сам
PREVIOUS_NUMBER_CHECK_FAILED503не удалось проверить, писал ли человек на прежний номер; попробуйте через минуту
GATEWAY_UNAVAILABLE503Не удалось отвязать ограниченный номер на сервере WhatsApp; попробуйте через минуту, новый номер подключается только после отвязки старого
PROJECT_NOT_FOUND404проект не найден
AUTH_TEMPORARILY_UNAVAILABLE503вход на месте, но сервер проверки сессии не ответил вовремя; повторите запрос через пару секунд, выходить и входить заново не нужно

→ Бот не отвечает, диагностика

Причины автопаузы ИИ (ai_off_reason)

Бот молчит в диалоге намеренно. Важно: бот никогда не решает остановиться сам, пауза всегда ставится либо функцией, либо оператором, либо классификацией «это не новый лид», либо технической/защитной причиной. В колонке «снимается», сама ли уйдёт пауза или только ручным тумблером AI в шапке диалога.

ПричинаЗначениеСнимается
lead_handoffфункция с галкой «Завершать диалог после выполнения» успешно отработала (передача заявки специалисту)вручную
client_stopклиент попросил не писать, функция stop_dialogвручную
operator_joined_chatоператор написал в идущий AI-диалог (из кабинета или со своего телефона, причина одна)вручную, либо сам на следующем сообщении клиента, если включено автовозобновление
chat_started_by_operatorдиалог начат вручную (оператор написал первым)вручную
operator_manual_offоператор вручную выключил ИИ в диалогевручную
pre_existing_dialogпереписка старше подключения бота (исторический чат)вручную
backlog_offlineсообщение пришло в момент переподключениявручную
ad_gatedрежим «только реклама»: лид не с рекламы, диалог ведёт операторвручную
ad_not_allowlistedлид с рекламы, но этого объявления нет в списке разрешённых (engage_ad_ids); добавьте объявление в настройках «Кому отвечает бот», и бот начнёт отвечать таким лидамвручную, либо добавлением объявления в список
call_answeredсостоялся звонок в WhatsApp (настройка «Выключать ИИ после состоявшегося звонка», включена по умолчанию): дальше клиента ведёт человеквручную
default_chat_inactiveнастройка «новые чаты с выключенным ИИ» (default_chat_active = false)вручную
guards_violationсработала защита (спам / лимит / баланс)вручную
max_messages_reachedбот дошёл до потолка своих ответов в этом диалоге (настройка «Макс. ответов бота на диалог», по умолчанию 200) и передал диалог вам: клиенту написано, что подключится менеджер, на диалоге стоит метка «ответьте руками», вам ушло уведомление dialog_too_longвручную: ответьте сами или включите бота в шапке диалога
conversation_clearedистория диалога очищена операторомвручную
connect_warmupпрогрев номера ~15 мин после подключения канала (защита от блокировки)сама через ~15 мин
undecrypted_placeholderпервое сообщение лида не удалось расшифроватьсама на следующем читаемом сообщении
subscription_expiredподписка неактивна: ответ клиенту не отправлен, само сообщение сохранено в диалогесама после продления, на следующем сообщении клиента
insufficient_balanceбаланс исчерпан: ответ не отправлен, сообщение сохраненосама после пополнения: на сообщения последнего часа бот ответит сам в течение пары минут, на более старые на следующем сообщении клиента
project_pausedпроект поставлен на паузу: бот не отвечает, входящие сохраняютсясама после снятия с паузы, на следующем сообщении клиента
ℹ️ pipeline_stage_done («диалог дошёл до финальной стадии воронки»), больше не используется (2026-07-21). Бот раньше сам замолкал после воронки, теперь этого нет. Причина может встречаться только в старых, ранее закрытых диалогах.
🔁 Авто-возобновление диалога (настройка проекта, по умолчанию выключена). Если включить, через заданный срок бот снова отвечает клиенту, как только тот напишет. Первым он не пишет никогда: ни приветствия, ни «я снова на связи» (поле «Сообщение при возобновлении» снято 27.09.2026). Паузу оператора (operator_joined_chat и старые паузы без причины) снимает сообщение клиента после того, как оператор замолчал на этот срок. Технические паузы max_messages_reached, guards_violation, conversation_cleared снимает таймер: бот просто включается и ждёт клиента. Никогда не перебивает операторские паузы (operator_*), стоп клиента (client_stop), передачу специалисту (lead_handoff), классификацию (pre_existing_dialog, ad_gated, default_chat_inactive), прогрев/расшифровку и биллинг-паузы (subscription_expired, insufficient_balance, project_paused, те снимаются сами после оплаты/снятия с паузы), если человек или правило намеренно убрали бота из чата, авто-возобновление его туда не вернёт.

Состояния канала (WhatsApp)

Статус в кабинетеТипЗначение
Подключён (номер)-в эфире
Поднимаем подключение... / QR на экране-ждём скан, QR живёт около минуты
Переподключаемся...мягкоекороткий обрыв, восстановится само
Сессия разлогинена, привяжите зановожёсткоеустройство отвязано → новый QR
Номер заблокирован WhatsApp, отправки остановленыжёсткоебан номера
Ошибка подключенияобычно мягкоесбой на шлюзе, повтори подключение
Не подключён-канал не привязан

→ Канал отвалился / WhatsApp забанили

Ошибки API

Единый формат ответа: { "error": "текст", "code": "КОД" }.

HTTPcodeКогда
400INVALID_INPUT / INVALID_UUIDневерные/неполные данные
401UNAUTHORIZEDнет/невалидны учётные данные
403FORBIDDENнет прав (роль)
404NOT_FOUNDобъект не найден
409CONFLICTконфликт (напр. параллельное изменение)
429RATE_LIMITEDпревышен лимит (см. Retry-After)
500INTERNAL_ERRORнеобработанная ошибка (полный текст в логах и Sentry, наружу только общий)
500DATABASE_ERRORсбой запроса к базе
402INSUFFICIENT_BALANCE«Составить за меня»: на балансе проекта меньше $0.30
502COMPOSE_FAILED / PREFILL_FAILED«Составить за меня»: ИИ не собрал промпт или не разобрал текущий; деньги не списаны, попробуй ещё раз
500SAVE_FAILED«Составить за меня»: промпт собран, но не сохранился; повтори
400KASPI_CLIENT_NOT_FOUNDоплата через Kaspi: на указанном номере нет приложения Kaspi, счёт не выставлен; укажите номер, где Kaspi установлен
503PROVIDER_UNAVAILABLEоплата через Kaspi сейчас недоступна; попробуйте через несколько минут или оплатите картой

→ Формат данных

Ошибки функций

Когда функция падает, она возвращает модели { error, error_code }, и бот реагирует:

Пример error_codeЗначение
missing_paramsне хватает обязательного параметра
invalid_paramsзначение вне допустимого
sub_merchant_not_connectedприём оплаты не настроен
kaspi_auth_lostпотеряна авторизация Kaspi
kaspi_client_not_foundна номере клиента нет Kaspi: бот просит номер, к которому Kaspi привязан
payment_service_4xx / payment_service_5xx / payment_service_networkошибка платёжного сервиса

→ Функция не вызывается / падает


Простыми словами

Это «расшифровщик»: справочник всех технических кодов, которые могут попасться. Бот молчит и где-то мелькнул WHATSAPP_TRIAL_EXPIRED? Значит, кончился бесплатный период. Видишь у канала «Сессия разлогинена»? Устройство отвязано, надо отсканировать QR заново. Прилетел от API FORBIDDEN? Не хватает прав по роли. Тут не нужно ничего настраивать, просто находишь свой код и понимаешь, что он значит и куда дальше смотреть.


Дальше: → Стадии, статусы, типы
Связано: Бот не отвечает · Канал отвалился · Формат данных

Документация › Справочники › Стадии и статусы

Стадии, статусы лида, типы клиента

Все «словари» кабинета в одном месте: стадии воронки, статусы лида, статусы подписчика дожимов, рассылки, исходящего контакта и заявки со страницы записи. Что это значит на практике: в Лидах и Стадиях.

⏱ 5 мин · 👤 справочник · 🟢 live


ℹ️ Значения ниже, стандартный набор, платформа работает с ним «из коробки». Замена набора своим (кастомная воронка) временно недоступна: редактор убран из настроек, вернётся в упрощённом виде.

Стадии воронки (по умолчанию 6)

КодМетка
greetingПриветствие
qualificationКвалификация
presentationПрезентация
objectionВозражения
closingЗакрытие
doneЗавершено

→ Стадии диалога

Статусы лида (по умолчанию 7)

КодМеткаСоздаёт лид
noneБез статуса-
potentialПотенциальный-
qualifiedКвалифицированный✅
hotГорячий✅
convertedСделка закрытаитог
reserveРезерв✅
lostПотерянитог

→ Лиды и их статусы

Сегментация клиента: теги

Отдельного фиксированного поля «тип клиента» больше нет (удалено 2026-06-13). Категория клиента (опт / розница / кафе и т.п.) теперь выражается обычными тегами: их бот ставит сам или оператор вручную, с описаниями.

→ Теги и сегментация

Статусы подписчика дожимов (5)

КодЗначение
activeактивен (получает дожимы)
pausedна паузе
completedпрошёл все касания
cancelledотменён
opted_outотписался

→ Дожимы

Статусы рассылки (7)

КодЗначение
draftчерновик
scheduledзапланирована: ждёт назначенного времени
queuedв очереди на отправку
sendingотправляется (постепенно, бережно к лимитам)
sentотправлена
failedне удалась
canceledотменена вами до или во время отправки

→ Рассылки

Статусы контакта в исходящих (8)

КодМеткаЗначение
newНовыйдобавлен в список, очередь до него не дошла
queuedВ очередистоит в очереди кампании
openingОткрываетсяплатформа открывает диалог с этим номером
openedОтправленопервое сообщение ушло, ждём ответа
repliedОтветилчеловек ответил, дальше ведёт бот
skippedПропущенне отправлено, рядом причина: нет в WhatsApp, это ваш номер, уже есть диалог, в стоп-листе, нет согласия, заявка устарела
failedОшибкаотправка не удалась
expiredУстарелпростоял в очереди дольше 7 дней и снят автоматически: по протухшей базе бот не пишет

→ Исходящие

Статусы заявки на странице записи (7)

Заявка с публичной страницы записи /b/<адрес>, где клиент выбирает услугу, день и время сам.

КодЗначение
pending_paymentвремя придержано за клиентом (35 минут с предоплатой, 5 минут без неё), ждём оплату счёта в Kaspi
confirmingоплата пришла, платформа ставит запись в календарь
confirmedзапись подтверждена, клиенту ушло подтверждение
expiredпредоплата не поступила, пока время держалось; поздняя оплата всё равно принимается и переводит заявку в confirming
cancelledотменена
failedсчёт на предоплату не удалось выставить (например, на номере нет Kaspi); денег с клиента не брали
conflictвремя успели занять, пока клиент платил, или запись не встала в календарь: вам приходит «Запись не встала в календарь», предоплата у вас, с клиентом связываетесь сами

У самой записи в разделе «Записи» напоминания живут со статусами scheduled (запланировано) и cancelled (отменено).

→ Записи и напоминания · Запись на время


Простыми словами

Это все «выпадающие списки» CRM, собранные вместе. У диалога есть стадия: на каком этапе разговор (от «приветствия» до «завершено»). У лида: статус (от «потенциального» до «горячего» или «потерянного»). Категорию клиента (розница, опт, кафе) отдельным полем больше не хранят, для этого теги. А у подписчика дожимов, свой статус (активен/на паузе/отписался). Бот заполняет всё это сам по ходу общения; тебе тут, чтобы свериться, какие вообще бывают значения.


Дальше: → Лимиты и квоты
Связано: Лиды · Стадии · Теги · Дожимы

Документация › Справочники › Лимиты и квоты

Лимиты и квоты

Все числовые ограничения платформы в одной таблице: проекты, участники, медиа, база знаний, триал, деньги, функции.

⏱ 5 мин · 👤 справочник · 🟢 live


Проект и команда

ЛимитЗначение
Проектов на аккаунт50
Участников на проект20
API-ключей на аккаунт50
Запросов по API-ключу120 в минуту (плюс свой лимит у каждого эндпоинта)
Запросов к каналу и ручных отправок30 в минуту на аккаунт
Действий ИИ-агента через MCPпримерно 60 в минуту (один вызов инструмента = два запроса)

Контент бота

ЛимитЗначение
«Составить за меня» (конструктор промпта)$0.30 за сборку с баланса проекта, 5 в час, 20 в сутки на проект
Медиа-файлов на проект60
Размер медиа-файла50 МБ (крупнее 4 МБ кабинет грузит прямо в хранилище; Telegram по ссылке принимает фото до 5 МБ, остальное до 20 МБ)
Медиа из Telegram (входящее)до 20 МБ
Тегов на лида20
Память диалога (сообщений)30 (по умолчанию); в диалоге, где писал оператор, до 200
Ответов бота на один диалог200 (настройка «Макс. ответов бота на диалог»); дошёл до потолка, диалог передаётся вам с пометкой «ответьте руками»
Ссылок из сообщения клиента, которые бот открывает2 на сообщение, не дольше 8 секунд каждая, до 3 переадресаций; закрытые и внутренние адреса не открываются
Материалов из медиатеки в один диалог3 в минуту

База знаний

ЛимитЗначение
Записей на проект100
Размер загружаемого файла (PDF/DOC)4 МБ
Текст, вставленный рукамидо 1 000 000 символов
Текст, извлечённый из файладо 500 000 символов
Текст со страницы по ссылкедо 500 000 символов на страницу, при обходе по ссылкам до 20 страниц на уровень
Контекст базы знаний в промпте8 000 символов (сколько релевантных фрагментов влезет, до 15)

→ Медиа · База знаний

Пробный период (WhatsApp и Instagram)

ЛимитЗначение
Длительность бесплатного периода14 дней (30 дней, если к проекту применён промокод)
Ограничение по числу диалоговнет (отменено 2026-08-04)
Стартовый баланс проекта$5 ($10 по промокоду)
Окно скидки на подписку14 дней с момента подключения канала
Бесплатный период на один номеродин раз
Скольким проектам аккаунта даётся бесплатный стартпервому (первым трём, если ты пришёл по чьей-то партнёрской ссылке); проект с применённым промокодом получает его в любом случае

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

→ Подключить WhatsApp · Промокоды

Деньги

ЛимитЗначение
Подписка проекта$25/мес (в тенге пересчитывается по курсу на момент счёта)
Скидка за длинный период3 мес −5%, 6 мес −10%, 12 мес −20%
Скидка в окне активации (14 дней после подключения канала)1 мес −20%, 3 мес −15%, 6 мес −25%, 12 мес −30%
Пополнение балансаготовые суммы $5 / $10 / $25 / $50 / $100 (или своя, целое число долларов от $5 до $1000)
Подарок за крупное пополнениепополнил на $100 и больше, сверху приходит $10 отдельной строкой в истории
Автопополнениепорог по умолчанию $5, цель $40, проверка раз в ~30 минут; второй автосчёт Kaspi не выставляется, пока можно оплатить предыдущий
Минимальный вывод партнёрских начислений$10
Заморозка свежих партнёрских начислений3 дня

→ Биллинг · Промокоды и партнёрская программа

Функции и запросы

ЛимитЗначение
Функций на проект40
Параметров на функциюдо 20
Таймаут функции1-60 сек (по умолчанию ~10)
Вызовов функций за один ответ15 (защита от зацикливания)
Частей в одном ответе3 по умолчанию, пауза между частями 4 секунды
Кнопок под ответом (Telegram)8
Кнопок в рассылке (Telegram)8
Версий настроек одной функцииоколо 50
Правило «исправь заявление»бот написал «выставил / передал / записал», а функцию не вызвал: один круг на исправление; не исправился, клиенту уходит нейтральный ответ, диалог помечается «ответьте руками»
Письма клиентам от ботаодинаковое письмо на один адрес не чаще раза в минуту, до 5 писем на один адрес в час, до 60 писем на проект в сутки; на письма владельцу не действует

Правила (автоматизации)

ЛимитЗначение
Правил на проект100
Действий в одном правиле3
Ключевых слов в правиле30
Вариантов точного ответа3, до 900 знаков каждый
Срабатываний на один диалог5 в час, 30 в сутки
Ответов на комментарии Instagram60 публичных и 200 в директ в час на проект
Ответов ИИ на вопросы в комментариях60 в час на проект, остальные ждут следующего часа
Ответ в директ на комментарийодно сообщение, до 1000 байт (около 500 русских букв)

→ Правила и комментарии

Отправка в WhatsApp (антибан)

Потолки живут на нашем шлюзе и считаются на подключённый номер.

ЛимитЗначение
Разных собеседников в минуту8 (ответ из нескольких частей одному человеку стоит одного слота)
Всего отправок в минуту30
Отправок в час / в сутки200 / 3000
Пауза между отправками1,5-5 сек, случайная
Одинаковый текст подряд в один чат3-й блокируется
Шаблонное служебное сообщение на диалогне чаще раза в 5 сек, и один раз на диалог в сутки
Молчание после подключения номера15 минут

→ Своя интеграция по API · Антибан


Простыми словами

Это просто шпаргалка «сколько чего можно». До скольких проектов завести, сколько человек пустить в команду, какого размера файлы грузить, сколько длится бесплатный период, почём подписка, как часто бот может дёргать функции. Заглядываешь, когда упёрся в ограничение или планируешь, например, «а влезет ли мой прайс в базу знаний» или «со скольки долларов идёт выплата партнёру».


Дальше: → Переменные и хелперы выражений
Связано: Биллинг · Медиа · Публичный API

Документация › Справочники › Выражения

Переменные и хелперы выражений

Полный справочник переменных и помощников языка выражений живёт на отдельной живой странице: она строится прямо из кода движка и всегда актуальна.

⏱ 1 мин · 👤 справочник · 🟢 live


Где смотреть

→ Живой справочник выражений: все переменные ({{client_name}}, {{phone}}, {{stage}}…), помощники дат ({{now}}, {{format_date}}…), текста ({{upper}}, {{default}}…), логики ({{#if}}, {{eq}}…) и утилиты ({{math}}, {{digits}}…) с синтаксисом и примерами.

Страница генерируется из того же кода, который исполняет выражения: список не может устареть или разойтись с реальным поведением бота.


Простыми словами

Раньше здесь была копия шпаргалки по «вставкам», но копии устаревают. Теперь один источник: открой живой справочник, там всё и всегда свежее. Как выражения работают в целом: в статье Язык выражений.


Дальше: → Типы уведомлений
Связано: Язык выражений · Системный промпт · Дожимы

Документация › Справочники › Уведомления

Типы уведомлений

Справочник: какие события платформа умеет присылать и куда. Сначала уровень конкретного бота (Настройки проекта → «Уведомления»), затем события самого аккаунта, которые настраиваются в Уведомлениях.

⏱ 4 мин · 👤 справочник · 🟢 live


Каналы доставки

КаналЧто это
Колокольчиксписок в кабинете
Emailна указанную почту
Личный Telegramчерез твоего бота-вестника
Личный WhatsAppна твой номер, через подключённый канал одного из проектов. Номер задаётся в Настройках проекта → «Уведомления» → «Номер WhatsApp»
Вебхуксвой URL для своей системы

События проекта (настраиваются в Настройках проекта → «Уведомления»)

Колонка «Всегда шлётся»: системные события приходят, даже если ты их отключил без них бот может молча встать. Настраиваемых тумблеров всего два (conversation_started, payment_received): остальное системное и доставляется всегда.

У нового проекта «Оплата получена» включена сразу, «Новый диалог» выключен: на работающем боте это десятки сообщений в день, и такую ленту перестают читать. Включить его можно в любой момент там же, в Настройках проекта → «Уведомления».

СобытиеО чёмВсегда шлётся
conversation_startedначат новый диалог-
payment_receivedклиент оплатил счёт, который выставил бот (приём оплат проекта). Твои собственные оплаты платформы сюда не относятся: о них говорят balance_topped_up и subscription_paid-
ai_errorбот не смог ответить клиенту или ответ не дошёл: клиент написал и остался без ответа. Причина временная (модель не успела или была недоступна): платформа повторит ход сама в пределах часа, а не выйдет, диалог останется с пометкой «ответьте руками»✅
function_failingфункция проекта перестала работать: за последние часы она не отработала много раз подряд. Обычно это истёкший ключ, незаполненная настройка или недоступный сервис, на который она ходит. Если причина в том, что бота убрали из чата, куда функция пишет (например, из группы менеджеров в Telegram), напоминание приходит раз в неделю, а не каждый день✅
bot_first_replyбот впервые ответил живому клиенту в этом проекте (один раз на проект)✅
first_leadпервая заявка проекта (один раз на проект; поток новых лидов шлёт функция бота, не платформа)✅
tokens_lowбаланс ниже порога (порог настраивается). В сообщении сказано, на сколько дней хватит остатка при твоём расходе за последнюю неделю✅
balance_topped_upбаланс пополнен (Kaspi, картой, вручную или автопополнением)✅
subscription_paidподписка проекта оплачена: сумма, период, способ. Одно сообщение на оплату; на почту приходит одно письмо, чек✅
auto_topupсработало автопополнение баланса✅
trial_expiringзаканчивается бесплатный период WhatsApp✅
activation_offer_expiringзакрывается окно скидки на подписку (14 дней с подключения канала)✅
subscription_expiringистекает подписка✅
«Бесплатный период закончился» / «Подписка не продлена»бот остановлен по оплате. Если подписки ещё не было: «Бесплатный период закончился. Бот приостановлен, оформите подписку, и бот продолжит с первого же сообщения». Если подписка была и не продлена: «Подписка истекла, продлите её». Напоминание повторяется раз в три дня, пока бот стоит✅
whatsapp_disconnectedWhatsApp-канал отвалился (если WhatsApp ограничил номер, письмо, Telegram и колокольчик говорят одно и то же: нужен другой номер, кнопка «Подключить другой номер» в Каналах)✅
instagram_disconnectedInstagram отключился: сменили пароль, сняли доступ в настройках Instagram или запросили удаление данных. Бот в директе молчит, пока не подключишь аккаунт заново в «Каналах»✅
instagram_window_closingтёплый клиент ждёт ответа в директе Instagram, а через несколько часов окно закроется: после этого написать ему отсюда не сможет ни бот, ни ты, только из приложения Instagram. Одно напоминание на диалог, за 3 часа до закрытия. С 08.10.2026 приходит в Telegram и на почту, а не только в колокольчик✅
channel_silentканал числится подключённым, но входящие не приходят уже давно: проверь телефон✅
platform_incidentТехнические работы на нашей стороне: бот временно не отвечает, от тебя ничего не требуется. В сообщении причина простыми словами и сколько обычно длятся такие перерывы. Короткий обрыв, который прошёл сам за пару минут, не объявляется вовсе. Так же приходит, когда ИИ-модель недоступна сразу у всех: одно сообщение на сбой вместо ai_error на каждый ход, а клиентам, которые ждут меньше часа, бот ответит сам, когда модель вернётся✅
platform_incident_resolvedРаботы завершены, бот снова отвечает✅
schedule_problemдвижок записи не смог прочитать график или спрятал специалиста✅
spam_detectedсработала защита от спама✅
dialog_too_longбот дошёл до потолка своих ответов в одном диалоге (настройка «Макс. ответов бота на диалог») и передал его вам: клиенту написано, что подключится менеджер, диалог помечен «ответьте руками». В письме ссылка на диалог✅
outreach_pausedисходящая кампания остановлена автоматически (много недоставленных)✅
lead_message_unreadableпервое сообщение лида не читается (баг WhatsApp Web)✅
owner_reportотчёт по проекту по расписанию✅
automation_notifyсработало ваше правило с действием «Сообщить мне»✅
🔗 Как выглядит уведомление в Telegram. Первая строка значок и название: 🔴 бот не может работать, 🟠 стоит посмотреть, ✅ и 🎉 хорошие новости, 💰 деньги. Ниже проект, что случилось и ссылка «👉 Открыть …» сразу на тот экран кабинета, где это чинится (баланс, каналы, диалоги, функции). Если ты задал свой шаблон текста для события, приходит он, как раньше.
🔁 Повторы не копятся в колокольчике. Если одно и то же повторяется, пока ты не прочитал прошлое уведомление (заявки не доходят из-за одной поломки, клиенты ждут оператора, отчёт не отправлен), в колокольчике остаётся одна строка с пометкой «Повторяется: N-й раз, впервые …», а не десяток одинаковых. Технические работы и «всё работает» за один день тоже одна строка.
🎉 Два сигнала про хорошие новости. bot_first_reply и first_lead приходят по одному разу на проект: первый, когда бот впервые ответил настоящему клиенту, второй, когда пришла первая заявка. Остальные уведомления сообщают о поломке, деньгах или тишине, эти два, о том, что настройка доехала до результата.
ℹ️ Новый лид больше не отдельное уведомление платформы (lead_created убран 2026-06-12): в кабинете он появляется строкой «Новый лид» в колокольчике, а в телефон о заявке сообщает функция бота (каталог «Уведомления владельцу»: в Telegram, WhatsApp или на почту), чтобы не было дубля. Настрой её в Функциях и Уведомлениях владельцу.
🔌 Эти же события уходят в вебхук. Если в разделе «Интеграции» → «Вебхуки» подписаться на payment_received, tokens_low, trial_expiring, whatsapp_disconnected, instagram_disconnected, ai_error или schedule_problem, платформа пришлёт их и на твой URL, вдобавок к почте и Telegram. Формат тела: Кастомные вебхуки.

События аккаунта (настраиваются в Уведомлениях)

Не привязаны к проекту, поэтому и живут отдельно. Подключены 2026-08-07. Контакты берутся из окна настроек аккаунта.

СобытиеО чёмКому приходит
login_new_deviceвход с браузера или устройства, которым раньше не пользовалисьвладельцу аккаунта
password_changedпароль изменён (в настройках или по ссылке восстановления)владельцу аккаунта
sessions_revokedвыход на всех или на других устройствахвладельцу аккаунта
api_key_createdсоздан API-ключвладельцу аккаунта
member_invitedкого-то пригласили или добавили в проектвладельцу проекта (кроме случая, когда он сам это и сделал)
member_joinedприглашение принятовладельцу и пригласившему, а при прямом добавлении, самому участнику
member_role_changedроль участника измененаучастнику, чья роль изменилась
member_removedдоступ к проекту закрытучастнику, который его потерял
platform_updateновости о новых возможностяхтем, кто подписался (по умолчанию выключено)
📌 Тумблеры «Безопасность» и «Команда» управляют письмами, Telegram и вебхуком, но не колокольчиком: эти события остаются в истории аккаунта в любом случае. «Обновления платформы», наоборот, подписка: выключено значит не приходит совсем. Отписаться от писем платформы можно и проще: ответить «стоп» на любое наше письмо.

Какая категория аккаунта какие события проекта подхватывает

Контакты со страницы Уведомления работают как запасные: если у проекта не заполнен канал, системное событие уходит по адресу из аккаунта. Какой тумблер аккаунта за какое событие проекта отвечает:

Категория на странице аккаунтаСобытия проекта
Оплата и балансpayment_received, tokens_low, auto_topup, balance_topped_up, subscription_paid, trial_expiring, subscription_expiring, activation_offer_expiring
Каналы связиwhatsapp_disconnected, instagram_disconnected, channel_silent
Статус проектовai_error, spam_detected, dialog_too_long, instagram_window_closing, outreach_paused, schedule_problem, lead_message_unreadable, bot_first_reply
Сводка по лидамfirst_lead
Еженедельный отчётowner_report (отчёт по расписанию проекта, любая периодичность)
Лимиты и расход · Интеграциипока без событий

События без категории (function_failing, platform_incident, platform_incident_resolved, automation_notify, conversation_started) тумблеры аккаунта не глушат: они уходят по запасному адресу всегда. Контакт, заданный в самом проекте, тумблерами аккаунта не выключается.


⚠️ Следи в первую очередь за tokens_low, whatsapp_disconnected и instagram_disconnected. Именно из-за их пропуска бот тихо перестаёт отвечать клиентам. Системные события (✅) доставляются всегда, даже при выключенных уведомлениях, но деньги и каналы всё равно держи на email/Telegram. См. Бот не отвечает.

Простыми словами

Первая табличка, сигналы про конкретный проект (бот): кончаются деньги, отвалился канал, пришёл платёж, начался новый диалог. Настраиваемых из них всего два (новый диалог / оплата прошла), остальное системное и шлётся всегда. Ты выбираешь, о чём тебя беспокоить, и куда это слать (почта, Telegram, номер WhatsApp, вебхук), в Настройках проекта → «Уведомления». Главное, не выключай уведомления про деньги и каналы: именно они предупреждают, когда бот вот-вот замолчит.

Вторая табличка, сигналы про сам аккаунт: кто-то вошёл с незнакомого устройства, сменился пароль, появился API-ключ, в проекте прибавился человек или у кого-то поменялась роль. Эти настраиваются на странице Уведомления, и там же задаются контакты. Разница одна: тумблер там управляет письмом и Telegram, а в колокольчике такие события остаются всегда, чтобы историю аккаунта нельзя было случайно стереть галочкой.


Дальше: → FAQ
Связано: Уведомления и настройки · Биллинг · Канал отвалился