Если бот ВК не отвечает на сообщения, дело почти никогда не в самом боте и почти всегда в настройках сообщества: что-то не включено, где-то не выданы права, где-то не выбраны события. ВКонтакте устроен так, что сообщество по умолчанию закрыто для автоматики, и открывать его нужно вручную — в нескольких разных местах.
Ниже — порядок проверки: от самого частого к самому редкому. Идите сверху вниз и не перескакивайте, потому что нижние пункты бессмысленно проверять, пока не пройдены верхние.
Сначала отделите «бот молчит» от «бот отвечает, но вы не видите»
Это первая развилка, и на ней теряют больше всего времени. Владелец и администратор сообщества видят переписку не так, как обычный человек: у вас открыт раздел сообщений сообщества, диалоги помечены, часть служебных ответов может выглядеть иначе, а некоторые сценарии вы вообще запускаете из панели управления, а не как посетитель.
Поэтому проверять бота со своего аккаунта — плохая идея. Возьмите второй аккаунт (личный аккаунт коллеги, аккаунт супруга, любой аккаунт, который не состоит в администрации сообщества), зайдите в сообщество как обычный посетитель и напишите ему сообщение. Именно так, как это делает клиент: через кнопку «Написать сообщение» на странице сообщества, а не через раздел управления.
Дальше два исхода. Если с чужого аккаунта бот отвечает, а с вашего нет — с ботом всё в порядке, вы просто смотрите на переписку из административного интерфейса, и это нормально. Если бот молчит и там, и там — идём по настройкам.
Отдельно проверьте, куда вообще пришло сообщение. Частая ситуация: человек нашёл вас по имени, открыл вашу личную страницу и написал вам в личку. Такое сообщение к сообществу отношения не имеет, бот его не увидит никогда — он подключён к сообществу, а не к вашему профилю. Если жалобы «я писал, мне не ответили» приходят регулярно, посмотрите, не ведёт ли ссылка в рекламе или в шапке сайта на личную страницу вместо сообщества.
Что должно быть включено в самом сообществе
Дальше — по порядку, в разделе управления сообществом.
Сообщения сообщества выключены. Базовая настройка, без которой не работает ничего: сообщества ВКонтакте могут быть с закрытыми сообщениями, и тогда кнопки «Написать сообщение» у посетителя просто нет. Бот при этом создан, подключён, сценарий собран — а писать ему некуда. Включается в управлении сообществом, в настройках сообщений. Проверяется за секунду с чужого аккаунта: есть кнопка написать — значит, включено.
Не включены возможности ботов. Отдельный переключатель, который люди пропускают чаще всего, потому что логично считать, что включённых сообщений достаточно. Это не так: сообщения и работа ботов включаются раздельно. Пока «возможности ботов» выключены, сообщество принимает переписку, но ведёт себя как обычный ящик — без кнопок, без автостарта, без реакции на команды. Ищите в настройках сообщений, в блоке, посвящённом ботам.
Рядом обычно живут две смежные настройки, из-за которых бот выглядит «наполовину рабочим»: стартовое сообщение при первом обращении и то, как обрабатываются кнопки. Если бот отвечает на текст, но не здоровается первым — смотрите именно сюда.
Сообщество переключено в режим, где отвечает только человек. У сообществ есть состояния, в которых автоматика намеренно отходит в сторону: включён режим ручных ответов, диалог взят оператором на себя, сообщество помечено как отвечающее вручную. Это полезная механика — когда в переписку вступил живой человек, бот не должен перебивать. Но если такой режим включён глобально и о нём забыли, бот будет молчать на всех новых обращениях. Проверьте состояние и в настройках, и в самом диалоге: возможно, конкретную переписку кто-то из команды забрал себе и не вернул.
Ключ доступа и события: почему сообщения не доходят до бота
Если в сообществе всё включено, а бот всё равно молчит, значит, сообщения до него физически не доезжают. За это отвечают две вещи — ключ и события.
Ключ доступа сообщества выпущен без нужных прав или отозван. Ключ доступа — это длинная строка, которой ваш сервис доказывает ВКонтакте право работать от имени сообщества. Выпускается он в разделе для разработчиков в управлении сообществом, и при выпуске у него отмечаются права: как минимум — работа с сообщениями. Ключ, выпущенный без права на сообщения, выглядит совершенно нормально, вставляется куда надо и не даёт никакой ошибки при подключении — просто бот не может ни читать, ни отправлять.
Вторая половина той же проблемы — ключ перестал действовать. Так бывает после смены пароля владельца, после того как ключ удалили и выпустили заново «чтобы точно свежий», после ухода сотрудника, который его создавал. Симптом характерный: бот работал месяцами и разом замолчал, хотя в сценарии ничего не меняли. Лечится одинаково — выпустить ключ заново с нужными правами и вставить его в панель конструктора вместо старого.
Если бот перестал отвечать «вдруг» и ровно в один день — начинайте с ключа, а не со сценария.
Не выбраны типы событий, о которых сообщество уведомляет приложение. Даже с правильным ключом сообщество отправляет наружу только те события, которые вы отметили. Это отдельный список в разделе для разработчиков, и он не заполняется сам. Минимум, который нужен любому боту: входящее сообщение и нажатие кнопки. Без первого бот не узнает, что ему написали. Без второго — он получает текст, но не реагирует на нажатия, и со стороны это выглядит как «бот отвечает, а кнопки мёртвые».
Полезно также включить события о том, что человек разрешил или запретил сообщения от сообщества: без них рассылки и отложенные сообщения будут уходить в пустоту, а вы не поймёте почему.
Проверять этот пункт стоит после каждого крупного изменения: пересоздали ключ, перенесли сообщество, подключили бота заново — список событий вполне мог обнулиться.
Кнопки, клавиатуры и другие частные случаи
Клавиатура прикреплена к сообщению, которое бот не отправлял. Кнопки во ВКонтакте живут не сами по себе, а вместе с сообщением бота. Если человек нажимает кнопку под старым сообщением, под сообщением, отправленным вручную из раздела сообщений сообщества, или под сообщением из предыдущей версии сценария, нажатие может ни к чему не привести. Формально всё исправно, но бот не понимает, к какому шагу относится нажатие.
Отсюда практическое правило: клавиатуру должен отправлять тот же бот и в том же сценарии, где потом обрабатывается нажатие. Ручные сообщения оператора и кнопки лучше не смешивать. Если кнопки нужны в диалоге, который ведёт человек, — пусть человек передаст диалог обратно в сценарий, а не вставляет клавиатуру «сбоку».
Сценарий не запускается, потому что не задан старт. Бот подключён и всё включено, но он ждёт конкретного повода: первого сообщения, определённого слова, нажатия кнопки. Если в сценарии не описан стартовый шаг для обычного текста, бот честно получит сообщение и ничего не сделает. Разбор того, как устроен вход в сценарий и что делать с сообщениями, которые не подошли ни под одно условие, есть в статье «Как написать сценарий для бота».
Бот подключён к другому сообществу. Звучит глупо, но встречается: у одного бизнеса бывает основное сообщество, старое сообщество и тестовое. Ключ выпущен в одном, пишут — в другое. Проверьте название и адрес сообщества в панели и на странице, куда реально приходят люди.
Сценарий не опубликован или выключен. Собранный, но не включённый сценарий не отличается снаружи от отсутствующего. Посмотрите статус: активен ли он и не стоит ли на паузе.
Порядок проверки за пять минут
Если разбираться некогда, пройдите по списку сверху вниз — он повторяет порядок разделов выше и закрывает почти все случаи, когда бот ВКонтакте не работает:
- напишите в сообщество с чужого аккаунта, не со своего;
- убедитесь, что сообщения сообщества включены и кнопка «Написать сообщение» видна посетителю;
- включите возможности ботов — это отдельный переключатель;
- проверьте, не стоит ли сообщество или конкретный диалог в режиме ручных ответов;
- выпустите ключ доступа заново с правами на сообщения и обновите его в панели;
- отметьте типы событий: входящее сообщение и нажатие кнопки как минимум;
- проверьте, что сценарий включён и у него есть стартовый шаг;
- нажмите кнопку в свежем сообщении бота, а не в старой переписке.
Первое подключение и порядок действий с нуля подробно разобраны в статье «Как создать чат-бота ВКонтакте» — если сообщество настраивали давно и не помните как, проще пройти путь заново, чем угадывать.
Частые вопросы
Бот отвечает мне, но не отвечает клиентам. Почему?
Скорее всего, вы проверяете с аккаунта администратора и попадаете в другой сценарий работы, чем обычный посетитель. Проверьте с аккаунта, который не состоит в администрации сообщества.
Второй вариант — у части людей сообщения от сообщества запрещены: человек когда-то нажал «Запретить сообщения» и с тех пор ничего не получает. Такое лечится только с его стороны, но вы увидите это по событиям о разрешении и запрете сообщений, если они включены.
Раньше бот работал, а сегодня перестал. Что смотреть первым?
Ключ доступа сообщества. Резкая остановка без изменений в сценарии — почти всегда отозванный или заново выпущенный ключ. Выпустите новый с правами на сообщения и обновите его в панели.
Если ключ в порядке — проверьте список типов событий: он мог сброситься вместе с пересозданием ключа.
Бот отвечает текстом, но кнопки не работают
Две причины. Либо не включено событие о нажатии кнопки — тогда бот вообще не узнаёт о нажатиях. Либо человек нажимает кнопку в старом сообщении или в сообщении, которое отправил оператор вручную, — такая клавиатура не привязана к текущему шагу сценария.
Нужно ли переподключать бота после смены ключа доступа?
Ключ достаточно заменить в панели конструктора — пересобирать сценарий не нужно. После замены проверьте типы событий и напишите боту с чужого аккаунта: если ответ пришёл, связь восстановлена.
Можно ли сделать, чтобы бот отвечал только когда мы не на связи?
Да, это условие в сценарии по времени: в рабочие часы бот молчит и отдаёт диалог вам, вне их — отвечает сам. Как делить работу между ботом и человеком, разобрано в статье «Чат-бот или оператор».
Коротко
Бот ВКонтакте молчит по одной из семи причин, и все они лежат в настройках сообщества: выключены сообщения, не включены возможности ботов, ключ доступа без прав или отозван, не выбраны типы событий, сообщество в режиме ручных ответов, кнопка нажата не в том сообщении или человек написал не в сообщество, а на личную страницу.
Проверять всегда начинайте с чужого аккаунта — иначе половину времени вы будете чинить то, что не сломано. Дальше по порядку: сообщения, боты, ключ, события, сценарий.
Если бот собран в ЭТОЧАТБОТЕ, ключ и типы событий проверяются в карточке канала, а переписка из ВКонтакте попадает в тот же список, что Telegram, Instagram* и чат на сайте — видно сразу, дошло сообщение до бота или нет. Начните с простого: напишите своему сообществу с постороннего аккаунта и посмотрите, что произойдёт.