Files
crm.clientright.ru/ticket_form/docs/N8N_RESPONSE_FORMAT.md
Fedor 52fe013375 feat(ticket_form): unified_id/contact_id передача, исправлен мерж сессии, новая сессия для жалобы
- Добавлены unified_id и contact_id в TicketFormDescriptionRequest
- Исправлен CODE_MERGE_PROJECT_TO_SESSION.js - теперь сохраняются ВСЕ данные из body.other
- Добавлен fallback на получение other из Webhook напрямую
- Генерация новой session_id при создании новой жалобы (сохраняя авторизацию)
- Добавлен SQL_SELECT_CONTACT_WITH_CUSTOM_FIELDS.sql для CRM контактов
- Создан SESSION_LOG_2025-11-25.md с документацией сессии
2025-11-25 20:02:21 +03:00

97 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Формат ответа n8n после проверки телефона
## Текущий формат (неполный)
```json
{
"success": true,
"result": {
"claim_id": "CLM-2025-11-19-7O55SP",
"contact_id": "398644",
"event_type": null,
"current_step": 1,
"updated_at": "2025-11-19T15:15:07.323Z"
}
}
```
## Требуемый формат (с unified_id)
```json
{
"success": true,
"result": {
"claim_id": "CLM-2025-11-19-7O55SP",
"contact_id": "398644",
"unified_id": "usr_90599ff2-ac79-4236-b950-0df85395096c", // ← ДОБАВИТЬ!
"event_type": null,
"current_step": 1,
"updated_at": "2025-11-19T15:15:07.323Z",
"is_new_contact": false // опционально
}
}
```
## Где добавить unified_id в n8n workflow
### Шаг 1: После CreateWebContact
- Получен `contact_id` из CRM
- Есть `phone` из запроса
### Шаг 2: PostgreSQL Node - Find or Create User
- Выполнить SQL запрос из `SQL_FIND_OR_CREATE_USER_WEB_FORM.sql`
- Параметр: `$1 = {{$json.phone}}` (нормализованный телефон)
- Результат: `unified_id` и `user_id`
### Шаг 3: Response Node или Code Node
Вернуть ответ с unified_id:
```javascript
return {
success: true,
result: {
claim_id: $('CreateWebContact').item.json.claim_id || $('GenerateClaimId').item.json.claim_id,
contact_id: $('CreateWebContact').item.json.contact_id,
unified_id: $('PostgreSQL_FindOrCreateUser').item.json.unified_id, // ← ВАЖНО!
event_type: null,
current_step: 1,
updated_at: new Date().toISOString(),
is_new_contact: $('CreateWebContact').item.json.is_new_contact || false
}
};
```
## Важно!
1. **unified_id обязателен** - frontend использует его для поиска черновиков
2. **Формат unified_id**: `usr_{UUID}` (например, `usr_90599ff2-ac79-4236-b950-0df85395096c`)
3. **Если unified_id отсутствует** - frontend не сможет найти черновики пользователя
4. **При создании/обновлении черновика** - обязательно заполнять `clpr_claims.unified_id = unified_id`
## Проверка в frontend
Frontend уже готов принимать unified_id:
```typescript
// Step1Phone.tsx, строка 132
updateFormData({
phone,
smsCode: code,
contact_id: result.contact_id,
unified_id: result.unified_id, // ✅ Уже ожидается!
claim_id: result.claim_id,
is_new_contact: result.is_new_contact
});
```
## Пример полного workflow в n8n
1. **Webhook** → получает `{phone, session_id, form_id}`
2. **CreateWebContact** → создает/находит контакт в CRM → возвращает `contact_id`
3. **GenerateClaimId** → генерирует `claim_id` (если нужно)
4. **PostgreSQL: Find or Create User** → выполняет SQL запрос → возвращает `unified_id`
5. **Response** → возвращает полный ответ с `unified_id`