Страница 1 из 1

Настройка web-service invoker

Добавлено: 18 сен 2025, 10:32
Volkodav
Добрый день,

Стоит задача в OTRS6 при обновлении состояния заявки послать данные во внешнюю систему.
В случае, если веб-сервис отработает с ошибкой, состояние заявки не менять.

Кто-нибудь имел опыт настройки подобного рода решения?

Я создал REST invoker, добавил в него инициатор вызова на основе контроллера Ticket::Generic, куда добавил срабатывание по событию TicketStateUpdate, галочку асинхронного вызова убрал в надежде, что вся цепочка действий будет отменена в случае ошибки отсылки запроса, но заявка сменила состояние и но и данные не ушли во внешнюю систему.

Re: Настройка web-service invoker

Добавлено: 18 сен 2025, 22:04
alexus
Добрый день. Скрины настройки веб-сервиса покажите. Логи OTRS, лог веб-сервиса были бы тоже полезны.

Re: Настройка web-service invoker

Добавлено: 19 сен 2025, 07:46
Volkodav
Добрый день,

Я добавил файл конфигурации веб-сервиса, который я сделал
RestInvoker.zip
(904 байт) 63 скачивания
Там заведомо неправильно указал endpoint, чтобы сэмулировать недоступность удаленного сервера

Ожидаемо я получил ошибку
Can't connect to zzz.yyy:80 (Name or service not known)
Name or service not known at /opt/znuny/Kernel/cpan-lib/LWP/Protocol/http.pm line 50.
Скриншот лога веб-сервиса я приложил. Там в начале видно, что данные из заявки подтянулись и State":"pending reminder" - это то состояние, которое я выставил и после этого веб сервис начал свою работу.
Потом он закончил свою работу с ошибкой, а состояние у заявки к прежнему не вернулось.

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

Re: Настройка web-service invoker

Добавлено: 25 сен 2025, 19:30
alexus
Volkodav писал(а): 18 сен 2025, 10:32
В случае, если веб-сервис отработает с ошибкой, состояние заявки не менять.
Этот момент я упустил. Логика у обработчика событий другая. Есть событие - StateUpdate. Обоработчик событий передаёт его всем "подписантам", и на этом всё. Обработчик ошибок надо писать отдельно