Initial
This commit is contained in:
149
n8n_webhook_response_examples.md
Normal file
149
n8n_webhook_response_examples.md
Normal file
@@ -0,0 +1,149 @@
|
||||
# Формат ответа вебхука проверки полиса в n8n
|
||||
|
||||
## Рекомендуемый формат (для совместимости с PHP и n8n)
|
||||
|
||||
### Успешный ответ (полис найден и валиден):
|
||||
|
||||
```json
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Полис не найден:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"found": 0,
|
||||
"message": "Полис не найден в базе данных",
|
||||
"result": null
|
||||
}
|
||||
```
|
||||
|
||||
### Полис найден, но тариф не подходит:
|
||||
|
||||
```json
|
||||
{
|
||||
"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) ожидает:
|
||||
```php
|
||||
$response = json_decode($curl_response, true);
|
||||
if ($response['success'] === 'true' || $response['success'] === true) {
|
||||
// Полис валиден
|
||||
}
|
||||
```
|
||||
|
||||
### С новым форматом можно использовать:
|
||||
```php
|
||||
$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` |
|
||||
|
||||
## Преимущества этого формата
|
||||
|
||||
1. **Совместимость с PHP**: поле `success` как в текущем коде
|
||||
2. **Удобство для n8n**: поле `found` (1/0) для IF Node
|
||||
3. **Информативность**: поле `message` для пользователя
|
||||
4. **Данные**: поле `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 (формирование ответа)
|
||||
|
||||
```javascript
|
||||
// Получаем результат из 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
|
||||
}
|
||||
};
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user