4.4 KiB
4.4 KiB
Формат ответа вебхука проверки полиса в n8n
Рекомендуемый формат (для совместимости с PHP и n8n)
Успешный ответ (полис найден и валиден):
{
"success": true,
"found": 1,
"message": "Полис найден",
"result": {
"id": "35927",
"voucher": "E50208-306083026",
"insured_name": "SHAROV IURII",
"tariff_code_basic": "STB2003",
"tariff_code_other": "SPV2002",
"insured_birth": "10.05.1974",
"insured_from": "19.11.2025",
"insured_to": "24.11.2025"
}
}
Полис не найден:
{
"success": false,
"found": 0,
"message": "Полис не найден в базе данных",
"result": null
}
Полис найден, но тариф не подходит:
{
"success": false,
"found": 0,
"message": "Ваш полис не включает покрытие задержки рейса",
"result": null
}
Использование в n8n
Вариант 1: Использовать поле found для IF Node
IF Node условие:
{{ $json.found }} === 1
Или:
{{ $json.found }} == 1
Вариант 2: Использовать поле success для IF Node
IF Node условие:
{{ $json.success }} === true
Использование в PHP
Текущий код (database.php) ожидает:
$response = json_decode($curl_response, true);
if ($response['success'] === 'true' || $response['success'] === true) {
// Полис валиден
}
С новым форматом можно использовать:
$response = json_decode($curl_response, true);
if (isset($response['found']) && $response['found'] == 1) {
// Полис найден и валиден
} else {
// Полис не найден или не валиден
$message = $response['message'] ?? 'Ошибка проверки полиса';
}
Структура полей
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | true если полис найден и валиден, false если нет |
found |
integer | 1 если полис найден и валиден, 0 если нет (удобно для IF Node) |
message |
string | Текстовое сообщение для пользователя |
result |
object/null | Данные полиса из БД или null |
Преимущества этого формата
- Совместимость с PHP: поле
successкак в текущем коде - Удобство для n8n: поле
found(1/0) для IF Node - Информативность: поле
messageдля пользователя - Данные: поле
resultс полной информацией о полисе
Пример workflow в n8n
Webhook (входящий запрос)
→ [Нормализация номера полиса] (Code Node)
→ [Проверка полиса в БД] (MySQL Node)
→ [Формирование ответа] (Code Node)
├─ IF: policy_found_and_valid === 1
│ ├─ Да → Формируем success: true, found: 1
│ └─ Нет → Формируем success: false, found: 0
→ [Ответ вебхука] (Respond to Webhook Node)
Код для Code Node (формирование ответа)
// Получаем результат из MySQL Node
const policyCheck = $input.item.json.policy_found_and_valid || 0;
const policyData = $input.item.json; // данные из MySQL (если использовали with_data вариант)
if (policyCheck === 1) {
return {
json: {
success: true,
found: 1,
message: "Полис найден",
result: policyData // данные полиса
}
};
} else {
// Проверяем, был ли полис вообще найден
const wasFound = policyData && policyData.id ? true : false;
return {
json: {
success: false,
found: 0,
message: wasFound
? "Ваш полис не включает покрытие задержки рейса"
: "Полис не найден в базе данных",
result: null
}
};
}