Анализ проблем с
вебхуками
Анализ свойств вебхуков
В разделе «Управление конфигурацией» появился новый тип элементов — «Вебхук». Если открыть запись вебхука через пакет, вы перейдете на страницу с настройками, как и при переходе через «Дизайнер системы».
В контекстном меню записи есть пункт «Открыть метаданные». При его выборе вы увидите текстовое представление данных из поля MetaData объекта VwWebhookV2. На вкладке «Метаданные» данные будут отображаться в необработанном виде, а на вкладке «Метаданные (чтение)» — в более удобной для чтения форме. Это позволяет сопоставлять названия блоков в JSON-строке с их значениями.
A2: Name;
A5: CreatedInPackageId;
B1: Methods;
B2: LocalizableStrings;
B3: Usings;
B6: PackageUId;
B8: CreatedInVersion;
WS1: CheckClientUrl (если признак Проверять URL клиента не заполнен, блок отсутствует);
WS2: ClientUrl;
WS3: WebhookAuthInfo (при указании типа аутентификации Не требуется блок отсутствует полностью);
WS3.IY1: AuthType (1 — Cookie, 2 — JWT);
WS3.IZ1: Username;
WS3.IZ1.IV2: Source;
WS3.IZ2: Password;
WS3.IZ2.IV2: Source;
WS3.IZ3: UserId;
WS3.IZ3.IV1: Value;
WS3.IZ3.IV2: Source;
WS3.IZ4: ValidBefore;
WS3.IZ4.IV2: Source;
WS3.JD1: UserId;
WS3.JD1.IV1: Value;
WS3.JD1.IV2: Source;
WS3.JD2: Token;
WS3.JD2.IV2: Source;
WS3.JD3: TokenHeader;
WS3.JD3.IV1: Value;
WS3.JD3.IV2: Source;
WS3.JD4: ValidBefore;
WS3.JD4.IV1: Value;
WS3.JD4.IV2: Source;
WS4: WebhookMethods;
WS4.A2: Name;
WS4.A3: CreatedInSchemaUId;
WS4.A4: ModifiedInSchemaUId;
WS4.IR1: Request;
WS4.IR1.IW1: Parameters;
WS4.IR2: Response;
WS4.IR2.IW1: Parameters;
WS4.IR4: Endpoint;
WS4.IR5: HttpMethodType (1 — GET, 2 — POST);
WS4.IR6: WebhookContentType;
WS4.IR8: ActionRules;
WS4.IR8.A2: Name;
WS4.IR8.AR1: ActionRuleType (1 — запуск БП, 3 — изменить данные, 4 — добавить данные);
WS4.IR8.AR2: ProcessedObjectId;
WS4.IR8.AR3: MethodInputParamByBpInputParams;
WS4.IR8.AR4: MethodOutputParamByBpOutputParams;
WS4.IR8.AR5: MethodInputParamByObjectParams;
WS4.IR8.AR6: MethodInputParamByObjectFilterParams;
WS4.IR8.AR7: MethodOutputParamByObjectOutputParams;
WS4.IR9: IsPublished.
Основные сведения о вебхуках можно получить, выполнив запрос в базе данных:
select * from VwWebhookV2;
select * from "VwWebhookV2";
Информация о структуре вебхуков и результаты SQL запроса к VwWebhookV2 полезна для первичной диагностики проблем с вебхуками. С их помощью можно:
- Проверить корректность заполнения ключевых полей (ClientUrl, AuthType, HttpMethodType и др.);
- Убедиться, что все обязательные блоки JSON присутствуют с учетом условий (например, отсутствие блока WS3: WebhookAuthInfo при типе аутентификации «Не требуется»);
- Сопоставить настройки вебхука с его поведением (например, соответствие HttpMethodType).
Если самостоятельная диагностика не позволила устранить проблему, пожалуйста, соберите следующую информацию и обратитесь в техническую поддержку BPMSoft:
- Результат SQL‑запроса к VwWebhookV2 (или его релевантную часть).
- Скопированные метаданные вебхука (вкладки «Метаданные» и «Метаданные (чтение)»).
- Выявленные несоответствия в метаданных (например: «Поле HttpMethodType = 2 (POST), но эндпоинт поддерживает только GET»).
- Краткое и точное описание возникшей проблемы.
Анализ ошибок вебхуков
С версии BPMSoft 1.9 вебхуки отображают более детализированные тексты ошибок. Ниже приведены сценарии, при которых могут появляться такие сообщения.
Таблица 1 — Детализация ошибок вебхуков
| Текст ошибки | Сценарий |
| Токен не был передан | Передайте JWT-токен при вызове метода вебхука |
| Срок действия токена истек. Обновите токен | Выполните перегенерацию токена. Подробнее: JWT-аутентификация |
| Передан некорректный JWT-токен. Проверьте структуру | Скопировать JWT-токен можно только после первой генерации. Если корректный токен не был сохранен, то выполните его перегенерацию. Подробнее: JWT-аутентификация |
| Токен выдан не тому пользователю, который указан в схеме интеграции | Укажите в настройках аутентификации вебхука нужного пользователя и выполните перегенерацию токена. Подробнее: JWT-аутентификация |
| Отсутствует cookie. Необходимо войти в систему | Передайте в заголовок запроса BPMCSRF при вызове метода вебхука |
| Cookie повреждён или сессия недействительна. Необходима повторная авторизация | Выполните повторную Forms-аутентификацию и передайте корректный BPMCSRF в заголовок запроса при вызове метода вебхука. Подробнее: Forms-аутентификация |
| Идентификатор пользователя в cookie не совпадает с ожидаемым по интеграции | Выполните повторную Forms-аутентификацию под пользователем, который указан в настройках аутентификации вебхука, и передайте корректный BPMCSRF в заголовок запроса при вызове метода. Подробнее: Forms-аутентификация |
| Передан Cookie при используемом типе аутентификации «Не требуется» | В настройках аутентификации вебхука поменяйте тип на «Cookie». Подробнее: Forms-аутентификация |
| Неверный URL-адрес клиента | Проверьте корректность URL запроса к методу вебхука |
| В запросе одновременно переданы несколько методов аутентификации. Разрешён только один метод | При вызове метода вебхука должен передаваться Cookie BPMSCRF или JWT-токен. Используйте только один вариант в зависимости от того, какие настройки аутентификации установлены у вебхука. Подробнее: Настройка аутентификации |
| Значение WebhookSecretKey не задано в конфигурационном файле | Установите значение параметра согласно инструкции |
| Значение WebhookSecretKey имеет недостаточную длину | Рекомендуется использовать не менее 32 символов, включая буквы верхнего и нижнего регистра, цифры и специальные символы |
Не работает анонимная аутентификация
Проблема
Вызовы методов вебхука с анонимной аутентификацией не работают. Вместо этого происходит перенаправление на страницу авторизации.
Решение
- Проверьте, что в параметре AllowedLocations конфигурационного файла (для .NET Framework – во «внутреннем» Web.config) присутствует значение webhook/*.
<add key="AllowedLocations" value="api/HealthCheck/Ping;ServiceModel/MsgUtilService.svc; …; webhook/*" />
При отсутствии значения необходимо его добавить внутри value в конец строки и перезапустить приложение BPMSoft.
- Если используется BPMSoft на платформе .NET Framework, то проверьте, что во «внутреннем» Web.config присутствует блок настроек:
<location path="webhook">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
При отсутствии блока добавьте его в конфигурационный файл, например, между блоками <location path="ServiceModel/TotpResetPasswordService.svc">…</location> и <location path="Nui/Feedback.aspx">…</location>.
Рекомендуем изучить
Настройка интеграции вебхуков
Общие принципы диагностики проблем интеграций и инфраструктуры