Бот состоит из шагов
и переменных
. Когда нужно активировать бота для конкретного номера,
начинается сессия.
Переменные передаются во время создания сессии и закрепляются за ней. Их можно изменять во время
работы сессии. Переменные можно подставлять в сообщения (см. описание шагов). На данном этапе
доступны две переменные: minPrice
и maxPrice
.
Шаги -- это действия. На каждом шаге можно отправить сообщение, задать возможные ответы на сообщения, задать таймеры.
Шаг является финальным, если у него нет сообщений и таймеров. При переходе на финальный шаг, сессия завершается. Если при этом шаг целевой, то на почту отправляется уведомление с данными по объявлению.
В скрипте обязателен шаг start
-- это начальный шаг.
Шаг может отправлять сообщения. В шаге указывается либо одно сообщение, либо несколько. Если указано несколько сообщений, то продавцу будет отправляться случайное.
В сообщении можно подставлять переменные сессии, а также стандартные подстановки, которые работают для кампаний.
Пример: Могу вупить ваш [model] за $minPrice, договоримся?
. Здесь $minPrice
-- это
переменная minPrice
, а [model]
-- это стандартная подстановка.
Если задано сообщение, то можно задать список возможных ответов. Ответ -- это условие перехода на другой шаг. Список возможных ответов приходит на почту, когда продавец отвечает на наше сообщение.
Ответ может быть распознаваемым и статическим.
Распознаваемый ответ может быть автоматически распознан по специальному алгоритму. Статический ответ можно только выбрать из уведомления.
Когда выбирается какой-то тип ответа, то входящему сообщению присваивается этот тип ответа и в дальнейшем эта база может быть использована для настраивания алгоритма распознания ответов.
Для шага можно указать контекст распознавания. По-умолчанию это идентификатор шага. Можно назначить другой контекст для того случая, когда на разных шагах может быть один контекст.
Таймер позволяет оставаться на текущем шаге определенное время, если не было перехода через ответ. Для таймера можно указать шаг, на который нужно перейти, если таймер сработает. Если шаг не указан, то сессия завершится по истечению таймера.
Есть два таймера: таймер no_answer
и wait
. Первый срабатывает в том случае, если на сообщение
не было ответа. Второй срабатывает в любом случае.
Если на шаге было отправлено сообщение, то таймеры отсчитываются от даты отправки сообщения, иначе от даты перехода на шаг.
Примеры таймеров:
# ждать 7 дней, после завершить
wait: 7 days
# перейти на шаг other_step, если не было ответа 1 день
no_answer:
for: 1 day
step: other_step
Если для шага указаны ответы, но нет таймеров, и никакой ответ не был выбран в течении одного дня, то сессия завершается.
# Переменные
variables:
<Id>: <string> название переменной
# Шаги
steps:
<Id>:
title: <string> заголовок шага (смысл действия)
message: <string>|<string[]> сообщение для отправки либо массив сообщений
context: <Id> контекст распознавания
target: <bool> указать true если шаг целевой
answers:
<Id>: <Answer>
no_answer: <Time>|<Timer> таймер если не было ответов
wait: <Timer> таймер основной
Типы данных:
<Id> = <string[a-z0-9_]> идентификатор
<Time> = строка времени, например 1 day или 10 hours
<Timer> = <Object> таймер с переходом на другой шаг
*for: <Time>
step: <Id> следующий шаг
<Answer> = <Object> Возможный тип ответа
title: <string> заголовок ответа
*type: (meaning|static) тип
*step: <Id> следущий шаг