# Профиль: ответ N8N_CONTACT_WEBHOOK из SQL ## Цепочка в n8n 1. **Webhook** (POST) — получает от бэкенда `unified_id`, `entry_channel`, `chat_id`, `session_token`, `contact_id`, `phone`. 2. **SQL** — по `unified_id`/`contact_id` выбирает контакт из БД. Возвращает массив строк в формате: - `contactid`, `firstname`, `lastname`, `email`, `mobile`, `phone`, `birthday`, `mailingstreet`, `middle_name`, `birthplace`, `inn`, `verification`, `bank` 3. **Code** — преобразует строки в JSON для ответа вебхука (см. `N8N_CODE_PROFILE_CONTACT_RESPONSE.js`). 4. **Respond to Webhook** — отдаёт ответ клиенту (тело = вывод Code). ## Формат ответа - **Ничего не нашли:** вернуть **HTTP 200** и тело `{ "items": [] }`. - **Нашли контакт(ы):** **HTTP 200** и тело `{ "items": [ { ...поля в snake_case... } ] }`. Поля контакта (уже в формате мини-апа после Code): - `last_name`, `first_name`, `middle_name` - `birth_date`, `birth_place` - `inn`, `email`, `phone` - `registration_address` (в SQL: `mailingstreet` — адрес регистрации) - `mailing_address`, `bank_for_compensation` ## Подстановка Code-ноды - Скопировать код из `aiform_prod/docs/N8N_CODE_PROFILE_CONTACT_RESPONSE.js` в ноду **Code**. - Вход Code — вывод SQL (один item с массивом в `json` или несколько items по одному контакту). - Выход Code — один item с `{ "items": [ ... ] }`. - В **Respond to Webhook** указать: ответить телом из предыдущей ноды (всё из Code), чтобы в ответ ушёл именно `{ "items": [...] }`. Если SQL не нашёл строк — перед Code добавьте условие (IF): при пустом результате отдавать в Respond to Webhook тело `{ "items": [] }` и статус 200.