[Документация Yandex Cloud](../../../index.md) > [Yandex API Gateway](../../index.md) > [Концепции](../index.md) > [Триггер](index.md) > Таймер

# Таймер, который отправляет сообщения в WebSocket-соединения

_Таймер_ — это [триггер](index.md), который отправляет сообщения в [WebSocket-соединения](../extensions/websocket.md) по расписанию. Расписание задается в виде [cron-выражения](#cron-expression). Время в cron-выражении указывается по [UTC+0](https://ru.wikipedia.org/wiki/Всемирное_координированное_время).

Таймеру необходим [сервисный аккаунт](../../../iam/concepts/users/service-accounts.md) для отправки сообщений в WebSocket-соединения.

О том, как создать таймер, читайте в инструкции [Создать таймер, который отправляет сообщения в WebSocket-соединения](../../operations/trigger/timer-create.md).

## Формат cron-выражения {#cron-expression}

Порядок полей в cron-выражении: `Minutes Hours Day-of-month Month Day-of-week Year`.

### Возможные значения полей {#field-and-value}

{% note info %}

Служебные символы, а также имена месяцев и дней недели не чувствительны к регистру: `MON` эквивалентно `mon`.

{% endnote %}

| Название <br>поля | Обязательное <br>поле | Допустимые <br>значения | Поддержка <br>специальных <br>символов |
|----|----|----|----|
|`Minutes` (минуты) | Да | 0-59 | `,`, `-`, `*`, `/` |
|`Hours` (часы) | Да| 0-23 | `,`, `-`, `*`, `/` |
|`Day of month` (день месяца)| Да | 1-31 | `,`, `-`, `*`, `?`, `/`, `L`, `W` |
|`Month` (месяц)| Да | 1-12, <br>JAN-DEC | `,`, `-`, `*`, `/` |
|`Day of week` (день недели)| Да | 1-7, <br>SUN-SAT | `,`, `-`, `*`, `?`, `/`, `L`, `#`|
|`Year` (год)| Нет | пустое, 1970-2099 | `,`, `-`, `*`, `/` |

### Специальные символы {#special-characters}

Для cron-выражения доступны следующие специальные символы:
* `*` — выбор всех значений в поле.
    
    > Символ `*` в поле `Minutes`: триггер запускается `каждую минуту`.
* `?` — выбор любого значения поля. Поля `Day of month` и `Day of week` не могут быть заполнены одновременно. Если вы указали значение в одном из этих полей, укажите символ `?` в другом.

    > Значение `10` в поле `Day of month` и символ `?` в поле `Day of week`: триггер запускается каждый 10-ый день месяца.
* `-` — выбор диапазона значений.
    
    > Диапазон `10-12` в поле `Hours`: триггер запускается в 10, 11 и 12 часов.
* `,` — выбор нескольких значений.

    > Значения `MON,WED,FRI` в поле `Day of week`: триггер запускается в понедельник (Monday), среду (Wednesday) и пятницу (Friday).
* `/` — инкрементальное увеличение значения. 

    > Значения `0/15` в поле `Minutes`: триггер запускается в 0, 15, 30 и 45 минут.
* `L` — символ имеет разные значения для двух полей, в которых разрешен: 
    * Для поля `Day of month` значит последний день месяца.
    * Для поля `Day of week` значит последний день недели, то есть `7` (суббота, `SAT`).
    
    > Значение `L` в поле `Day of month`: триггер запускается 31 числа для января, 28 числа для февраля и т. д.
* `W` — выбор ближайшего буднего дня к указанной дате.

    > Значение `15W` в поле `Day of month`: триггер запускается в ближайший будний день к 15 числу месяца. Если 15 число это суббота, триггер будет запускаться 14 числа в пятницу.

    {% note info %}
    
    Символы `L` и `W` в поле `Day of month` также объединяются в сочетание `LW`: триггер запускается в последний будний день месяца.
    
    {% endnote %}
                                                                                             
* `#` — выбор N-ного дня месяца.

    > Значение `6#3` в поле `Day of week`: триггер запускается в третью пятницу месяца (6 — пятница, 3 — третья пятница месяца).

### Примеры cron-выражений {#examples}

| Cron-выражение | Описание |
|----|----|
| `* * * * ? *` | Триггер запускается каждую минуту. |
| `0 * ? * * *`| Триггер запускается каждый час. |
| `15 10 ? * * *` | Триггер запускается каждый день в 10:15. |

## Роли, необходимые для корректной работы таймера {#roles}

* Для создания таймера вам необходимо разрешение на сервисный аккаунт, от имени которого таймер выполняет операцию. Это разрешение входит в роли [iam.serviceAccounts.user](../../../iam/security/index.md#iam-serviceAccounts-user), [editor](../../../iam/roles-reference.md#editor) и выше.
* Для работы таймера сервисному аккаунту необходима роль `api-gateway.websocketBroadcaster` на каталог, в котором находится API-шлюз.

Подробнее об [управлении доступом](../../security/index.md).

## Формат сообщения от таймера {#format}

После того как триггер сработает, он отправит в WebSocket-соединения следующее сообщение:

```json
{
  "messages": [
    {
      "event_metadata": {
        "event_id": "a1s41g2n5g0o********",
        "event_type": "yandex.cloud.events.serverless.triggers.TimerMessage",
        "created_at": "2019-12-04T12:05:14.227761Z",
        "cloud_id": "b1gvlrnlei4l********",
        "folder_id": "b1g88tflru0e********"
      },
      "details": {
        "trigger_id": "a1sfe084v4se********",
        "payload": "payload-message"
      }
    }
  ]
}
```

## Полезные ссылки {#see-also}

* [Таймер для запуска контейнера Serverless Containers](../../../serverless-containers/concepts/trigger/timer.md)
* [Таймер для запуска функции Cloud Functions](../../../functions/concepts/trigger/timer.md)