Перейти к содержимому

CMS — ошибки интеграций и результат импорта ​

Ваш обработчик CMS отправляет результат обмена с поставщиком. Техническая команда получает сбой API, оператор каталога — успешный импорт. Здесь показан контракт вашего HTTP-отправителя; это не установка готового модуля для конкретной CMS.

Подготовьте Депешер ​

По командному рецепту создайте организацию и команды «Техническая», «Каталог», «Диспетчеры». Создайте канал «CMS», оставив базовых получателей пустыми: здесь состав будет зависеть только от выбранного правила. Создайте метки cms, ошибка-обмена, импорт, неизвестное.

Создайте текстовый шаблон в организации и задайте его каналу:

text
Сайт: {{json.site.host}}
Операция: {{json.operation}}
Событие: {{json.event.type}}
{{json.message}}
Подробности: {{json.details_url}}

Выберите получателей по событию ​

Подключите определения к каналу в указанном порядке. Все условия — JSON «Поле равно», тип «Строка». Шаблон наследуется:

ПравилоУсловиеВажность / меткиПолучатели
Ошибка поставщикаevent.type = supplier_api_failedОшибка; cms, ошибка-обмена«Техническая»
Импорт готовevent.type = import_finishedИнформация; cms, импорт«Каталог»
DefaultБез условийПредупреждение; cms, неизвестное«Диспетчеры»

Default назначает прочие события диспетчерам. Базовый список должен оставаться пустым: правило и default добавляют получателей, а не исключают их. Условия по окружению или сайту добавьте в режиме «Все», если один источник обслуживает несколько сайтов.

После подключения правил сотрудники всех трёх команд настраивают «Мою доставку» для канала «CMS». Он виден и при отключённых правилах или подключениях; перед проверкой событий включите нужные источники. Общий порядок настройки — JSON-маршрутизация.

Сформируйте событие в CMS ​

В обработчике завершения операции сформируйте JSON, например:

json
{
  "site": { "host": "shop.example" },
  "operation": "catalog-import",
  "event": { "type": "supplier_api_failed" },
  "message": "API поставщика вернул 503",
  "details_url": "https://shop.example/admin/imports/42"
}

Передавайте его HTTPS POST с Content-Type: application/json и токеном входящего канала. Не передавайте персональные данные покупателя или токены поставщика в сообщении. Используйте JSON-сериализатор CMS, чтобы кавычки и переводы строк не повредили тело.

Для отдельной проверки сохраните пример в cms-event.json и выполните с заранее заданными переменными окружения:

bash
curl --include \
  --request POST \
  --header 'Content-Type: application/json' \
  --header "Authorization: Bearer $DEPESHER_TOKEN" \
  --data-binary @cms-event.json \
  "$DEPESHER_URL"

URL и токен храните в закрытой конфигурации CMS. Подключение HTTP-отправителя и обработка его ошибок зависят от вашей CMS. Сбой уведомления должен журналироваться отдельно от результата импорта.

Проверьте три результата ​

Сначала выполните симуляцию правил, затем реальные запросы:

ТелоОжидается
Пример выше«Техническая», Ошибка, cms и ошибка-обмена
Заменить тип на import_finished, message на Обновлено 120 товаров«Каталог», Информация, cms и импорт
Заменить тип на new_event«Диспетчеры», Предупреждение, неизвестное

Первое уведомление должно назвать shop.example, catalog-import, supplier_api_failed и причину 503. Ссылка на детали не выдаёт права доступа к CMS: получатель должен иметь их отдельно.

После HTTP 202 ожидаемый сотрудник проверяет «Мои уведомления» и внешнее получение. Если история есть, а сообщения в мессенджере нет, смотрите доставку сотрудника. Разные бизнес-события того же магазина — отдельный рецепт.