В этом справочнике перечислены события, которые Модуль интеграций отправляет через шину событий Medusa. Подпишитесь на них, чтобы реагировать на изменение настроек интеграции или проверку соединения.
Каждый воркфлоу, который отправляет событие, заканчивается шагом , поэтому событие уходит только после того, как выполнились все предыдущие шаги. Если запуск падает раньше, например с ошибкой или , событие не отправляется, а откат не отправляет второе событие.
| Событие | Когда отправляется |
|---|---|
| Администратор магазина или ваш код сохраняет значения параметров, включает, выключает или удаляет интеграцию. | |
| Выполняется проверка соединения из Admin, через Admin API или ежедневной запланированной задачей модуля. |
Событие отправляют , и при каждом запуске, даже если ничего не изменилось. Собственный подписчик модуля, получив событие, сбрасывает кэш параметров инстанса.
Данные события выглядят так:
1{2 provider_id: string3 change: "update" | "enabled" | "disabled" | "delete"4 actor: { type: string, id: string | null } | null5 fields?: string[]6}
называет, что сделал воркфлоу. При включении интеграции приходит , при выключении . содержит воркфлоу или , если воркфлоу запустили без него. есть только у . Это идентификаторы изменившихся параметров, а изменение названия записи обозначается как . Сами значения остаются в истории изменений, а секреты не попадают ни туда, ни сюда.
Событие отправляет после каждой проверки соединения. Проверки соединения в историю изменений не попадают, поэтому следить за ними можно через это событие.
Данные события выглядят так:
1{2 provider_id: string3 status: "passed" | "failed" | "skipped"4 message?: string5 actor: { type: string, id: string | null } | null6}
и содержат результат проверки. У проверки из Admin в указан пользователь Admin. У ежедневной проверки равен .
Например, подписчик, который пишет в лог каждую неудачную проверку соединения, чтобы сбои ежедневной проверки попадали в ваш мониторинг:
src/subscribers/integration-tested.ts1import type { SubscriberArgs, SubscriberConfig } from "@medusajs/framework"23type IntegrationTestedData = {4 provider_id: string5 status: "passed" | "failed" | "skipped"6 message?: string7}89export default async function integrationTestedHandler({10 event: { data },11 container,12}: SubscriberArgs<IntegrationTestedData>) {13 if (data.status !== "failed") {14 return15 }1617 const logger = container.resolve("logger")18 logger.warn(`Integration ${data.provider_id} failed its connection test: ${data.message ?? "no message"}`)19}2021export const config: SubscriberConfig = {22 event: "integration.tested",23}
Подписчик читает из данных события только нужные ему поля. Ежедневная проверка запускается и для включённой, но ещё не завершённой интеграции и сообщает о ней с текстом , поэтому проверяйте , если вас интересуют только отклонённые учётные данные. Medusa запускает подписчиков в режимах и , поэтому при отдельном воркере этот подписчик выполняется в воркере. Подробнее о подписчиках читайте в руководстве Medusa по событиям и подписчикам.