Что такое внешние действия и как с их помощью отправить письмо или запрос в API
В обычной веб-разработке, чтобы отправить письмо клиенту после смены статуса заказа, нужно писать отдельный контроллер, настраивать SMTP, обрабатывать исключения. Это десятки строк кода. В Falcon Space мы сделали проще — внешние действия. Вы пишете одну строчку в SQL-процедуре, и платформа отправляет письмо, SMS, запрос в Telegram или вызывает API.
Расскажу, что это за механизм, какие действия доступны «из коробки» и как вы можете его использовать для интеграций.
Что такое внешние действия простыми словами
Внешние действия — это специальные команды, которые вы добавляете в результат хранимой процедуры. Платформа «видит» эти команды и выполняет их после того, как процедура завершилась. Например, вы написали процедуру, которая изменила статус заказа, и добавили в конец строку «отправить письмо клиенту». Платформа сначала изменит статус, а потом отправит письмо.
Преимущество: не нужно писать внешний код на C#, PHP или Java. Всё внутри SQL, всё в одном месте. Код процедуры легко читается и поддерживается.
Какие внешние действия доступны в Falcon Space
1. Отправка email
Команда: send_email. Параметры: to, subject, body, from (опционально), attachment (путь к файлу). Платформа использует настроенный SMTP-сервер. Не нужно подключать библиотеки.
2. Отправка SMS
Команда: send_sms. Параметры: phone, message, provider (например, smsc). Нужна предварительная настройка провайдера в админке.
3. HTTP-запрос (вызов API)
Команда: send_http. Параметры: url, method (GET/POST), body (JSON/XML), headers. Позволяет интегрироваться с любым внешним API: отправить данные в 1С, дёрнуть сервис расчёта доставки, позвать Telegram-бота.
4. Отправка push-уведомления (через OneSignal или Firebase)
Команда: send_push. Параметры: user_id, title, body. Пользователь должен быть подписан на push.
5. Генерация PDF
Команда: generate_pdf. Параметры: html_content, filename. Создаёт PDF-файл и возвращает ссылку на него.
6. Генерация QR-кода
Команда: generate_qr. Параметры: data (текст или URL). Возвращает изображение в формате base64.
7. Логирование (запись в системный лог)
Команда: log. Параметры: message, level (info, error). Полезно для отладки.
Все эти действия можно комбинировать в одной процедуре. Например, при создании заказа: изменить остатки, отправить письмо клиенту, отправить SMS менеджеру, вызвать API транспортной компании.
Пример: отправка письма при регистрации нового клиента
В процедуре регистрации добавьте в конец:
SELECT 'send_email' AS action,
@email AS to,
'Добро пожаловать!' AS subject,
'Спасибо за регистрацию. Начните работу в личном кабинете.' AS body;
Платформа сама подставит email из переменной. Письмо уйдёт асинхронно, не замедляя регистрацию.
Это избавляет от необходимости писать отдельный обработчик на C#. Всё в одном месте, в одной процедуре.
Пример: вызов API расчёта доставки
В процедуре расчёта доставки (вызывается при нажатии кнопки) можно отправить запрос к API транспортной компании и вернуть результат пользователю:
SELECT 'send_http' AS action,
'POST' AS method,
'https://api.cdek.ru/calculator' AS url,
'{"city_from":"Moscow","city_to":"SPb","weight":5}' AS body,
'application/json' AS content_type;
Ответ от API приходит во временную таблицу, её можно прочитать и показать пользователю. Внешнее действие сработает синхронно (если нужно получить результат), но не будет блокировать другие операции.
Этот механизм мы использовали для интеграции с доставкой в маркетплейсе вин. Всё работает без единого внешнего скрипта.
Настройка внешних действий в административной панели
Для некоторых действий нужно предварительно настроить провайдеров:
- Email: указать SMTP-сервер (например, Yandex или корпоративная почта).
- SMS: выбрать провайдера и ввести API-ключ.
- Push: настроить OneSignal или Firebase.
Всё это делается через административный интерфейс Falcon Space без программирования.
После настройки вы можете использовать соответствующие команды в любой SQL-процедуре.
Безопасность и ограничения
- Не допускайте, чтобы пользователь мог вставлять произвольные параметры во внешнее действие (через поля ввода). Всегда экранируйте.
- Внешние действия не должны быть единственным способом валидации. Проверяйте данные до вызова.
- Для отладки включите логирование внешних действий — вы будете видеть, какие запросы были отправлены.
В Falcon Space есть встроенная защита от рекурсивных вызовов (если внешнее действие вызывает процедуру, которая снова вызывает внешнее действие, оно будет прервано).
Когда внешние действия лучше не использовать
- Сложные цепочки последовательных вызовов с зависимостью от результатов. Лучше написать отдельный скрипт.
- Если нужна гарантированная доставка сообщения (например, письмо с паролем). Внешние действия не имеют очереди повторов.
- Если внешний API требует сложной предобработки (шифрование, подпись).
Для 90% сценариев (уведомления, простые интеграции) внешних действий более чем достаточно.
Внешние действия — одна из самых любимых возможностей наших клиентов. Они экономят время на доработках и позволяют менять логику уведомлений без изменения кода приложения. Попробуйте — и вы оцените.
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта