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

$pushgate.createEvent

Метод создает событие, которое наступит в заданное время.

Синтаксис

Принимаемые аргументы

Метод $pushgate.createEvent принимает 6 аргументов.

АргументОписаниеТипОбязательныйЗначение по умолчанию
dateTimeДата и время наступления событияСтрокаДа
eventНазвание событияСтрокаНетtimerEvent
eventDataДанные, переданные вместе с событиемОбъектНет{}
channelTypeТип каналаСтрокаНет$request.channelType
botIdИдентификатор ботаСтрокаНет$request.botId
chatIdИдентификатор пользователяСтрокаНет$request.channelUserId
предупреждение
Обратите внимание на следующие особенности задания даты и времени события:
  • Строка, переданная в аргументе dateTime, должна иметь формат yyyy-MM-ddTHH:mm:ss.
  • Отправка, запланированная на прошедшее время, не вызовет ошибки, но будет выполнена немедленно.
подсказка
В поле eventData вы можете передать любые данные, которые потребуются при наступлении события. Данные будут доступны в обработчике события в поле $request.rawRequest.eventData.

Возвращаемое значение

Метод возвращает объект с одним полем id — идентификатором созданного события.

к сведению

Идентификатор используется для отмены события при помощи метода $pushgate.cancelEvent.

Учет часового пояса

Планирование событий из сценария происходит с учетом часового пояса, который был задан для клиента при помощи метода $reactions.setClientTimezone.

предупреждение
Если часовой пояс для клиента не задан, по умолчанию используется часовой пояс, указанный в настройках проекта на вкладке Классификатор.

Пример

Рассмотрим пример создания будильника при помощи сообщений от бота.

state: SetAlarm
intent!: /Будильник/Поставить
a: На какое время?

state: Time
q: * @duckling.time *
script:
$temp.time = $parseTree["_duckling.time"];
$pushgate.createEvent($temp.time.value);
a: Будильник установлен на {{$temp.time.hour}}:{{$temp.time.minute}}.

state: Alarm
event!: timerEvent
a: Пора вставать!
  1. Когда клиент отвечает, в какое время нужно поставить будильник, он попадает в стейт Time. Названное им время извлекается из запроса при помощи сущности Duckling — @duckling.time.
  2. В значении сущности @duckling.time есть поле value — строка, описывающая распознанное время и удовлетворяющая формату, требуемому $pushgate.createEvent. Планируется событие на это время.
  3. По наступлении нужного времени запланированное событие timerEvent приходит в сценарий и обрабатывается в стейте Alarm.
к сведению

Вы можете создавать не только одноразовые, но и регулярные события. Для этого в стейте для обработки события снова вызовите метод $pushgate.createEvent и запланируйте новое событие на будущее. Обратите внимание, что события отправляются в сценарий не чаще, чем раз в 30 секунд.

подсказка
Изучите подробнее пример использования данного метода, пройдя пошаговый сценарий создания бота для отправки напоминаний.