Принцип работы цепочек
Эта статья для более продвинутых пользователей, кто хочет понимать все тонкости работы ботов в BotHunter
Last updated
Эта статья для более продвинутых пользователей, кто хочет понимать все тонкости работы ботов в BotHunter
Last updated
По умолчанию боты в сервисе работают по таким правилам:
1 пользователь = 1 цепочка выполнения
Ожидающие действия важнее, чем продолжение без ожидания
Правила можно менять в настройках конкретного бота, про это написано тут:
Расширенные настройки ботаВ этой статье мы рассмотрим действие по умолчанию.
Если человек уже находится в боте, то заново он не будет добавлен
Вот пример бота, который реагирует на входящее сообщение, затем проверяется на соответствие слову "купить" и отправляет сообщение.
После этого в блоке сообщения мы ожидаем от человека снова слово "купить". И тут возникает такая проблема: бот запускается на слово "купить" и дальше мы ждем это же слово.
Как поступить?
Решением этого вопроса как раз и послужил первый принцип работы цепочек: по умолчанию человек может иметь только 1 цепочку в боте.
Если я сейчас напишу ещё раз слово "купить", то получу своего обещанного слона
Далее, если посмотреть на бота ещё раз, то мы видим, что после сообщения со слоном нет никаких связей.
Это значит, что как только человек получит это последнее сообщение, он завершит выполнение цепочки и может быть добавлен в бота заново.
Дальнейшее описание применимо для случая, когда вы выключили настройку в боте "Разрешить пользователю иметь несколько активных цепочек"
У блока сообщения есть одна особенность: кроме обычных ожидающих действий, есть также возможность продолжать цепочку без ожиданий.
Здесь пункт 1 - ожидающие действия. Про них подробно написано здесь:
Ожидающие действияПункт 2 - возможность продолжения без ожидания. То есть, как только отправлено сообщение, сразу выполнить что-то ещё.
Так вот, по умолчанию, если в блоке сообщения есть ожидающие действия, от которых есть связь, то выход в продолжение без ожидания игнорируется.
Если добавлено ожидающее действие, но от него не идет связь, то оно игнорируется
Связь от кнопки в клавиатуре = ожидание ответа от пользователя
Как только человек получит сообщение из Шага 2, он будет находиться в Шаге 2 и от него будет ожидаться ответ на сообщение.
Нижняя ветка с таймерами будет проигнорирована.
Как сделать, чтобы работали обе ветки - прочитайте в пункте про Ожидающие действия.
Также важно упомянуть случай, если у вас установлены несколько ожидающих действий в блоке:
Здесь логика такая: что произошло раньше, то и будет выполняться, а остальное будет проигнорировано, поскольку пользователь уже будет находиться в другом шаге.
Напоминаем, что здесь мы рассматривали работу ботов по умолчанию.
Все особенности можно перестроить под себя в расширенных настройках бота.