Использование API для автоматизаций

Клиент trigger предоставляет методы для работы с автоматизациями.

Методы API для работы с автоматизациями включают:

Методы возвращают следующие данные об автоматизации:

  • id: идентификатор;

  • name: название;

  • created_at: дата создания;

  • created_by: пользователь, создавший автоматизацию;

  • description: описание (если указано);

  • expression: выражение, задающее условие запуска (если применимо);

  • integration_id: идентификатор интеграции;

  • job_tag: группа воркеров, на которых выполняется запуск (если указан);

  • job_timeout: таймаут воркеров (если применимо);

  • org_id: идентификатор организации;

  • overlap: поведение при уже выполняемом плейбуке или скрипте (если применимо):

    • allow_concurrent — разрешить параллельное выполнение;

    • skip_if_running — пропускать запуск, если плейбук или скрипт уже выполняется;

  • payload_id: идентификатор запускаемого плейбука или скрипта;

  • payload_args: аргументы плейбука или скрипта;

  • repeat_on_error: настройки повторного запуска скрипта при ошибке:

    • rate: количество повторов:

      • never — без повторов;

      • retries — повторять ограниченное число раз;

      • infinite — постоянно повторять;

    • retries: число повторов (если указано);

    • delay: интервал повторов;

  • status: статус:

    • enabled — включен;

    • disabled — выключен;

  • trigger_data: данные автоматизации;

  • type: тип триггера:

    • schedule — Расписание;

    • event — Событие;

    • webhook — Вебхук;

  • updated_at: время последнего обновления;

  • updated_by: пользователь, последним изменивший автоматизацию.

Создание автоматизаций

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

Создание автоматизации любого типа (create)

Метод используется для создания автоматизации с триггером любого типа. Тип и настройки запуска задаются с помощью параметров.

Синтаксис TypeScript
create({
  description: <description>, // string | undefined
  expression: <expression>,
  integrationId: <integration_id>, // string
  jobTag: <job_tag>, // string | undefined
  jobTimeout <job_timeout>, // number | undefined
  name: <name>, // string
  orgId: <org_id>, // string
  overlap: {
    policy: <overlap_policy> // 'allow_concurrent' | 'skip_if_running'
  }
  payloadArgs: <payload_args>, // string | undefined
  payloadId: <payload_id>, // string
  repeatOnError: {
    delay: {
      unit: <unit>, // Enum
      value: <value> // number
    }
    rate: <repetition_rate>, // Enum
    retries: <retries> // number | undefined
  }
  status: <status>, // 'enabled' | 'disabled'
  triggerData: {
    elements: <trigger_data> // Map<string, string>
  }
})
Синтаксис Python
create(
    description=<description>, # str | None
    expression=<expression>,
    integration_id=<integration_id>, # str
    job_tag=<job_tag>, # str | None
    job_timeout=<job_timeout>, # int | None
    name=<name>, # str
    org_id=<org_id>, # str
    overlap=Overlap(
        policy=<overlap_policy> # 'allow_concurrent' | 'skip_if_running'
    )
    payload_args=<payload_args>, # str | None
    payload_id=<payload_id>, # str
    repeat_on_error=RepeatOnError(
        delay=Delay(<unit>, <value>)
        rate=<repetition_rate>, # Enum
        retries=<retries> # int | None
    )
    status=<status>, # 'enabled' | 'disabled'
    trigger_data=TriggerData(
        elements=<trigger_data> # dict[str, str]
    )
)

Параметры метода включают в себя:

  • <description> (необязательный): описание автоматизации (строка);

  • <expression>: выражение, задающее условие запуска;

  • <integration_id>: идентификатор интеграции (строка);

  • <job_tag> (необязательный): группа воркеров, на которых выполняется запуск (строка);

  • <job_timeout> (необязательный): таймаут воркеров (число);

  • <name>: название (строка);

  • <org_id: идентификатор организации (строка);

  • <overlap> (необязательный): поведение при уже выполняемом плейбуке или скрипте:

    • 'allow_concurrent' — разрешить параллельное выполнение;

    • 'skip_if_running' — пропускать запуск, если плейбук или скрипт уже выполняется;

  • <payload_args> (необязательный): аргументы плейбука или скрипта (строка);

  • <payload_id>: идентификатор запускаемого плейбука или скрипта (строка);

  • настройки повторного запуска скрипта при ошибке (необязательный блок):

    • <rate>: количество повторов:

      • never — без повторов;

      • retries — повторять ограниченное число раз;

      • infinite — постоянно повторять;

    • <retries> (необязательный): число повторов (число);

    • интервал повторов:

      • <unit>: единицы времени: 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year';

      • <value>: число единиц времени (число);

  • <status>: статус:

    • enabled — включен;

    • disabled — выключен;

  • <trigger_data>: данные автоматизации (коллекция "ключ — значение").

Выражение, задающее условие срабатывания триггера

  • TypeScript

  • Python

  • Тип Расписание:

    {
      Schedule: {
        cron: <cron>, // string
        time_period: {
          from: <from>, // Date | undefined
          to: <to> // Date | undefined
        },
        timezone: <timezone> // string | undefined
      }
    }
  • Тип Событие:

    {
      Event: {
        event: <event>, // string
        module: <module>, // string
        query: <query> // string | undefined
      }
    }
  • Тип Вебхук:

    {
      Webhook: {
        bot_id: <bot_id>, // string
        webhook_id: <webhook_id> // string
      }
    }
  • Тип Расписание:

    ScheduleExpression(
        cron=<cron>, # str
        time_period=TimePeriodOptional(
        from=<from>, # datetime | None
        to=<to> # datetime | None
        ),
        timezone=<timezone> # str | None
    }
  • Тип Событие:

    EventExpression(
      event=<event>, # str
      module=<module>, # str
      query=<query> # str | None
    }
  • Тип Вебхук:

    WebhookExpression(
        bot_id=<bot_id>, # str
        webhook_id=<webhook_id> # str
    )

Здесь:

  • <cron>: выражение, использующее синтаксис cron и задающее время запуска автоматизации по расписанию (строка).

    Формат выражения cron:

    <seconds> <minutes> <hours> <day_of_month> <month> <day_of_week>

    Здесь:

    • <seconds> — секунды от 0 до 59;

    • <minutes> — минуты от 0 до 59;

    • <hours> — часы от 0 до 23;

    • <day_of_month> — числа месяца от 1 до 31;

    • <month> — номера месяцев от 1 до 12;

    • <day_of_week> — номера дней недели от 0 до 6, где 0 — воскресенье.

    Используются следующие символы:

    • * — любое допустимое значение поля;

    • ? — любое допустимое значение числа месяца или дня недели;

    • , — разделитель в списке значений;

    • - — диапазон значений;

    • / — значение шага.

    Примеры настроек cron-выражения
    • Запускать каждые 20 минут с 8 до 18 часов с понедельника по пятницу:

      0 */20 8-18 * * 1-5

    • Запускать 1 января, 1 апреля, 1 июля и 1 октября в 2:00:00:

      0 0 2 1 1,4,7,10 *

    • Запускать в 12:00:00 ежедневно:

      0 0 12 * * ?

  • <from> (необязательный): начало действия расписания (дата и время);

  • <to> (необязательный): окончание действия расписания (дата и время);

  • <timezone> (необязательный): часовой пояс, в котором настраивается расписание (строка);

  • <event>: название события, при наступлении которого будет запущен скрипт или плейбук (строка);

  • <module>: название модуля, создающего событие (строка);

  • <query> (необязательный): запрос к объектам домена, в котором должно наступить событие (строка);

  • <bot_id>: идентификатор системного бота (строка);

  • <webhook_id>: идентификатор вебхука (строка).

Примеры создания автоматизации

Пример скрипта с create в TypeScript (Расписание)
id: create_trigger_schedule_ts
name: Создание автоматизации типа Расписание
version: 0.0.1
type: script
source: !deno |
  import * as sdk from '@playbooks/sdk'

  const ORG_ID = "00000000-0000-0000-0000-000000000000";
  const INTEGRATION_ID = "testIntegrationSDK";
  const PAYLOAD_ID = "519d8b3f-91df-4be0-8898-515bc52b914c";

  export async function main() {
    try {
      const scheduleTrigger = await sdk.trigger.create({
        name: "scheduleTriggerSDK",
        orgId: ORG_ID,
        integrationId: INTEGRATION_ID,
        payloadId: PAYLOAD_ID,
        jobTag: "all",
        status: "enabled",
        expression: {
          Schedule: {
            cron: "* */5 * * * *",
            timezone: "UTC"
          }
        }
      });

      console.log("ID:", scheduleTrigger.id);
      console.log("   Название:", scheduleTrigger.name);
      console.log("   Тип:", scheduleTrigger.type);
      console.log("   Статус:", scheduleTrigger.status);
    } catch (e) {
      console.log('Ошибка при создании автоматизации:', e);
      if (e instanceof Error) {
        console.log('Сообщение ошибки:', e.message);
        console.log('Стек вызовов:', e.stack);
      } else {
        console.log('Полная ошибка:', JSON.stringify(e, null, 2));
      }
    }
  }
Пример скрипта с create в Python (Расписание)
id: create_trigger_schedule_py
name: Создание автоматизации с триггером типа Расписание
version: 0.0.1
type: script
source: !py |

    from playbooks.trigger import TriggerClient, Status, ScheduleExpression

    from datetime import timezone

    def main():

        ORG_ID = '00000000-0000-0000-0000-000000000000'
        INTEGRATION_ID = 'testIntegrationSDK'
        PAYLOAD_ID = '519d8b3f-91df-4be0-8898-515bc52b914c'

        try:
            schedule_trigger = client.create(
                name='scheduleTriggerSDK',
                payload_id=PAYLOAD_ID,
                org_id=ORG_ID,
                job_tag='all',
                status=Status.Enabled,
                integration_id=INTEGRATION_ID,
                expression=ScheduleExpression(cron='0 */5 * * * *', timezone='UTC')
            )
            print(f"ID: {schedule_trigger.id}")
            print(f"  Название: {schedule_trigger.name}")
            print(f"  Тип: {schedule_trigger.type}")
            print(f"  Статус: {schedule_trigger.status}")

        except Exception as e:
            print(f"Ошибка при создании автоматизации: {e}")
Пример скрипта с create в TypeScript (Событие)
id: create_trigger_event_ts
name: Создание автоматизации с триггером типа Событие
version: 0.0.1
type: script
source: !deno |
  import * as sdk from '@playbooks/sdk'

  const ORG_ID = "00000000-0000-0000-0000-000000000000";
  const INTEGRATION_ID = "testIntegrationSDK";
  const PAYLOAD_ID = "519d8b3f-91df-4be0-8898-515bc52b914c";

  export async function main() {
    try {
      const eventDomainTrigger = await sdk.trigger.create({
        name: "eventTriggerSDK",
        orgId: ORG_ID,
        integrationId: INTEGRATION_ID,
        payloadId: PAYLOAD_ID,
        jobTag: "all",
        status: "enabled",
        expression: {
          Event: {
            module: "Example.Module",
            event: "object.delete.example.com.allAttributes",
            query: ""
          }
        }
      });

      console.log("ID:", eventDomainTrigger.id);
      console.log("  Название:", eventDomainTrigger.name);
      console.log("  Тип:", eventDomainTrigger.type);
      console.log("  Статус:", eventDomainTrigger.status);

    } catch (e) {
      console.log('Ошибка при создании автоматизаций:', e);
      if (e instanceof Error) {
        console.log('Сообщение ошибки:', e.message);
        console.log('Стек вызовов:', e.stack);
      } else {
        console.log('Полная ошибка:', JSON.stringify(e, null, 2));
      }
    }
  }
Пример скрипта с create в Python (Событие)
id: create_trigger_event_py
name: Создание автоматизации с триггером типа Событие
version: 0.0.1
type: script
source: !py |

    from playbooks.trigger import TriggerClient, Status, EventExpression

    def main():

        ORG_ID = '00000000-0000-0000-0000-000000000000'
        INTEGRATION_ID = 'testIntegrationSDK'
        PAYLOAD_ID = '519d8b3f-91df-4be0-8898-515bc52b914c'

        try:
            event_trigger = client.create(
                name='eventTriggerSDK',
                description='Event trigger created via create()',
                payload_id=PAYLOAD_ID,
                org_id=ORG_ID,
                job_tag='all',
                status=Status.Enabled,
                integration_id=INTEGRATION_ID,
                expression=EventExpression(module='Example.Module', event='object.delete.example.com.allAttributes', query='')
            )
            print(f"ID: {schedule_trigger.id}")
            print(f"  Название: {schedule_trigger.name}")
            print(f"  Тип: {schedule_trigger.type}")
            print(f"  Статус: {schedule_trigger.status}")

        except Exception as e:
            print(f"Ошибка при создании автоматизации: {e}")
Пример скрипта с create в TypeScript (Вебхук)
id: create_trigger_webhook_ts
name: Создание автоматизации с триггером типа Вебхук
version: 0.0.1
type: script
source: !deno |
  import * as sdk from '@playbooks/sdk'

  const ORG_ID = "00000000-0000-0000-0000-000000000000";
  const INTEGRATION_ID = "testIntegrationSDK";
  const PAYLOAD_ID = "519d8b3f-91df-4be0-8898-515bc52b914c";
  const BOT_ID = 'e277c0b1-c7e5-4713-87a7-023304c5ae2a';
  const WEBHOOK_ID = 'r1a9b8ef';

  export async function main() {
    try {
      const webhookTrigger = await sdk.trigger.create({
        name: "webhookTriggerSDK",
        orgId: ORG_ID,
        integrationId: INTEGRATION_ID,
        payloadId: PAYLOAD_ID,
        jobTag: "all",
        status: "enabled",
        expression: {
          Webhook: {
            bot_id: BOT_ID,
            webhook_id: WEBHOOK_ID
          }
        }
      });

      console.log("ID:", webhookTrigger.id);
      console.log("   Название:", webhookTrigger.name);
      console.log("   Тип:", webhookTrigger.type);
      console.log("   Статус:", webhookTrigger.status);

    } catch (e) {
      console.log('Ошибка при создании автоматизаций:', e);
      if (e instanceof Error) {
        console.log('Сообщение ошибки:', e.message);
        console.log('Стек вызовов:', e.stack);
      } else {
        console.log('Полная ошибка:', JSON.stringify(e, null, 2));
      }
    }
  }
Пример скрипта с create в Python (Вебхук)
id: create_trigger_webhook_py
name: Создание автоматизации с триггером типа Вебхук
version: 0.0.1
type: script
source: !py |

    from playbooks.trigger import TriggerClient, Status, WebhookExpression

    def main():

        ORG_ID = '00000000-0000-0000-0000-000000000000'
        INTEGRATION_ID = 'testIntegrationSDK'
        PAYLOAD_ID = '519d8b3f-91df-4be0-8898-515bc52b914c'
        BOT_ID = 'e277c0b1-c7e5-4713-87a7-023304c5ae2a';
        WEBHOOK_ID = 'r1a9b8ef';

        try:
            webhook_trigger = client.create(
                name='webhookTriggerSDK',
                payload_id=PAYLOAD_ID,
                org_id=ORG_ID,
                job_tag='all',
                status=Status.Enabled,
                integration_id=INTEGRATION_ID,
                expression=WebhookExpression(webhook_id=WEBHOOK_ID, bot_id=BOT_ID)
            )
            print(f"ID: {schedule_trigger.id}")
            print(f"  Название: {schedule_trigger.name}")
            print(f"  Тип: {schedule_trigger.type}")
            print(f"  Статус: {schedule_trigger.status}")

        except Exception as e:
            print(f"Ошибка при создании автоматизации: {e}")

Создание автоматизации с триггером типа Расписание (schedule)

Метод используется для создания автоматизации с триггером типа Расписание. Настройки запуска задаются с помощью параметров.

Синтаксис TypeScript
schedule({
  cron: <cron>, // string
  description: <description>, // string | undefined
  from: <from>, // Date | undefined
  integrationId: <integration_id>, // string
  jobTag: <job_tag>, // string | undefined
  name: <name>, // string
  orgId: <org_id>, // string
  payloadArgs: <payload_args>, // string | undefined
  payloadId: <payload_id>, // string
  status: <status>, // 'enabled' | 'disabled'
  timezone: <timezone>, // string | undefined
  to: <to> // Date | undefined
})
Синтаксис Python
schedule(
    cron=<cron>, # str
    description=<description>, # str | None
    from=<from>, # datetime | None
    integration_id=<integration_id>, # str
    job_tag=<job_tag>, # str | None
    name=<name>, # str
    org_id=<org_id>, # str
    payload_args=<payload_args>, # str | None
    payload_id=<payload_id>, # str
    status=<status>, # 'enabled' | 'disabled'
    timezone=<timezone>, # str | None
    to=<to> # datetime | None
)

Параметры метода включают в себя:

  • <cron>: выражение, использующее синтаксис cron и задающее время запуска автоматизации по расписанию (строка).

    Формат выражения cron:

    <seconds> <minutes> <hours> <day_of_month> <month> <day_of_week>

    Здесь:

    • <seconds> — секунды от 0 до 59;

    • <minutes> — минуты от 0 до 59;

    • <hours> — часы от 0 до 23;

    • <day_of_month> — числа месяца от 1 до 31;

    • <month> — номера месяцев от 1 до 12;

    • <day_of_week> — номера дней недели от 0 до 6, где 0 — воскресенье.

    Используются следующие символы:

    • * — любое допустимое значение поля;

    • ? — любое допустимое значение числа месяца или дня недели;

    • , — разделитель в списке значений;

    • - — диапазон значений;

    • / — значение шага.

    Примеры настроек cron-выражения
    • Запускать каждые 20 минут с 8 до 18 часов с понедельника по пятницу:

      0 */20 8-18 * * 1-5

    • Запускать 1 января, 1 апреля, 1 июля и 1 октября в 2:00:00:

      0 0 2 1 1,4,7,10 *

    • Запускать в 12:00:00 ежедневно:

      0 0 12 * * ?

  • <description> (необязательный): описание автоматизации (строка);

  • <from> (необязательный): начало действия расписания (дата и время);

  • <integration_id>: идентификатор интеграции (строка);

  • <job_tag> (необязательный): группа воркеров, на которых выполняется запуск (строка);

  • <name>: название (строка);

  • <org_id: идентификатор организации (строка);

  • <payload_args> (необязательный): аргументы плейбука или скрипта (строка);

  • <payload_id>: идентификатор запускаемого плейбука или скрипта (строка);

  • <status>: статус:

    • enabled — включен;

    • disabled — выключен;

  • <timezone> (необязательный): часовой пояс, в котором настраивается расписание (строка);

  • <to> (необязательный): окончание действия расписания (дата и время).

Примеры создания автоматизации с триггером типа Расписание

Пример скрипта с schedule в TypeScript
id: schedule_trigger_ts
name: Создание автоматизации с триггером типа Расписание
version: 0.0.1
type: script
source: !deno |
  import * as sdk from '@playbooks/sdk'

  const ORG_ID = "00000000-0000-0000-0000-000000000000";
  const INTEGRATION_ID = "testIntegrationSDK";
  const PAYLOAD_ID = "519d8b3f-91df-4be0-8898-515bc52b914c";

  export async function main() {
    try {
      const scheduleTrigger = await sdk.trigger.schedule({
        name: "scheduleTriggerSDK",
        orgId: ORG_ID,
        integrationId: INTEGRATION_ID,
        payloadId: PAYLOAD_ID,
        jobTag: "all",
        cron: "* */5 * * * *",
      });

      console.log("ID:", scheduleTrigger.id);
      console.log("   Название:", scheduleTrigger.name);
      console.log("   Тип:", scheduleTrigger.type);
      console.log("   Статус:", scheduleTrigger.status);
    } catch (e) {
      console.log('Ошибка при создании автоматизации:', e);
      if (e instanceof Error) {
        console.log('Сообщение ошибки:', e.message);
        console.log('Стек вызовов:', e.stack);
      } else {
        console.log('Полная ошибка:', JSON.stringify(e, null, 2));
      }
    }
  }
Пример скрипта с schedule в Python
id: schedule_trigger_py
name: Создание автоматизации с триггером типа Расписание
version: 0.0.1
type: script
source: !py |

    from playbooks.trigger import TriggerClient, Status

    from datetime import timezone

    def main():

        ORG_ID = '00000000-0000-0000-0000-000000000000'
        INTEGRATION_ID = 'testIntegrationSDK'
        PAYLOAD_ID = '519d8b3f-91df-4be0-8898-515bc52b914c'

        try:
            schedule_trigger = client.schedule(
                name='scheduleTriggerSDK',
                payload_id=PAYLOAD_ID,
                org_id=ORG_ID,
                job_tag='all',
                status=Status.Enabled,
                integration_id=INTEGRATION_ID,
                cron='0 */5 * * * *'
            )
            print(f"ID: {schedule_trigger.id}")
            print(f"  Название: {schedule_trigger.name}")
            print(f"  Тип: {schedule_trigger.type}")
            print(f"  Статус: {schedule_trigger.status}")

        except Exception as e:
            print(f"Ошибка при создании автоматизации: {e}")

Создание автоматизации с триггером типа Событие (event)

Метод используется для создания автоматизации с триггером типа Событие. Настройки запуска задаются с помощью параметров.

Синтаксис TypeScript
event({
  description: <description>, // string | undefined
  event: <event>, // string
  integrationId: <integration_id>, // string
  jobTag: <job_tag>, // string | undefined
  module: <module>, // string
  name: <name>, // string
  orgId: <org_id>, // string
  payloadArgs: <payload_args>, // string | undefined
  payloadId: <payload_id>, // string
  query: <query>, // string | undefined
  status: <status> // 'enabled' | 'disabled'
})
Синтаксис Python
event(
    description=<description>, # str | None
    event=<event>, # str
    integration_id=<integration_id>, # str
    job_tag=<job_tag>, # str | None
    module=<module>, # str
    name=<name>, # str
    org_id=<org_id>, # str
    payload_args=<payload_args>, # str | None
    payload_id=<payload_id>, # str
    query=<query>, # str | None
    status=<status> # 'enabled' | 'disabled'
)

Параметры метода включают в себя:

  • <description> (необязательный): описание автоматизации (строка);

  • <event>: название события, при наступлении которого будет запущен скрипт или плейбук (строка);

  • <integration_id>: идентификатор интеграции (строка);

  • <job_tag> (необязательный): группа воркеров, на которых выполняется запуск (строка);

  • <job_timeout> (необязательный): таймаут воркеров (число);

  • <module>: название модуля, создающего событие (строка);

  • <name>: название (строка);

  • <org_id: идентификатор организации (строка);

  • <payload_args> (необязательный): аргументы плейбука или скрипта (строка);

  • <payload_id>: идентификатор запускаемого плейбука или скрипта (строка);

  • <query> (необязательный): запрос к объектам домена, в котором должно наступить событие (строка);

  • <status>: статус:

    • enabled — включен;

    • disabled — выключен.

Примеры создания автоматизации с триггером типа Событие

Пример скрипта с event в TypeScript
id: event_trigger_ts
name: Создание автоматизации с триггером типа Событие
version: 0.0.1
type: script
source: !deno |
  import * as sdk from '@playbooks/sdk'

  const ORG_ID = "00000000-0000-0000-0000-000000000000";
  const INTEGRATION_ID = "testIntegrationSDK";
  const PAYLOAD_ID = "519d8b3f-91df-4be0-8898-515bc52b914c";

  export async function main() {
    try {
      const eventDomainTrigger = await sdk.trigger.event({
        name: "eventTriggerSDK",
        orgId: ORG_ID,
        integrationId: INTEGRATION_ID,
        payloadId: PAYLOAD_ID,
        jobTag: "all",
        status: "enabled",
        module: "Example.Module",
        event: "object.delete.example.com.allAttributes",
        query: ""
      });

      console.log("ID:", eventDomainTrigger.id);
      console.log("  Название:", eventDomainTrigger.name);
      console.log("  Тип:", eventDomainTrigger.type);
      console.log("  Статус:", eventDomainTrigger.status);

    } catch (e) {
      console.log('Ошибка при создании автоматизаций:', e);
      if (e instanceof Error) {
        console.log('Сообщение ошибки:', e.message);
        console.log('Стек вызовов:', e.stack);
      } else {
        console.log('Полная ошибка:', JSON.stringify(e, null, 2));
      }
    }
  }
Пример скрипта с event в Python
id: event_trigger_py
name: Создание автоматизации с триггером типа Событие
version: 0.0.1
type: script
source: !py |

    from playbooks.trigger import TriggerClient, Status, EventExpression

    def main():

        ORG_ID = '00000000-0000-0000-0000-000000000000'
        INTEGRATION_ID = 'testIntegrationSDK'
        PAYLOAD_ID = '519d8b3f-91df-4be0-8898-515bc52b914c'

        try:
            event_trigger = client.event(
                name='eventTriggerSDK',
                description='Event trigger created via create()',
                payload_id=PAYLOAD_ID,
                org_id=ORG_ID,
                job_tag='all',
                status=Status.Enabled,
                integration_id=INTEGRATION_ID,
                module='Example.Module',
                event='object.delete.example.com.allAttributes',
                query=''
            )
            print(f"ID: {schedule_trigger.id}")
            print(f"  Название: {schedule_trigger.name}")
            print(f"  Тип: {schedule_trigger.type}")
            print(f"  Статус: {schedule_trigger.status}")

        except Exception as e:
            print(f"Ошибка при создании автоматизации: {e}")

Создание автоматизации с триггером типа Вебхук (webhook)

Метод используется для создания автоматизации с триггером типа Вебхук. Настройки запуска задаются с помощью параметров.

Синтаксис TypeScript
webhook({
  botId: <bot_id>, // string
  description: <description>, // string | undefined
  integrationId: <integration_id>, // string
  jobTag: <job_tag>, // string | undefined
  name: <name>, // string
  orgId: <org_id>, // string
  payloadArgs: <payload_args>, // string | undefined
  payloadId: <payload_id>, // string
  status: <status>, // 'enabled' | 'disabled'
  webhookId: <webhook_id> // string
})
Синтаксис Python
webhook(
    bot_id=<bot_id>, # str
    description=<description>, # str | None
    integration_id=<integration_id>, # str
    job_tag=<job_tag>, # str | None
    name=<name>, # str
    org_id=<org_id>, # str
    payload_args=<payload_args>, # str | None
    payload_id=<payload_id>, # str
    status=<status>, # 'enabled' | 'disabled'
    webhook_id=<webhook_id> # str
)

Параметры метода включают в себя: * <bot_id>: идентификатор системного бота (строка); * <description> (необязательный): описание автоматизации (строка); * <integration_id>: идентификатор интеграции (строка); * <job_tag> (необязательный): группа воркеров, на которых выполняется запуск (строка); * <name>: название (строка); * <org_id: идентификатор организации (строка); * <payload_args> (необязательный): аргументы плейбука или скрипта (строка); * <payload_id>: идентификатор запускаемого плейбука или скрипта (строка); * <status>: статус: enabled — включен; disabled — выключен; * <webhook_id>: идентификатор вебхука (строка).

Примеры создания автоматизации с триггером типа Вебхук

Пример скрипта с webhook в TypeScript
id: webhook_trigger_ts
name: Создание автоматизации с триггером типа Вебхук
version: 0.0.1
type: script
source: !deno |
  import * as sdk from '@playbooks/sdk'

  const ORG_ID = "00000000-0000-0000-0000-000000000000";
  const INTEGRATION_ID = "testIntegrationSDK";
  const PAYLOAD_ID = "519d8b3f-91df-4be0-8898-515bc52b914c";
  const BOT_ID = 'e277c0b1-c7e5-4713-87a7-023304c5ae2a';
  const WEBHOOK_ID = 'r1a9b8ef';

  export async function main() {
    try {
      const webhookTrigger = await sdk.trigger.webhook({
        name: "webhookTriggerSDK",
        orgId: ORG_ID,
        integrationId: INTEGRATION_ID,
        payloadId: PAYLOAD_ID,
        jobTag: "all",
        status: "enabled",
        botId: BOT_ID,
        webhookId: WEBHOOK_ID
      });

      console.log("ID:", webhookTrigger.id);
      console.log("   Название:", webhookTrigger.name);
      console.log("   Тип:", webhookTrigger.type);
      console.log("   Статус:", webhookTrigger.status);

    } catch (e) {
      console.log('Ошибка при создании автоматизаций:', e);
      if (e instanceof Error) {
        console.log('Сообщение ошибки:', e.message);
        console.log('Стек вызовов:', e.stack);
      } else {
        console.log('Полная ошибка:', JSON.stringify(e, null, 2));
      }
    }
  }
Пример скрипта с webhook в Python
id: webhook_trigger_py
name: Создание автоматизации с триггером типа Вебхук
version: 0.0.1
type: script
source: !py |

    from playbooks.trigger import TriggerClient, Status, WebhookExpression

    def main():

        ORG_ID = '00000000-0000-0000-0000-000000000000'
        INTEGRATION_ID = 'testIntegrationSDK'
        PAYLOAD_ID = '519d8b3f-91df-4be0-8898-515bc52b914c'
        BOT_ID = 'e277c0b1-c7e5-4713-87a7-023304c5ae2a';
        WEBHOOK_ID = 'r1a9b8ef';

        try:
            webhook_trigger = client.webhook(
                name='webhookTriggerSDK',
                payload_id=PAYLOAD_ID,
                org_id=ORG_ID,
                job_tag='all',
                status=Status.Enabled,
                integration_id=INTEGRATION_ID,
                webhook_id=WEBHOOK_ID,
                bot_id=BOT_ID
            )
            print(f"ID: {schedule_trigger.id}")
            print(f"  Название: {schedule_trigger.name}")
            print(f"  Тип: {schedule_trigger.type}")
            print(f"  Статус: {schedule_trigger.status}")

        except Exception as e:
            print(f"Ошибка при создании автоматизации: {e}")

Получение данных об автоматизации

Получение данных об автоматизации (get)

Метод используется для получения определенной автоматизации.

Синтаксис get в TypeScript
get({
  id: <trigger_id> // string
})
Синтаксис get в Python
get(
    id=<trigger_id> # str
)

В методе используется параметр <trigger_id> — идентификатор автоматизации (строка).

Примеры получения данных об автоматизации

Пример скрипта с get в TypeScript
id: get_automation_ts
name: Получение информации об автоматизации
version: 0.0.1
type: script
source: !deno |
  import * as sdk from '@playbooks/sdk'

  export async function main() {
    try {
      const trigger_id = "6ed20147-f418-48d5-9068-bd3a2e9a550d";

      // Получение автоматизации.
      const trigger = await sdk.trigger.get({ id: trigger_id });

      console.log("Автоматизация получена:");
      console.log("ID:", trigger.id);
      console.log("Название:", trigger.name);
      console.log("Тип:", trigger.type);
      console.log("Статус:", trigger.status);
      console.log("Описание:", trigger.description);
      console.log("Создана:", trigger.created_at);
      console.log("Обновлена:", trigger.updated_at);
      console.log("Payload ID:", trigger.payload_id);

      console.log("Структура существующей автоматизации:");
      console.log(JSON.stringify(trigger, null, 2));

      if (trigger.expression) {
        console.log("Expression структура:");
        console.log(JSON.stringify(trigger.expression, null, 2));
        console.log("Тип expression:", typeof trigger.expression);
        console.log("Ключи expression:", Object.keys(trigger.expression));
      }
    } catch (e) {
      console.log('Ошибка:', e);
    }
  }
Пример скрипта с get в Python
id: get_automation_py
name: Получение информации об автоматизации
version: 0.0.1
type: script
source: !py |
    from playbooks.trigger import TriggerClient

    def main():

        try:
            client = TriggerClient.initialize()

            trigger_id = "6ed20147-f418-48d5-9068-bd3a2e9a550d"

            trigger = client.get(id=trigger_id)

            print("Автоматизация получена:")
            print(f"ID: {trigger.id}")
            print(f"Название: {trigger.name}")
            print(f"Тип: {trigger.typ}")
            print(f"Статус: {trigger.status}")
            print(f"Описание: {trigger.description}")
            print(f"Создана: {trigger.created_at}")
            print(f"Обновлена: {trigger.updated_at}");
            print(f"Payload ID: {trigger.payload_id}");

            # Дополнительная информация из expression.
            if hasattr(trigger, 'expression') and trigger.expression:
                expr_type = type(trigger.expression).__name__
                print(f"Expression: {expr_type}")

                # Для триггера по расписанию выведем cron из expression.
                if 'Schedule' in expr_type and hasattr(trigger.expression, 'cron'):
                    print(f"Cron: {trigger.expression.cron}")

        except Exception as error:
                    print('Ошибка', error)

Получение списка автоматизаций (list)

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

Синтаксис list в TypeScript
list({
  filter: {
    event: <event>, // string | undefined
    query: <query>, // string | undefined
    status: <status>, // string | undefined
    types: <types> // string[] | undefined
  },
  sorting: {
    order: <order_dir>, // 'asc' | 'desc'
    orderBy: <order_rule>, // string
  },
  pagination: {
    limit: <limit>, // number
    offset: <offset>, // number | undefined
  }
})
Синтаксис list в Python
list(
  filter=Filter(
      event=<event>, # str | None
      query=<query>, # str | None
      status=<status>, # str | None
      types=<types> # List[str] | None
  ),
  sorting=Sorting(
      Order.<order_dir>, # Desc | Asc
      <order_rule> # str
  ),
  pagination=Pagination(
      <limit>, # int
      <offset> # int | None
  ),
  ref_fields=<reference_fields>, # List[str] | None
)

Параметры метода включают в себя:

  • настройки фильтрации списка (необязательный блок):

    • <query> (необязательный): запрос для поиска (строка);

    • <status> (необязательный): статус автоматизации:

      • 'enabled' — включен;

      • 'disabled' — выключен;

    • <types>: тип триггера:

      • 'schedule — Расписание;

      • 'event' — Событие;

      • 'webhook' — Вебхук;

    • <event> (необязательный): тип события триггера:

      • 'cms_entity_object_create': создание объекта;

      • 'cms_entity_object_update': изменение объекта;

      • 'cms_entity_object_delete': удаление объекта;

      • 'custom': пользовательский;

  • настройки сортировки списка (необязательный блок):

    • <order_dir>: порядок сортировки ('asc'/Asc — по возрастанию или 'desc'/Desc — по убыванию);

    • <order_rule>: идентификатор одного из правил сортировки, определенного в поле sorting сущности (строка);

  • ограничение количества выводимых результатов (необязательный блок):

    • <limit> (обязателен, если ограничение указано): максимальное количество записей в ответе (число);

    • <offset> (необязательный): порядковый номер первой записи, начиная с которой выводится ответ (число).

Примеры получения списка автоматизаций

Пример скрипта с list в TypeScript
id: list_id: get_automations_ts
name: Получение списка автоматизаций
version: 0.0.1
type: script
source: !deno |

  import * as sdk from "@playbooks/sdk"

  export async function main() {
    try {
      // Получаем список автоматизаций с ограничением количества и сортировкой.
      const triggers = await sdk.trigger.list({
        filter: {},
        pagination: {
          limit: 50,
          offset: 0
        },
        sorting: {
          order: "desc",
          orderBy: "created_at"
        }
      });

      console.log(`Найдено автоматизаций: ${triggers.length}`);

      triggers.forEach((trigger, index) => {
        console.log(`\n--- Автоматизация ${index + 1} ---`);
        console.log("ID:", trigger.id);
        console.log("Название:", trigger.name ?? "Без имени");
        console.log("Тип:", trigger.type);
        console.log("Статус:", trigger.status);
        console.log("Создан:", trigger.created_at);
      });

    } catch (e) {
      console.log('Ошибка:', e);
    }
  }
Пример скрипта с list в Python
id: list_automations_py
name: Получение списка автоматизаций
version: 0.0.1
type: script
source: !py |

    from playbooks.trigger import TriggerClient

    def main():
        try:
            client = TriggerClient.initialize()
            triggers = client.list(
                filter=Filter(),
                pagination=Pagination(50, 0)
                sorting=Sorting(Order.Desc, 'created_at')

            print(f"Найдено автоматизаций: {len(triggers)}")

            for idx, trigger in enumerate(triggers, start=1):
                print(f"\n--- Автоматизация {idx} ---")
                print("ID:", getattr(trigger, "id", "N/A"))
                print("Имя:", getattr(trigger, "name", "Без имени"))
                print("Type:", getattr(trigger, "type", "N/A"))
                print("Status:", getattr(trigger, "status", "N/A"))
                print("Created:", getattr(trigger, "created_at", "N/A"))

        except Exception as e:
            print(f"Ошибка: {e}")

Обновление автоматизации (update)

Метод используется для изменения настроек автоматизации с сохранением ее идентификатора.

Синтаксис TypeScript
update({
  id: <trigger_id>, // string
  fields: {
    description: <description>, // string | undefined
    expression: <expression>,
    integrationId: <integration_id>, // string
    jobTag: <job_tag>, // string | undefined
    jobTimeout <job_timeout>, // number | undefined
    name: <name>, // string | undefined
    orgId: <org_id>, // string | undefined
    overlap: {
      policy: <overlap_policy> // 'allow_concurrent' | 'skip_if_running'
    }
    payloadArgs: <payload_args>, // string | undefined
    payloadId: <payload_id>, // string | undefined
    repeatOnError: {
      delay: {
        unit: <unit>, // Enum
        value: <value> // number
      }
      rate: <repetition_rate>, // Enum
      retries: <retries> // number | undefined
    }
    status: <status>, // 'enabled' | 'disabled' | undefined
    triggerData: {
      elements: <trigger_data> // Map<string, string>
    }
})
Синтаксис Python
update(
    id=<trigger_id>, # str
    fields=Fields(
        description=<description>, # str | None
        expression=<expression>,
        integration_id=<integration_id>, # str
        job_tag=<job_tag>, # str | None
        job_timeout=<job_timeout>, # int | None
        name=<name>, # str | None
        org_id=<org_id>, # str | None
        overlap=Overlap(
            policy=<overlap_policy> # 'allow_concurrent' | 'skip_if_running'
        )
        payload_args=<payload_args>, # str | None
        payload_id=<payload_id>, # str | None
        repeat_on_error=RepeatOnError(
            delay=Delay(<unit>, <value>)
            rate=<repetition_rate>, # Enum
            retries=<retries> # int | None
        )
        status=<status>, # 'enabled' | 'disabled' | None
        trigger_data=TriggerData(
            elements=<trigger_data> # dict[str, str]
        )
)

Параметры метода включают в себя:

  • <trigger_id>: идентификатор автоматизации (строка);

  • <description> (необязательный): описание автоматизации (строка);

  • <expression> (необязательный блок): выражение, задающее условие запуска;

  • <integration_id> (необязательный): идентификатор интеграции (строка);

  • <job_tag> (необязательный): группа воркеров, на которых выполняется запуск (строка);

  • <job_timeout> (необязательный): таймаут воркеров (число);

  • <name> (необязательный): название (строка);

  • <org_id (необязательный): идентификатор организации (строка);

  • <overlap> (необязательный): поведение при уже выполняемом плейбуке или скрипте:

    • 'allow_concurrent' — разрешить параллельное выполнение;

    • 'skip_if_running' — пропускать запуск, если плейбук или скрипт уже выполняется;

  • <payload_args> (необязательный): аргументы плейбука или скрипта (строка);

  • <payload_id> (необязательный): идентификатор запускаемого плейбука или скрипта (строка);

  • настройки повторного запуска скрипта при ошибке (необязательный блок):

    • <rate>: количество повторов:

      • never — без повторов;

      • retries — повторять ограниченное число раз;

      • infinite — постоянно повторять;

    • <retries> (необязательный): число повторов (число);

    • интервал повторов:

      • <unit>: единицы времени: 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year';

      • <value>: число единиц времени (число);

  • <status> (необязательный): статус:

    • enabled — включен;

    • disabled — выключен;

  • <trigger_data> (необязательный): данные автоматизации (коллекция "ключ — значение").

Примеры обновления автоматизации

Пример скрипта с update в TypeScript
id: update_automation_ts
name: Обновление автоматизации
version: 0.0.1
type: script
source: !deno |
  import * as sdk from '@playbooks/sdk'

    export async function main() {
    try {
      const existingTriggerId = "90b1950f-3db9-4b6e-940f-f3e1a667d06f";

      const currentTrigger = await sdk.trigger.get({
        id: existingTriggerId
      });

      console.log("Текущее состояние автоматизации:");
      console.log("ID:", currentTrigger.id);
      console.log("Название:", currentTrigger.name);
      console.log("Integration ID:", currentTrigger.integration_id);

      const updatedTrigger = await sdk.trigger.update({
        id: existingTriggerId,
        fields: {
          name: "Новое название",
          integrationId: "updateTriggerSDK"
        }
      });

      console.log("Автоматизация обновлена:");
      console.log("Название:", updatedTrigger.name);
      console.log("Integration ID:", updatedTrigger.integration_id);

    } catch (e) {
      console.log('Ошибка обновления:', e);
    }
  }
Пример скрипта с update в Python
id: update_automation_py
name: Обновление автоматизации
version: 0.0.1
type: script
source: !py |

    from playbooks.trigger import TriggerClient, Fields

    def main():

        try:
            client = TriggerClient.initialize()

            existing_trigger_id = "90b1950f-3db9-4b6e-940f-f3e1a667d06f"

            current_trigger = client.get(id=existing_trigger_id)

            print("Текущее состояние автоматизации:")
            print(f"ID: {current_trigger.id}")
            print(f"Название: {current_trigger.name}")
            print(f"Integration ID: {current_trigger.integration_id}")

            updated_trigger = client.update(
                id=existing_trigger_id,
                fields=Fields(
                    name="Новое название",
                    integration_id="updateTriggerSDK"
                )
            )

            print("Автоматизация обновлена")
            print(f"Название: {updated_trigger.name}")
            print(f"Integration ID: {updated_trigger.integration_id}")

            return {"status": "success"}

        except Exception as e:
            print(f"Ошибка: {e}")
            return {"status": "error", "error": str(e)}

Включение автоматизации (enable)

Метод используется для включения автоматизации.

Синтаксис enable в TypeScript
enable({
  id: <trigger_id> // string
})
Синтаксис enable в Python
enable(
    id=<trigger_id> # str
)

В методе используется параметр <trigger_id> — идентификатор автоматизации (строка).

Примеры включения автоматизации

Пример скрипта с get в TypeScript
id: enable_trigger_ts
name: Включение автоматизации
version: 0.0.1
type: script
source: !deno |
  import * as sdk from '@playbooks/sdk'

  export async function main() {
    try {
      const trigger_id = "6ed20147-f418-48d5-9068-bd3a2e9a550d";

      const trigger = await sdk.trigger.enable({ id: trigger_id });

    } catch (e) {
      console.log('Ошибка:', e);
    }
  }
Пример скрипта с enable в Python
id: enable_trigger_py
name: Включение автоматизации
version: 0.0.1
type: script
source: !py |
    from playbooks.trigger import TriggerClient

    def main():

        try:
            client = TriggerClient.initialize()

            trigger_id = "6ed20147-f418-48d5-9068-bd3a2e9a550d"

            trigger = client.enable(id=trigger_id)

        except Exception as error:
                    print('Ошибка', error)

Выключение автоматизации (disable)

Метод используется для выключения автоматизации.

Синтаксис disable в TypeScript
disable({
  id: <trigger_id> // string
})
Синтаксис enable в Python
disable(
    id=<trigger_id> # str
)

В методе используется параметр <trigger_id> — идентификатор автоматизации (строка).

Примеры выключения автоматизации

Пример скрипта с disable в TypeScript
id: disable_trigger_ts
name: Выключение автоматизации
version: 0.0.1
type: script
source: !deno |
  import * as sdk from '@playbooks/sdk'

  export async function main() {
    try {
      const trigger_id = "6ed20147-f418-48d5-9068-bd3a2e9a550d";

      const trigger = await sdk.trigger.disable({ id: trigger_id });

    } catch (e) {
      console.log('Ошибка:', e);
    }
  }
Пример скрипта с disable в Python
id: disable_trigger_py
name: Выключение автоматизации
version: 0.0.1
type: script
source: !py |
    from playbooks.trigger import TriggerClient

    def main():

        try:
            client = TriggerClient.initialize()

            trigger_id = "6ed20147-f418-48d5-9068-bd3a2e9a550d"

            trigger = client.disable(id=trigger_id)

        except Exception as error:
                    print('Ошибка', error)

Была ли полезна эта страница?

Обратная связь