Files
crm.clientright.ru/CREATE_WEB_CONTACT_V2_DOCS.md
Fedor 01c4fe80b5 chore: snapshot current working tree changes
Save all currently accumulated repository changes as a backup snapshot for Gitea so no local work is lost.
2026-03-26 14:19:01 +03:00

6.4 KiB
Raw Blame History

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 Нет Email
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 контакта в CRM
  • is_new - true если контакт создан сейчас, false если найден существующий
  • cf_2624 - "1" = данные подтверждены, "0" = не подтверждены

🔍 Логика работы

  1. Парсинг JSON - извлекает данные из JSON строки
  2. Валидация телефона - проверяет и форматирует номер (приводит к формату 7XXXXXXXXXX)
  3. Поиск контакта - ищет по номеру телефона (mobile)
  4. Если найден - возвращает ID без обновления
  5. Если не найден - создаёт новый контакт с переданными данными

🗄️ Маппинг полей

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
Документы
Банк
Логика Не обновляет Не обновляет (одинаково)