- Добавлен сервис CrmMySQLService для подключения к MySQL БД vtiger CRM - Обновлён get_draft() для прямого SQL запроса к MySQL вместо webservice API - Получение cf_2624 и всех данных контакта из MySQL - Обновлена документация и SQL файлы для n8n - Добавлено логирование для отладки Преимущества: - Проще: один SQL запрос вместо цепочки HTTP запросов - Быстрее: прямой запрос к БД - Надёжнее: не зависит от webservice API - Актуальнее: всегда свежие данные из БД
5.5 KiB
5.5 KiB
Конкретные изменения в workflow 6mxRJ2LLHmQXyaDz
Что менять:
1. После ноды user_get → добавить PostgreSQL ноду (ПЕРВАЯ)
Название ноды: PostgreSQL: Auto Confirm Contact Data
Параметры:
- Operation: Execute Query
- Query:
SELECT clpr_auto_confirm_if_crm_has_data($1, $2::integer);
- Parameters:
$1={{ $json.unified_id }}← используем данные из предыдущей ноды (user_get)$2={{ JSON.parse($node['CreateWebContacКлиентправ'].json.result).contact_id }}
Подключение:
user_get→PostgreSQL: Auto Confirm Contact Data→Execute a SQL query2
2. После ноды PostgreSQL: Auto Confirm Contact Data → добавить PostgreSQL ноду (ВТОРАЯ)
Название ноды: PostgreSQL: Check Contact Data Status
Параметры:
- Operation: Execute Query
- Query:
SELECT * FROM clpr_get_contact_data_status($1);
- Parameters:
$1={{ $json.unified_id }}← unified_id передаётся дальше по цепочке
Подключение:
PostgreSQL: Auto Confirm Contact Data→PostgreSQL: Check Contact Data Status→Execute a SQL query2
3. В ноде Code in JavaScript (та что перед Respond to Webhook1) → добавить флаг в ответ
Найти эту строку:
// Unified ID из PostgreSQL (обязательно!)
unified_id: userData.unified_id, // из ноды user_get (PostgreSQL: Find or Create User)
Добавить ПОСЛЕ неё:
// Флаг подтверждения данных контакта
contact_data_confirmed: $('PostgreSQL: Check Contact Data Status').first().json.is_confirmed || false,
contact_data_can_edit: $('PostgreSQL: Check Contact Data Status').first().json.can_edit !== false,
contact_data_confirmed_at: $('PostgreSQL: Check Contact Data Status').first().json.confirmed_at || null,
Полный return должен быть:
return {
success: true,
result: {
session: $('Code in JavaScript3').first().json.session_id,
contact_id: sessionData.contact_id || claimResult.contact_id,
project_id: sessionData.project_id,
// Unified ID из PostgreSQL (обязательно!)
unified_id: userData.unified_id,
// Флаг подтверждения данных контакта
contact_data_confirmed: $('PostgreSQL: Check Contact Data Status').first().json.is_confirmed || false,
contact_data_can_edit: $('PostgreSQL: Check Contact Data Status').first().json.can_edit !== false,
contact_data_confirmed_at: $('PostgreSQL: Check Contact Data Status').first().json.confirmed_at || null,
// Данные заявки
ticket_id: claimResult.ticket_id,
ticket_number: claimResult.ticket_number,
title: claimResult.title,
category: claimResult.category,
status: claimResult.status,
// Метаданные
event_type: sessionData.event_type,
current_step: sessionData.current_step || 1,
updated_at: sessionData.updated_at || new Date().toISOString(),
// Дополнительно
is_new_contact: claimResult.is_new_contact || false
}
};
Итого: 3 изменения
- ✅ Добавить ноду
PostgreSQL: Auto Confirm Contact DataпослеCreateWebContacКлиентправ - ✅ Добавить ноду
PostgreSQL: Check Contact Data Statusпослеuser_get - ✅ Добавить 3 строки в
Code in JavaScriptпередRespond to Webhook1
Порядок выполнения в workflow:
contact → Edit Fields → Get Challenge → ... → Login to CRM → form_id
↓
CreateWebContacКлиентправ
↓
[НОВАЯ] PostgreSQL: Auto Confirm Contact Data
↓
Code in JavaScriptКлиентправ
↓
user_get
↓
[НОВАЯ] PostgreSQL: Check Contact Data Status
↓
Execute a SQL query2
↓
...
↓
Code in JavaScript (← ДОБАВИТЬ ФЛАГИ)
↓
Respond to Webhook1
Проверка:
После изменений в ответе n8n должны быть поля:
contact_data_confirmed(true/false)contact_data_can_edit(true/false)contact_data_confirmed_at(дата или null)