- Добавлен сервис CrmMySQLService для подключения к MySQL БД vtiger CRM - Обновлён get_draft() для прямого SQL запроса к MySQL вместо webservice API - Получение cf_2624 и всех данных контакта из MySQL - Обновлена документация и SQL файлы для n8n - Добавлено логирование для отладки Преимущества: - Проще: один SQL запрос вместо цепочки HTTP запросов - Быстрее: прямой запрос к БД - Надёжнее: не зависит от webservice API - Актуальнее: всегда свежие данные из БД
3.3 KiB
3.3 KiB
Добавление ноды PostgreSQL для получения данных контакта
Задача
Добавить ноду PostgreSQL перед "Code in JavaScriptКлиентправ" для получения полных данных контакта из CRM.
Шаги
1. Добавить ноду PostgreSQL
Название ноды: PostgreSQL: Get Contact Data
Параметры:
- Operation: Execute Query
- Query: (см. файл
N8N_POSTGRESQL_GET_CONTACT_DATA.sql)
SQL запрос:
SELECT
cd.contactid,
cd.firstname,
cd.lastname,
cd.email,
cd.mobile,
cd.phone,
cs.birthday,
ca.mailingstreet,
ca.mailingcity,
ca.mailingstate,
ca.mailingzip,
ca.mailingcountry,
ccf.cf_1157 AS middle_name,
ccf.cf_1263 AS birthplace,
ccf.cf_1257 AS inn,
ccf.cf_1849 AS requisites,
ccf.cf_1580 AS code,
ccf.cf_1706 AS sms,
ccf.cf_2624 AS cf_2624
FROM vtiger_contactdetails cd
LEFT JOIN vtiger_contactscf ccf ON ccf.contactid = cd.contactid
LEFT JOIN vtiger_contactsubdetails cs ON cs.contactsubscriptionid = cd.contactid
LEFT JOIN vtiger_contactaddress ca ON ca.contactaddressid = cd.contactid
LEFT JOIN vtiger_crmentity ce ON ce.crmid = cd.contactid
WHERE cd.contactid = $1
AND ce.deleted = 0
LIMIT 1;
Параметры запроса:
$1={{ JSON.parse($node["CreateWebContacКлиентправ"].json.result).contact_id }}
2. Порядок нод в workflow
- CreateWebContacКлиентправ → создаёт/находит контакт
- PostgreSQL: Get Contact Data → получает полные данные контакта
- Code in JavaScriptКлиентправ → использует данные из обеих нод
3. Что получает Code node
После добавления ноды PostgreSQL, Code node получит доступ к:
$('PostgreSQL: Get Contact Data').first().json- полные данные контакта
Доступные поля:
contactid- ID контактаfirstname,lastname- ФИОemail,mobile,phone- Контактыbirthday- Дата рожденияmailingstreet,mailingcity, etc. - Адресmiddle_name(cf_1157) - Отчествоbirthplace(cf_1263) - Место рожденияinn(cf_1257) - ИННrequisites(cf_1849) - Реквизитыcode(cf_1580) - Кодsms(cf_1706) - SMScf_2624- Данные подтверждены
4. Использование в Code node
Код в "Code in JavaScriptКлиентправ" автоматически найдёт данные из PostgreSQL ноды и добавит их в sessionData.contact_from_db.
Альтернатива: если нет доступа к PostgreSQL
Если нет прямого доступа к PostgreSQL, можно использовать HTTP Request к backend API:
Название ноды: HTTP Request: Get Contact Data
Метод: GET
URL: {{ $env.BACKEND_URL }}/api/v1/contacts/{{ JSON.parse($node["CreateWebContacКлиентправ"].json.result).contact_id }}
Но лучше использовать PostgreSQL напрямую для скорости.