# Методы lead # lead.getData() ### Получить значение данных лида ```JavaScript lead.getData(string $key) ``` ##### Описание: Возвращает значение данных сущности лида по ключу. ##### Атрибуты:
ИмяТипОписание
keystringКлюч данных лида
В качестве ключа можно указать: - **id** - id лида; - **name** - имя лида; - **identification** - внешний id лида; - **identification\_entity** - внешний id сущности; - **person\_id** - id персоны лида; - **manager\_id** - id менеджера привязанного к лиду; - **bot\_id** - id бота лида; - **channel\_id** - id канала лида; - **lang\_code** - код языка; - **status\_id** - id статуса лида; - **extra** - last\_message\_payload - **identification** - id последнего сообщения; - **event\_name** - код события, например, user\_uttered, когда последнее сообщение - ответ пользователя; - **text** - текст последнего сообщения; - **payload** - данные последнего сообщения; - **timestamp** - время отправки; - **session\_id** - id сессии; - **socket\_id** - id сокета; - **is\_mute** - включен ли бот для лида; - **last\_message\_date** - дата последнего сообщения; - **active\_nlp\_integration\_id** - id активной NLP интеграции; - **last\_activity** - время последней активности; - **last\_response** - код последнего ответа; - **messenger** - id мессенджера; - **bot\_debug\_level** - уровень отладки бота; - **created\_at** - время создания; - **updated\_at** - время обновления; - **dialog\_id** - id диалога; - **unread\_count** - количество непрочитанных оператором сообщений; - **last\_message** - последнее сообщение; - **last\_message\_botlog\_id** - id последнего сообщения в логе. ##### Возвращает: **mixed** - значение данных лида в формате, в котором они находятся в сущности или **null** - если таких данных не существует. ##### Пример: ```JavaScript let extra = lead.getData('extra'); ``` # lead.issetData() и lead.isDataExist() ### Проверить наличие данных ```JavaScript lead.issetData(string $key) ``` или ``` lead.isDataExist(string $key) ``` ##### Описание: Проверяет существуют ли данные по ключу. ##### Атрибуты:
ИмяТипОписание
keystringКлюч данных лида
В качестве ключа можно указать: - **id** - id лида; - **name** - имя лида; - **identification** - внешний id лида; - **identification\_entity** - внешний id сущности; - **person\_id** - id персоны лида; - **manager\_id** - id менеджера привязанного к лиду; - **bot\_id** - id бота лида; - **channel\_id** - id канала лида; - **lang\_code** - код языка; - **status\_id** - id статуса лида; - **extra** - last\_message\_payload - **identification** - id последнего сообщения; - **event\_name** - код события, например, user\_uttered, когда последнее сообщение - ответ пользователя; - **text** - текст последнего сообщения; - **payload** - данные последнего сообщения; - **timestamp** - время отправки; - **session\_id** - id сессии; - **socket\_id** - id сокета; - **is\_mute** - включен ли бот для лида; - **last\_message\_date** - дата последнего сообщения; - **active\_nlp\_integration\_id** - id активной NLP интеграции; - **last\_activity** - время последней активности; - **last\_response** - код последнего ответа; - **messenger** - id мессенджера; - **bot\_debug\_level** - уровень отладки бота; - **created\_at** - время создания; - **updated\_at** - время обновления; - **dialog\_id** - id диалога; - **unread\_count** - количество непрочитанных оператором сообщений; - **last\_message** - последнее сообщение; - **last\_message\_botlog\_id** - id последнего сообщения в логе. ##### Возвращает: **bool** - подтверждение существования данных. ##### Пример: ```JavaScript let data = lead.issetData('manager_id'); let altdata = lead.isDataExist('status_id'); ``` # lead.getSerialNumber() ### Порядковый номер лида ```JavaScript lead.getSerialNumber() ``` ##### Описание: Возвращает порядковый номер лида в боте начиная с первого созданного. Возвращает: **int** - порядковый номер лида или **null** - если лид не найден. ##### Пример: ```JavaScript let num = lead.getSerialNumber(); ``` # lead.getChannelCode() ### Код канала лида ```JavaScript lead.getChannelCode() ``` ##### Описание: Возвращает код канала лида (telegram, umnico, bitrix, и пр.) ##### Возвращает: **string** - код канала лида в формате строки. Коды которые может возвращать данная функция: - 'unknown' - 'avito' - 'apple\_business\_chat' - 'facebook' - 'instagram' - 'jivoWidget' - 'livechatWidget' - 'odnoklassniki' - 'skype' - 'telegram' - 'twitter' - 'viber' - 'vk' - 'wechat' - 'whatsapp' - 'youla' - 'metabotWidget' - 'webim' # lead.setAttr() ### Установить значение переменной лида ```JavaScript lead.setAttr(string $key, string $value) ``` ##### Описание: Обновляет значение уже существующей переменной лида или создает новую переменную с указанным значением. Данные будут сохранены в БД. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
valuestringЗначение переменной
##### Возвращает: **self** - объект того же типа, в данном случае переменную, которая была создана. ##### Пример: Создание переменной лида lead\_attribute: ```JavaScript let lead = "Значение переменной лида"; let lead_attribute = lead.setAttr('lead_attribute', lead); ```
# lead.getAttr() ### Получить значение переменной лида ```JavaScript lead.getAttr(string $key) ``` ##### Описание: Возвращает значение уже существующей переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **string** - значение запрашиваемой переменной в виде строки или **null** - если переменная не была найдена. ##### Пример: Получение значения переменной лида lead\_attribute: ```JavaScript let lead_attribute_value = lead.getAttr('lead_attribute'); ```
# lead.getAllAttr() ### Получить все переменные лида ```JavaScript lead.getAllAttr() ``` ##### Описание: Возвращает значение всех переменных лида. Возвращает: **array** - массив значений всех переменных. ##### Пример: Получение значения всех переменных лида и вынесение из массива одного из значений: ```JavaScript let all_lead_attributes = lead.getAllAttr(); let lead_attribute = all_lead_attributes[3]; ```
# lead.issetAttr() и lead.isAttrExist() ### Проверить наличие переменной лида ```JavaScript lead.issetAttr(string $key) ``` или ```JavaScript lead.isAttrExist(string $key) ``` ##### Описание: Проверяет существует ли переменная лида в боте. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
Возвращает: **bool** - подтверждение существования переменной. ##### Пример: Проверка двумя способами существования переменной лида lead\_attribute: ```JavaScript let lead_exists = lead.issetAttr('lead_attribute'); let lead_altexists = lead.isAttrExist('lead_attribute'); ``` # lead.deleteAttrs() и lead.deleteAttr() ### Удаление переменных лида ```JavaScript lead.deleteAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false) ``` или ```JavaScript lead.deleteAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false) ``` ##### Описание: Удаляет переменную из бота. ##### Атрибуты:
ИмяТипОписание
attrsstring|object|array|nullСтрока, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId ?intПередает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной
scriptRequestParams objectПередает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной
isForceDelete bool Подавить запуск триггеров или нет, т.е. если передать true, и есть триггер подписанный на событие изменения/удаления переменной то он не будет запущен.
isSuppressTriggers bool Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается
Возвращает: **self** - подтверждение удаления переменной. ##### Пример: ```JavaScript lead.deleteAttrs('var1, var2, var3', null, null, true); ``` # lead.forceDeleteAttrs() и lead.forceDeleteAttr() ### Принудительное удаление переменных лида из БД ```JavaScript lead.forceDeleteJsonAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` или ```JavaScript lead.forceDeleteJsonAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` ##### Описание: Удаляет переменную из бота и БД. ##### Атрибуты:
ИмяТипОписание
attrsstring|object|array|nullСтрока, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId ?intПередает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной
scriptRequestParams objectПередает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной
isSuppressTriggers bool Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается
Возвращает: **self** - подтверждение удаления переменной. ##### Пример: ```JavaScript lead.forceDeleteAttrs('var1, var2, var3'); ``` # lead.deleteJsonAttrs() и lead.deleteJsonAttr() ### Удаление json-переменных лида ```JavaScript lead.deleteJsonAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false) ``` или ```JavaScript lead.deleteJsonAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false) ``` ##### Описание: Удаляет json переменную из бота. ##### Атрибуты:
ИмяТипОписание
attrsstring|object|array|nullСтрока, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId ?intПередает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной
scriptRequestParams objectПередает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной
isForceDelete bool Подавить запуск триггеров или нет, т.е. если передать true, и есть триггер подписанный на событие изменения/удаления переменной то он не будет запущен.
isSuppressTriggers bool Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается
Возвращает: **self** - подтверждение удаления переменной. ##### Пример: ```JavaScript lead.deleteJsonAttrs('json_var1, json_var2, json_var3', null, null, true); ``` # lead.forceDeleteJsonAttrs() и lead.forceDeleteJsonAttr() ### Принудительное удаление json-переменных лида из БД ```JavaScript lead.forceDeleteJsonAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` или ```JavaScript lead.forceDeleteJsonAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` ##### Описание: Удаляет json переменную из бота и БД. ##### Атрибуты:
ИмяТипОписание
attrsstring|object|array|nullСтрока, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId ?intПередает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной
scriptRequestParams objectПередает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной
isSuppressTriggers bool Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается
Возвращает: **self** - подтверждение удаления переменной. ##### Пример: ```JavaScript lead.forceDeleteJsonAttrs('json_var1, json_var2, json_var3'); ``` # lead.isInStatus() ### Проверка существования статуса у лида ```JavaScript lead.isInStatus(string $statusName) ``` ##### Описание: Проверить, что лид находится в статусе с указанным в методе именем. ##### Атрибуты:
ИмяТипОписание
statusNamestringНаименование статуса
##### Возвращает: **bool** — подтверждение существования статуса. # lead.getStatusId() ### Узнать id статуса лида ```JavaScript lead.getStatusId() ``` ##### Описание: Возвращает значение поля status\_id лида. ##### Возвращает: **int** — id статуса лида в форме числа или **null** — если у лида нет статуса. # lead.isTagExist() и lead.issetTag() ### Проверить наличие тэга лида ```JavaScript lead.isTagExist($some_tag) ``` или ```JavaScript lead.issetTag($some_tag) ``` ##### Описание: Проверяет существование тега у лида. ##### Атрибуты:
ИмяТипОписание
some\_tagstringНаименование тэга
##### Возвращает: **bool** - подтверждение существования тега. ##### Пример: ```JavaScript let TagExist = lead.isTagExist('тэг'); ``` или ```JavaScript let TagExist = lead.issetTag('тэг'); ``` # lead.getTag() ### Получить значение тэга лида ```JavaScript lead.getTag(string $key) ``` ##### Описание: Возвращает значение тэга лида по наименованию. ##### Атрибуты:
ИмяТипОписание
keystringНаименование тэга
##### Возвращает: **string** - если тэг активен или **null** - если тэг неактивен. ##### Пример: ```JavaScript let Tag = lead.getTag('тэг'); ``` # lead.getAllTags() ### Получить массив всех тэгов лида ```JavaScript lead.getAllTags() ``` ##### Описание: Возвращает массив всех тэгов лида. ##### Возвращает: **array** - массив наименований тэгов лида. ##### Пример: ```JavaScript let AllTags = lead.getAllTags(); let Tag2 = AllTags[1]; ``` # lead.addTags() и lead.addTag() ### Добавление тэгов лида ``` lead.addTags(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` или ``` lead.addTag(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` ##### Описание: Добавляет тэг в бот. ##### Атрибуты:
ИмяТипОписание
tagsstring|object|array|nullСтрока, представляющая собой список названий тэгов(разделитель запятая). Можно указать вместо списка json объект или массив
ticketId ?intПередает ticket в запускаемый триггер, который подписан на событие изменения/удаления тэга
scriptRequestParams objectПередает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления тэга
isSuppressTriggers bool Не мягкое удаление. Если передано true, то тэг будет удален из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается
Возвращает: **self** - наименование созданного тэга. ##### Пример: ```JavaScript lead.addTags('new_tag', null, {"some_key": "some_value"}); ``` # lead.deleteTags() и lead.deleteTag() ### Удаление тэгов лида ``` lead.deleteTags(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false) ``` или ``` lead.deleteTag(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false) ``` ##### Описание: Удаляет тэг из бота. ##### Атрибуты:
ИмяТипОписание
tagsstring|object|array|nullСтрока, представляющая собой список названий тэгов (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId ?intПередает ticket в запускаемый триггер, который подписан на событие изменения/удаления тэга
scriptRequestParams objectПередает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления тэга
isForceDelete bool Подавить запуск триггеров или нет, т.е. если передать true, и есть триггер подписанный на событие изменения/удаления тэга то он не будет запущен.
isSuppressTriggers bool Не мягкое удаление. Если передано true, то тэг будет удален из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается
Возвращает: **self** - подтверждение удаления тэга. ##### Пример: ```JavaScript lead.deleteTags('TAG_111, tag_222 , tag_333', null, null, true); ``` # lead.forceDeleteTags() и lead.forceDeleteTag() ### Принудительное удаление тэгов лидаиз БД ```JavaScript lead.forceDeleteTags(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` или ```JavaScript lead.forceDeleteTag(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` ##### Описание: Удаляет тэг из бота и БД. ##### Атрибуты:
ИмяТипОписание
attrsstring|object|array|nullСтрока, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId ?intПередает ticket в запускаемый триггер, который подписан на событие изменения/удаления тэга
scriptRequestParams objectПередает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления тэга
isSuppressTriggers bool Не мягкое удаление. Если передано true, то тэг будет удален из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается
Возвращает: **self** - подтверждение удаления тэга. ##### Пример: ```JavaScript lead.forceDeleteTags('TAG_111, tag_222 , tag_333'); ``` # lead.setForwarded() ### Переключить на оператора ```JavaScript lead.setForwarded(bool|int $state) ``` ##### Описание: Установка ($state == true) или сброс ($state == false) у лида признака “Переведён на оператора”. ##### Атрибуты:
ИмяТипОписание
state bool|intПри $state = true установка и при $state = false сброс признака “Переведён на оператора”
##### Возвращает: **self** - подтверждение установки или сброса в формате используемом при вызове метода. # lead.getPersonId() ### Получить id персоны ```JavaScript lead.getPersonId() ``` ##### Описание: Возвращает id персоны лида. Возвращает: **int** - id персоны в формате числа или **null** - если персоны нет. ##### Пример: ```JavaScript let PersonId = lead.getPersonId(); lead.setAttr('PersonId', PersonId); ``` # lead.setPersonId() ### Привязать персону к лиду ```JavaScript lead.setPersonId(?int $personId) ``` ##### Описание: Привязывает к лиду персону с соответствующим id. ##### Атрибуты:
ИмяТипОписание
personId intId персоны
##### Возвращает: **bool** - подтверждение успешной привязки персоны к лиду. ##### Пример: ```JavaScript lead.setPersonId(167435); ``` # lead.createPersonForCurrentLead() ### Создать персону для лида ```JavaScript lead.createPersonForCurrentLead($data) ``` ##### Описание: Создает персону для текущего лида в контексте которого запущен v8-скрипт. ##### Атрибуты:
ИмяТипОписание
data jsonДанные о персоне в формате json. Возможные поля расписаны ниже
person\_role\_id integerId роли
is\_external boolЕсли не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом. А 0 означает что персона является работником бизнеса
user\_id integerId пользователя, привязываемого к персоне
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 созданной персоны в формате числа. ##### Пример: ```JavaScript let newPersonId = lead.createPersonForCurrentLead({ 'is_external': 1, 'firstname': 'Иван', 'lastname': 'Иванов' }) ``` # lead.isContextExist() и lead.issetContext() ### Проверить наличие контекста лида ``` lead.isContextExist(string $key) ``` или ``` lead.issetContext(string $key) ``` ##### Описание: Проверяет существование контекста у лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование контекста
##### Возвращает: **bool** - подтверждение существования контекста. ##### Пример: ``` let ContextExist = lead.isContextExist('контекст'); ``` или ``` let ContextExist = lead.issetContext('контекст'); ``` # lead.getContext() ### Получить значение контекста лида ``` lead.getContext(string $key) ``` ##### Описание: Возвращает значение контекста лида по наименованию. ##### Атрибуты:
ИмяТипОписание
keystringНаименование контекста
##### Возвращает: **string** - если контекст активен или **null** - если контекст неактивен. ##### Пример: ``` let Context = lead.getContext('контекст'); ``` # lead.getAllContexts() ### Получить массив всех контекстов лида ``` lead.getAllContexts() ``` ##### Описание: Возвращает массив всех контекстов лида. ##### Возвращает: **array** - массив наименований контекстов лида. ##### Пример: ```JavaScript let AllContexts = lead.getAllContexts(); let Context2 = AllContexts[1]; ``` # lead.setActiveNlpIntegrationByCode() ### Присвоить интеграцию лиду по коду ```JavaScript lead.setActiveNlpIntegrationByCode(?string $integrationCode) ``` ##### Описание: Присваивает интеграцию лиду в соответствии с кодом интеграции. ##### Атрибуты:
ИмяТипОписание
integrationCodestringКод интеграции
##### Возвращает: **bool** - подтверждение присвоения интеграции. # lead.canAutoForward() ### Узнать доступно ли авто-назначение оператора в данном скрипте ``` lead.canAutoForward() ``` ##### Описание: Функция необходима для исключения рекурсивного вызова назначения диалога на оператора, а также для исключения выполнения авто-назначения диалога на оператора, если оператор сам подключается к диалога из контакт-центра. Результат выполнения данной функции аналогичен результату выполнения функции **bot.canAutoForward()**, функция в bot первична, в лиде функция добавлена для удобства. Если оператор сам выполняет подключение к диалогу из контакт-центра, то результат функции аналогичен проверке: ```JavaScript return bot.getForwardEventType() !== 'forwarded_by_operator'; ``` Но при этом **lead.canAutoForward(): bool** гарантирует что назначение заявки на оператора не вызвано рекурсивно. ##### Возвращает: **bool** - подтверждение доступа к авто-назначению. # lead.getNextOperators() ### Вернуть список следующих операторов ```JavaScript lead.getNextOperators(string $departmentCode = null, bool $isOnline = true, int|null $limit = 1, bool $useLocks = true) ``` ##### Описание: Возвращает список следующих операторов. Полученный список будет отсортирован, по:
\- Кол-ву диалогов на операторе; \- Дате последнего назначения/принятия диалога; \- ID оператора. ##### Атрибуты:
ИмяТипОписание
departmentCode stringКод отдела
isOnline bool Должны ли операторы быть онлайн
limit int|nullЛимит возвращенных операторов. Чтобы получить всех операторов, указываем $limit=null
useLocks bool Использовать ли блокировки
##### Возвращает: **int** - список операторов или **null** - если нет операторов. # lead.assignDialogToNextOperator() ### Назначить диалог на следующего оператора ```JavaScript lead.assignDialogToNextOperator(string|null $departmentCode = null, bool $isOnline = true, bool $isForwardIfOperatorNotFound = true, bool $useLocks = true) ``` ##### Описание: Назначает диалог на следующего оператора полученного с помощью **getNextOperators**. Варианты откуда может запускаться: \- оператор сам подключился к КЦ и в системном скрипте есть вызов данной функции - игнорируем ее вызов; \- функцию вызвали в другом скрипте и она также есть в системном скрипте - игнорируем ее вызов только из системного скрипта; \- функцию вызвали в системном скрипте - не игнорируем ее вызов. Если вызываем функцию из системного скрипта перевода на оператора, то данная функция не выполняет перевод (так как он уже выполнен на момент запуска функции) и также не запускает системный скрипт (так как он уже запущен на момент запуска функции) - для этого есть внутренние механизмы отслеживания, откуда запущена функция, и по сути это исключает рекурсивный запуск функций, для этого и введена новая функция bot / lead.canAutoForward на самом деле выполнять данную проверку canAutoForward смысла нет, так как она выполняется автоматически внутри функций назначения оператора и автоматом отсечет рекурсивный вызов, но где может понадобиться использование canAutoForward - это для написания JavaScript условия - нужно ли отсылать уведомление лиду, о том что скрипт перевод на оператора: пример вызываем назначение на оператора в обычном скрипте, и в этом же скрипте уведомляем о то, что мы перевели на оператора, тогда при запуске системного скрипта Перевод на оператора вывод такого же сообщения нужно исключить. ##### Атрибуты:
ИмяТипОписание
departmentCode stringКод отдела
isOnline bool Должны ли операторы быть онлайн
isForwardIfOperatorNotFoundboolПродолжить если оператор не найден
useLocks bool Использовать ли блокировки
##### Возвращает: **int** - оператора или **null** - если не удалось назначить. # lead.assignDialogToOperator() ### Назначить диалог на указанного оператора ```JavaScript lead.assignDialogToOperator(int|null $operatorId, bool $isForwardIfOperatorNotFound = true, bool $useLocks = true) ``` ##### Описание: Назначает диалог на указанного в методе оператора. Если вызываем функцию из системного скрипта перевода на оператора, то данная функция не выполняет перевод (так как он уже выполнен на момент запуска функции) и также не запускает системный скрипт (так как он уже запущен на момент запуска функции). Если вызываем функцию из обычного скрипта, то в данной точке сразу будет вызван системный скрипт (если он есть). Системный скрипт можно не создавать и обрабатывать все в точке вызова (можно через v8 плагина) или в отдельном обычном скрипте. Если в системном скрипте и скрипте в котором вызывает данную функцию есть отправка сообщений то необходимо вызывать **bot.disableBuffer()**, чтобы не нарушать последовательность сообщений. Но лучше отправлять сообщения только в одном из скриптов. ##### Атрибуты:
ИмяТипОписание
operatorIdstringID оператора
limit int|nullЛимит возвращенных операторов. Чтобы получить всех операторов, указываем $limit=null
useLocks bool Использовать ли блокировки
##### Возвращает: **int** - оператора или **null** - если не удалось назначить оператора. # lead.getLastRequest() ### Получить объект с параметрами последнего реквеста ```JavaScript lead.getLastRequest() ``` ##### Описание: Находит последний реквест и возвращает объект с его параметрами. ##### Возвращает: **ScriptRequest** — последний реквест. # lead.getMessengerCode() ### Получить буквенное обозначение текущего мессенджера канала ``` lead.getMessengerCode() ``` ##### Описание: Возвращает буквенное обозначение текущего мессенджера канала. ##### Возвращает: **string** - буквенное обозначение текущего мессенджера канала. Коды которые может возвращать данная функция: - 'unknown' - 'avito' - 'apple\_business\_chat' - 'facebook' - 'instagram' - 'jivoWidget' - 'livechatWidget' - 'odnoklassniki' - 'skype' - 'telegram' - 'twitter' - 'viber' - 'vk' - 'wechat' - 'whatsapp' - 'youla' - 'metabotWidget' - 'webim' # lead.getIdentification() ### Получить идентификатор лида во внешней системе ``` lead.getIdentification() ``` ##### Описание: Возвращает идентификатор лида во внешней системе, т.е. в мессенджере, например для Telegram - это id чата клиента. ##### Возвращает: **string** - идентификатор лида во внешней системе в формате строки или **null** - если идентификатор не найден. # lead.getIdentificationEntity() ### Получить дополнительный идентификатор лида во внешней системе ``` lead.getIdentificationEntity() ``` ##### Описание: Возвращает дополнительный идентификатор лида во внешней системе, например используется для Bitrix24 – и возвращает ‘LEAD’ / ‘DEAL’. ##### Возвращает: **string** - дополнительный идентификатор лида во внешней системе в формате строки или **null** - если нет составного идентификатора лида. # lead.getMessenger() ### Получить текущий мессенджер ``` lead.getMessenger() ``` ##### Описание: Метод для получения обозначения текущего мессенджера канала. Коды которые может возвращать данная функция: - Unknown - 0 - Avito - 1 - Apple business chat - 17 - Facebook - 2 - Instagram - 3 - JivoWidget - 15 - LivechatWidget - 4 - Jdnoklassniki - 16 - Skype - 5 - Telegram - 6 - Twitter - 7 - Viber - 8 - VK - 9 - Wechat - 12 - Whatsapp - 10 - Юла - 11 - MetabotWidget - 13 - Webim - 14 ##### Возвращает: **int** - код канала. # lead.getAllData() ### Получить все данные лида ```JavaScript lead.getAllData() ``` ##### Описание: Возвращает все данные лида. ##### Возвращает: **array** - значение данных лида в формате массива: - **id** - id лида; - **name** - имя лида; - **identification** - внешний id лида; - **identification\_entity** - внешний id сущности; - **person\_id** - id персоны лида; - **manager\_id** - id менеджера привязанного к лиду; - **bot\_id** - id бота лида; - **channel\_id** - id канала лида; - **lang\_code** - код языка; - **status\_id** - id статуса лида; - **extra** - last\_message\_payload - **identification** - id последнего сообщения; - **event\_name** - код события, например, user\_uttered, когда последнее сообщение - ответ пользователя; - **text** - текст последнего сообщения; - **payload** - данные последнего сообщения; - **timestamp** - время отправки; - **session\_id** - id сессии; - **socket\_id** - id сокета; - **is\_mute** - включен ли бот для лида; - **last\_message\_date** - дата последнего сообщения; - **active\_nlp\_integration\_id** - id активной NLP интеграции; - **last\_activity** - время последней активности; - **last\_response** - код последнего ответа; - **messenger** - id мессенджера; - **bot\_debug\_level** - уровень отладки бота; - **created\_at** - время создания; - **updated\_at** - время обновления; - **dialog\_id** - id диалога; - **unread\_count** - количество непрочитанных оператором сообщений; - **last\_message** - последнее сообщение; - **last\_message\_botlog\_id** - id последнего сообщения в логе. ##### Пример: ```JavaScript let extra = lead.getAllData(); ``` # lead.setData() ### Установить значение данных лида ```JavaScript lead.setData(string $key, $value) ``` ##### Описание: Устанавливает значение данных лида по ключу. ##### Атрибуты:
ИмяТипОписание
keystringКлюч данных лида
valuemixedЗначение данных
В качестве ключа можно указать: - **id** - id лида; - **name** - имя лида; - **identification** - внешний id лида; - **identification\_entity** - внешний id сущности; - **person\_id** - id персоны лида; - **manager\_id** - id менеджера привязанного к лиду; - **bot\_id** - id бота лида; - **channel\_id** - id канала лида; - **lang\_code** - код языка; - **status\_id** - id статуса лида; - **extra** - last\_message\_payload - **identification** - id последнего сообщения; - **event\_name** - код события, например, user\_uttered, когда последнее сообщение - ответ пользователя; - **text** - текст последнего сообщения; - **payload** - данные последнего сообщения; - **timestamp** - время отправки; - **session\_id** - id сессии; - **socket\_id** - id сокета; - **is\_mute** - включен ли бот для лида; - **last\_message\_date** - дата последнего сообщения; - **active\_nlp\_integration\_id** - id активной NLP интеграции; - **last\_activity** - время последней активности; - **last\_response** - код последнего ответа; - **messenger** - id мессенджера; - **bot\_debug\_level** - уровень отладки бота; - **created\_at** - время создания; - **updated\_at** - время обновления; - **dialog\_id** - id диалога; - **unread\_count** - количество непрочитанных оператором сообщений; - **last\_message** - последнее сообщение; - **last\_message\_botlog\_id** - id последнего сообщения в логе. ##### Возвращает: **self** - значение данных лида в формате, в котором они находятся в сущности. ##### Пример: ```JavaScript let person_id = lead.setData('person_id', 34); ``` # lead.isInlineButtonsAvailable() ### Проверка включения инлайн кнопок ```JavaScript lead.isInlineButtonsAvailable() ``` ##### Описание: Проверяет включены ли инлайн кнопки. ##### Возвращает: **bool** - 0, если не включены, 1, если включены или **null** - если таких данных не существует. ##### Пример: ```JavaScript let inlineButtons = lead.isInlineButtonsAvailable(); ``` # lead.isInlineButtonsAvailableGeneralChannelSetting() ### Получить настройки кнопок канала ```JavaScript lead.isInlineButtonsAvailableGeneralChannelSetting() ``` ##### Описание: Возвращает настройки кнопок текущего канала лида. ##### Возвращает: **bool** - 0, если не включены, 1, если включены или **null** - если таких данных не существует. ##### Пример: ```JavaScript let inlineButtons = lead.isInlineButtonsAvailableGeneralChannelSetting(); ``` # lead.getIntAttr() ### Получить значение числовой переменной лида ```JavaScript lead.getIntAttr(string $key, ?int|null $default = 0) ``` ##### Описание: Возвращает значение уже существующей числовой переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
defaultintДефолтное значение переменной
##### Возвращает: **int** - числовое значение запрашиваемой переменной или **null** - если переменная не была найдена. ##### Пример: ```JavaScript let lead_attribute_value = lead.getIntAttr('lead_attribute', 2); ``` # lead.getFloatAttr() ### Получить значение float переменной лида ```JavaScript lead.getFloatAttr(string $key, ?float|null $default = 0.0) ``` ##### Описание: Возвращает значение уже существующей float переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
defaultfloat Дефолтное значение
##### Возвращает: **float** - значение запрашиваемой float переменной или **null** - если переменная не была найдена. ##### Пример: ```JavaScript let lead_attribute_value = lead.getFloatAttr('lead_attribute', 0.1); ``` # lead.getBoolAttr() ### Получить значение bool переменной лида ```JavaScript lead.getBoolAttr(string $key, ?bool|null $default = false) ``` ##### Описание: Возвращает значение уже существующей bool переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
defaultboolДефолтное значение
##### Возвращает: **bool** - значение запрашиваемой bool переменной или **null** - если переменная не была найдена. ##### Пример: ```JavaScript let lead_attribute_value = lead.getBoolAttr('lead_attribute', true); ``` # lead.getJsonAttr() ### Получить значение JSON переменной лида ```JavaScript lead.getJsonAttr(string $key) ``` ##### Описание: Возвращает значение уже существующей JSON переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **mixed** - значение запрашиваемой JSON переменной или **null** - если переменная не была найдена. ##### Пример: ```JavaScript let lead_attribute_value = lead.getJsonAttr('lead_attribute'); ``` # lead.getAllJsonAttrs() ### Получить значение всех JSON переменных лида ```JavaScript lead.getAllJsonAttrs() ``` #### Описание: Возвращает значение всех JSON переменных лида. ##### Возвращает: **array** - массив JSON переменных лида. ##### Пример: ```JavaScript let lead_attribute_value = lead.getAllJsonAttrs(); ``` # lead.setJsonAttr() ### Установить значение JSON переменной лида ```JavaScript lead.setJsonAttr(string $key, $value) ``` #### Описание: Устанавливает значение JSON переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
valuemixedJSON значение переменной
##### Возвращает: **self** - объект того же типа и значения, что задан в методе. ##### Пример: ```JavaScript let lead_attribute_value = lead.setJsonAttr('lead_attribute', { "id": 2415, "name": "Имя" }); ``` # lead.issetJsonAttr() и lead.isJsonAttrKeyExist() ### Проверить наличие JSON переменной лида ```JavaScript lead.issetJsonAttr(string $key) и lead.isJsonAttrKeyExist(string $key) ``` #### Описание: Проверяет наличие JSON переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **bool** - подтверждение существования переменной. ##### Пример: ```JavaScript let lead_attribute_value = lead.issetJsonAttr('lead_attribute'); или let lead_attribute_value = lead.isJsonAttrKeyExist('lead_attribute'); ``` # lead.setAllLiveTexAttrs() ### Установить значение всех LiveTex переменных лида ```JavaScript lead.setAllLiveTexAttrs(string $value) ``` #### Описание: Устанавливает значение всех LiveTex переменных лида. ##### Атрибуты:
ИмяТипОписание
valuestringЗначение переменной
##### Возвращает: **self** - объект того же типа и значения, что задан в методе. ##### Пример: ```JavaScript let lead_attribute_value = lead.setAllLiveTexAttrs('lead_value'); ``` # lead.setLiveTexAttr() ### Установить значение LiveTex переменной лида ```JavaScript lead.setLiveTexAttr(string $key,string $value) ``` #### Описание:с Устанавливает значение LiveTex переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
valuestringЗначение переменной
##### Возвращает: **self** - объект того же типа и значения, что задан в методе. ##### Пример: ```JavaScript let lead_attribute_value = lead.setLiveTexAttr('lead_attribute', "lead_value"); ``` # lead.getLiveTexAttr() ### Получить значение LiveTex переменной лида ```JavaScript lead.getLiveTexAttr(string $key) ``` ##### Описание: Возвращает значение уже существующей LiveTex переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **mixed** - значение запрашиваемой переменной или **null** - если переменная не была найдена. ##### Пример: ```JavaScript let lead_attribute_value = lead.getLiveTexAttr('lead_attribute'); ``` # lead.getAllLiveTexAttrs() ### Получить значение всех LiveTex переменных лида ```JavaScript lead.getAllLiveTexAttrs() ``` #### Описание: Возвращает значение всех LiveTex переменных лида. ##### Возвращает: **array** - массив LiveTex переменных лида. ##### Пример: ```JavaScript let lead_attribute_value = lead.getAllLiveTexAttrs(); ``` # lead.setTag() ### Установить значение тэга лида ```JavaScript lead.setTag(string $key, $value) ``` ##### Описание: Устанавливает значение тэга лида по наименованию. ##### Атрибуты:
ИмяТипОписание
keystringНаименование тэга
valuemixedЗначение тэга
##### Возвращает: **self** - значение, указанное в методе. ##### Пример: ```JavaScript let Tag = lead.setTag('тэг', "регистрация"); ``` # lead.setContext() ### Установить значение контекста лида ```JavaScript lead.setContext(string $key, $value) ``` ##### Описание: Устанавливает значение контекста лида по наименованию. ##### Атрибуты:
ИмяТипОписание
keystringНаименование контекста
valuemixedЗначение контекста
##### Возвращает: **self** - значение, указанное в методе. ##### Пример: ```JavaScript let Con = lead.setContext('контекст', "регистрация"); ``` # lead.getAllStatuses() ### Узнать все статусы лида ```JavaScript lead.getAllStatuses() ``` ##### Описание: Возвращает все статусы лида. ##### Возвращает: **array** — id статусов лида в формате массива. # lead.getAllStatusesIndexedByName() ### Узнать все наименования статусов лида ```JavaScript lead.getAllStatusesIndexedByName() ``` ##### Описание: Возвращает все наименования статусов лида. ##### Возвращает: **array** — массив наименований статусов лида. # lead.setStatusId() ### Установить id статуса лида ```JavaScript lead.setStatusId(int $statusId, string $name) ``` ##### Описание: Устанавливает id статуса лида. ##### Атрибуты:
ИмяТипОписание
statusIdint Id статуса
namestringНаименование статуса
##### Возвращает: **self** — id статуса лида. # lead.setStatusName() ### Установить наименование статуса лида ```JavaScript lead.setStatusName(string $name) ``` ##### Описание: Устанавливает наименование статуса лида. ##### Атрибуты:
ИмяТипОписание
namestringНаименование статуса
##### Возвращает: **self** — наименование статуса лида. # lead.getStatusName() ### Узнать наименование статуса лида ```JavaScript lead.getStatusName() ``` ##### Описание: Возвращает наименование статуса лида. ##### Возвращает: **string** — наименование статуса лида в формате строки. # lead.setStatus() ### Установить статус лида ```JavaScript lead.setStatus(int $statusId, string $name) ``` ##### Описание: Устанавливает статус лида. ##### Атрибуты:
ИмяТипОписание
statusIdintId статуса
namestringНаименование статуса
##### Возвращает: **self** — id статуса лида. # lead.setStatusById() ### Установить статус лида по id ```JavaScript lead.setStatusById(int $statusId) ``` ##### Описание: Устанавливает статус лида по id. ##### Атрибуты:
ИмяТипОписание
statusIdintId статуса
##### Возвращает: **self** — id статуса. # lead.issetStatusById() ### Проверить существует ли статус у лида по id ```JavaScript lead.issetStatusById(string $id) ``` ##### Описание: Проверяет существует ли статус у лида по id. ##### Атрибуты:
ИмяТипОписание
idstringId статуса
##### Возвращает: **bool** — подтверждение существования статуса. # lead.issetStatusByName() ### Проверить существует ли статуса у лида по наименованию ```JavaScript lead.issetStatusByName(string $name) ``` ##### Описание: Проверяет существует ли статуса у лида по наименованию. ##### Атрибуты:
ИмяТипОписание
namestringНаименование статуса
##### Возвращает: **bool** — подтверждение существования статуса. # lead.getStatusIdByName() ### Узнать id статуса лида по наименованию ```JavaScript lead.getStatusIdByName(string $statusName) ``` ##### Описание: Возвращает id статуса лида по наименованию. ##### Атрибуты:
ИмяТипОписание
statusNamestringНаименование статуса
##### Возвращает: **int** — id статуса. # lead.setStatusByName() ### Установить статус лида по наименованию ```JavaScript lead.setStatusByName(string $statusName) ``` ##### Описание: Устанавливает статус лида по наименованию. ##### Атрибуты:
ИмяТипОписание
statusNamestringНаименование статуса
##### Возвращает: **self** — наименование статуса лида. # lead.setActiveNlpIntegrationById() ### Присвоить интеграцию лиду по id ```JavaScript lead.setActiveNlpIntegrationById(int|null $nlpIntegrationId) ``` ##### Описание: Присваивает интеграцию лиду по id. ##### Атрибуты:
ИмяТипОписание
nlpIntegrationIdintId интеграции
##### Возвращает: **bool** - подтверждение присвоения интеграции. # lead.hasActiveNlpIntegration() ### Проверить активна ли интеграция ```JavaScript lead.hasActiveNlpIntegration() ``` ##### Описание: Проверяет активна ли интеграция. ##### Возвращает: **bool** - подтверждение активности интеграции. # lead.getActiveNlpIntegrationId() ### Получить интеграцию по id ```JavaScript lead.getActiveNlpIntegrationId(int|null $nlpIntegrationId) ``` ##### Описание: Возвращает интеграцию по id. ##### Атрибуты:
ИмяТипОписание
nlpIntegrationIdintId интеграции
##### Возвращает: **int** - id интеграции или **null** - если таких данных нет. # lead.getActiveNlpIntegrationCode() ### Получить интеграцию по коду ```JavaScript lead.getActiveNlpIntegrationCode(string|null $integrationCode) ``` ##### Описание: Возвращает интеграцию по коду. ##### Атрибуты:
ИмяТипОписание
integrationCodestringКод интеграции
##### Возвращает: **string** - код интеграции или **null** - если таких данных нет. # lead.getActiveOrFirstNlpIntegrationCode() ### Получить активную или первую интеграцию по коду ```JavaScript lead.getActiveOrFirstNlpIntegrationCode(string|null $integrationCode) ``` ##### Описание: Возвращает активную или первую интеграцию по коду. ##### Атрибуты:
ИмяТипОписание
integrationCodestringКод интеграции
##### Возвращает: **string** - код интеграции или **null** - если таких данных нет. # lead.getActiveOrFirstNlpIntegrationId() ### Получить активную или первую интеграцию по id ```JavaScript lead.getActiveOrFirstNlpIntegrationId(int|null $nlpIntegrationId) ``` ##### Описание: Возвращает активную или первую интеграцию по id. ##### Атрибуты:
ИмяТипОписание
nlpIntegrationIdintId интеграции
##### Возвращает: **int** - id интеграции или **null** - если данные не найдены. # lead.getForwardEventTypeForFB() ### Получить тип события для ФБ ```JavaScript lead.getForwardEventTypeForFB() ``` ##### Описание: Возвращает тип события для ФБ. ##### Возвращает: **string** - тип события интеграции или **null** - если таких данных нет. # lead.getLang() ### Получить язык установленный в бизнесе ```JavaScript lead.getLang() ``` ##### Описание: Возвращает язык установленный в бизнесе. ##### Возвращает: **string** - код языка или **null** - если таких данных нет. # lead.setLang() ### Установить язык в бизнесе ```JavaScript lead.setLang(string|null $langCode) ``` ##### Описание: Устанавливает язык в бизнесе. ##### Атрибуты:
ИмяТипОписание
langCodestringКод языка
##### Возвращает: **string** - код языка или **null** - если таких данных не существует. # lead.isLangExist() ### Проверить существует ли язык ```JavaScript lead.isLangExist(string $langCode, bool|null $isEnabled = true) ``` ##### Описание: Проверяет существует ли язык. ##### Атрибуты:
ИмяТипОписание
langCodestring Код языка
isEnabledboolАктивность языка
##### Возвращает: **bool** - подтверждения существования языка.