This site is no longer updated.Go to new Conversational Cloud docs

$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 секунд.

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