Как определять рабочее время с помощью бота?
В данном уроке вы научитесь сравнивать текущее время с графиком работы вашей компании. Это может быть полезно, если вы хотите, чтобы в рабочие часы бот сразу переводил диалоги на оператора, а в нерабочие часы общался с клиентами сам.
Когда клиент отправит запрос на общение с оператором, бот также сможет уведомить клиента о том, что операторы будут доступны только в рабочее время.
Создание сценария
Для начала определите, в какое место сценария поместить проверку времени. То есть, на каком этапе общения с клиентом бот будет проверять, является ли текущее время рабочим.
Добавление интента
Проверку времени можно поместить на экран после интента, в который попадают запросы на разговор с оператором.
Добавьте в сценарий блок Интенты. Включите в него следующие примеры фраз: «поговорить с человеком», «переведи на оператора», «пообщаться с менеджером», «бот надоел» и другие.
Добавление HTTP-запроса
Свяжите добавленные интенты с блоком HTTP-запрос.
В запросе будет использоваться сервис получения текущего времени и даты.
При на стройке блока в поле URL укажите:
https://tools.aimylogic.com/api/now?tz=Europe/Moscow&format=dd/MM/yyyy
С помощью данного запроса бот будет получать текущее время по Москве.
tz
после знака =
. Часовой пояс указывается в формате IANA TZDB. Например, чтобы получить дату и время в Токио, в URL укажите tz=Asia/Tokyo
.Нажмите Имя и значение переменной. В качестве имени переменной укажите time
, а в качестве значения — $httpResponse
.
При успешном выполнении запроса в переменную $time
сохранится JSON с текущим временем. Например, для московского времени сохранится подобный JSON:
{
"timezone":"Europe/Moscow",
"formatted":"01.10.2021 15:09",
"timestamp":1633090168822,
"weekDay":5,
"day":1,
"month":10,
"year":2021,
"hour":15,
"minute":9
}
В случае ошибки в переменную $time
сохранится код ошибки HTTP.
Вкладки BODY и HEADERS заполнять не нужно.
От варианта Завершен с ошибкой сделайте связь с блоком Текст и напишите в нем ошибка $httpStatus
.
Добавление условия
От варианта Завершен успешно сделайте связь с блоком Условия. В него вы поместите выражения, которые будут сравнивать текущее время с вашим рабочим графиком.
Допустим, ваш график работы с 10.00 до 19.00 по Москве.
Тогда напишите следующее условие:
$time.hour >= 10 && $time.hour < 19 && $time.weekDay <= 5
Это условие будет отрабатывать, если:
- Текущее время по Москве больше 10 часов, но меньше 19 часов — то есть, с 10.00 до 18.59 включительно.
- Текущий день недели — от первого до пятого включительно. То есть, условие будет отрабатывать по будним дням.
Если условие $time.hour >= 10 && $time.hour < 19 && $time.weekDay <= 5
верно, это означает, что сейчас рабочее время. Так как в этом примере мы хотим, чтобы в рабочее время с клиентами общались операторы, свяжите данное условие с блоком Перевод на оператора.
Добавление реплики бота
Свяжите else с блоком Текст. Тогда, если условие не будет выполнено, бот пойдет по этой ветке.
В блок Текст добавьте реплику для бота, например: К сожалению, на данный момент нет доступных операторов. Вам ответят в рабочее время с 10.00 до 19.00 по МСК.
Готовый сценарий
В итоге у вас получится следующий сценарий: