Save all currently accumulated repository changes as a backup snapshot for Gitea so no local work is lost.
6.4 KiB
6.4 KiB
CreateWebContactV2 - Расширенная операция создания контакта
📋 Описание
Расширенная версия операции CreateWebContact, которая принимает JSON с полным набором данных контакта.
Отличия от CreateWebContact:
- ✅ Принимает JSON строку вместо отдельных параметров
- ✅ Поддерживает больше полей (отчество, адрес, документы и т.д.)
- ✅ Сохраняет логику: не обновляет существующие контакты, только возвращает ID
🔗 URL
POST https://crm.clientright.ru/webservice.php?operation=CreateWebContactV2
📥 Формат запроса
Параметры:
operation=CreateWebContactV2(обязательно)sessionName= токен сессии (обязательно)contact_json= JSON строка с данными контакта (обязательно)
Формат JSON:
{
"phone": "84956265800",
"form_id": "00001",
"email": "klerww@ewg.ru",
"lastname": "qweqwe",
"firstname": "qweqwe",
"secondname": "qweqwe",
"birthday": "18-09-1981",
"mailingstreet": "г Севастополь, аллея Астапова, д 1",
"docs_tip": "21",
"docs_number": "32432423",
"bank_id": "100000000111",
"bank_name": "Сбербанк"
}
Поля JSON:
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
phone или mobile |
string | ✅ Да | Номер телефона |
form_id |
string | Нет | ID формы |
email |
string | Нет | |
lastname |
string | Нет | Фамилия |
firstname |
string | Нет | Имя |
secondname |
string | Нет | Отчество |
birthday |
string | Нет | Дата рождения (формат: DD-MM-YYYY или YYYY-MM-DD) |
mailingstreet |
string | Нет | Адрес |
docs_tip |
string | Нет | Тип документа (21, 07, 24, 91) |
docs_number |
string | Нет | Номер документа |
bank_id |
string | Нет | ID банка |
bank_name |
string | Нет | Название банка |
📤 Формат ответа
{
"success": true,
"result": "{\"contact_id\":\"12345\",\"is_new\":true,\"cf_2624\":\"0\"}"
}
Важно: result - это JSON-строка, требует JSON.parse()!
Поля ответа:
contact_id- ID контакта в CRMis_new-trueесли контакт создан сейчас,falseесли найден существующийcf_2624- "1" = данные подтверждены, "0" = не подтверждены
🔍 Логика работы
- Парсинг JSON - извлекает данные из JSON строки
- Валидация телефона - проверяет и форматирует номер (приводит к формату
7XXXXXXXXXX) - Поиск контакта - ищет по номеру телефона (
mobile) - Если найден - возвращает ID без обновления
- Если не найден - создаёт новый контакт с переданными данными
🗄️ Маппинг полей
| JSON поле | CRM поле | Примечание |
|---|---|---|
phone/mobile |
mobile |
Обязательное |
email |
email |
|
lastname |
lastname |
|
firstname |
firstname |
|
secondname |
cf_1157 |
Отчество |
birthday |
birthday |
Формат: YYYY-MM-DD |
mailingstreet |
mailingstreet |
Адрес |
docs_tip |
cf_2628 |
Тип документа |
docs_number |
cf_1804 |
Номер документа |
bank_id |
cf_1273 |
ID банка |
bank_name |
cf_1265 |
Название банка |
📋 Маппинг кастомных полей
Все кастомные поля уже настроены в коде:
| JSON поле | CRM поле | Номер поля |
|---|---|---|
docs_tip |
Тип документа | cf_2628 |
docs_number |
Номер документа | cf_1804 |
bank_id |
ID банка | cf_1273 |
bank_name |
Название банка | cf_1265 |
📁 Файлы
- Handler:
include/Webservices/CreateWebContactV2.php - Handler Method:
vtws_createwebcontactv2 - Логи:
logs/CreateWebContactV2.log
🗄️ Регистрация в БД
vtiger_ws_operation:
operationid: [автоматически]
name: CreateWebContactV2
handler_path: include/Webservices/CreateWebContactV2.php
handler_method: vtws_createwebcontactv2
type: POST
prelogin: 0
vtiger_ws_operation_parameters:
1. contact_json (String)
📝 Пример использования
cURL:
curl -X POST "https://crm.clientright.ru/webservice.php?operation=CreateWebContactV2" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "sessionName=YOUR_SESSION_TOKEN" \
-d "contact_json={\"phone\":\"84956265800\",\"firstname\":\"Иван\",\"lastname\":\"Иванов\",\"email\":\"test@example.com\"}"
JavaScript (n8n):
const contactData = {
phone: "84956265800",
form_id: "00001",
email: "klerww@ewg.ru",
lastname: "qweqwe",
firstname: "qweqwe",
secondname: "qweqwe",
birthday: "18-09-1981",
mailingstreet: "г Севастополь, аллея Астапова, д 1",
docs_tip: "21",
docs_number: "32432423",
bank_id: "100000000111",
bank_name: "Сбербанк"
};
return {
operation: "CreateWebContactV2",
sessionName: $('Login').item.json.sessionName,
contact_json: JSON.stringify(contactData)
};
🔄 Отличия от CreateWebContact
| Параметр | CreateWebContact | CreateWebContactV2 |
|---|---|---|
| Формат входа | Отдельные параметры | JSON строка |
| Количество полей | 4 (mobile, firstname, lastname, email) | 12+ полей |
| Отчество | ❌ | ✅ |
| Адрес | ❌ | ✅ |
| Дата рождения | Дефолт | ✅ Из JSON |
| Документы | ❌ | ✅ |
| Банк | ❌ | ✅ |
| Логика | Не обновляет | Не обновляет (одинаково) |