Synchra.24
menu_bookДокументация
Практические материалы по запуску и развитию

Здесь собраны инструкции по запуску, разработке внутренних сценариев и встраиванию собственных инструментов в рабочий контур компании.

folderАвтоматизации

Запуск по событиям Synchra24

Устройство событийной системы, полный каталог из 49 событий, поля payload, условия, гарантии доставки и примеры автоматизаций.

Событийная автоматизация запускается сразу после изменения в Synchra24. Она подходит для процессов вида «если произошло событие и выполнено условие — отправить данные или вызвать внешний сервис».

Например:

  • сотрудник опоздал более чем на 15 минут — отправить запись во внешнюю систему и уведомить управляющего через её API;
  • создан инцидент высокой важности — передать его в сервис поддержки;
  • завершён чек-лист с нарушениями — создать запись в системе контроля качества;
  • задача завершена — отправить результат в учётную систему.

Как работает событийный запуск

После бизнес-действия сервис Synchra24 формирует событие с уникальным event_id, названием, компанией, автором действия и полезной нагрузкой payload. Событие асинхронно передаётся в сервис Automation. Для каждой включённой автоматизации с совпадающим trigger.event создаётся отдельный запуск.

Последовательность выглядит так:

  1. пользователь или системный процесс выполняет действие в Synchra24;
  2. исходный сервис формирует событие;
  3. событие попадает в очередь доставки;
  4. Automation находит включённые сценарии этой компании с таким типом события;
  5. система проверяет conditions;
  6. JavaScript-обработчик преобразует данные;
  7. результат отправляется в одно или несколько назначений;
  8. статус, входные данные, результат и логи сохраняются в истории запусков.

Событийная автоматизация не опрашивает сервисы по расписанию и не требует поля source: данные уже находятся в конверте события.

Что нужно для настройки

  • у компании должна быть активна возможность API-интеграция;
  • пользователю нужен доступ к разделу Автоматизации;
  • конфигурация должна использовать version: 2;
  • автоматизация должна быть включена;
  • для внешнего API заранее подготовьте URL, способ авторизации и секреты.

В редакторе выберите тип триггера event и укажите одно точное имя события. Регистр и символы имеют значение: task.completed и Task.Completed считаются разными строками.

Каталог событий

Ниже перечислены все события, которые можно указывать в trigger.event. Поле Payload показывает основные данные для условий и обработчика. Кроме них, в payload.title может передаваться название сущности.

Задачи, инциденты и чек-листы

Событие Когда возникает Основные поля payload
task.created Создана задача. id, number, title, assigned_to, priority_id, deadline
task.status_changed Статус задачи действительно изменился. id, number, status, status_title, assigned_to, created_by
task.completed Новый статус задачи — completed. Событие приходит вместе с task.status_changed, но имеет другой event_id. те же поля, что у task.status_changed
task.canceled Новый статус задачи — canceled. те же поля, что у task.status_changed
incident.created Создан инцидент. id, number, title, assigned_to, priority_id
incident.status_changed Статус инцидента действительно изменился. id, number, status, status_title, assigned_to, created_by
incident.in_progress Инцидент переведён в статус in_progress. те же поля, что у incident.status_changed
incident.completed Инцидент завершён, закрыт или отмечен невыполненным. те же поля, что у incident.status_changed
checklist.submitted Результат чек-листа отправлен. id, status, session_id, violations_count, has_failures
checklist.failed Отправленный чек-лист содержит хотя бы одно нарушение. те же поля, что у checklist.submitted

Учёт времени

Событие Когда возникает Основные поля payload
shift.started Сотрудник начал смену. timer_id, user_id, started_at, launching_user_id, panel_id, manual; при наличии графика — planned_start, planned_end, late_minutes
shift.ended Активная смена сотрудника остановлена. timer_id, user_id, started_at, ended_at, duration_seconds, stopped_by_user_id, manual
employee.late Смена началась позже планового времени. поля shift.started, включая late_minutes

Заявки, формы, документы и отчёты

Событие Когда возникает Основные поля payload
request.created Сотрудник создал заявку. title
request.approved Заявка окончательно согласована. Промежуточное согласование одного участника событие не создаёт. title
request.rejected Заявка окончательно отклонена. title
assessment_360.submitted Участник отправил оценку 360°. title
form.blank_completed Сотрудник заполнил назначенный бланк. dispatch_id, form_type, title
form.poll_completed Сотрудник прошёл назначенный опрос. dispatch_id, form_type, title
document.signed Сотрудник подписал документ. title
report.created Создан отчёт. date, session_id, title

Отпуска, идеи и касса

Событие Когда возникает Основные поля payload
vacation.requested Сотрудник отправил план отпуска. subject_user_id, year, days, approver_ids, comment, title
vacation.approved План отпуска согласован. subject_user_id, year, comment, title
vacation.canceled Дни плана отпуска отменены или отклонены. subject_user_id, year, days, comment, title
client_hub.employee_idea_created Сотрудник отправил идею в клиентском хабе. status, title
cash.transaction_created Создана операция прихода, расхода, выдачи или возврата. cashbox_id, type, amount, description, user_id, category_id, title
cash.transaction_canceled Кассовая операция отменена. cashbox_id, type, amount, description, user_id, category_id, canceled_by, canceled_at, title

Календарь и новости

Событие Когда возникает Основные поля payload
calendar.event_created Создано мероприятие календаря. starts_at, ends_at, location, user_ids, title
calendar.event_updated Мероприятие календаря изменено. те же поля, что у calendar.event_created
calendar.event_deleted Мероприятие календаря удалено. title
news.created Создана новость. show_from, show_to, title
news.updated Новость изменена. show_from, show_to, title
news.deleted Новость удалена. title

Выездные работы

Событие Когда возникает Основные поля payload
field_visit.created Создан черновик выезда. общие поля выезда
field_visit.updated Изменены параметры выезда. общие поля выезда
field_visit.published Выезд опубликован и назначен сотрудникам. общие поля выезда
field_visit.departed Исполнитель начал движение на объект. общие поля и поля операции
field_visit.arrived Исполнитель отметил прибытие. общие поля и поля операции
field_visit.completed Выезд завершён. общие поля и поля операции
field_visit.canceled Выезд отменён. общие поля и поля операции

Общие поля выезда: number, status, priority, date, window_start, window_end, timezone, responsible_id, member_ids, title. Для действий также передаются operation_id, offline, geo_state, reason и result. Повторная доставка одной офлайн-операции не создаёт новое событие.

Сотрудники, отделы и роли

Событие Когда возникает Основные поля payload
employee.added Пользователь добавлен в компанию. user_id, position_id, title
employee.dismissed Сотрудник уволен. profile_id, employment_status, title
employee.restored Уволенный сотрудник восстановлен. profile_id, employment_status, title
employee.blocked Профиль сотрудника заблокирован. profile_id, blocked, title
employee.unblocked Блокировка профиля снята. profile_id, blocked, title
department.created Администратор создал отдел. department_id, name, description, title
role.created Администратор создал роль вручную или через AI-генератор структуры ролей. Для сгенерированной роли создаётся отдельное событие. role_id, name, description, parent_id, permissions, generated, title

Журналы и база знаний

Событие Когда возникает Основные поля payload
journal.completed Сотрудник выполнил мероприятие журнала. journal_id, journal_title, event_title, completed_by, assignment_at, completion_source, reason, title
journal.force_completed Руководитель принудительно завершил мероприятие. те же поля; completion_source равно manager_override
wiki.article_created Создана статья базы знаний. section_id, title
wiki.article_updated Статья базы знаний изменена. title

Базовый пример: опоздание более чем на 15 минут

version: 2

trigger:
  type: event
  event: employee.late

conditions:
  all:
    - path: payload.late_minutes
      operator: gte
      value: 15

transform:
  type: javascript
  timeout_seconds: 2

destination:
  type: http
  method: POST
  url: https://example.com/api/lateness
  headers:
    Authorization: "Bearer ${secrets.DESTINATION_TOKEN}"
  request:
    format: json

retry:
  attempts: 3
  delay_seconds: 5

У событийной автоматизации нет source: источником служит само событие. В режиме steps также нельзя добавлять шаги kind: source, но можно добавить несколько назначений.

Другие примеры условий

Завершён срочный выезд

trigger:
  type: event
  event: field_visit.completed

conditions:
  all:
    - path: payload.priority
      operator: eq
      value: urgent

Кассовая операция больше 100 000

trigger:
  type: event
  event: cash.transaction_created

conditions:
  all:
    - path: payload.amount
      operator: gte
      value: 100000

Любое кадровое выбытие

Одна автоматизация слушает только одно имя события. Для увольнения используйте employee.dismissed. Если нужно одинаково обрабатывать увольнение и блокировку, создайте две автоматизации или направьте оба сценария в один внешний endpoint.

Условия

В conditions.all перечисляются условия, которые должны выполниться одновременно. В conditions.any достаточно выполнения одного условия. Обе группы можно использовать вместе.

Оператор Назначение
eq, ne Равно или не равно.
gt, gte, lt, lte Сравнение чисел.
in Значение входит в указанный массив.
contains Строка содержит фрагмент или массив содержит значение.
exists Поле существует; для проверки отсутствия укажите value: false.

Путь может обращаться к event_type, actor_user_id, entity_type, entity_id, source_service или полям payload, например payload.priority_id.

Данные обработчика

Функция transform(input, context) получает конверт события целиком:

Поле Тип Описание
event_id UUID Уникальный идентификатор события и ключ защиты от дублей.
schema_version число Версия конверта. Сейчас используется 1.
event_type строка Имя события из каталога выше.
provider_id строка Идентификатор компании.
actor_user_id строка Пользователь, выполнивший действие. Для системного процесса может быть пустым.
source_service строка Сервис Synchra24, создавший событие.
entity_type строка Тип сущности: например task, timer или field_visit.
entity_id строка Идентификатор сущности.
occurred_at дата и время Момент события в UTC в формате ISO 8601.
correlation_id строка Идентификатор связанной цепочки операций.
causation_id строка Идентификатор события-причины, если оно есть.
depth число Глубина цепочки автоматизаций, от 0 до 4.
payload объект Данные конкретного события.
{
  "event_id": "2dc81c0d-7bf5-4cd6-8837-57ce93730c50",
  "schema_version": 1,
  "event_type": "employee.late",
  "provider_id": "company-id",
  "actor_user_id": "42",
  "source_service": "time_manager",
  "entity_type": "timer",
  "entity_id": "123",
  "occurred_at": "2026-10-04T08:15:00Z",
  "correlation_id": "2dc81c0d-7bf5-4cd6-8837-57ce93730c50",
  "depth": 0,
  "payload": {
    "user_id": "42",
    "late_minutes": 15
  }
}

event_id уникален и используется для защиты от повторной обработки. correlation_id связывает действия одной цепочки. Глубина цепочки ограничена пятью уровнями, чтобы автоматизации не могли создать бесконечный цикл.

В JavaScript поля читаются напрямую:

function transform(input, context) {
  return {
    eventId: input.event_id,
    companyId: input.provider_id,
    employeeId: input.actor_user_id,
    minutesLate: input.payload.late_minutes,
    receivedAt: context.started_at
  };
}

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

Доставка и защита от дублей

Доставка выполняется асинхронно. Пользовательский запрос не ждёт выполнения внешнего HTTP-вызова: созданная задача, остановленная смена или другое действие сохраняются независимо от результата автоматизации.

Для критичных событий задач, инцидентов, чек-листов и учёта времени событие записывается вместе с бизнес-изменением в транзакционную очередь. После восстановления временно недоступного транспорта оно будет отправлено повторно. Другие сервисы передают события через общую очередь сразу после успешной операции.

После принятия события очередью транспорт использует модель как минимум один раз: при сбое одно событие может быть доставлено повторно. Automation сохраняет event_id и не создаёт второй запуск той же автоматизации. Внешняя система также может хранить полученный event_id как ключ идемпотентности.

События разных действий могут прийти почти одновременно. Если порядок критичен, сравнивайте occurred_at и состояние сущности во внешней системе.

Совместимость

  • имя существующего события и смысл текущих полей не меняются без необходимости;
  • новые необязательные поля могут появляться в payload;
  • обработчик не должен завершаться ошибкой из-за неизвестного поля;
  • при создании новой несовместимой структуры будет увеличена schema_version;
  • даты передаются в UTC, если в описании поля не указано иное;
  • денежные значения передаются числом в валюте, используемой кассой компании.

Проверка и запуск

Проверочный запрос API может передать тестовые данные в поле event_payload; система покажет результат обработчика и логи, но не вызовет назначения. Если поле не передано, используется пустой объект. Для отладки используйте проверочный запуск с event_payload.

Один событийный запуск ограничен 60 секундами. Рабочая событийная автоматизация не имеет обычного ручного запуска: её запускает выбранное событие.

После реального события откройте историю автоматизации и проверьте:

  1. появился ли запуск с триггером event;
  2. совпал ли event_type;
  3. прошли ли условия;
  4. что записано во входных и выходных данных;
  5. какие сообщения вывел обработчик;
  6. какой ответ вернул внешний endpoint.

Если запуска нет, проверьте точное имя события, компанию, включённое состояние автоматизации и момент фактического бизнес-действия. Если в результате указано condition_not_matched, событие получено, но не прошло conditions.

Подробнее об отладке: Проверка и устранение ошибок. Правила хранения токенов: Секреты и безопасность.