Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Expand
titleНажмите здесь, чтобы развернуть пример сценария

Code Block
//
// Сценарий сообщает об отсутствии операторов поддержки в ночное время
//
// Настройка сценария
// Смещение текущего времени службы поддержки относительно GMT в часах
установитьПеременную("HourOffset", "3")+
// время начала работы службы поддержки
установитьПеременную("startHour", "9")+
// время окончания работы службы поддержки (не включая)
установитьПеременную("endHour", "22") +
//
// Основной код сценария
// 
// проверка текущего времени
выполнитьJs("""
var serverTime = new Date();
var serverTimeStamp = serverTime.getTime();
var timeZoneOffset = serverTime.getTimezoneOffset();

var currentTimeStamp = serverTimeStamp + (parseInt(HourOffset) *  3600000) - (timeZoneOffset * 60000);

var currentDate = new Date(currentTimeStamp);
var currentHour = parseInt(currentDate.getHours());

var start = parseInt(startHour);
var stop = parseInt(endHour);

if (currentHour >= start && currentHour < stop) {
	var workTime = 1;
} else {
	var workTime = 0;	
}

var exit = {'workTime':workTime};
exit;
""") +
//
// Сейчас рабочее время, сценарий передает запрос в базы знаний без уведомлений пользователя
если("{workTime} == 1").то(
	комментарий("Рабочее время. Продолжаем штатно") + 
	завершитьСНовымЗапросом("{platformInMessageQuery}")
)+
//
// Сейчас нерабочее время, перед сообщением пользователю сценарий уточняет наличие ответа в базе знаний
запросВБазыЗнаний("{platformInMessageQuery}", "botKnows")+
//
// В базе знаний есть ответ, сценарий уведомляет пользователя об отсутствии операторов и передает запрос в базы знаний
если("{botKnows} == true").то(
	комментарий("Бот знает ответ, продолжаем не взирая на график.") + 
	сообщениеПользователю.сШаблоном("Операторы службы поддержки сейчас не работают, но Вы можете получить консультацию у нашего бота. Операторы смогут подключиться с {startHour}:00 по МСК.")+ 
	завершитьСНовымЗапросом("{platformInMessageQuery}")
)+
//
// В базе знаний нет ответа, сценарий сообщает об отсутствии операторов службы поддержки, завершается и закрывает диалог
комментарий("Бот не понял. Операторы не работают")+
сообщениеПользователю.сШаблоном("Сейчас служба поддержки не работает. Просим писать нам с {startHour}:00 по {endHour}:00 МСК.<br>Unfortunately you contacted us outside of our support service hours. We will reply to you in the morning. Thank you for waiting.")+
завершитьИЗакрытьДиалог()

Сценарий проверяет не только на указанный период работы, но и на выходные и праздничные дни.

В зависимости от рабочего/нерабочего времени уведомляется пользователя соответствующим сообщением.

Expand
titleНажмите здесь, чтобы развернуть пример сценария
Code Block
//
// Сценарий сообщает об отсутствии операторов поддержки в ночное время, в выходные и в заданные даты дд.мм.гггг
//
// Смещение текущего времени службы поддержки относительно GMT в часах
установитьПеременную("HourOffset", "3") +
// время начала работы службы поддержки
установитьПеременную("startHour", "9") +
// время окончания работы службы поддержки (не включая)
установитьПеременную("endHour", "18") +
// Основной код сценария
// проверка текущего времени на рабочее время, выходной и праздник
выполнитьJs("""
// устанавливаем список праздничных дат
var holidayDates = ["13.03.2023", "14.03.2023", "04.08.2023"];
//
var serverTime = new Date();
var serverTimeStamp = serverTime.getTime();
var timeZoneOffset = serverTime.getTimezoneOffset();
var currentTimeStamp = serverTimeStamp + (parseInt(HourOffset) *  3600000) - (timeZoneOffset * 60000);
var currentDate = new Date(currentTimeStamp);
var currentHour = parseInt(currentDate.getHours());
var month = currentDate.getMonth()+1; 
var tdate = currentDate.getDate();
var newdate = (tdate < 10 ? '0' : '') + tdate + '.' + (month < 10 ? '0' : '') + month + '.' + currentDate.getFullYear();
var currentDay = currentDate.getDay();
var start = parseInt(startHour);
var stop = parseInt(endHour);
// проверяем дату на наличие в списке праздников
if (holidayDates.indexOf(newdate) != -1) {
	var resultHoliday = 1;
} else {
	var resultHoliday = 0;
}
// получаем признак рабочего/нерабочего времени
if (currentHour >= start && currentHour < stop && currentDay != 0 && currentDay != 6 && resultHoliday != 1 ) {
	var workTime = 1;
} else {
	var workTime = 0;	
}
var exit = {'workTime':workTime,'newdate':newdate};
exit;
""")+
//
// Сейчас рабочее время, сценарий передает запрос в базы знаний без уведомлений пользователя
если("{workTime} == 1").то(
//комментарий("Рабочее время")
сообщениеПользователю.сШаблоном("Рабочее время")
) +
если("{workTime} == 0").то(
	сообщениеПользователю.сШаблоном("Операторы технической поддержки на ваш вопрос в рабочее время. График работы виджета: пн-пт, 9:00-18:00 (МСК) за исключением праздничных и предпраздничных дней.")
)+
завершить

Меню наиболее частых запросов

...