# Методы bot # bot.getData() ### Получить значение данных бота ```JavaScript bot.getData(string $key) ``` ##### Описание: Возвращает значение данных бота по ключу. ##### Атрибуты:
ИмяТипОписание
keystringКлюч данных бота
В качестве ключа можно указать: - все поля бота в БД (по английски). ##### Возвращает: **mixed** - значение данных бота в формате, в котором они находятся в сущности или **null** - если таких данных не существует. ##### Пример: ```JavaScript let data = bot.getData('leadsCount'); ``` # bot.findLeads() ### Получить лиды по атрибутам ```JavaScript bot.findLeads($columns = [], $where = [], $orderBy = [], ?int $limit = null, ?int $offset = null) ``` ##### Описание: Находит лида по указанным атрибутам и другим данным. ##### Атрибуты:
ИмяТипОписание
columnsarrayВозвращаемые поля лидов, по умолчанию все поля. Вы можете вывести дополнительные поля: **status\_name**, **channel\_name**, **channel\_code**
[where](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/where-dlya-botfindleads)arrayМассив для поиска лидов по атрибутам, статусам и каналам. Подробнее читайте [здесь.](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/where-dlya-botfindleads)
[orderBy](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/orderby-dlya-botfindleads)arrayМассив сортировки возвращаемых значений. Подробнее читайте [здесь](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/orderby-dlya-botfindleads).
limitintМаксимальное число возвращаемых лидов. Можно вернуть диапазон от 1 до 100
offsetintЧисловое значение, указывающее количество записей, которые необходимо пропустить от начала результата выборки перед возвратом данных. Этот параметр используется для пагинации. Например, если `limit` установлен на 100, а `offset` равен 100, то будут возвращены записи, начиная со 101-го лида.
##### Возвращает: **array** - массив полей лидов. В массиве следующие поля:
- **id** - id лида - **identification** - внешний id лида - **manager\_id** - id менеджера привязанного к лиду - **bot\_id** - id бота лида - **channel\_id** - id канала лида - **status\_id** - id статуса лида - **is\_mute** - включен ли бот для лида ##### Пример: ```JavaScript let leads = bot.findLeads( [], [ ['lead_attributes.attribute_type', 'variable'], ['lead_attributes.attribute_key', 'nlpLastIntentName'], ['lead_attributes.attribute_value', 'позвать_человека'], ], [['updated_at']] ); if (leads.length) { let statusName = leads[0].getData('id'); } ``` или получаем поля для первого найденного лида (без условий): ```JavaScript let leads = bot.findLeads(['status_name', 'channel_name', 'channel_code']); if (leads.length) { let statusName = leads[0].getData('status_name'); let channelName = leads[0].getData('channel_name'); let channelCode = leads[0].getData('channel_code'); } ``` # bot.scheduleScript() ### Планирование скрипта ```JavaScript bot.scheduleScript(?int $scriptId, ?int $leadId, ?int $ticketId = null, $jobParams = []) ``` ##### Описание: Запускает скрипт в соответствии с указанными параметрами. ##### Атрибуты:
ИмяТипОписание
scriptIdintID скрипта, который будет запущен
leadIdintID лида, для которого будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение планирования скрипта. ##### Пример: ```JavaScript var result = bot.scheduleScript(1426, 6473, null, { "script_request_params": { "name": "Alex" } }); ``` # bot.getScriptIdByName() ### Получить ID скрипта по наименованию ```JavaScript bot.getScriptIdByName(?string $scriptName) ``` ##### Описание: Возвращает id скрипта по его наименованию. ##### Атрибуты:
ИмяТипОписание
scriptNamestringНаименование скрипта
##### Возвращает: **int** - id скрипта в формате числа. ##### Пример: ```JavaScript let ScriptId = bot.getScriptIdByName('Меню'); ``` # bot.getScriptIdByCode() ### Получить ID скрипта по коду ```JavaScript bot.getScriptIdByCode(?string $scriptCode) ``` ##### Описание: Возвращает id скрипта по его дополнительному идентификатору. ##### Атрибуты:
ИмяТипОписание
scriptCodestringКод скрипта
##### Возвращает: **int** - id скрипта в формате числа. ##### Пример: ```JavaScript let ScriptId = bot.getScriptIdByCode('menu'); ``` # bot.runScriptForLead() ### Запустить скрипт для лида по ID ```JavaScript bot.runScriptForLead(?int $scriptId, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = []) ``` ##### Описание: Запускает скрипт бота для лида по указанному id скрипта. ##### Атрибуты:
ИмяТипОписание
scriptIdintID скрипта, который будет запущен
leadIdintID лида, для которого будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение запуска скрипта. ##### Пример: ```JavaScript let ScriptId = bot.getScriptIdByName('Меню'); bot.runScriptForLead(ScriptId, 165784, null, true); ``` # bot.runScriptByNameForLead() ### Запустить скрипт для лида по наименованию ```JavaScript bot.runScriptByNameForLead(?string $scriptName, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = []) ``` ##### Описание: Запускает скрипт бота для лида по указанному имени скрипта. ##### Атрибуты:
ИмяТипОписание
scriptNamestringНаименование скрипта, который будет запущен
leadIdintID лида, для которого будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение запуска скрипта. ##### Пример: ```JavaScript bot.runScriptByNameForLead('Меню', 165784, null, true); ``` # bot.runScriptForPerson() ### Запустить скрипт для персоны по ID ```JavaScript bot.runScriptForPerson(?int $scriptId, ?int $personId, ?int $ticketId = null, $addToQueue = true, $jobParams = []) ``` ##### Описание: Запускает скрипт бота для персоны по указанному id скрипта. ##### Атрибуты:
ИмяТипОписание
scriptIdintID скрипта, который будет запущен
personIdintID персоны, для которой будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение запуска скрипта. ##### Пример: ```JavaScript let ScriptId = bot.getScriptIdByCode('menu'); bot.runScriptForPerson(ScriptId, 24178, null, true); ``` # bot.runScriptByNameForPerson() ### Запустить скрипт для персоны по наименованию ```JavaScript bot.runScriptByNameForPerson(?string $scriptName, ?int $personId, ?int $ticketId = null, $addToQueue = true, $jobParams = []) ``` ##### Описание: Запускает скрипт бота для персоны по указанному имени скрипта. ##### Атрибуты:
ИмяТипОписание
scriptNamestringНаименование скрипта, который будет запущен
personIdintID персоны, для которой будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение запуска скрипта. ##### Пример: ```JavaScript bot.runScriptByNameForPerson('Меню', 24178, null, false); ``` # bot.runScriptByCodeForLead() ### Запустить скрипт для лида по коду ```JavaScript bot.runScriptByCodeForLead(?string $scriptCode, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = []) ``` ##### Описание: Запускает скрипт бота для лида по указанному коду скрипта. ##### Атрибуты:
ИмяТипОписание
scriptCodestringКод скрипта, который будет запущен
leadIdintID лида, для которого будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение запуска скрипта. ##### Пример: ```JavaScript bot.runScriptByCodeForLead("SEND_TOKEN", 135, null, false, { "run_at": "2021-03-23 19:05:30", }); ``` # bot.runScriptByCodeForPerson() ### Запустить скрипт для персоны по коду ```JavaScript bot.runScriptByCodeForPerson(?string $scriptCode, ?int $personId, ?int $ticketId = null, $addToQueue = true, $jobParams = []) ``` ##### Описание: Запускает скрипт бота для персоны по указанному коду скрипта. ##### Атрибуты:
ИмяТипОписание
scriptCodestringКод скрипта, который будет запущен
personIdintID персоны, для которой будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение запуска скрипта. ##### Пример: ```JavaScript bot.runScriptByCodeForPerson("SEND_TOKEN", 135, null, false, { "run_after_sec": 5, }); ``` # bot.clearJobsByScriptId() ### Очистить джобы по id скрипта ```JavaScript bot.clearJobsByScriptId(?int $scriptId, ?int $leadId = null) ``` ##### Описание: Выполняется поиск и очистка джоб по id скрипта. ##### Атрибуты:
ИмяТипОписание
scriptIdintID серипта
leadIdintID лида
##### Возвращает: **bool** - подтверждение очистки джоб. ##### Пример: ```JavaScript bot.clearJobsByScriptId(1342, 187); ``` # bot.clearJobsByScriptName() ### Очистить джобы по наименованию скрипта ```JavaScript bot.clearJobsByScriptName(?string $scriptName, ?int $leadId = null) ``` ##### Описание: Выполняется поиск и очистка джоб по наименованию скрипта. ##### Атрибуты:
ИмяТипОписание
scriptNamestringНаименование скрипта
leadIdintID лида
##### Возвращает: **bool** - подтверждение очистки джоб. ##### Пример: ```JavaScript bot.clearJobsByScriptName("skript", 187); ``` # bot.clearJobsByScriptCode() ### Очистить джобы по коду скрипта ```JavaScript bot.clearJobsByScriptCode(?string $scriptCode, ?int $leadId = null) ``` ##### Описание: Выполняется поиск и очистка джоб по коду скрипта. ##### Атрибуты:
ИмяТипОписание
scriptCodestringКод скрипта
leadIdintID лида
##### Возвращает: **bool** - подтверждение очистки джоб. ##### Пример: ```JavaScript bot.clearJobsByScriptCode("SEND_TOKEN", 187); ``` # bot.setAttr() ### Установить значение переменной бота ```JavaScript bot.setAttr(string $key, string $value) ``` ##### Описание: Обновляет значение уже существующей глобальной переменной или создает новую переменную с указанным значением. Данные будут сохранены в БД. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
valuestringЗначение переменной
Не возвращает значений, так как выполняет только установку переменной. ##### Пример: Создание глобальной переменной бота bot\_attribute: ```JavaScript bot.setAttr('bot_attribute', 'Значение глобальной переменной') ``` # bot.getAttr() ### Получить значение переменной бота: ```JavaScript bot.getAttr(string $key) ``` ### Описание: Возвращает значение уже существующей глобальной переменной. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **mixed** - объект того же типа и значения, что у запрашиваемой переменной. ##### Пример: Получение значения глобальной переменной бота bot\_attribute: ```JavaScript let bot_attribute_value = bot.getAttr('bot_attribute'); ``` # bot.getAllAttr() ### Получить все переменные бота ```JavaScript bot.getAllAttr() ``` ##### Описание: Возвращает значение всех глобальных переменных. Возвращает: **array** - массив значений всех переменных. ##### Пример: Получение значений всех глобальных переменных бота и сложение их значений: ```JavaScript let bot_attribute = null; let all_bot_attributes = bot.getAllAttr(); for(let i = 0; i < all_bot_attributes.length; i++) { bot_attribute = bot_attribute + all_bot_attributes[i]; } ``` # bot.issetAttr() и bot.isAttrExist() ### Проверить наличие переменной бота ```JavaScript bot.issetAttr(string $key) ``` или ```JavaScript bot.isAttrExist(string $key) ``` ##### Описание: Проверяет существует ли глобальная переменная в боте. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
Возвращает: **bool** - подтверждение существования переменной. ##### Пример: Проверка двумя способами существования глобальной переменной бота bot\_attribute: ```JavaScript let bot_exists = bot.issetAttr('bot_attribute'); let bot_altexists = bot.isAttrExist('bot_attribute'); ``` # bot.scheduleTrigger() ### Планирование триггера ```JavaScript bot.scheduleTrigger(?int $triggerId, ?int $leadId, ?int $ticketId = null, $jobParams = []) ``` ##### Описание: Запускает триггер в соответствии с указанными параметрами. ##### Атрибуты:
ИмяТипОписание
triggerIdintID триггера, который будет запущен
leadIdintID лида, для которого будет запущен триггер
ticketIdintID заявки, для которой будет запущен триггер
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение планирования триггера. ##### Пример: ```JavaScript var result = bot.scheduleTrigger(4213, 1426, null, { "is_periodic": true, "repeat_interval_sec": 10, "script_request_params": { "name": "Alex" } }); ``` # bot.runTriggerByCodeForLead() ### Планирование триггера по коду ``` bot.runTriggerByCodeForLead(?string $triggerCode, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = []) ``` ##### Описание: Запускает триггер в соответствии с указанными параметрами по коду. ##### Атрибуты:
ИмяТипОписание
triggerCodestringID триггера, который будет запущен
leadIdintID лида, для которого будет запущен триггер
ticketIdintID заявки, для которой будет запущен триггер
addToQueueboolДобавление в очередь триггеров
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение планирования триггера. ##### Пример: ```JavaScript var result = bot.runTriggerByCodeForLead('test', 1426, null, true, { "is_periodic": true, "repeat_interval_sec": 10, "script_request_params": { "name": "Alex" } }); ``` # bot.runTriggerByCodeForPerson() ### Планирование триггера по коду для последнего лида персоны ``` bot.runTriggerByCodeForPerson(?string $triggerCode, ?int $personId, ?int $ticketId = null, $addToQueue = true, $jobParams = []) ``` ##### Описание: Запускает триггер в соответствии с указанными параметрами по коду для последнего лида указанной персоны. ##### Атрибуты:
ИмяТипОписание
triggerCodestringID триггера, который будет запущен
personIdintID персоны, для которой будет найден последний лид
ticketIdintID заявки, для которой будет запущен триггер
addToQueueboolДобавление в очередь триггеров
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение планирования триггера. ##### Пример: ```JavaScript var result = bot.runTriggerByCodeForPerson('test', 1426, null, true, { "is_periodic": true, "repeat_interval_sec": 10, "script_request_params": { "name": "Alex" } }); ``` # bot.clearTriggerJobsForLead() ### Удалить триггеры для лида ```JavaScript bot.clearTriggerJobsForLead(?int $leadId, ?int $ticketId = null) ``` ##### Описание: Удаляет все триггеры из очереди для лида. ##### Атрибуты:
ИмяТипОписание
leadIdintID лида, триггеры которого будут удалены
ticketIdintID заявки, триггеры которого будут удалены
##### Возвращает: **bool** - подтверждение удаления триггеров. ##### Пример: ```JavaScript bot.clearTriggerJobsForLead(236178); ``` # bot.clearTriggerJobsForAllPersonLeads() ### Удалить триггеры для всех лидов персоны ```JavaScript bot.clearTriggerJobsForAllPersonLeads(?int $personId, ?int $ticketId = null) ``` ##### Описание: Удаляет все триггеры из очереди для всех лидов персоны. ##### Атрибуты:
ИмяТипОписание
personIdintID персоны, триггеры которой будут удалены
ticketIdintID заявки, триггеры которого будут удалены
##### Возвращает: **bool** - подтверждение удаления триггеров. ##### Пример: ```JavaScript bot.clearTriggerJobsForAllPersonLeads(36178); ``` # bot.getTriggerIdByName() ### Получить ID триггера по наименованию ```JavaScript bot.getTriggerIdByName(?string $triggerName) ``` ##### Описание: Возвращает id триггера по указанному наименованию. ##### Атрибуты:
ИмяТипОписание
triggerNamestringНаименование триггера
##### Возвращает: **int** - id триггера в формате числа. ##### Пример: ``` let TriggerId = bot.getTriggerIdByName('Триггер'); ``` # bot.getTriggerIdByCode() ### Получить ID Триггера по Коду ``` bot.getTriggerIdByCode(?string $triggerCode) ``` ##### Описание: Возвращает id триггера по указанному коду. ##### Атрибуты:
ИмяТипОписание
triggerCodestringКод триггера
##### Возвращает: **int** - id триггера в формате числа. # bot.runTriggerForLead() ### Запустить триггер для лида по ID триггера ```JavaScript bot.runTriggerForLead(?int $triggerId, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = []) ``` ##### Описание: Запускает триггер для лида по указанному id триггера. ##### Атрибуты:
ИмяТипОписание
triggerIdintID триггера, который будет запущен
leadIdintID лида, для которого будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение запуска триггера. ##### Пример: ```JavaScript let TriggerId = bot.getTriggerIdByName('Триггер'); bot.runTriggerForLead(TriggerId, 236178, null, true, { "run_at": "2021-03-23 19:01:00", }); ``` # bot.runTriggerByNameForLead() ### Запустить триггер для лида по наименованию ```JavaScript bot.runTriggerByNameForLead(?string $triggerName, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = []) ``` ##### Описание: Запускает триггер для лида по указанному имени триггера. ##### Атрибуты:
ИмяТипОписание
triggerNamestringНаименование триггера, который будет запущен
leadIdintID лида, для которого будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение запуска триггера. ##### Пример: ```JavaScript bot.runTriggerByNameForLead('Триггер', 236178, null, true{ "run_after_sec": 5, }); ``` # bot.runTriggerForPerson() ### Запустить триггер для персоны по ID ```JavaScript bot.runTriggerForPerson(?int $triggerId, ?int $personId, ?int $ticketId = null, $addToQueue = true, $jobParams = []) ``` ##### Описание: Запускает триггер для персоны по указанному id триггера. ##### Атрибуты:
ИмяТипОписание
triggerIdintID триггера, который будет запущен
personIdintID персоны, для которой будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение запуска триггера. ##### Пример: ```JavaScript let TriggerId = bot.getTriggerIdByName('Триггер'); bot.runTriggerForPerson(TriggerId, 36178, null, true); ``` # bot.runTriggerByNameForPerson() ### Запустить триггер для персоны по наименованию ```JavaScript bot.runTriggerByNameForPerson(?string $triggerName, ?int $personId, ?int $ticketId = null, $addToQueue = true, $jobParams = []) ``` ##### Описание: Запускает триггер для персоны по указанному имени триггера. ##### Атрибуты:
ИмяТипОписание
triggerNamestringНаименование триггера, который будет запущен
personIdintID персоны, для которой будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение запуска триггера. ##### Пример: ```JavaScript bot.runTriggerByNameForPerson('Триггер', 36178, null, true); ``` # bot.clearTriggerJobsById() ### Очистить джобы по id триггера ```JavaScript bot.clearTriggerJobsById(?int $triggerId, ?int $leadId = null) ``` ##### Описание: Выполняется поиск и очистка джоб по id триггера. ##### Атрибуты:
ИмяТипОписание
triggerIdintID триггера
leadIdintID лида
##### Возвращает: **bool** - подтверждение очистки джоб. ##### Пример: ```JavaScript let TriggerId = bot.getTriggerIdByName('Триггер'); bot.clearTriggerJobsById(TriggerId); ``` # bot.clearTriggerJobsByName() ### Очистить джобы по наименованию триггера ```JavaScript bot.clearTriggerJobsByName(?string $triggerName, ?int $leadId = null) ``` ##### Описание: Выполняется поиск и очистка джоб по наименованию триггера. ##### Атрибуты:
ИмяТипОписание
triggerNamestringНаименование триггера
leadIdintID лида
##### Возвращает: **bool** - подтверждение очистки джоб. ##### Пример: ```JavaScript bot.clearTriggerJobsByName('Триггер'); ``` # bot.clearTriggerJobsByScriptCode() ### Очистить джобы по коду скрипта ``` bot.clearTriggerJobsByScriptCode(?string $scriptCode, ?int $leadId = null, ?int $ticketId = null) ``` ##### Описание: Выполняется поиск и очистка джоб триггеров по коду скрипта. ##### Атрибуты:
ИмяТипОписание
scriptCodestringКод скрипта
leadIdintID лида
ticketIdintID заявки
##### Возвращает: **bool** - подтверждение очистки джоб. # bot.clearTriggerJobsByIdForTicket() ### Очистить джобы по id триггера и ID заявки ```JavaScript bot.clearTriggerJobsByIdForTicket(?int $triggerId, ?int $ticketId) ``` ##### Описание: Выполняется поиск и очистка джоб по id триггера и ID заявки. ##### Атрибуты:
ИмяТипОписание
triggerIdintID триггера
ticketIdintID заявки, джобы которой будут очищены
##### Возвращает: **bool** - подтверждение очистки джоб. ##### Пример: ```JavaScript let TriggerId = bot.getTriggerIdByName('Триггер'); bot.clearTriggerJobsByIdForTicket(TriggerId, 17256); ``` # bot.clearTriggerJobsByNameForTicket() ### Очистить джобы по наименованию триггера и ID заявки ```JavaScript bot.clearTriggerJobsByNameForTicket(?string $triggerName, ?int $ticketId) ``` ##### Описание: Выполняется поиск и очистка джоб по наименованию триггера и ID заявки. ##### Атрибуты:
ИмяТипОписание
triggerNamestringНаименование триггера
ticketIdintID заявки, джобы которой будут очищены
##### Возвращает: **bool** - подтверждение очистки джоб. ##### Пример: ```JavaScript bot.clearTriggerJobsByNameForTicket('Триггер', 17256); ``` # bot.scheduleBroadcast() ### Планирование рассылки ```JavaScript bot.scheduleBroadcast(?int $broadcastId, ?int $ticketId = null, $jobParams = []) ``` ##### Описание: Запускает рассылку в соответствии с указанными параметрами. ##### Атрибуты:
ИмяТипОписание
broadcastIdintID рассылки, которая будет запущена
ticketIdintID заявки, для которой будет запущена рассылка
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение планирования рассылки. ##### Пример: ```JavaScript var result = bot.scheduleBroadcast(1426, null, { "is_periodic": true, "repeat_interval_sec": 10, "script_request_params": { "name": "Alex" } }); ``` # bot.scheduleBroadcastByCode() ### Планирование рассылки по коду ```JavaScript bot.scheduleBroadcastByCode(?string $broadcastCode, ?int $ticketId = null, $jobParams = []) ``` ##### Описание: Запускает рассылку в соответствии с указанными параметрами по коду. ##### Атрибуты:
ИмяТипОписание
broadcastCodestringКод рассылки, которая будет запущена
ticketIdintID заявки, для которой будет запущена рассылка
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** - подтверждение планирования рассылки. ##### Пример: ```JavaScript var result = bot.scheduleBroadcastByCode('test_broadcast', null, { "is_periodic": true, "repeat_interval_sec": 10, "condition_script_code": "if (leadId == 135) { lead.setAttr('рассылка 127', 'выполнено. параметр name: ' + request.json.name); bot.runScriptForLead(7724, 135); }", "script_request_params": { "name": "Alex" } }); memory.setAttr('yes_or_not', result ? 'да' : 'нет'); ``` # bot.getBroadcastIdByCode() ### Получить ID Рассылки по Коду ```JavaScript bot.getBroadcastIdByCode(?string $broadcastCode) ``` ##### Описание: Находит id рассылки по ее коду. ##### Атрибуты:
ИмяТипОписание
broadcastCodestringКод рассылки
##### Возвращает: **int** - id рассылки. # bot.getForwardEventType() ### Проверка кто переключил на оператора ```JavaScript bot.getForwardEventType() ``` ##### Описание: Эта функция необходимо для того чтобы отличать событие Переключения на оператора обычным способом (через маршруты/скрипты бота) или при перехвате управления оператором. ##### Возвращает: **bool** - "forwarded\_by\_operator" если контроль за диалогом забран оператором (по его инициативе). # bot.isForwardedToOperator() ### Проверка переключения на оператора ```JavaScript bot.isForwardedToOperator() ``` ##### Описание: Проверяет переключен ли лид на оператора. ##### Возвращает: **bool** - подтверждение того, что лид переключен на оператора. # bot.createTicket() ### Создание заявки ```JavaScript bot.createTicket($data) ``` ##### Описание: Создает в боте заявку с указанными полями. ##### Атрибуты:
ИмяТипОписание
datajsonДанные о заявке в формате json. Возможные поля расписаны ниже
titlestringЗаголовок заявки
ticket\_type\_idintId типа заявки
status\_idintId статуса заявки
author\_person\_id intId автора заявки
client\_person\_id intId клиента заявки
assigned\_person\_id intId исполнителя заявки
description stringОписание заявки
Для избежания пересечения с полями заявки дополнительные поля по имени передаются отдельным блоком 'custom'. ##### Возвращает: **int** - id созданной заявки в формате числа. ##### Пример: ```JavaScript let ticketData = { 'title': 'Создано в боте', 'ticket_type_id': 1006, 'status_id': 1017 'description': lead.getAttr('проблема') }; ticketData.custom = { 'возраст': 99, 'рост': 199 }; let newTicketId = bot.createTicket(ticketData); ``` Пример создания заявки с кастомным полем **space** типа выпадающий список: ```JavaScript let $space = 0; if (lead.getAttr('space') == 'Квартира') { $space = 1; } else if (lead.getAttr('space') == 'Частный дом') { $space = 2; } else if (lead.getAttr('space') == 'Общежитие') { $space = 3; } let ticketData = { 'title': 'Создано в боте' }; ticketData.custom = { 'space': $space } let newTicketId = bot.createTicket(ticketData); ``` # bot.updateTicketById() ### Обновление заявки ```JavaScript bot.updateTicketById(int $ticketId, $data) ``` ##### Описание: Обновляет заявку по id. ##### Атрибуты:
ИмяТипОписание
ticketIdintID заявки
datajsonДанные о заявке в формате json. Возможные поля расписаны ниже
titlestringЗаголовок заявки
ticket\_type\_idintId типа заявки
status\_idintId статуса заявки
author\_person\_id intId автора заявки
client\_person\_id intId клиента заявки
assigned\_person\_id intId исполнителя заявки
description stringОписание заявки
##### Возвращает: **bool** - подтверждение обновления заявки. ##### Пример: ```JavaScript bot.updateTicketById(4527, { 'title': 'Создано в боте', 'ticket_type_id': 1013, 'status_id': 1096 }) ``` # bot.getMaxRejectsTicketCount() ### Получить максимальное количество отказов ```JavaScript bot.getMaxRejectsTicketCount() ``` ##### Описание: Возвращает максимальное количество отказов от заявки. ##### Возвращает: **int** - количество отказов в формате числа. ##### Пример: ```JavaScript let MaxRejects = bot.getMaxRejectsTicketCount(); ``` # bot.findTickets() ### Поиск заявок ```JavaScript bot.findTickets($where = [], bool $findInAllBusinessBots = false, $orderBy = [], ?int $limit = null, ?int $offset = null) ``` ##### Описание: Находит заявки в соответствии с указанными параметрами и возвращает их массив. ##### Атрибуты:
ИмяТипОписание
wherearrayПараметр по которому будет проверяться соответствие с найденными заявками
findInAllBusinessBotsboolПараметр, показывающий нужно ли искать заявки во всех ботах бизнеса
orderByarrayПараметр сортирующий найденные заявки
limit?intМаксимальное количество заявок, которое будет возвращено
offset?intПараметр показывающий с какой по счету найденной заявки начать возвращать значения
##### Возвращает: **array** - массив с id всех найденных заявок. ##### Пример: ```JavaScript let tickets = bot.findTickets(); for (let i = 0; i < tickets.length; i++) { lead.setAttr('tickets_' + i + '_tickets_title', tickets[i].getData('title')); lead.setAttr('tickets_' + i + '_client_contacts', tickets[i].getCustomData('client_contacts')); lead.setAttr('tickets_' + i + '_details', tickets[i].getCustomData('details')); lead.setAttr('tickets_' + i + '_статус_имя', tickets[i].getCustomData('статус.имя')); } lead.setAttr('found_tickets_count', tickets.length); ``` # bot.findTicketIdByCustomField() ### Найти id заявки по значению поля ```JavaScript bot.findTicketIdByCustomField(string $fieldName, $value) ``` ##### Описание: Находит Id первой заявки, у которой поле $fieldName имеет значение $value. ##### Атрибуты:
ИмяТипОписание
fieldNamestringНаименование поля заявки
valuemixedЗначение поля заявки
##### Возвращает: **int** - id найденной заявки в формате числа. ##### Пример: ```JavaScript let TicketId = bot.findTicketIdByCustomField('title', 'Заявка'); ``` # bot.getTicketTypeIdByName() ### Найти id вида заявки по наименованию ```JavaScript bot.getTicketTypeIdByName(string $typeName) ``` ##### Описание: Находит id вида заявки по наименованию вида заявки. ##### Атрибуты:
ИмяТипОписание
typeNamestringНаименование вида заявки
##### Возвращает: **int** - id вида заявки в формате числа. ##### Пример: ```JavaScript let TicketId = bot.findTicketIdByCustomField('Заявка'); ``` # bot.getTicketStatusIdByName() ### Найти id статуса заявки по наименованию ```JavaScript bot.getTicketStatusIdByName(string $statusName) ``` ##### Описание: Находит id статуса заявки по наименованию статуса заявки. ##### Атрибуты:
ИмяТипОписание
statusNamestringНаименование статуса заявки
##### Возвращает: **int** - id статуса заявки в формате числа. ##### Пример: ```JavaScript let StatusId = bot.getTicketStatusIdByName('Статус'); ``` # bot.setCurrentTicketById() ### Установить текущую заявку ``` bot.setCurrentTicketById(?int $ticketId) ``` ##### Описание: Устанавливает текущую заявку по id. Переменные с новым значением начинают работать со следующей команды после команды с вызовом bot.setCurrentTicketById. ##### Атрибуты:
ИмяТипОписание
ticketId?intID заявки
##### Возвращает: **bool** - подтверждение установки текущей заявки. ##### Пример: ```JavaScript bot.setCurrentTicketById(1432); ``` # bot.clearTicketAssignedPersonsLog() ### Очистить лог назначения тикета персонам ```JavaScript bot.clearTicketAssignedPersonsLog() ``` ##### Описание: Очищает лог назначения тикета персонам, чтобы можно было запустить один тикет повторно по той же очереди исполнителей. ##### Возвращает: **bool** — подтверждение очистки лога. # bot.createPerson() ### Создание персоны ```JavaScript bot.createPerson($data) ``` ##### Описание: Создает в боте персону с указанными полями. ##### Атрибуты:
ИмяТипОписание
data jsonДанные о персоне в формате json. Возможные поля расписаны ниже
lead\_id integer|nullId лида, к которому будет привязана персона
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 = bot.createPerson({ 'lead_id': 2356, 'is_external': 1, 'lastname': 'Иванов' }); ``` # bot.findPersons() ### Поиск персоны ```JavaScript 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 всех найденных персон. ##### Пример: ```JavaScript //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); ``` # bot.updatePersonById() ### Обновить персону по id ```JavaScript bot.updatePersonById(int $personId, $data) ``` ##### Описание: Обновляет поля персоны в соответствии с БД. ##### Атрибуты:
ИмяТипОписание
personId intID персоны
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Комментарий к персоне
Возвращает: **bool** - подтверждение обновления данных. ##### Пример: ```JavaScript bot.updatePersonById(15624, { 'is_external': 1, 'firstname': 'Иван', 'lastname': 'Иванов' }); ``` # bot.deletePersonById() ### Удалить персону по id ```JavaScript bot.deletePersonById(int $personId) ``` ##### Описание: Удаляет персону по id. ##### Атрибуты:
ИмяТипОписание
personId intID персоны
Возвращает: **bool** - подтверждение удаления персоны. ##### Пример: ```JavaScript bot.deletePersonById(24376); ``` # bot.getIntegrationIdByCode() ### Получить id интеграции бота по коду ```JavaScript bot.getIntegrationIdByCode(?string $integrationCode) ``` ##### Описание: Находит id интеграции по ее коду. ##### Атрибуты:
ИмяТипОписание
integrationCodestringКод интеграции
##### Возвращает: **int** - id интеграции, если она принадлежит боту или **null** - если интеграция не найдена. # bot.getEnabledIntegrationIdByCode() ### Получить id включенной интеграции бота по коду ```JavaScript bot.getEnabledIntegrationIdByCode(?string $integrationCode) ``` ##### Описание: Находит id интеграции по ее коду, если интеграция активна. ##### Атрибуты:
ИмяТипОписание
integrationCodestringКод интеграции
##### Возвращает: **int** - id интеграции, если она принадлежит боту и активна или **null** - если интеграция не найдена или не активна. # bot.isEnabledIntegrationById() ### Проверить активность интеграции по id ```JavaScript bot.isEnabledIntegrationById(?int $integrationId) ``` ##### Описание: Проверяет есть ли такая интеграция по id и включена ли она. ##### Атрибуты:
ИмяТипОписание
integrationIdintID интеграции
##### Возвращает: **bool** - подтверждение активности интеграции. # bot.isEnabledIntegrationByCode() ### Проверить активность интеграции по коду ```JavaScript bot.isEnabledIntegrationByCode(?string $integrationCode) ``` ##### Описание: Проверяет есть ли такая интеграция по коду и включена ли она. ##### Атрибуты:
ИмяТипОписание
integrationIdintID интеграции
##### Возвращает: **bool** - подтверждение активности интеграции. # bot.getLockNameForBot() ### Сгенерировать имя блокировки по боту ```JavaScript bot.getLockNameForBot(string $lockName, string $lockPrefix = ''): string ``` ##### Описание: Генерирует имя блокировки по боту.

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

##### Атрибуты:
ИмяТипОписание
lockNamestringИмя блокировки
lockPrefix stringПрефикс, который будет добавлен к имени блокировки
##### Возвращает: **string** - имя блокировки в формате строки. ##### Пример: ```JavaScript let lockName = bot.getLockNameForBot('lock', 'first'); ``` # bot.getLockNameForBusiness() ### Сгенерировать имя блокировки по бизнесу ```JavaScript bot.getLockNameForBusiness(string $lockName, string $lockPrefix = ''): string ``` ##### Описание: Генерирует имя блокировки по бизнесу.

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

##### Атрибуты:
ИмяТипОписание
lockNamestringИмя блокировки
lockPrefix stringПрефикс, который будет добавлен к имени блокировки
##### Возвращает: **string** - имя блокировки в формате строки. ##### Пример: ```JavaScript let lockName = bot.getLockNameForBusiness('lock', 'first'); ``` # bot.waitForBusinessLock() ### Захватить блокировку по бизнесу ``` bot.waitForBusinessLock(string $lockName, string $lockPrefix = '', ?int $ttlSec = null, $maxWaitSec = 300): bool ``` ##### Описание: Дожидается, когда блокировка будет освобождена, и затем захватывает ее. ##### Атрибуты:
ИмяТипОписание
lockNamestringИмя блокировки
lockPrefix stringПрефикс, который будет добавлен к имени блокировки
ttlSec ?intВремя жизни блокировки
maxWaitSec intМаксимальное время ожидания блокировки
##### Возвращает: **bool** - подтверждение захвата блокировки. ##### Пример: ```JavaScript let lockName = 'my_lock_1'; let lockPrefix = ''; let ttlSec = 5; let maxWaitSec = 300; let isLocked = false; isLocked = bot.waitForBusinessLock(lockName, lockPrefix, ttlSec, maxWaitSec); ``` # bot.waitForBotLock() ### Захватить блокировку по боту ``` bot.waitForBotLock(string $lockName, string $lockPrefix = '', ?int $ttlSec = null, $maxWaitSec = 300): bool ``` ##### Описание: Дожидается, когда блокировка будет освобождена, и затем захватывает ее. ##### Атрибуты:
ИмяТипОписание
lockNamestringИмя блокировки
lockPrefix stringПрефикс, который будет добавлен к имени блокировки
ttlSec ?intВремя жизни блокировки
maxWaitSec intМаксимальное время ожидания блокировки
##### Возвращает: **bool** - подтверждение захвата блокировки. ##### Пример: ```JavaScript let lockName = 'my_lock_1'; let lockPrefix = ''; let ttlSec = 5; let maxWaitSec = 300; let isLocked = false; isLocked = bot.waitForBotLock(lockName, lockPrefix, ttlSec, maxWaitSec); ``` # bot.releaseAllCurrentLocks() ### Освободить все блокировки ``` bot.releaseAllCurrentLocks(): bool ``` ##### Описание: Освобождает все блокировки захваченные в текущем скрипте ##### Возвращает: **bool** - подтверждение освобождения блокировки. # bot.releaseCurrentLockForBusiness() ### Освободить блокировку скрипта по бизнесу ``` bot.releaseCurrentLockForBusiness(string $lockName, string $lockPrefix = ''): bool ``` ##### Описание: Освобождает блокировку захваченную текущем скрипте по бизнесу. ##### Атрибуты:
ИмяТипОписание
lockNamestringИмя блокировки
lockPrefix stringПрефикс, который будет добавлен к имени блокировки
##### Возвращает: **bool** - подтверждение освобождения блокировки. ##### Пример: ```JavaScript if (bot.releaseCurrentLockForBusiness('lockName')) { bot.sendText('Блокировка удалена') } else { bot.sendText('Ошика удаления блокировки') } ``` # bot.releaseCurrentLockForBot() ### Освободить блокировку скрипта по боту ``` bot.releaseCurrentLockForBot(string $lockName, string $lockPrefix = ''): bool ``` ##### Описание: Освобождает блокировку захваченную текущем скрипте по боту. ##### Атрибуты:
ИмяТипОписание
lockNamestringИмя блокировки
lockPrefix stringПрефикс, который будет добавлен к имени блокировки
##### Возвращает: **bool** - подтверждение освобождения блокировки. ##### Пример: ```JavaScript if (bot.releaseCurrentLockForBot('lockName')) { bot.sendText('Блокировка удалена') } else { bot.sendText('Ошика удаления блокировки') } ``` # bot.releaseLockForBusiness() ### Освободить блокировку по бизнесу ``` bot.releaseLockForBusiness(string $lockName, string $lockPrefix = ''): bool ``` ##### Описание: Освобождает блокировку по бизнесу. ##### Атрибуты:
ИмяТипОписание
lockNamestringИмя блокировки
lockPrefix stringПрефикс, который будет добавлен к имени блокировки
##### Возвращает: **bool** - подтверждение освобождения блокировки. ##### Пример: ```JavaScript if (bot.releaseLockForBusiness('lockName')) { bot.sendText('Блокировка удалена') } else { bot.sendText('Ошика удаления блокировки') } ``` # bot.releaseLockForBot() ### Освободить блокировку по боту ``` bot.releaseLockForBot(string $lockName, string $lockPrefix = ''): bool ``` ##### Описание: Освобождает блокировку по боту. ##### Атрибуты:
ИмяТипОписание
lockNamestringИмя блокировки
lockPrefix stringПрефикс, который будет добавлен к имени блокировки
##### Возвращает: **bool** - подтверждение освобождения блокировки. ##### Пример: ```JavaScript if (bot.releaseLockForBot('lockName')) { bot.sendText('Блокировка удалена') } else { bot.sendText('Ошика удаления блокировки') } ``` # bot.hasLockForBot() ### Проверка существования блокировки по боту ``` bot.hasLockLockForBot(string $lockName, string $lockPrefix = '', $checkValue = null): bool ``` ##### Описание: Проверяет существование блокировки по боту. ##### Атрибуты:
ИмяТипОписание
lockNamestringИмя блокировки
lockPrefix stringПрефикс, который будет добавлен к имени блокировки
checkValueintКоличество проверок
##### Возвращает: **bool** - подтверждение существования блокировки. ##### Пример: ```JavaScript let hasLock = bot.hasLockLockForBot('lockName'); ``` # bot.hasLockForBusiness() ### Проверка существования блокировки по бизнесу ``` bot.hasLockForBusiness(string $lockName, string $lockPrefix = '', $checkValue = null): bool ``` ##### Описание: Проверяет существование блокировки по бизнесу. ##### Атрибуты:
ИмяТипОписание
lockNamestringИмя блокировки
lockPrefix stringПрефикс, который будет добавлен к имени блокировки
checkValueintКоличество проверок
##### Возвращает: **bool** - подтверждение существования блокировки. ##### Пример: ```JavaScript let hasLock = bot.hasLockForBusiness('lockName'); ``` # bot.getForwardEventType() ### Получить название события ```JavaScript bot.getForwardEventType() ``` ##### Описание: Возвращает строку "forwarded\_by\_operator" если действие выполнено оператором или null для контакт-центра. Ранее она использовалась только для интеграции с контакт-центром Facebook. Для Facebook аналогично, но в дополнение к "forwarded\_by\_operator" может возвращать и другие строки, например "message\_from\_operator" или "operator\_joined\_dialog". ##### Возвращает: **string** - строка "forwarded\_by\_operator", если действие выполнено оператором или **null** - если действие не выполнено оператором. # bot.canAutoForward() ### Узнать доступно ли авто-назначение оператора в данном скрипте ``` bot.canAutoForward() ``` ##### Описание: Функция необходима для исключения рекурсивного вызова назначения диалога на оператора, а также для исключения выполнения авто-назначения диалога на оператора, если оператор сам подключается к диалога из контакт-центра. ##### Возвращает: **bool** - подтверждение доступа к авто-назначению. # bot.scheduleJob() ### Планирование любой задачи ```JavaScript bot.scheduleJob($jobParams = []) ``` #### Описание: Запускает задачу в соответствии с указанными параметрами. ##### Атрибуты:
ИмяТипОписание
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки).
Возможные параметры в jobParams: - **trigger\_code** — код триггера; - **script\_code** — код скрипта; - **lead\_id** — лид; - **ticket\_id** — заявка; - **condition\_script\_code** — js код ("return false;"); - **add\_tags** — добавить тэги; - **remove\_tags** — удалить тэги; - **is\_periodic** — будет ли запускаться джоба с периодичностью; - **repeat\_interval\_sec** — интервал периодичности запуска; - **script\_request\_params**: - **run\_at** — точное время запуска (по часовому поясу сервера); - **run\_after\_sec** — для запуска через указанное кол-во секунд; - **condition\_script\_code** — параметр для перекрытия условия триггера/рассылки.

Если указать run\_at и run\_after\_sec то будет использован только параметр run\_at.

##### Возвращает: **bool** — подтверждение планирования задачи.
##### Пример: ```JavaScript var result = bot.scheduleJob({ "trigger_code": "trg31", "lead_id": lead.getData('id'), "is_periodic": true, "repeat_interval_sec": 10, "script_request_params": { "name": "Alex" } }); ``` # bot.getIncomingMessage() ### Получить текст входящего сообщения ```JavaScript bot.getIncomingMessage(bool $useOutputFilter = false) ``` ##### Описание: Возвращает текст входящего сообщения или текст подписи к вложению. ##### Атрибуты:
ИмяТипОписание
useOutputFilter boolИспользуется для включения фильтра входящего сообщения, чтобы исключить не поддерживаемые системой символы
##### Возвращает: **string** - текст входящего сообщения в формате строки. # bot.getWebhookJobId() ### Получить id вебхука зарегистрированного в очереди Метабот ``` bot.getWebhookJobId() ``` ##### Описание: Возвращает id вебхука зарегистрированного в очереди Метабот. ##### Возвращает: **int** - id вебхука или **null** - если таких данных не существует. # bot.getWebhookJob() ### Получить информацию о вебхуке ``` bot.getWebhookJob() ``` ##### Описание: Возвращает информацию о вебхуке, т.е. запись из очереди Метабот. Данная запись также содержит поле payload, удобство использования данной функции в отличии от обработки «сырого» payload в том, что данные возвращаемые функцией уже обработаны и представлены в едином формате для любого мессенджера. ##### Возвращает: **array** - массив индексов. Параметры (индексы массива) которые возвращает данная функция: - 'id' - 'status\_id' - 'attempt' - 'response\_code' - 'response\_time' - 'worked\_time' - 'messenger' - 'event\_type' - 'original\_event\_type' - 'channel\_code' - 'channel\_id' - 'channel\_id' - 'bot\_channel\_id' - 'bot\_id' - 'lead\_identification' - 'lead\_identification\_entity' - 'lead\_id' - 'lead\_status\_ext' - 'lead\_status\_id' - 'message\_id' - 'message\_date' - 'message' - 'message\_type' - 'url' - 'url\_secret' - 'payload' - 'payload\_array' - 'chat\_id' - 'created\_at' - 'updated\_at' # bot.getWebhookPayload() ### Получить payload входящего вебхука ``` bot.getWebhookPayload() ``` ##### Описание: Возвращает payload входящего вебхука в виде массива. ##### Возвращает: **array** - массив payload входящего вебхука. # bot.getLastResultPayload() ### Получить payload c данными о последнем ответе мессенджера ``` bot.getLastResultPayload() ``` ##### Описание: Возвращает payload c данными о последнем ответе мессенджера в виде массива. ##### Возвращает: **array** - массив payload c данными о последнем ответе мессенджера или **null** - если таких данных не существует. ##### Пример: 1. Мы отправили в мессенджер сообщения используя REST API. 2. Мессенджер вернул ответ, этот ответ будет доступен с помощью функции getLastResultPayload(). 3. Например, таким способом можно получить file\_id, который вернул Telegram после отправки файла или id сообщения который вернул Telegram, для того чтобы в дальнейшем отредактировать это сообщение или удалить. # bot.getChannelData() ### Получить настройки канала лида ```JavaScript bot.getChannelData(string|null $key = null) ``` ##### Описание: Получить настройки канала лида, задаваемые при привязки нового канала. ##### Атрибуты:
ИмяТипОписание
keystring|nullКлюч настройки канала лида
##### Возвращает: **array** - массив настроек канала **mixed** - настройка канала в формате, в котором она находится в сущности или **null** - если таких данных не существует. # bot.disableBuffer() ### Принудительное отключение буфера исходящих сообщений ``` bot.disableBuffer() ``` ##### Описание: Принудительное отключение буфера исходящих сообщений.

Если отключаете, не забывайте **включать назад**, в конце вашего JavaScript кода.

# bot.enableBuffer() ### Принудительное включение буфера исходящих сообщений ``` bot.enableBuffer() ``` ##### Описание: Принудительное включение буфера исходящих сообщений.

Не влияет на аргумент $isDisableBuffer передаваемый в sendText / sendMessage / sendButtons.

# bot.flushBuffer() ### Принудительное освобождение буфера исходящих сообщений ``` bot.flushBuffer() ``` ##### Описание: Принудительное освобождение буфера исходящих сообщений. Отправка всех накопленных сообщений клиенту. # bot.getAllAttachments() ### Получить вложения всех видов ``` bot.getAllAttachments(string|null $filesMimeExcludeFilter = 'image|video') ``` ##### Описание: Получить вложения всех видов, в т.ч. фото, видео, аудио, файлы и т.д., т.е. все вложения которые поддерживаем Метабот и данный канал.

На данный момент getAllAttachments **работает только с Telegram**, для других каналов функция возвращает пустой массив.

##### Атрибуты:
ИмяТипОписание
filesMimeExcludeFilter 'image|video' | nullТип исключаемых файлов
##### Возвращает: **array** - массив вложений. # bot.getFiles() ### Получить все вложения, которые распознаны как файл ```JavaScript bot.getFiles(string|null $mimeIncludeFilter = null, string|null $mimeExcludeFilter = 'image|video') ``` ##### Описание: Получить все вложения, которые распознаны как файл.

На данный момент getFilesработает **работает только с Telegram**, для других каналов функция возвращает пустой массив.

##### Атрибуты:
ИмяТипОписание
mimeIncludeFilter string|null | nullТип добавляемых файлов
mimeExcludeFilter 'image|video' | nullТип исключаемых файлов
##### Возвращает: **array** - массив вложений. # bot.getImages() ### Получить все изображения ```JavaScript bot.getImages(string|null $mimeIncludeFilter = 'image') ``` ##### Описание: Получить все изображения, а также файлы, которые распознаны как изображение.

На данный момент getImagesработает **работает только с Telegram**, для других каналов функция возвращает пустой массив.

##### Атрибуты:
ИмяТипОписание
mimeIncludeFilter string|nullТип включаемых файлов
##### Возвращает: **array** - массив вложений. # bot.getVideos() ### Получить все видео ```JavaScript bot.getVideos(string|null $mimeIncludeFilter = 'video') ``` ##### Описание: Получить все видео, а также файлы, которые распознаны как видео.

На данный момент getVideos **работает только с Telegram**, для других каналов функция возвращает пустой массив.

##### Атрибуты:
ИмяТипОписание
mimeIncludeFilter string | nullТип включаемых файлов
##### Возвращает: **array** - массив вложений. # bot.sendPayload() ### Отправить payload в мессенджер ```JavaScript bot.sendPayload(string|null $endpoint, array|object $payload) ``` ##### Описание: Отправить payload в мессенджер. Удобство использования данной функции в отличии от нативной передачи с помощью api.callEndpoint или api.postJson в том, что не нужно подставлять дополнительные параметры типа токена мессенджера. ##### Атрибуты:
ИмяТипОписание
endpointstring|nullКлюч данных бота
payloadarray|object
##### Возвращает: **mixed** - payload в формате, в котором они находятся в сущности или **array** - массив payload или **string** - payload в формате строки. # bot.sendText() ### Отправить текст в мессенджер ```JavaScript bot.sendText(string|null|mixed $messageText, array|object|null $apiAdditionalParams = null, bool $isDisableBuffer = true) ``` ##### Описание: Отправляет текст пользователю в мессенджер. ##### Атрибуты:
ИмяТипОписание
messageTextstring|null|mixedТекст сообщения
apiAdditionalParams array|object|null Дополнительные параметры API
isDisableBuffer bool Отключение буфера
##### Возвращает: **bool** - подтверждение успешной отправки сообщения. # bot.sendMessage() ### Отправить сообщение в мессенджер ``` bot.sendMessage(string|null|mixed $messageText, array|object|null $buttons = null, array|object|null $attachments = null, array|object|null $apiAdditionalParams = null, bool $isDisableBuffer = true, bool $isUpdateMessageButtons = false) ``` ##### Описание: Отправить сообщение в мессенджер, сообщение может содержать текст, кнопки меню и вложения. Если мессенджер поддерживает, то все это будет отправлено в едином сообщении, иначе по отдельности, в порядке: сначала вложение, затем текст и кнопки меню. ##### Атрибуты:
ИмяТипОписание
messageTextstring|null|mixedТекст сообщения
buttons array|object|null Кнопки
attachments array|object|null Вложения
apiAdditionalParams array|object|null Дополнительные параметры, которые будут отправлены по REST API в мессенджер
isDisableBuffer bool Принудительное отключение буффера исходящих сообщений
isUpdateMessageButtonsbool true, для обновления последнего отправленного сообщения в логе, чтобы не писать в лог повторы сообщений от GPT при апдейте
Дополнительно доступен предопределенный параметр «endpoint» – для замены параметра конечной точки в URL, например чтобы направить сообщение Телеграм не по классическому пути sendMessage а «по пути» editMessageMedia для редактирования сообщения, также можно подменить «endpoint», чтобы удалить сообщение, но для данных действий необходимо запоминать и передавать дополнительно как минимум параметр message\_id. ##### Возвращает: **bool** - подтверждение успешной отправки сообщения. # bot.sendButtons() ### Отправить кнопки с сообщением в мессенджер ```JavaScript bot.sendButtons(string|null|mixed $messageText, array|object $buttons, array|object|null $apiAdditionalParams = null, bool $isDisableBuffer = true, bool $isUpdateMessageButtons = false) ``` ##### Описание: Отправить кнопки с сообщением в мессенджер. ##### Атрибуты:
ИмяТипОписание
messageTextstring|null|mixedТекст сообщения
buttons array|object|null Кнопки
apiAdditionalParams array|object|null Дополнительные параметры, которые будут отправлены по REST API в мессенджер
isDisableBuffer bool Принудительное отключение буффера исходящих сообщений
isUpdateMessageButtonsbool Чтобы не логировать сообщение "Выберите вариант с помощью кнопок ниже" для кнопок GPT, которые отправляются в Telegram для обновления сообщений
##### Возвращает: **bool** - подтверждение успешной отправки сообщения. # bot.getTelegramFileInfoById() ### Получить информацию о файле в Telegram ```JavaScript bot.getTelegramFileInfoById(string|null $fileId, bool $isShowOriginalInfo = false) ``` ##### Описание: Возвращает информацию о файле в Telegram по file ID. ##### Атрибуты:
ИмяТипОписание
fileIdstring|null|mixedID файла
isShowOriginalInfo array|object|null Показать оригинальную информацию
##### Возвращает: **array** - информация о файле в форме массива или **null** - если таких файлов нет. # bot.sendTelegramAttachmentAndGetFileId() ### Отправить файл в Телеграм и получить file ID ```JavaScript bot.sendTelegramAttachmentAndGetFileId(string|null $messageText, array|object|null $attachment, array|object|null $buttons = null, array|object|null $apiAdditionalParams = null) ``` ##### Описание: Отправляет файл в Телеграм и возвращает file ID. При запуске данной функции буфер исходящих сообщений освобождается (высылаются накопленные сообщения), отключается буфер, после выполнения функции, включается назад. Если включить буфер для выполнения данной функции, вы не сможете получить результат выполнения данной функции, тк отправка накопленного текста будет выполнена позже. По этой же причине, чтобы было меньше проблем в работе с sendText / sendMessage / sendButtons буфер для них отключен по умолчанию. Логика работы отключения буфера для этих функций аналогична. Если же передаем параметр $isDisableBuffer = false, то ничего не происходит, т.е. текущее состояние буфера не изменяется, если необходимо, вы можете принудительно выключить буфер, передать аргумент $isDisableBuffer = false, сообщения отправятся с использованием буфера. ##### Атрибуты:
ИмяТипОписание
messageTextstring|null|mixedТекст сообщения
buttons array|object|null Кнопки
attachments array|object|null Вложения
apiAdditionalParams array|object|null Дополнительные параметры, которые будут отправлены по REST API в мессенджер
##### Возвращает: **array** - ID файлов или **null** - если файл не был создан. # bot.editTelegramInlineKeyboard() ### Отредактировать кнопки меню ```JavaScript bot.editTelegramInlineKeyboard(int|string $chatId, int|string $messageId, string|null string $inlineMessageId, array|object|null $inlineKeyboardMarkup) ``` ##### Описание: Редактирует кнопки меню уже отправленного в Telegram сообщения. Выполняет API запрос «editMessageReplyMarkup» к Telegram Bots API. Описание данного метода можно посмотреть в документации Telegram: https://core.telegram.org/bots/api#editmessagereplymarkup ##### Атрибуты:
ИмяТипОписание
chatIdstring|null Обязателен, если не указан inline\_message\_id. Уникальный идентификатор целевого чата или имя пользователя целевого канала
messageIdarray|object|null Обязателен, если не указан inline\_message\_id. Идентификатор сообщения для редактирования
inlineMessageIdarray|object|null Обязателен, если не указаны Chat\_id и message\_id. Идентификатор встроенного сообщения
inlineKeyboardMarkuparray|object|null В формате JSON объект для кнопок.
##### Возвращает: **string** - информация о кнопках или **null** - если кнопки не были созданы. # bot.removeTelegramInlineKeyboard() ### Удалить кнопки ```JavaScript bot.removeTelegramInlineKeyboard(int|string $chatId, int|string $messageId, string|null $inlineMessageId = null) ``` ##### Описание: Удаляет кнопки меню уже отправленного в Telegram сообщения. Выполняет API запрос «editMessageReplyMarkup» к Telegram Bots API, но кнопки (параметр «reply\_markup») не передается в Telegram Bots API. Описание данного метода можно посмотреть в документации Telegram: https://core.telegram.org/bots/api#editmessagereplymarkup ##### Атрибуты:
ИмяТипОписание
chatIdstring|null Обязателен, если не указан inline\_message\_id. Уникальный идентификатор целевого чата или имя пользователя целевого канала
messageIdarray|object|null Обязателен, если не указан inline\_message\_id. Идентификатор сообщения для редактирования
inlineMessageIdarray|object|null Обязателен, если не указаны Chat\_id и message\_id. Идентификатор встроенного сообщения
##### Возвращает: **array** - информация о кнопках или **null** - если кнопки не были созданы. # bot.getTelegramLastMessageId() ### Получить ID последнего сообщения ``` bot.getTelegramLastMessageId() ``` ##### Описание: Возвращает ID последнего сообщения, отправленного в Telegram. Доступно только в текущем вебхуке, сразу после отправки сообщения. Функция считывает последний payload ответа API мессенджера и извлекает ID сообщения. ##### Возвращает: **int** - ID сообщения или **null** - если сообщение не найдено. # bot.setCdnConfig() ### Установить конфиг для доступа к CDN ```JavaScript bot.setCdnConfig(array|object|null $cdnConfig = null) ``` ##### Описание: Устанавливает конфиг для доступа к CDN. ##### Атрибуты:
ИмяТипОписание
cdnConfig array|object|null Конфиг
##### Возвращает: **bool** - подтверждение успешной работы метода. ##### Пример: ```JavaScript let cdnConfig = {"ftp_host": "user115.upload.clients-cdnnow.ru", "ftp_login": "mylogin", "ftp_pass": "mypassword", "public_url": "https://user115.clients-cdnnow.ru"} ``` # bot.setCdnConfig() ### Передача конфига коннекта к CDN ```JavaScript bot.setCdnConfig(array|object|null $cdnConfig = null) ``` ##### Описание: Передача конфига коннекта к CDN в JS коде может быть не приемлема с точки зрения безопасности.

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

##### Атрибуты:
ИмяТипОписание
cdnConfig array|object|null Конфиг
##### Возвращает: **bool** - подтверждение успешной работы метода. # bot.getCdnConfig() ### Получить текущий конфиг CDN ``` bot.getCdnConfig() ``` ##### Описание: Возвращает текущий конфиг CDN. ##### Возвращает: **array** - текущий конфиг или **null** - если данные не найдены. # bot.getFileInfoByUrl() ### Получить информацию о файле по URL ```JavaScript bot.getFileInfoByUrl(string $fileUrl) ``` ##### Описание: Возвращает информацию о файле по URL. ##### Атрибуты:
ИмяТипОписание
fileUrlstringURL файла
##### Возвращает: **array** - возвращает массив вида: ```JavaScript [ 'exists' => (int) $httpResponseCode == 200, 'size_kb' => (float) $fileSizeKb, 'type' => $type, 'mime_type' => (string|null) $mimeType, ] ``` Где $**httpResponseCode** – HTTP код выполнения HEAD запроса (без чтения BODY); $**fileSize** – размер файла в Кб; $**type** – тип вложения определенный с помощью $mimeType ('image' / 'video' / 'audio' / 'file'); $**mimeType** – Mime Type определенный на основе расширения файла (извлекаемого из URL). # bot.downloadFileFromUrl() ### Скачать файла с URL ```JavaScript bot.downloadFileFromUrl(string $fileUrl) ``` ##### Описание: Скачивает файл с URL и загрузить в хранилище файлов Метабот для вашего бизнеса. Желательно использовать своё CDN хранилище или самим загружать файлы с помощью своего, стороннего микросервиса. ##### Атрибуты:
ИмяТипОписание
fileUrlstringURL файла
##### Возвращает: **array** - скачанный файлы или **string** - скачанный файл. # bot.downloadTmpFileFromUrl() ### Скачать файла с URL и загрузить во временное хранилище ```JavaScript bot.downloadTmpFileFromUrl(string $fileUrl) ``` ##### Описание: Скачивает файл с URL и загрузить во временное хранилище файлов Метабот для вашего бизнеса. Желательно использовать своё CDN хранилище или самим загружать файлы с помощью своего, стороннего микросервиса.

Имейте ввиду, что такое хранилище периодически очищается.

##### Атрибуты:
ИмяТипОписание
fileUrlstringURL файла
##### Возвращает: **array** - скачанный файлы или **string** - скачанный файл. # bot.removeFile() ### Удалить файл по URL ```JavaScript bot.removeFile(string $fileUrl) ``` ##### Описание: Удаляет файл по URL из хранилища файлов Метабот для вашего бизнеса. ##### Атрибуты:
ИмяТипОписание
fileUrlstringURL файла
##### Возвращает: **string** - URL файла. # bot.removeTmpFile() ### Удалить файл по URL из временного хранилища ``` bot.removeTmpFile(string $fileUrl) ``` ##### Описание: Удаляет файл по URL из временного хранилища файлов Метабот для вашего бизнеса. ##### Атрибуты:
ИмяТипОписание
fileUrlstringURL файла
##### Возвращает: **string** - URL файла. # bot.uploadFileToCdnAndGetNewUrl() ### Залить файл на CDN и получить новую ссылку ```JavaScript bot.uploadFileToCdnAndGetNewUrl(string $fileUrl, array|object|null $cdnConfig = null) ``` ##### Описание: Заливает файл на CDN и возвращает новую ссылку, а также доп. параметры с описанием файла. ##### Атрибуты:
ИмяТипОписание
fileUrlstringURL файла
cdnConfig array|object|null Конфиг
##### Возвращает: **array** - данные файла. В случае успеха возвращает массив вида: ```JavaScript [ 'result' => true, 'type' => (string) $type, 'url' => (string) $newUrl, 'name' => (string) $fileName, 'size_kb' => (float) $fileSizeKb, 'max_size_by_type_kb' => (float) $maxFileSize, ] ``` Где $**type** – тип файла; $**newUrl** – ссылка на файла в CDN; $**fileName** – имя загруженного файла; $**fileSizeKb** – размер загруженного файла в Кб; $**maxFileSize** - максимальное ограничение размера файла в зависимости от типа файла. В случае провала возвращает массив вида: ```JavaScript [ 'result' => false, 'error' => true, 'error_code' => (string) ‘вид ошибки’, // например 'error_when_upload' или ‘file_size_exceeded’ 'error_message' => (string) описание ошибки, ] ``` # bot.removeFileFromCdn() ### Удалить файл из CDN ```JavaScript bot.removeFileFromCdn(string $fileUrl, $cdnConfig = null) ``` ##### Описание: Удаляет файл из CDN. ##### Атрибуты:
ИмяТипОписание
fileUrlstringURL файла
cdnConfig array|object|nullКонфиг
##### Возвращает: **array** - данные файла.