Echolot
Руководства

Автоматизация сценарием

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

Сценарий связывает запросы и другие шаги на холсте, так что работа, которую вы делаете вручную, выполняется одним щелчком, по расписанию или когда её вызывает другая система. В этом руководстве вы построите Orders to ship: он входит в демо-магазин, получает заказы Хайди и отправляет уведомление, если какой-то заказ оплачен, но ещё не отправлен.

  • Время: 20 минут.
  • Вам понадобится: рабочее пространство Alpenglow с выбранным Без окружения. Его сценарий Morning stock check — готовый пример такой же формы.
  • Вы узнаете: про блоки и связи, блоки «Если» и «Уведомить», журнал запуска, расписания, вебхуки и echolot flow run.

1. Создайте сценарий

  1. Переключитесь на Сценарии (⌘5).
  2. Откройте меню + боковой панели (Новый сценарий) и выберите Пустой сценарий. Откроется сценарий Новый сценарий с блоком Старт, связанным с блоком Результат.
  3. Щёлкните пустое место холста, чтобы ни один блок не был выбран. В инспекторе задайте Имя Orders to ship и Описание Says when an order is paid but not shipped.

Пока сценарий открыт, в боковой панели перечислены Запросы рабочего пространства, которые можно перетащить на холст. Раздел Из шаблона в меню + вместо этого начинает с готового сценария, например Постраничный экспорт; см. шаблоны.

2. Добавьте запросы

  1. Наведите указатель на связь между Старт и Результат и нажмите её кнопку Разорвать эту связь.
  2. Перетащите Auth › Sign in из боковой панели на холст. Он превратится в блок Запрос с названием Sign in, входом send и выходами success и fail.
  3. Перетащите Orders › List orders на холст справа от него.
  4. Свяжите их: протяните связь от порта run блока Старт к порту send блока Sign in, затем от порта success блока Sign in к порту send блока List orders.

Sign in сохраняет токен в {{token}} при каждом успехе, поэтому List orders отправляет новый. Выход success блока «Запрос» несёт ответ: status, headers, body, time и url. fail срабатывает, когда запрос не получил ответа или проверка не прошла.

3. Примите решение блоком «Если»

  1. Выберите Блок на панели инструментов (⇧⌘B), введите If в поле Искать блоки или запросы и нажмите ↩.

  2. В инспекторе задайте Название Waiting to ship? и Условие:

    value.body.items.some(o => o.status === 'paid')

    Условие — это JavaScript. value — то, что пришло на вход: здесь это ответ List orders.

  3. Свяжите success блока List orders со входом value блока «Если».

4. Уведомите себя

  1. Протяните связь от порта true блока «Если» и отпустите над пустым местом холста. Там откроется выбор блока. Выберите Уведомить: он сразу связан с true.

  2. В настройках блока задайте Название Orders to ship и Сообщение:

    {{value.body.total}} orders, at least one paid and waiting.

    {{value…}} подставляет части того, что пришло на вход; переменные рабочего пространства тоже работают.

  3. Свяжите success блока List orders также со входом value блока Результат. Вебхук отвечает тем, что доходит до Результат (шаг 7).

Выберите Упорядочить, чтобы выстроить блоки в порядке выполнения, и По размеру (⌥⌘0), чтобы увидеть их все.

Сценарий на холсте после запуска: блок «Старт», блок «Запрос», блок «Если» и блок «Уведомить», связанный с его портом true, каждый с отметкой «Готово»

5. Запустите его

  1. Нажмите Запустить (⌘R).
  2. Во время выполнения каждый блок показывает значок, затем Готово. Журнал запуска под холстом перечисляет все блоки с их временем.
  3. Уведомление говорит Orders to ship: 3 orders, at least one paid and waiting. Заказ демо ord_8Jm4Qx оплачен. В первый раз macOS спросит, можно ли Echolot показывать уведомления.
  4. Выберите List orders. Последний запуск в инспекторе показывает, что вошло и что вышло; переключайте Показать между Входные данные и Результат.

Измените условие на o.status === 'cancelled' и запустите снова: блок «Если» отправляет значение на false, который ни с чем не связан, поэтому уведомления нет. Верните как было.

Когда запуск завершается ошибкой, блок с ошибкой показывает её. Там, где доступна встроенная модель Mac, Объяснить ошибку в журнале запуска говорит, что пошло не так. Прошлые запуски остаются в меню Запуски на панели инструментов. Подробнее — в разделе запуск и триггеры.

6. Запускайте по расписанию

  1. Выберите блок Старт. В его инспекторе есть раздел Триггеры.
  2. Включите Расписание. Задайте Каждые (минуты) 60 или введите строку cron в Или строка cron (минута час день месяц день недели), например 0 7 * * 1-5 — семь часов утра по будням.
  3. Нажмите Разрешить. Echolot просит вас разрешить сценарий, прежде чем что-либо запустит его без вас, и просит снова после его изменения (Разрешить снова). Отозвать это останавливает.

Инспектор показывает следующий запуск. Расписания работают, пока открыто окно рабочего пространства. Чтобы запускать их без приложения, используйте echolot flow serve -w Alpenglow.echolot на Mac или сервере, который остаётся включённым.

7. Запускайте из вебхука

  1. В Триггеры блока Старт включите Вебхук. Оставьте метод POST и задайте путь /orders-to-ship.

  2. Нажмите Разрешить. Инспектор покажет адрес на 127.0.0.1 с кнопками Скопировать URL и Скопировать токен.

  3. В Терминале вызовите его, передав токен как Bearer-токен:

    curl -X POST 'http://127.0.0.1:PORT/orders-to-ship' -H 'Authorization: Bearer TOKEN'

    Вставьте скопированные URL и токен. Сценарий запустится, а ответом будет то, что дошло до Результат: заказы.

Строка запроса и тело JSON заполняют входы сценария. Вебхук отвечает только на этом Mac и пока открыто окно; echolot flow serve обслуживает вебхуки без приложения, по умолчанию на порту 4100. Ещё один пример — Order status on webhook в Alpenglow. Сценарий можно также предложить ИИ-агентам как инструмент (Агенты (MCP-инструмент)); см. агентов.

8. Запустите из Терминала

echolot flow list -w Alpenglow.echolot
echolot flow run "Orders to ship" -w Alpenglow.echolot

Он выводит каждый блок по мере завершения с его временем, затем текст уведомления и результат:

✓ start  Start  0 ms
✓ …      Sign in  168 ms
✓ …      List orders  116 ms
✓ …      Waiting to ship?  4 ms
notification: Orders to ship — 3 orders, at least one paid and waiting.
✓ …      Notify  0 ms
Orders to ship: passed in 304 ms

В CI добавьте --no-input, чтобы сценарий, которому нужен человек, завершался ошибкой, а не ждал. Сценарий — это файл в папке flows рабочего пространства, поэтому он попадает в Git вместе с запросами, которые использует. См. echolot flow.

Дальше

На этой странице