$pushgate.createEvent
Метод создает событие, которое наступит в заданное время.
Синтаксис
- ECMAScript 5
- ECMAScript 6
$pushgate.createEvent("2024-06-13T18:00:00");
В среде ECMAScript 6 метод является асинхронным:
await $pushgate.createEvent("2024-06-13T18:00:00");
Принимаемые аргументы
Метод $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
.
Пример
Рассмотрим пример создания будильника при помощи сообщений от бота.
- ECMAScript 5
- ECMAScript 6
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: Пора вставать!
state: SetAlarm
intent!: /Будильник/Поставить
a: На какое время?
state: Time
q: * @duckling.time *
scriptEs6:
$temp.time = $parseTree["_duckling.time"];
await $pushgate.createEvent($temp.time.value);
a: Будильник установлен на {{$temp.time.hour}}:{{$temp.time.minute}}.
state: Alarm
event!: timerEvent
a: Пора вставать!
- Когда клиент отвечает, в какое время нужно поставить будильник, он попадает в стейт
Time
. Названное им время извлекается из запроса при помощи сущности Duckling —@duckling.time
. - В значении сущности
@duckling.time
есть полеvalue
— строка, описывающая распознанное время и удовлетворяющая формату, требуемому$pushgate.createEvent
. Планируется событие на это время. - По наступлении нужного времени запланированное событие
timerEvent
приходит в сценарий и обрабатывается в стейтеAlarm
.
Вы можете создавать не только одноразовые, но и регулярные события. Для этого в стейте для обработки события снова вызовите метод $pushgate.createEvent
и запланируйте новое событие на будущее. Обратите внимание, что события отправляются в сценарий не чаще, чем раз в 30 секунд.