DOS AI/ Документация
ОтзывыДля когоАгентствамВозможностиЦенаFAQОбучениеДокиВойтиСтарт
← Документация/Руководство
↓ Скачать целиком
Старт
  • Что такое DOS AI
  • Как бот думает
  • Быстрый старт: первый бот за 30 минут
  • Карта кабинета (навигация)
  • Глоссарий
  • Как выбрать чат-бота для WhatsApp
Проект и бот
  • Создание проекта
  • Системный промпт (характер бота)
  • JSON-ответ бота (статусы, стадии, флаги)
  • Выбор AI-модели
  • Тестовый чат
  • Продвинутые настройки бота
  • Загрузить знания о бизнесе в бота (что куда)
Каналы
  • Обзор каналов
  • Подключить WhatsApp (по QR)
  • Подключить Telegram-бота
  • Гигиена и антибан (WhatsApp)
Инструменты бота
  • Функции (инструменты бота)
  • База знаний (RAG)
  • Медиа-библиотека
  • Дожимы (follow-up)
  • Теги и сегментация
  • Уведомления владельцу (Telegram, WhatsApp и почта)
  • Запись на время (Calendar и движок окошек)
  • Бот выставляет счёт (Kaspi)
  • Письмо клиенту
  • Рассылки по базе контактов
  • Исходящие диалоги (бот пишет первым)
Работа с клиентами
  • Диалоги, лента, перехват, «AI на паузе»
  • Лиды и их статусы
  • Стадии диалога (воронка)
  • Аналитика
  • Логи событий
  • Авто-отчёты владельцу (Telegram и почта)
Интеграции
  • Обзор интеграций + сервисный аккаунт Google
  • Google Sheets
  • Google Calendar
  • Gmail
  • CRM, Bitrix24 / amoCRM / AlphaCRM
  • Вебхуки и безопасность (SSRF)
  • МойСклад: наличие и цены в ответах бота
Деньги
  • Биллинг проекта: токены, подписка, пополнение
  • Сколько стоит сообщение
  • Приём оплат от клиентов (Kaspi)
  • Промокоды и партнёрская программа
Команда и аккаунт
  • Роли и права (viewer / tester / editor / admin / owner)
  • Участники и приглашения
  • Профиль, пароль, безопасность
  • Уведомления и личные настройки
  • Удаление, передача, дублирование проекта
Для разработчиков
  • Публичный API и ключи dos_sk_live_…
  • Кастомные вебхуки (продвинутый режим)
  • Язык выражений (expressions)
  • Формат данных и интеграция фронта
  • Подключить ИИ-агента: Claude Code, Codex, Cursor (MCP)
Решение проблем
  • Бот не отвечает, диагностика
  • Функция не вызывается / падает
  • Канал отвалился / WhatsApp забанили
  • Платёж не прошёл
  • Частые вопросы (FAQ)
  • Лиды из рекламы приходят с задержкой
Справочники
  • Каталог встроенных функций
  • Справочник настроек (agent_config)
  • Коды ошибок и состояния
  • Стадии, статусы лида, типы клиента
  • Лимиты и квоты
  • Переменные и хелперы выражений
  • Типы уведомлений

Документация › Инструменты бота › Исходящие диалоги

Исходящие диалоги (бот пишет первым)

Есть база заявок, но руки не доходят обзвонить? Бот сам напишет первым в 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-пузыря с подставленным примером имени. Видно, как текст выглядит у клиента, ещё до отправки. Кнопки-примеры («пример 1», «пример 2») вставят готовый текст, чтобы отредактировать под себя, а черновик сохраняется сам и не потеряется при переходе на другую вкладку. Проверить текст на конкретном номере из вашего списка можно кнопкой «Показать пример сообщения» в блоке «Добавить номера» (вкладка «Рассылка»). А если заданы дожимы, внизу «Сценария» появится лента «Вся цепочка глазами клиента»: первое сообщение и напоминания по порядку, как их получит человек.

Дожимы (необязательно)

Тут же можно задать напоминания тем, кто не ответил на первое сообщение. Это тоже готовый текст (с теми же подстановками, что и в первом сообщении), а не ИИ. Например: первое напоминание через 24 часа, второе через 72.

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


Шаг 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. Нет → пропускает (отправка на несуществующий номер = сигнал бана).
  • Не пишет в существующий диалог. Если с номером уже есть переписка, бот не влезает (это уже не холодный контакт).
  • Не пишет на ваш собственный номер (тот, что подключён как канал).
  • Стоп-лист. Номер, добавленный в стоп-лист, бот больше никогда не тронет.

🚨 Функция остановки диалога. Чтобы бот умел остановиться по просьбе клиента («не пишите мне»), в проекте должна быть включена встроенная функция остановки. На вкладке «Безопасность» видно, включена она (✓) или нет (✗).

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


Как читать статусы лидов

Список лидов живёт внизу вкладки «Рассылка» и показывает, что с каждым номером. Есть поиск (телефон в любом формате или имя) и фильтр по статусу. Статусы отображаются цветными пилюлями (оранжевая = в работе, зелёная = успех, красная = ошибка); наведите на статус, всплывёт подсказка. Быстрый путь: клик по плитке «пульса» сразу открывает список с фильтром по этому статусу.

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

СтатусЗначение
НовыйЗагружен, но не запущен. Нажмите «Начать».
В очередиЖдёт отправки. Бот напишет по капле.
ОткрываетсяПрямо сейчас бот открывает диалог.
ОтправленоБот написал первым, ждём ответа.
ОтветилЛид ответил! Диалог перешёл в обычный режим (см. Диалоги).
ОшибкаНе удалось отправить. Можно повторить.
ПропущенНомер пропущен, рядом причина (см. ниже).
УстарелСлишком долго ждал в очереди, снят автоматически.

Причины у статуса «Пропущен»: нет в 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-канал отвалился.
  • Посмотрите на пульт сверху страницы: он словами называет, почему бот молчит прямо сейчас. Статус конкретного лида в списке «Рассылки» уточнит причину по номеру.