timeout
Тег задает таймаут — автоматический переход в другой стейт, если от пользователя нет ответа.
Синтаксис
timeout: /Start/Timeout || interval = 10
timeout: ./Timeout || interval = "10 seconds"
После тега записывается путь до стейта, в который перейдет бот, если пользователь за определенное время не ответит.
Тег имеет обязательный параметр interval
— интервал времени, в течение которого ожидается ответ от пользователя.
Формат интервала
Значение interval
может быть числом или строкой.
- Если это число, то оно обозначает количество секунд таймаута.
- Если это строка, то она обозначает продолжительность таймаута в человекочитаемом виде.
Максимальное значение интервала — 99 часов.
Строковые значения interval
должны удовлетворять регулярному выражению:
(\s*(?<h>\d{0,2})\s*(hours|hour|h))?(\s*(?<m>\d{0,2})\s*(minutes|minute|min|m))?(\s*(?<s>\d{0,2})\s*(seconds|second|sec|s))?\s*
Примеры строковых значений interval
5 seconds
1 sec
3s
1 min
1 minute
10 minutes
1 hour
10 hours
3 min 1 sec
1h5m3s
Особенности
Одновременно может быть активен только один таймаут. Если в одном стейте использовать тег несколько раз, в сценарии возникнет ошибка.
Использование в сценарии
В примере ниже бот запрашивает у пользователя оценку сервиса.
- Если пользователь дает оценку, бот фиксирует ее в аналитике с помощью метода
$analytics.setNps
и прощается. - Если пользователь не дает оценку в течение 5 минут, бот больше не ждет ее и прощается с пользователем.
state: ServiceEvaluation
a: Спасибо за заказ. Как вы бы оценили наш сервис?
timeout: /Goodbye || interval = "5 minutes"
state: GetEvaluation
q: $regex<\d+>
a: Спасибо. Ваше мнение важно для нас.
script: $analytics.setNps(parseInt($parseTree.text));
go!: /Goodbye
state: Goodbye
a: Всего доброго, до свидания!