# Методы bot
# bot.getData()
### Получить значение данных бота
```JavaScript
bot.getData(string $key)
```
##### Описание:
Возвращает значение данных бота по ключу.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Ключ данных бота |
В качестве ключа можно указать:
- все поля бота в БД (по английски).
##### Возвращает:
**mixed** - значение данных бота в формате, в котором они находятся в сущности
или
**null** - если таких данных не существует.
##### Пример:
```JavaScript
let data = bot.getData('leadsCount');
```
# bot.findLeads()
### Получить лиды по атрибутам
```JavaScript
bot.findLeads($columns = [], $where = [], $orderBy = [], ?int $limit = null, ?int $offset = null)
```
##### Описание:
Находит лида по указанным атрибутам и другим данным.
##### Атрибуты:
Имя | Тип | Описание |
columns | array | Возвращаемые поля лидов, по умолчанию все поля. Вы можете вывести дополнительные поля: **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). |
limit | int | Максимальное число возвращаемых лидов. Можно вернуть диапазон от 1 до 100 |
offset | int | Числовое значение, указывающее количество записей, которые необходимо пропустить от начала результата выборки перед возвратом данных. Этот параметр используется для пагинации. Например, если `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 = [])
```
##### Описание:
Запускает скрипт в соответствии с указанными параметрами.
##### Атрибуты:
Имя | Тип | Описание |
scriptId | int | ID скрипта, который будет запущен |
leadId | int | ID лида, для которого будет запущен скрипт |
ticketId | int | ID заявки, для которой будет запущен скрипт |
jobParams | json | Передача в планируемую задачу входящих 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 скрипта по его наименованию.
##### Атрибуты:
Имя | Тип | Описание |
scriptName | string | Наименование скрипта |
##### Возвращает:
**int** - id скрипта в формате числа.
##### Пример:
```JavaScript
let ScriptId = bot.getScriptIdByName('Меню');
```
# bot.getScriptIdByCode()
### Получить ID скрипта по коду
```JavaScript
bot.getScriptIdByCode(?string $scriptCode)
```
##### Описание:
Возвращает id скрипта по его дополнительному идентификатору.
##### Атрибуты:
Имя | Тип | Описание |
scriptCode | string | Код скрипта |
##### Возвращает:
**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 скрипта.
##### Атрибуты:
Имя | Тип | Описание |
scriptId | int | ID скрипта, который будет запущен |
leadId | int | ID лида, для которого будет запущен скрипт |
ticketId | int | ID заявки, для которой будет запущен скрипт |
addToQueue | bool | Добавление в очередь скриптов |
jobParams | json | Передача в планируемую задачу входящих 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 = [])
```
##### Описание:
Запускает скрипт бота для лида по указанному имени скрипта.
##### Атрибуты:
Имя | Тип | Описание |
scriptName | string | Наименование скрипта, который будет запущен |
leadId | int | ID лида, для которого будет запущен скрипт |
ticketId | int | ID заявки, для которой будет запущен скрипт |
addToQueue | bool | Добавление в очередь скриптов |
jobParams | json | Передача в планируемую задачу входящих 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 скрипта.
##### Атрибуты:
Имя | Тип | Описание |
scriptId | int | ID скрипта, который будет запущен |
personId | int | ID персоны, для которой будет запущен скрипт |
ticketId | int | ID заявки, для которой будет запущен скрипт |
addToQueue | bool | Добавление в очередь скриптов |
jobParams | json | Передача в планируемую задачу входящих 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 = [])
```
##### Описание:
Запускает скрипт бота для персоны по указанному имени скрипта.
##### Атрибуты:
Имя | Тип | Описание |
scriptName | string | Наименование скрипта, который будет запущен |
personId | int | ID персоны, для которой будет запущен скрипт |
ticketId | int | ID заявки, для которой будет запущен скрипт |
addToQueue | bool | Добавление в очередь скриптов |
jobParams | json | Передача в планируемую задачу входящих 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 = [])
```
##### Описание:
Запускает скрипт бота для лида по указанному коду скрипта.
##### Атрибуты:
Имя | Тип | Описание |
scriptCode | string | Код скрипта, который будет запущен |
leadId | int | ID лида, для которого будет запущен скрипт |
ticketId | int | ID заявки, для которой будет запущен скрипт |
addToQueue | bool | Добавление в очередь скриптов |
jobParams | json | Передача в планируемую задачу входящих 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 = [])
```
##### Описание:
Запускает скрипт бота для персоны по указанному коду скрипта.
##### Атрибуты:
Имя | Тип | Описание |
scriptCode | string | Код скрипта, который будет запущен |
personId | int | ID персоны, для которой будет запущен скрипт |
ticketId | int | ID заявки, для которой будет запущен скрипт |
addToQueue | bool | Добавление в очередь скриптов |
jobParams | json | Передача в планируемую задачу входящих 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 скрипта.
##### Атрибуты:
Имя | Тип | Описание |
scriptId | int | ID серипта |
leadId | int | ID лида |
##### Возвращает:
**bool** - подтверждение очистки джоб.
##### Пример:
```JavaScript
bot.clearJobsByScriptId(1342, 187);
```
# bot.clearJobsByScriptName()
### Очистить джобы по наименованию скрипта
```JavaScript
bot.clearJobsByScriptName(?string $scriptName, ?int $leadId = null)
```
##### Описание:
Выполняется поиск и очистка джоб по наименованию скрипта.
##### Атрибуты:
Имя | Тип | Описание |
scriptName | string | Наименование скрипта |
leadId | int | ID лида |
##### Возвращает:
**bool** - подтверждение очистки джоб.
##### Пример:
```JavaScript
bot.clearJobsByScriptName("skript", 187);
```
# bot.clearJobsByScriptCode()
### Очистить джобы по коду скрипта
```JavaScript
bot.clearJobsByScriptCode(?string $scriptCode, ?int $leadId = null)
```
##### Описание:
Выполняется поиск и очистка джоб по коду скрипта.
##### Атрибуты:
Имя | Тип | Описание |
scriptCode | string | Код скрипта |
leadId | int | ID лида |
##### Возвращает:
**bool** - подтверждение очистки джоб.
##### Пример:
```JavaScript
bot.clearJobsByScriptCode("SEND_TOKEN", 187);
```
# bot.setAttr()
### Установить значение переменной бота
```JavaScript
bot.setAttr(string $key, string $value)
```
##### Описание:
Обновляет значение уже существующей глобальной переменной или создает новую переменную с указанным значением. Данные будут сохранены в БД.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
value | string | Значение переменной |
Не возвращает значений, так как выполняет только установку переменной.
##### Пример:
Создание глобальной переменной бота bot\_attribute:
```JavaScript
bot.setAttr('bot_attribute', 'Значение глобальной переменной')
```
# bot.getAttr()
### Получить значение переменной бота:
```JavaScript
bot.getAttr(string $key)
```
### Описание:
Возвращает значение уже существующей глобальной переменной.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
##### Возвращает:
**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)
```
##### Описание:
Проверяет существует ли глобальная переменная в боте.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
Возвращает:
**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 = [])
```
##### Описание:
Запускает триггер в соответствии с указанными параметрами.
##### Атрибуты:
Имя | Тип | Описание |
triggerId | int | ID триггера, который будет запущен |
leadId | int | ID лида, для которого будет запущен триггер |
ticketId | int | ID заявки, для которой будет запущен триггер |
jobParams | json | Передача в планируемую задачу входящих 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 = [])
```
##### Описание:
Запускает триггер в соответствии с указанными параметрами по коду.
##### Атрибуты:
Имя | Тип | Описание |
triggerCode | string | ID триггера, который будет запущен |
leadId | int | ID лида, для которого будет запущен триггер |
ticketId | int | ID заявки, для которой будет запущен триггер |
addToQueue | bool | Добавление в очередь триггеров |
jobParams | json | Передача в планируемую задачу входящих 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 = [])
```
##### Описание:
Запускает триггер в соответствии с указанными параметрами по коду для последнего лида указанной персоны.
##### Атрибуты:
Имя | Тип | Описание |
triggerCode | string | ID триггера, который будет запущен |
personId | int | ID персоны, для которой будет найден последний лид |
ticketId | int | ID заявки, для которой будет запущен триггер |
addToQueue | bool | Добавление в очередь триггеров |
jobParams | json | Передача в планируемую задачу входящих 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)
```
##### Описание:
Удаляет все триггеры из очереди для лида.
##### Атрибуты:
Имя | Тип | Описание |
leadId | int | ID лида, триггеры которого будут удалены |
ticketId | int | ID заявки, триггеры которого будут удалены |
##### Возвращает:
**bool** - подтверждение удаления триггеров.
##### Пример:
```JavaScript
bot.clearTriggerJobsForLead(236178);
```
# bot.clearTriggerJobsForAllPersonLeads()
### Удалить триггеры для всех лидов персоны
```JavaScript
bot.clearTriggerJobsForAllPersonLeads(?int $personId, ?int $ticketId = null)
```
##### Описание:
Удаляет все триггеры из очереди для всех лидов персоны.
##### Атрибуты:
Имя | Тип | Описание |
personId | int | ID персоны, триггеры которой будут удалены |
ticketId | int | ID заявки, триггеры которого будут удалены |
##### Возвращает:
**bool** - подтверждение удаления триггеров.
##### Пример:
```JavaScript
bot.clearTriggerJobsForAllPersonLeads(36178);
```
# bot.getTriggerIdByName()
### Получить ID триггера по наименованию
```JavaScript
bot.getTriggerIdByName(?string $triggerName)
```
##### Описание:
Возвращает id триггера по указанному наименованию.
##### Атрибуты:
Имя | Тип | Описание |
triggerName | string | Наименование триггера |
##### Возвращает:
**int** - id триггера в формате числа.
##### Пример:
```
let TriggerId = bot.getTriggerIdByName('Триггер');
```
# bot.getTriggerIdByCode()
### Получить ID Триггера по Коду
```
bot.getTriggerIdByCode(?string $triggerCode)
```
##### Описание:
Возвращает id триггера по указанному коду.
##### Атрибуты:
Имя | Тип | Описание |
triggerCode | string | Код триггера |
##### Возвращает:
**int** - id триггера в формате числа.
# bot.runTriggerForLead()
### Запустить триггер для лида по ID триггера
```JavaScript
bot.runTriggerForLead(?int $triggerId, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
```
##### Описание:
Запускает триггер для лида по указанному id триггера.
##### Атрибуты:
Имя | Тип | Описание |
triggerId | int | ID триггера, который будет запущен |
leadId | int | ID лида, для которого будет запущен скрипт |
ticketId | int | ID заявки, для которой будет запущен скрипт |
addToQueue | bool | Добавление в очередь скриптов |
jobParams | json | Передача в планируемую задачу входящих 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 = [])
```
##### Описание:
Запускает триггер для лида по указанному имени триггера.
##### Атрибуты:
Имя | Тип | Описание |
triggerName | string | Наименование триггера, который будет запущен |
leadId | int | ID лида, для которого будет запущен скрипт |
ticketId | int | ID заявки, для которой будет запущен скрипт |
addToQueue | bool | Добавление в очередь скриптов |
jobParams | json | Передача в планируемую задачу входящих 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 триггера.
##### Атрибуты:
Имя | Тип | Описание |
triggerId | int | ID триггера, который будет запущен |
personId | int | ID персоны, для которой будет запущен скрипт |
ticketId | int | ID заявки, для которой будет запущен скрипт |
addToQueue | bool | Добавление в очередь скриптов |
jobParams | json | Передача в планируемую задачу входящих 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 = [])
```
##### Описание:
Запускает триггер для персоны по указанному имени триггера.
##### Атрибуты:
Имя | Тип | Описание |
triggerName | string | Наименование триггера, который будет запущен |
personId | int | ID персоны, для которой будет запущен скрипт |
ticketId | int | ID заявки, для которой будет запущен скрипт |
addToQueue | bool | Добавление в очередь скриптов |
jobParams | json | Передача в планируемую задачу входящих 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 триггера.
##### Атрибуты:
Имя | Тип | Описание |
triggerId | int | ID триггера |
leadId | int | ID лида |
##### Возвращает:
**bool** - подтверждение очистки джоб.
##### Пример:
```JavaScript
let TriggerId = bot.getTriggerIdByName('Триггер');
bot.clearTriggerJobsById(TriggerId);
```
# bot.clearTriggerJobsByName()
### Очистить джобы по наименованию триггера
```JavaScript
bot.clearTriggerJobsByName(?string $triggerName, ?int $leadId = null)
```
##### Описание:
Выполняется поиск и очистка джоб по наименованию триггера.
##### Атрибуты:
Имя | Тип | Описание |
triggerName | string | Наименование триггера |
leadId | int | ID лида |
##### Возвращает:
**bool** - подтверждение очистки джоб.
##### Пример:
```JavaScript
bot.clearTriggerJobsByName('Триггер');
```
# bot.clearTriggerJobsByScriptCode()
### Очистить джобы по коду скрипта
```
bot.clearTriggerJobsByScriptCode(?string $scriptCode, ?int $leadId = null, ?int $ticketId = null)
```
##### Описание:
Выполняется поиск и очистка джоб триггеров по коду скрипта.
##### Атрибуты:
Имя | Тип | Описание |
scriptCode | string | Код скрипта |
leadId | int | ID лида |
ticketId | int | ID заявки |
##### Возвращает:
**bool** - подтверждение очистки джоб.
# bot.clearTriggerJobsByIdForTicket()
### Очистить джобы по id триггера и ID заявки
```JavaScript
bot.clearTriggerJobsByIdForTicket(?int $triggerId, ?int $ticketId)
```
##### Описание:
Выполняется поиск и очистка джоб по id триггера и ID заявки.
##### Атрибуты:
Имя | Тип | Описание |
triggerId | int | ID триггера |
ticketId | int | ID заявки, джобы которой будут очищены |
##### Возвращает:
**bool** - подтверждение очистки джоб.
##### Пример:
```JavaScript
let TriggerId = bot.getTriggerIdByName('Триггер');
bot.clearTriggerJobsByIdForTicket(TriggerId, 17256);
```
# bot.clearTriggerJobsByNameForTicket()
### Очистить джобы по наименованию триггера и ID заявки
```JavaScript
bot.clearTriggerJobsByNameForTicket(?string $triggerName, ?int $ticketId)
```
##### Описание:
Выполняется поиск и очистка джоб по наименованию триггера и ID заявки.
##### Атрибуты:
Имя | Тип | Описание |
triggerName | string | Наименование триггера |
ticketId | int | ID заявки, джобы которой будут очищены |
##### Возвращает:
**bool** - подтверждение очистки джоб.
##### Пример:
```JavaScript
bot.clearTriggerJobsByNameForTicket('Триггер', 17256);
```
# bot.scheduleBroadcast()
### Планирование рассылки
```JavaScript
bot.scheduleBroadcast(?int $broadcastId, ?int $ticketId = null, $jobParams = [])
```
##### Описание:
Запускает рассылку в соответствии с указанными параметрами.
##### Атрибуты:
Имя | Тип | Описание |
broadcastId | int | ID рассылки, которая будет запущена |
ticketId | int | ID заявки, для которой будет запущена рассылка |
jobParams | json | Передача в планируемую задачу входящих 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 = [])
```
##### Описание:
Запускает рассылку в соответствии с указанными параметрами по коду.
##### Атрибуты:
Имя | Тип | Описание |
broadcastCode | string | Код рассылки, которая будет запущена |
ticketId | int | ID заявки, для которой будет запущена рассылка |
jobParams | json | Передача в планируемую задачу входящих 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 рассылки по ее коду.
##### Атрибуты:
Имя | Тип | Описание |
broadcastCode | string | Код рассылки |
##### Возвращает:
**int** - id рассылки.
# bot.getForwardEventType()
### Проверка кто переключил на оператора
```JavaScript
bot.getForwardEventType()
```
##### Описание:
Эта функция необходимо для того чтобы отличать событие Переключения на оператора обычным способом (через маршруты/скрипты бота) или при перехвате управления оператором.
##### Возвращает:
**bool** - "forwarded\_by\_operator" если контроль за диалогом забран оператором (по его инициативе).
# bot.isForwardedToOperator()
### Проверка переключения на оператора
```JavaScript
bot.isForwardedToOperator()
```
##### Описание:
Проверяет переключен ли лид на оператора.
##### Возвращает:
**bool** - подтверждение того, что лид переключен на оператора.
# bot.createTicket()
### Создание заявки
```JavaScript
bot.createTicket($data)
```
##### Описание:
Создает в боте заявку с указанными полями.
##### Атрибуты:
Имя | Тип | Описание |
data | json | Данные о заявке в формате json. Возможные поля расписаны ниже |
title | string | Заголовок заявки |
ticket\_type\_id | int | Id типа заявки |
status\_id | int | Id статуса заявки |
author\_person\_id
| int | Id автора заявки |
client\_person\_id
| int | Id клиента заявки |
assigned\_person\_id
| int | Id исполнителя заявки |
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.
##### Атрибуты:
Имя | Тип | Описание |
ticketId | int | ID заявки |
data | json | Данные о заявке в формате json. Возможные поля расписаны ниже |
title | string | Заголовок заявки |
ticket\_type\_id | int | Id типа заявки |
status\_id | int | Id статуса заявки |
author\_person\_id
| int | Id автора заявки |
client\_person\_id
| int | Id клиента заявки |
assigned\_person\_id
| int | Id исполнителя заявки |
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)
```
##### Описание:
Находит заявки в соответствии с указанными параметрами и возвращает их массив.
##### Атрибуты:
Имя | Тип | Описание |
where | array | Параметр по которому будет проверяться соответствие с найденными заявками |
findInAllBusinessBots | bool | Параметр, показывающий нужно ли искать заявки во всех ботах бизнеса |
orderBy | array | Параметр сортирующий найденные заявки |
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.
##### Атрибуты:
Имя | Тип | Описание |
fieldName | string | Наименование поля заявки |
value | mixed | Значение поля заявки |
##### Возвращает:
**int** - id найденной заявки в формате числа.
##### Пример:
```JavaScript
let TicketId = bot.findTicketIdByCustomField('title', 'Заявка');
```
# bot.getTicketTypeIdByName()
### Найти id вида заявки по наименованию
```JavaScript
bot.getTicketTypeIdByName(string $typeName)
```
##### Описание:
Находит id вида заявки по наименованию вида заявки.
##### Атрибуты:
Имя | Тип | Описание |
typeName | string | Наименование вида заявки |
##### Возвращает:
**int** - id вида заявки в формате числа.
##### Пример:
```JavaScript
let TicketId = bot.findTicketIdByCustomField('Заявка');
```
# bot.getTicketStatusIdByName()
### Найти id статуса заявки по наименованию
```JavaScript
bot.getTicketStatusIdByName(string $statusName)
```
##### Описание:
Находит id статуса заявки по наименованию статуса заявки.
##### Атрибуты:
Имя | Тип | Описание |
statusName | string | Наименование статуса заявки |
##### Возвращает:
**int** - id статуса заявки в формате числа.
##### Пример:
```JavaScript
let StatusId = bot.getTicketStatusIdByName('Статус');
```
# bot.setCurrentTicketById()
### Установить текущую заявку
```
bot.setCurrentTicketById(?int $ticketId)
```
##### Описание:
Устанавливает текущую заявку по id. Переменные с новым значением начинают работать со следующей команды после команды с вызовом bot.setCurrentTicketById.
##### Атрибуты:
Имя | Тип | Описание |
ticketId | ?int | ID заявки |
##### Возвращает:
**bool** - подтверждение установки текущей заявки.
##### Пример:
```JavaScript
bot.setCurrentTicketById(1432);
```
# bot.clearTicketAssignedPersonsLog()
### Очистить лог назначения тикета персонам
```JavaScript
bot.clearTicketAssignedPersonsLog()
```
##### Описание:
Очищает лог назначения тикета персонам, чтобы можно было запустить один тикет повторно по той же очереди исполнителей.
##### Возвращает:
**bool** — подтверждение очистки лога.
# bot.createPerson()
### Создание персоны
```JavaScript
bot.createPerson($data)
```
##### Описание:
Создает в боте персону с указанными полями.
##### Атрибуты:
Имя | Тип | Описание |
data
| json | Данные о персоне в формате json. Возможные поля расписаны ниже |
lead\_id
| integer|null | Id лида, к которому будет привязана персона |
person\_role\_id
| integer | Id персоны |
is\_external
| bool | Если не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом.
А 0 означает что персона является работником бизнеса
|
user\_id
| integer | Id пользователя, привязываемого к персоне |
firstname
| string|null | Имя персоны |
lastname
| string|null | Фамилия персоны |
middlename
| string|null | Отчество персоны |
email
| string|null | Адрес электронной почты персоны |
phone
| string|null | Номер телефона персоны |
organization\_name
| string|null | Название организации |
organization\_address
| string|null | Адрес организации |
comment
| string|null | Комментарий к персоне |
##### Возвращает:
**int** - id персоны в формате числа.
##### Пример:
```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
| int | ID персоны |
data
| json | Данные о персоне в формате json. Возможные поля расписаны ниже |
person\_role\_id
| integer | Id персоны |
is\_external
| bool | Если не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом.
А 0 означает что персона является работником бизнеса
|
user\_id
| integer | Id пользователя, привязываемого к персоне |
firstname
| string|null | Имя персоны |
lastname
| string|null | Фамилия персоны |
middlename
| string|null | Отчество персоны |
email
| string|null | Адрес электронной почты персоны |
phone
| string|null | Номер телефона персоны |
organization\_name
| string|null | Название организации |
organization\_address
| string|null | Адрес организации |
comment
| string|null | Комментарий к персоне |
Возвращает:
**bool** - подтверждение обновления данных.
##### Пример:
```JavaScript
bot.updatePersonById(15624, {
'is_external': 1,
'firstname': 'Иван',
'lastname': 'Иванов'
});
```
# bot.deletePersonById()
### Удалить персону по id
```JavaScript
bot.deletePersonById(int $personId)
```
##### Описание:
Удаляет персону по id.
##### Атрибуты:
Имя | Тип | Описание |
personId
| int | ID персоны |
Возвращает:
**bool** - подтверждение удаления персоны.
##### Пример:
```JavaScript
bot.deletePersonById(24376);
```
# bot.getIntegrationIdByCode()
### Получить id интеграции бота по коду
```JavaScript
bot.getIntegrationIdByCode(?string $integrationCode)
```
##### Описание:
Находит id интеграции по ее коду.
##### Атрибуты:
Имя | Тип | Описание |
integrationCode | string | Код интеграции |
##### Возвращает:
**int** - id интеграции, если она принадлежит боту
или
**null** - если интеграция не найдена.
# bot.getEnabledIntegrationIdByCode()
### Получить id включенной интеграции бота по коду
```JavaScript
bot.getEnabledIntegrationIdByCode(?string $integrationCode)
```
##### Описание:
Находит id интеграции по ее коду, если интеграция активна.
##### Атрибуты:
Имя | Тип | Описание |
integrationCode | string | Код интеграции |
##### Возвращает:
**int** - id интеграции, если она принадлежит боту и активна
или
**null** - если интеграция не найдена или не активна.
# bot.isEnabledIntegrationById()
### Проверить активность интеграции по id
```JavaScript
bot.isEnabledIntegrationById(?int $integrationId)
```
##### Описание:
Проверяет есть ли такая интеграция по id и включена ли она.
##### Атрибуты:
Имя | Тип | Описание |
integrationId | int | ID интеграции |
##### Возвращает:
**bool** - подтверждение активности интеграции.
# bot.isEnabledIntegrationByCode()
### Проверить активность интеграции по коду
```JavaScript
bot.isEnabledIntegrationByCode(?string $integrationCode)
```
##### Описание:
Проверяет есть ли такая интеграция по коду и включена ли она.
##### Атрибуты:
Имя | Тип | Описание |
integrationId | int | ID интеграции |
##### Возвращает:
**bool** - подтверждение активности интеграции.
# bot.getLockNameForBot()
### Сгенерировать имя блокировки по боту
```JavaScript
bot.getLockNameForBot(string $lockName, string $lockPrefix = ''): string
```
##### Описание:
Генерирует имя блокировки по боту.
Использование на данный момент смысла не имеет, функции блокировок сами добавляют дополнительные префиксы к именами блокировок указанным в аргументах функций.
##### Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
##### Возвращает:
**string** - имя блокировки в формате строки.
##### Пример:
```JavaScript
let lockName = bot.getLockNameForBot('lock', 'first');
```
# bot.getLockNameForBusiness()
### Сгенерировать имя блокировки по бизнесу
```JavaScript
bot.getLockNameForBusiness(string $lockName, string $lockPrefix = ''): string
```
##### Описание:
Генерирует имя блокировки по бизнесу.
Использование на данный момент смысла не имеет, функции блокировок сами добавляют дополнительные префиксы к именами блокировок указанным в аргументах функций.
##### Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
##### Возвращает:
**string** - имя блокировки в формате строки.
##### Пример:
```JavaScript
let lockName = bot.getLockNameForBusiness('lock', 'first');
```
# bot.waitForBusinessLock()
### Захватить блокировку по бизнесу
```
bot.waitForBusinessLock(string $lockName, string $lockPrefix = '', ?int $ttlSec = null, $maxWaitSec = 300): bool
```
##### Описание:
Дожидается, когда блокировка будет освобождена, и затем захватывает ее.
##### Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
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
```
##### Описание:
Дожидается, когда блокировка будет освобождена, и затем захватывает ее.
##### Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
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
```
##### Описание:
Освобождает блокировку захваченную текущем скрипте по бизнесу.
##### Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
##### Возвращает:
**bool** - подтверждение освобождения блокировки.
##### Пример:
```JavaScript
if (bot.releaseCurrentLockForBusiness('lockName')) {
bot.sendText('Блокировка удалена')
} else {
bot.sendText('Ошика удаления блокировки')
}
```
# bot.releaseCurrentLockForBot()
### Освободить блокировку скрипта по боту
```
bot.releaseCurrentLockForBot(string $lockName, string $lockPrefix = ''): bool
```
##### Описание:
Освобождает блокировку захваченную текущем скрипте по боту.
##### Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
##### Возвращает:
**bool** - подтверждение освобождения блокировки.
##### Пример:
```JavaScript
if (bot.releaseCurrentLockForBot('lockName')) {
bot.sendText('Блокировка удалена')
} else {
bot.sendText('Ошика удаления блокировки')
}
```
# bot.releaseLockForBusiness()
### Освободить блокировку по бизнесу
```
bot.releaseLockForBusiness(string $lockName, string $lockPrefix = ''): bool
```
##### Описание:
Освобождает блокировку по бизнесу.
##### Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
##### Возвращает:
**bool** - подтверждение освобождения блокировки.
##### Пример:
```JavaScript
if (bot.releaseLockForBusiness('lockName')) {
bot.sendText('Блокировка удалена')
} else {
bot.sendText('Ошика удаления блокировки')
}
```
# bot.releaseLockForBot()
### Освободить блокировку по боту
```
bot.releaseLockForBot(string $lockName, string $lockPrefix = ''): bool
```
##### Описание:
Освобождает блокировку по боту.
##### Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
##### Возвращает:
**bool** - подтверждение освобождения блокировки.
##### Пример:
```JavaScript
if (bot.releaseLockForBot('lockName')) {
bot.sendText('Блокировка удалена')
} else {
bot.sendText('Ошика удаления блокировки')
}
```
# bot.hasLockForBot()
### Проверка существования блокировки по боту
```
bot.hasLockLockForBot(string $lockName, string $lockPrefix = '', $checkValue = null): bool
```
##### Описание:
Проверяет существование блокировки по боту.
##### Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
checkValue | int | Количество проверок |
##### Возвращает:
**bool** - подтверждение существования блокировки.
##### Пример:
```JavaScript
let hasLock = bot.hasLockLockForBot('lockName');
```
# bot.hasLockForBusiness()
### Проверка существования блокировки по бизнесу
```
bot.hasLockForBusiness(string $lockName, string $lockPrefix = '', $checkValue = null): bool
```
##### Описание:
Проверяет существование блокировки по бизнесу.
##### Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
checkValue | int | Количество проверок |
##### Возвращает:
**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 = [])
```
#### Описание:
Запускает задачу в соответствии с указанными параметрами.
##### Атрибуты:
Имя | Тип | Описание |
jobParams | json | Передача в планируемую задачу входящих 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)
```
##### Описание:
Получить настройки канала лида, задаваемые при привязки нового канала.
##### Атрибуты:
Имя | Тип | Описание |
key | string|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 в том, что не нужно подставлять дополнительные параметры типа токена мессенджера.
##### Атрибуты:
Имя | Тип | Описание |
endpoint | string|null | Ключ данных бота |
payload | array|object |
|
##### Возвращает:
**mixed** - payload в формате, в котором они находятся в сущности
или
**array** - массив payload
или
**string** - payload в формате строки.
# bot.sendText()
### Отправить текст в мессенджер
```JavaScript
bot.sendText(string|null|mixed $messageText, array|object|null $apiAdditionalParams = null, bool $isDisableBuffer = true)
```
##### Описание:
Отправляет текст пользователю в мессенджер.
##### Атрибуты:
Имя | Тип | Описание |
messageText | string|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)
```
##### Описание:
Отправить сообщение в мессенджер, сообщение может содержать текст, кнопки меню и вложения. Если мессенджер поддерживает, то все это будет отправлено в едином сообщении, иначе по отдельности, в порядке: сначала вложение, затем текст и кнопки меню.
##### Атрибуты:
Имя | Тип | Описание |
messageText | string|null|mixed | Текст сообщения |
buttons | array|object|null | Кнопки |
attachments | array|object|null | Вложения |
apiAdditionalParams | array|object|null | Дополнительные параметры, которые будут отправлены по REST API в мессенджер |
isDisableBuffer | bool | Принудительное отключение буффера исходящих сообщений |
isUpdateMessageButtons | bool | 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)
```
##### Описание:
Отправить кнопки с сообщением в мессенджер.
##### Атрибуты:
Имя | Тип | Описание |
messageText | string|null|mixed | Текст сообщения |
buttons | array|object|null | Кнопки |
apiAdditionalParams | array|object|null | Дополнительные параметры, которые будут отправлены по REST API в мессенджер |
isDisableBuffer | bool | Принудительное отключение буффера исходящих сообщений |
isUpdateMessageButtons | bool | Чтобы не логировать сообщение "Выберите вариант с помощью кнопок ниже" для кнопок GPT, которые отправляются в Telegram для обновления сообщений |
##### Возвращает:
**bool** - подтверждение успешной отправки сообщения.
# bot.getTelegramFileInfoById()
### Получить информацию о файле в Telegram
```JavaScript
bot.getTelegramFileInfoById(string|null $fileId, bool $isShowOriginalInfo = false)
```
##### Описание:
Возвращает информацию о файле в Telegram по file ID.
##### Атрибуты:
Имя | Тип | Описание |
fileId | string|null|mixed | ID файла |
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, сообщения отправятся с использованием буфера.
##### Атрибуты:
Имя | Тип | Описание |
messageText | string|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
##### Атрибуты:
Имя | Тип | Описание |
chatId | string|null | Обязателен, если не указан inline\_message\_id. Уникальный идентификатор целевого чата или имя пользователя целевого канала |
messageId | array|object|null | Обязателен, если не указан inline\_message\_id. Идентификатор сообщения для редактирования |
inlineMessageId | array|object|null | Обязателен, если не указаны Chat\_id и message\_id. Идентификатор встроенного сообщения |
inlineKeyboardMarkup | array|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
##### Атрибуты:
Имя | Тип | Описание |
chatId | string|null | Обязателен, если не указан inline\_message\_id. Уникальный идентификатор целевого чата или имя пользователя целевого канала |
messageId | array|object|null | Обязателен, если не указан inline\_message\_id. Идентификатор сообщения для редактирования |
inlineMessageId | array|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.
##### Атрибуты:
Имя | Тип | Описание |
fileUrl | string | URL файла |
##### Возвращает:
**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 хранилище или самим загружать файлы с помощью своего, стороннего микросервиса.
##### Атрибуты:
Имя | Тип | Описание |
fileUrl | string | URL файла |
##### Возвращает:
**array** - скачанный файлы
или
**string** - скачанный файл.
# bot.downloadTmpFileFromUrl()
### Скачать файла с URL и загрузить во временное хранилище
```JavaScript
bot.downloadTmpFileFromUrl(string $fileUrl)
```
##### Описание:
Скачивает файл с URL и загрузить во временное хранилище файлов Метабот для вашего бизнеса. Желательно использовать своё CDN хранилище или самим загружать файлы с помощью своего, стороннего микросервиса.
Имейте ввиду, что такое хранилище периодически очищается.
##### Атрибуты:
Имя | Тип | Описание |
fileUrl | string | URL файла |
##### Возвращает:
**array** - скачанный файлы
или
**string** - скачанный файл.
# bot.removeFile()
### Удалить файл по URL
```JavaScript
bot.removeFile(string $fileUrl)
```
##### Описание:
Удаляет файл по URL из хранилища файлов Метабот для вашего бизнеса.
##### Атрибуты:
Имя | Тип | Описание |
fileUrl | string | URL файла |
##### Возвращает:
**string** - URL файла.
# bot.removeTmpFile()
### Удалить файл по URL из временного хранилища
```
bot.removeTmpFile(string $fileUrl)
```
##### Описание:
Удаляет файл по URL из временного хранилища файлов Метабот для вашего бизнеса.
##### Атрибуты:
Имя | Тип | Описание |
fileUrl | string | URL файла |
##### Возвращает:
**string** - URL файла.
# bot.uploadFileToCdnAndGetNewUrl()
### Залить файл на CDN и получить новую ссылку
```JavaScript
bot.uploadFileToCdnAndGetNewUrl(string $fileUrl, array|object|null $cdnConfig = null)
```
##### Описание:
Заливает файл на CDN и возвращает новую ссылку, а также доп. параметры с описанием файла.
##### Атрибуты:
Имя | Тип | Описание |
fileUrl | string | URL файла |
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.
##### Атрибуты:
Имя | Тип | Описание |
fileUrl | string | URL файла |
cdnConfig | array|object|null | Конфиг |
##### Возвращает:
**array** - данные файла.