Перейти к основному содержимому

Как определять рабочее время с помощью бота?

В данном уроке вы научитесь сравнивать текущее время с графиком работы вашей компании. Это может быть полезно, если вы хотите, чтобы в рабочие часы бот сразу переводил диалоги на оператора, а в нерабочие часы общался с клиентами сам.

Когда клиент отправит запрос на общение с оператором, бот также сможет уведомить клиента о том, что операторы будут доступны только в рабочее время.

Создание сценария

Для начала определите, в какое место сценария поместить проверку времени. То есть, на каком этапе общения с клиентом бот будет проверять, является ли текущее время рабочим.

Добавление интента

Проверку времени можно поместить на экран после интента, в который попадают запросы на разговор с оператором.

Добавьте в сценарий блок Интенты. Включите в него следующие примеры фраз: «поговорить с человеком», «переведи на оператора», «пообщаться с менеджером», «бот надоел» и другие.

Добавление 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 по МСК.

Готовый сценарий

В итоге у вас получится следующий сценарий: