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 ожидаемый сотрудник проверяет «Мои уведомления» и внешнее получение. Если история есть, а сообщения в мессенджере нет, смотрите доставку сотрудника. Разные бизнес-события того же магазина — отдельный рецепт.