101 lines
3.3 KiB
Markdown
101 lines
3.3 KiB
Markdown
|
|
# Добавление ноды PostgreSQL для получения данных контакта
|
|||
|
|
|
|||
|
|
## Задача
|
|||
|
|
|
|||
|
|
Добавить ноду PostgreSQL перед "Code in JavaScriptКлиентправ" для получения полных данных контакта из CRM.
|
|||
|
|
|
|||
|
|
## Шаги
|
|||
|
|
|
|||
|
|
### 1. Добавить ноду PostgreSQL
|
|||
|
|
|
|||
|
|
**Название ноды:** `PostgreSQL: Get Contact Data`
|
|||
|
|
|
|||
|
|
**Параметры:**
|
|||
|
|
- **Operation:** Execute Query
|
|||
|
|
- **Query:** (см. файл `N8N_POSTGRESQL_GET_CONTACT_DATA.sql`)
|
|||
|
|
|
|||
|
|
**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
|
|||
|
|
|
|||
|
|
1. **CreateWebContacКлиентправ** → создаёт/находит контакт
|
|||
|
|
2. **PostgreSQL: Get Contact Data** → получает полные данные контакта
|
|||
|
|
3. **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) - SMS
|
|||
|
|
- `cf_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 напрямую для скорости.
|
|||
|
|
|
|||
|
|
|