Перейти к основному контенту

Персоны

Персона — это карточка с данными о пользователе. К персоне привязывается активный лид пользователя. 

Меню персон

В меню персон можно попасть из раздела Заявки и персоны в верхнем меню бота, нажав в выпадающем списке на Персоны.

Снимок экрана 2023-03-17 141927.png

После перехода в меню персон открывается таблица содержащая всех персон бизнеса.

Снимок экрана 2023-03-17 142545.png

Здесь можно просматривать таблицу, создавать новых персон (1), редактировать информацию о уже существующих и удалять их (2), настраивать фильтры для удобного поиска нужных персон (3).

Создание персоны

При нажатии на кнопку Создать открывается окно настройки персоны со следующими полями:

image.png

  • Имя - имя персоны;
  • Фамилия - фамилия персоны;
  • Отчество - отчество персоны;
  • E-mail - адрес электронной почты персоны;
  • Телефон - номер телефона персоны;
  • Сотрудник/Клиент - опция в которой можно выбрать кем является персона в боте: Сотрудником бизнеса (внутренней персоной) или Клиентом (внешней персоной);
  • Название организации - название организации, в которой работает персона;
  • Адрес организации - адрес организации, в которой работает персона;
  • Роль - выпадающий список, в котором следует выбрать роль персоны существующую в боте;
  • Web-пользователь - выпадающий список, в котором можно привязать персону к web-пользователю;
  • Комментарий - описание персоны или дополнительная информация.

После создания персона появится в таблице в меню персон с автоматически заданным ей Id. Тут ее можно редактировать и удалить.

Редактирование персон включает в себя те же поля, что при создании.

Фильтры

Для быстрого и удобного поиска в меню персон существуют фильтры. Настраивая их, можно сократить список персон по соответствующим параметрам.

Фильтры есть для всех полей существующих в окне создания персоны, а так же для времени создания и обновления персоны.

Снимок экрана 2023-03-17 150117.png

После выбора фильтров нужно нажать на кнопку Применить фильтр, и тогда в таблице останутся только персоны соответствующие заданным параметрам. Или же можно нажать на кнопку Сбросить фильтр и в таблице будут показаны все существующие в бизнесе персоны.

Импорт

Если у вас уже есть таблица персон, то вы можете импортировать ее из .csv файла при помощи функции Импорт в правом верхнем углу меню персон:

Снимок экрана 2023-03-17 150936.png

При нажатии открывается окно импорта персон с возможностью выбрать файл .csv и загрузить его.

image.png

После загрузки все персоны из файла будут добавлены в таблицу меню персон.

JS методы для работы с персонами

К персонам можно обращаться из JS следующими методами:

Название метода Метод


Создание персоны bot.createPerson($data): ?int
Поиск персоны bot.findPersons($where = [], $orderBy = [], ?int $limit = null, ?int $offset = null, bool $isLogErrorIfManyPersonsFound = false): array

Обновить персону по id

bot.updatePersonById(int $personId, $data): bool

Удалить персону по id

bot.deletePersonById(int $personId): bool


Получить id персоны lead.getPersonId(): ?int
Привязать персону к лиду lead.setPersonId(?int $personId): bool

Создать персону для лида

lead.createPersonForCurrentLead($data): ?int



Обновить персону

person.update($data): bool

Удалить персону

person.delete(): bool

Получить все поля персоны

person.getAllData(): array

Установить поле персоны

person.setData(string $key, $value): self

Получить значение данных персоны

person.getData(string $key)

Проверить наличие данных по персоне



person.issetData(string $key): bool
person.isDataExist(string $key): bool

Получить ID персоны

person.getId(): ?int

Получить полное имя персоны

person.getFullName(): string

Получить ID роли персоны

person.getRoleId(): ?int

Получить название роли персоны

person.getRoleName(): string

Получить заголовок роли персоны

person.getRoleTitle(): string

Получить форматированное название роли персоны.

person.getRoleFormattedTitle(): string

Получить номер телефона персоны

person.getPhone(): ?string

Установить номер телефона персоны

person.setPhone(?string $phone): bool

Получить почту персоны

person.getEmail(): ?string

Если у персоны нет роли ИЛИ у лида нет персоны то v8 возвращает Роль персоны по умолчанию (настраивается в боте). Это применимо как к получению имени роли так и ее ID.

Каждый из методов подробнее расписан ниже.

Создание персоны

bot.createPerson($data)
Описание:

Создает в боте персону с указанными полями.

Атрибуты:
Имя Тип Описание

data

json Данные о персоне в формате json. Возможные поля расписаны ниже

lead_id

integer|null Id лида, к которому будет привязана персона

person_role_id

integer Id персоны

is_external

bool

Если не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом.

А 0 означает что персона является работником бизнеса

user_id 

integer Id пользователя, привязываемого к персоне

firstname 

string|null Имя персоны

lastname 

string|null Фамилия персоны

middlename 

string|null Отчество персоны

email 

string|null Адрес электронной почты персоны

phone 

string|null Номер телефона персоны

organization_name

string|null Название организации

organization_address

string|null Адрес организации

comment 

string|null Комментарий к персоне
Возвращает:

int - id персоны в формате числа.

Пример:
let newPersonId = bot.createPerson({
  'lead_id': 2356,
  'is_external': 1,
  'lastname': 'Иванов'
});

Поиск персоны

bot.findPersons($where = [], $orderBy = [], ?int $limit = null, ?int $offset = null, bool $isLogErrorIfManyPersonsFound = false)
Описание:

Находит персоны в соответствии с указанными параметрами и возвращает их массив.

Атрибуты:
Имя Тип Описание

where

array Параметр по которому будет проверяться соответствие с найденными персонами

orderBy

array Параметр сортирующий найденные персоны

limit

?int Максимальное количество персон, которое будет возвращено

offset

?int Параметр показывающий с какой по счету найденной персоны начать возвращать значения

isLogErrorIfManyPersonsFound

bool Возвращать ли лог с ошибкой, если найдено больше персон чем указано в limit
Возвращает:

array - массив с id всех найденных персон.

Пример:
//let persons = bot.findPersons([["firstname", "Alex"]], {}, null, null, true);
//let persons = bot.findPersons([["firstname", "Alex"], ["is_external", "=", 0]], {}, null, null, true);
//let persons = bot.findPersons([["persons.firstname", "=", "Alex"], ["persons.is_external", "=", 0], ["person_roles.name", "=", "test"]], {}, null, null, true);

let persons = bot.findPersons([["firstname", "Alex"]]);

for (let i = 0; i < persons.length; i++) {
  lead.setAttr('person_' + i + '_role_name', persons[i].getRoleName()); 
}

lead.setAttr('found_persons_count', persons.length);

Обновить персону по id

bot.updatePersonById(int $personId, $data)
Описание:

Обновляет поля персоны в соответствии с БД. 

Атрибуты:
Имя Тип Описание

personId

int ID персоны

data

json Данные о персоне в формате json. Возможные поля расписаны ниже

person_role_id

integer Id персоны

is_external

bool

Если не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом.

А 0 означает что персона является работником бизнеса

user_id 

integer Id пользователя, привязываемого к персоне

firstname 

string|null Имя персоны

lastname 

string|null Фамилия персоны

middlename 

string|null Отчество персоны

email 

string|null Адрес электронной почты персоны

phone 

string|null Номер телефона персоны

organization_name

string|null Название организации

organization_address

string|null Адрес организации

comment 

string|null Комментарий к персоне

Возвращает:

bool - подтверждение обновления данных.

Пример:
bot.updatePersonById(15624, {
  'is_external': 1,
  'firstname': 'Иван',
  'lastname': 'Иванов'
});

Удалить персону по id

bot.deletePersonById(int $personId)
Описание:

Удаляет персону по id. 

Атрибуты:
Имя Тип Описание

personId

int ID персоны

Возвращает:

bool - подтверждение удаления персоны.

Пример:
bot.deletePersonById(24376);

Получить id персоны

lead.getPersonId()
Описание:

Возвращает id персоны лида.

Возвращает:

int - id персоны в формате числа.

Пример:
let PersonId = lead.getPersonId();
lead.setAttr('PersonId', PersonId);

Привязать персону к лиду

lead.setPersonId(?int $personId)
Описание:

Привязывает к лиду персону с соответствующим id.

Атрибуты:
Имя Тип Описание

personId

int Id персоны
Возвращает:

bool - подтверждение успешной привязки персоны к лиду.

Пример:
lead.setPersonId(167435);

Создать персону для лида

lead.createPersonForCurrentLead($data)
Описание:

Создает персону для текущего лида в контексте которого запущен v8-скрипт.

Атрибуты:
Имя Тип Описание

data

json Данные о персоне в формате json. Возможные поля расписаны ниже

person_role_id

integer Id персоны

is_external

bool

Если не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом.

А 0 означает что персона является работником бизнеса

user_id 

integer Id пользователя, привязываемого к персоне

firstname 

string|null Имя персоны

lastname 

string|null Фамилия персоны

middlename 

string|null Отчество персоны

email 

string|null Адрес электронной почты персоны

phone 

string|null Номер телефона персоны

organization_name

string|null Название организации

organization_address

string|null Адрес организации

comment 

string|null Комментарий к персоне
Возвращает:

int - id созданной персоны в формате числа.

Пример:
let newPersonId = lead.createPersonForCurrentLead({
  'is_external': 1,
  'firstname': 'Иван',
  'lastname': 'Иванов'
})

Обновить персону

person.update($data)
Описание:

Обновляет данные персоны в соответствии с БД.

Атрибуты:
Имя Тип Описание

data

json Данные о персоне в формате json. Возможные поля расписаны ниже

person_role_id

integer Id персоны

is_external

bool

Если не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом.

А 0 означает что персона является работником бизнеса

user_id 

integer Id пользователя, привязываемого к персоне

firstname 

string|null Имя персоны

lastname 

string|null Фамилия персоны

middlename 

string|null Отчество персоны

email 

string|null Адрес электронной почты персоны

phone 

string|null Номер телефона персоны

organization_name

string|null Название организации

organization_address

string|null Адрес организации

comment 

string|null Комментарий к персоне
Возвращает:

bool - подтверждение обновления данных.

Пример:
person.update({
  'is_external': 1,
  'firstname': 'Иван',
  'lastname': 'Иванов'
});

Удалить персону

person.delete()
Описание:

Удаляет персону лида.

Возвращает:

bool - подтверждение удаления персоны.

Получить все поля персоны

person.getAllData()
Описание:

Возвращает значения всех полей персоны лида в виде массива.

Возвращает:

array - массив всех значений полей персоны.

Пример:
let AllData = person.getAllData();
let Data2 = AllData[1];

Установить поле персоны

person.setData(string $key, $value)
Описание:

Заполняет указанное поле персоны лида указанным значением.

Атрибуты:
Имя Тип Описание

key

string Ключ наименование поля

value

mixed Значение вводимое в поле

В качестве ключа можно указать:

  • id - id персоны;
  • business_id - id бизнеса;
  • bot_id - id бота;
  • person_role_id - id роли;
  • is_external - значение поля Сотрудник/Клиент;
  • user_id - id пользователя;
  • firstname - имя;
  • lastname - фамилия;
  • middlename - отчество;
  • email - адрес электронной почты;
  • phone - номер телефона;
  • organization_name - название организации;
  • organization_address - адрес организации;
  • comment - комментарий;
  • created_at - дата создания;
  • updated_at - дата последнего редактирования;
  • deleted_at - дата удаления;
  • все системные поля персоны (по английски).
Возвращает:

self - значение отредактированного поля в соответствующем формате.

Пример:
person.setData('email', 'user@mail.ru');

Получить значение данных персоны

person.getData(string $key)
Описание:

Возвращает значение данных персоны по ключу или названию поля БД.

Атрибуты:
Имя Тип Описание

key

string Ключ наименование поля

В качестве ключа можно указать:

  • id - id персоны;
  • business_id - id бизнеса;
  • bot_id - id бота;
  • person_role_id - id роли;
  • is_external - значение поля Сотрудник/Клиент;
  • user_id - id пользователя;
  • firstname - имя;
  • lastname - фамилия;
  • middlename - отчество;
  • email - адрес электронной почты;
  • phone - номер телефона;
  • organization_name - название организации;
  • organization_address - адрес организации;
  • comment - комментарий;
  • created_at - дата создания;
  • updated_at - дата последнего редактирования;
  • deleted_at - дата удаления;
  • все системные поля персоны (по английски).
Возвращает:

self - значение запрашиваемого поля в соответствующем формате.

Пример:
let createdAt = person.getData('created_at');

Проверить наличие данных по персоне

person.issetData(string $key)

или

person.isDataExist(string $key)
Описание:

Проверяет существование данных персоны лида.

Атрибуты:
Имя Тип Описание

key

string Ключ наименование поля

В качестве ключа можно указать:

  • id - id персоны;
  • business_id - id бизнеса;
  • bot_id - id бота;
  • person_role_id - id роли;
  • is_external - значение поля Сотрудник/Клиент;
  • user_id - id пользователя;
  • firstname - имя;
  • lastname - фамилия;
  • middlename - отчество;
  • email - адрес электронной почты;
  • phone - номер телефона;
  • comment - комментарий;
  • created_at - дата создания;
  • updated_at - дата последнего редактирования;
  • deleted_at - дата удаления;
  • все системные поля персоны (по английски).
Возвращает:

bool - подтверждение существования данных.

Пример:
let DataExist = person.issetData('phone');

или

let DataExist = person.isDataExist('phone');

Получить ID персоны

person.getId()
Описание:

Возвращает id персоны привязанной к лиду.

Возвращает:

int - id персоны в формате числа.

Пример:
let PersonId = person.getId();
lead.setAttr('PersonId', PersonId);

Получить полное имя персоны

person.getFullName()
Описание:

Возвращает полное имя персоны лида в виде Фамилия + Имя + Отчество.

Возвращает:

string - полное имя персоны.

Пример:
let PersonName = person.getFullName();
lead.setAttr('PersonName', PersonName);

Получить ID роли персоны

person.getRoleId()
Описание:

Возвращает id роли привязанной к персоне лида.

Возвращает:

int - id роли персоны в формате числа.

Пример:
let RoleId = person.getRoleId();
lead.setAttr('RoleId', RoleId);

Получить название роли персоны

person.getRoleName()
Описание:

Возвращает название роли привязанной к персоне лида.

Возвращает:

string - название роли персоны.

Пример:
let RoleName = person.getRoleName();
lead.setAttr('RoleName', RoleName);

Получить заголовок роли персоны

person.getRoleTitle()
Описание:

Возвращает заголовок роли привязанной к персоне лида.

Возвращает:

string - заголовок роли персоны.

Пример:
let RoleTitle = person.getRoleTitle();
lead.setAttr('RoleTitle', RoleTitle);

Получить форматированное название роли персоны

person.getRoleFormattedTitle()
Описание:

Возвращает форматированное название роли персоны лида.

Будет возвращено: 

  • Заголовок роли, если он указан, иначе
  • Имя роли, если оно указано, иначе
  • ID роли.
Возвращает:

string - форматированное название роли персоны.

Пример:
let FormattedTitle = person.getRoleFormattedTitle();
lead.setAttr('FormattedTitle', FormattedTitle);

Получить номер телефона персоны

person.getPhone()
Описание:

Находит номер телефона персоны лида.

Возвращает:

string - номер телефона персоны в формате строки.

Установить номер телефона персоны

person.setPhone(?string $phone)
Описание:

Устанавливает значение номера телефона персоны лида.

Атрибуты:
Имя Тип Описание

phone

string Номер телефона
Возвращает:

bool - подтверждение установки значения.

Пример:
person.setPhone('+71234567890');

Получить почту персоны

person.getEmail()
Описание:

Находит адрес электронной почты персоны лида.

Возвращает:

string - адрес электронной почты персоны в формате строки.