# 07. Справочник по функциям JS
# Справочник всех функций
### Получение данных бота
Метод | Описание |
[bot.**getAllData**(): **array**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botgetalldata "bot.getAllData()")
| Возвращает все данные текущего бота
|
[bot.**setData**(string $key, $value): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botsetdata "bot.setData()") | Устанавливает значение данных текущего бота по ключу
|
[bot.**getData**(string $key): **mixed|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetdata "bot.getData()") | Возвращает данные текущего бота по ключу
|
### Работа с лидами
#### Методы bot
Метод | Описание |
[bot.**findLeads**(array|object $columns = \[\], array|object $where = \[\], array|object $orderBy = \[\], int|null $limit = null, int|null $offset = null): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botfindleads "bot.findLeads()") | Находит лиды по указанным атрибутам |
[bot.**getGeoLocation**(): **array|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botgetgeolocation "bot.getGeoLocation()") | Возвращает геолокацию лида |
#### Методы lead
Метод | Описание |
[lead.**getAllData**(): **array**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetalldata "lead.getAllData()")
| Возвращает все данные лида
- **id** - id лида;
- **name** - имя лида;
- **identification** - внешний id лида;
- **identification\_entity** - внешний id сущности;
- **person\_id** - id персоны лида;
- **manager\_id** - id менеджера привязанного к лиду;
- **bot\_id** - id бота лида;
- **channel\_id** - id канала лида;
- **lang\_code** - код языка;
- **status\_id** - id статуса лида;
- **is\_mute** - включен ли бот для лида;
- все системные поля лида (по английски).
|
[lead.**setData**(string $key, $value): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadsetdata "lead.setData()") | Устанавливает значение данных лида по ключу
Возможные ключи:
- **id** - id лида;
- **name** - имя лида;
- **identification** - внешний id лида;
- **identification\_entity** - внешний id сущности;
- **person\_id** - id персоны лида;
- **manager\_id** - id менеджера привязанного к лиду;
- **bot\_id** - id бота лида;
- **channel\_id** - id канала лида;
- **lang\_code** - код языка;
- **status\_id** - id статуса лида;
- **is\_mute** - включен ли бот для лида;
- все системные поля лида (по английски).
|
[lead.**getData**(string $key): **mixed|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetdata "lead.getData()") | Возвращает значение данных лида по ключу
Возможные ключи:
- **id** - id лида;
- **name** - имя лида;
- **identification** - внешний id лида;
- **identification\_entity** - внешний id сущности;
- **person\_id** - id персоны лида;
- **manager\_id** - id менеджера привязанного к лиду;
- **bot\_id** - id бота лида;
- **channel\_id** - id канала лида;
- **lang\_code** - код языка;
- **status\_id** - id статуса лида;
- **is\_mute** - включен ли бот для лида;
- все системные поля лида (по английски).
|
[lead.**issetData**(string $key): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadissetdata-i-leadisdataexist "lead.issetData() и lead.isDataExist()")
| Проверяет наличие данных лида по ключу
Возможные ключи:
- **id** - id лида;
- **name** - имя лида;
- **identification** - внешний id лида;
- **identification\_entity** - внешний id сущности;
- **person\_id** - id персоны лида;
- **manager\_id** - id менеджера привязанного к лиду;
- **bot\_id** - id бота лида;
- **channel\_id** - id канала лида;
- **lang\_code** - код языка;
- **status\_id** - id статуса лида;
- **is\_mute** - включен ли бот для лида;
- все системные поля лида (по английски).
|
[lead.**isDataExist**(string $key): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadissetdata-i-leadisdataexist "lead.issetData() и lead.isDataExist()")
|
[lead.**getSerialNumber**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetserialnumber "lead.getSerialNumber()") | Возвращает порядковый номер лида в текущем боте |
[lead.**getChannelCode**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetchannelcode "lead.getChannelCode()") | Возвращает код канала лида |
[lead.**isInlineButtonsAvailable**(): **bool|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadisinlinebuttonsavailable "lead.isInlineButtonsAvailable()") | Проверяет включены ли инлайн кнопки |
[lead.**isInlineButtonsAvailableGeneralChannelSetting**(): **bool|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadisinlinebuttonsavailablegeneralchannelsetting "lead.isInlineButtonsAvailableGeneralChannelSetting()") | Возвращает настройки кнопок канала |
### Работа со скриптами
Метод | Описание |
[bot.**scheduleScript**(int|null $scriptId, int|null $leadId, int|null $ticketId = null, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botschedulescript "bot.scheduleScript()") | Планирует вызов скрипта |
[bot.**scheduleScriptByCode**(string $scriptCode, int|null $leadId, int|null $ticketId = null, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botschedulescriptbycode "bot.scheduleScriptByCode()") | Планирует вызов скрипта по коду |
[bot.**getScriptIdByName**(string|null $scriptName): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetscriptidbyname "bot.getScriptIdByName()") | Возвращает ID скрипта по наименованию |
[bot.**getScriptIdByCode**(string|null $scriptCode): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetscriptidbycode "bot.getScriptIdByCode()") | Возвращает ID скрипта по коду |
[bot.**getScriptCodeById**(int|null $scriptId): **int|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botgetscriptcodebyid "bot.getScriptCodeById()") | Возвращает код скрипта по ID |
[bot.**runScriptForLead**(?int $scriptId, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botrunscriptforlead "bot.runScriptForLead()") | Запускает скрипт для лида по ID скрипта |
[bot**.runScriptByNameForLead**(string|null $scriptName, int|null $leadId, int|null $ticketId = null, $addToQueue = true, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botrunscriptbynameforlead "bot.runScriptByNameForLead()") | Запускает скрипт для лида по наименованию скрипта |
[bot.**runScriptForPerson**(int|null $scriptId, int|null $personId, int|null $ticketId = null, $addToQueue = true, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botrunscriptforperson "bot.runScriptForPerson()")
| Запускает скрипт для персоны по ID скрипта |
[bot.**runScriptByNameForPerson**(string|null $scriptName, int|null $personId, int|null $ticketId = null, $addToQueue = true, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botrunscriptbynameforperson "bot.runScriptByNameForPerson()") | Запускает скрипт для персоны по наименованию скрипта |
[bot.**runScriptByCodeForLead**(string|null $scriptCode, int|null $leadId, int |null$ticketId = null, $addToQueue = true, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botrunscriptbycodeforlead "bot.runScriptByCodeForLead()") | Запускает скрипт для лида по коду |
[bot.**runScriptByCodeForPerson**(string|null $scriptCode, int|null $personId, int|null $ticketId = null, $addToQueue = true, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botrunscriptbycodeforperson "bot.runScriptByCodeForPerson()") | Запускает скрипт для персоны по коду |
[bot.**clearJobsByScriptId**(int|null $scriptId, int|null $leadId = null): **bool** ](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botclearjobsbyscriptid "bot.clearJobsByScriptId()") | Очищает джобы по id скрипта |
[bot.**clearJobsByScriptName**(string|null $scriptName, int|null $leadId = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botclearjobsbyscriptname "bot.clearJobsByScriptName()") | Очищает джобы по наименованию скрипта |
[bot.**clearJobsByScriptCode**(string|null $scriptCode, int|null $leadId = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botclearjobsbyscriptcode) | Очищает джобы по коду скрипта |
### Работа с атрибутами
#### Методы bot
Метод | Описание |
[bot.**setAttr(**string $key, string $value): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botsetattr "bot.setAttr()") | Устанавливает значение переменной бота |
[bot.**getAttr**(string $key): **mixed|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetattr "bot.getAttr()") | Возвращает значение переменной бота |
[bot.**getAllAttr**(): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetallattr "bot.getAllAttr()") | Возвращает массив всех переменных бота |
[bot.**getIntAttr**(string $key, int|null $default = 0): **int****|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botgetintattr "bot.getIntAttr()") | Возвращает значение int переменной бота |
[bot.**getFloatAttr**(string $key, float|null $default = 0.0): **float****|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botgetfloatattr "bot.getFloatAttr()") | Возвращает значение float переменной бота |
[bot.**getBoolAttr**(string $key, bool|null $default = false): **bool****|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botgetboolattr "bot.getBoolAttr()") | Возвращает значение bool переменной бота |
[bot.**issetAttr**(string $key): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botissetattr-i-botisattrexist "bot.issetAttr() и bot.isAttrExist()") | Проверяет наличие переменной бота
|
[bot.**isAttrExist**(string $key): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botissetattr-i-botisattrexist) |
[bot.**getAllJsonAttrs**(): **array**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botgetalljsonattrs "bot.getAllJsonAttrs()") | Возвращает значение всех JSON переменных бота |
[bot.**setJsonAttr**(string $key, $value): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botsetjsonattr "bot.setJsonAttr()") | Устанавливает значение JSON переменной бота |
[bot.**getJsonAttr**(string $key): **mixed|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botgetjsonattr "bot.getJsonAttr()") | Возвращает значение JSON переменной бота |
[bot.**issetJsonAttr**(string $key): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botissetjsonattr-i-botisjsonattrkeyexist "bot.issetJsonAttr() и bot.isJsonAttrKeyExist()")
| Проверяет наличие JSON переменной бота
|
[bot.**isJsonAttrKeyExist**(string $key): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botissetjsonattr-i-botisjsonattrkeyexist "bot.issetJsonAttr() и bot.isJsonAttrKeyExist()")
|
#### Методы lead
Метод | Описание |
[lead.**setAttr**(string $key, string $value): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadsetattr "lead.setAttr()") | Устанавливает значение переменной лида |
[lead.**getAttr**(string $key): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetattr "lead.getAttr()") | Возвращает значение переменной лида |
[lead.**getAllAttr**(): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetallattr) | Возвращает все переменные лида |
[lead.**getIntAttr**(string $key, ?int|null $default = 0): **int****|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetintattr "lead.getIntAttr()") | Возвращает значение int переменной лида |
[lead.**getFloatAttr**(string $key, ?float|null $default = 0.0): **float****|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetfloatattr "lead.getFloatAttr()") | Возвращает значение float переменной лида |
[lead.**getBoolAttr**(string $key, ?bool|null $default = false): **bool****|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetboolattr "lead.getBoolAttr()") | Возвращает значение bool переменной лида |
[lead.**issetAttr**(string $key): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadissetattr-i-leadisattrexist) | Проверяет наличие переменной лида
|
[lead.**isAttrExist**(string $key): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadissetattr-i-leadisattrexist) |
[lead.**deleteAttrs**(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = \[\], bool $isForceDelete = false, bool $isSuppressTriggers = false): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leaddeleteattrs-i-leaddeleteattr "lead.deleteAttrs() и lead.deleteAttr()") | Удаляет переменную/переменные лида
|
[lead.**deleteAttr**(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = \[\], bool $isForceDelete = false, bool $isSuppressTriggers = false): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leaddeleteattrs-i-leaddeleteattr) |
[lead.**forceDeleteAttrs**(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = \[\], bool $isSuppressTriggers = false): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadforcedeleteattrs-i-leadforcedeleteattr "lead.forceDeleteAttrs() и lead.forceDeleteAttr()") | Принудительно удаляет переменную/переменные лида из БД
|
[lead.**forceDeleteAttr**(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = \[\], bool $isSuppressTriggers = false): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadforcedeleteattrs-i-leadforcedeleteattr) |
[lead.**getAllJsonAttrs**(): **array**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetalljsonattrs "lead.getAllJsonAttrs()") | Возвращает значение всех JSON переменных лида |
[lead.**setJsonAttr**(string $key, $value): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadsetjsonattr "lead.setJsonAttr()") | Устанавливает значение JSON переменной лида |
[lead.**getJsonAttr**(string $key): **mixed|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetjsonattr "lead.getJsonAttr()") | Возвращает значение JSON переменной лида |
[lead.**issetJsonAttr**(string $key): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadissetjsonattr-i-leadisjsonattrkeyexist "lead.issetJsonAttr() и lead.isJsonAttrKeyExist()") | Проверяет наличие JSON переменной лида
|
[lead.**isJsonAttrKeyExist**(string $key): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadissetjsonattr-i-leadisjsonattrkeyexist "lead.issetJsonAttr() и lead.isJsonAttrKeyExist()") |
[lead.**deleteJsonAttrs**(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = \[\], bool $isForceDelete = false, bool $isSuppressTriggers = false): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leaddeletejsonattrs-i-leaddeletejsonattr "lead.deleteJsonAttrs() и lead.deleteJsonAttr()") | Удаляет json-переменную/json-переменные лида
|
[lead.**deleteJsonAttr**(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = \[\], bool $isForceDelete = false, bool $isSuppressTriggers = false): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leaddeletejsonattrs-i-leaddeletejsonattr "lead.deleteJsonAttrs() и lead.deleteJsonAttr()") |
[lead.**forceDeleteJsonAttrs**(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = \[\], bool $isSuppressTriggers = false): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadforcedeletejsonattrs-i-leadforcedeletejsonattr "lead.forceDeleteJsonAttrs() и lead.forceDeleteJsonAttr()") | Принудительно удаляет json-переменную/json-переменные лида из БД
|
[lead.**forceDeleteJsonAttr**(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = \[\], bool $isSuppressTriggers = false): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadforcedeletejsonattrs-i-leadforcedeletejsonattr) |
[lead.**setAllLiveTexAttrs**(string $value): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadsetalllivetexattrs "lead.setAllLiveTexAttrs()")
| Устанавливает значение всех LiveTex переменных лида |
[lead.**setLiveTexAttr**(string $key,string $value): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadsetlivetexattr "lead.setLiveTexAttr()")
| Устанавливает значение LiveTex переменной лида |
[lead.**getAllLiveTexAttrs**(): **array**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetalllivetexattrs "lead.getAllLiveTexAttrs()")
| Возвращает значение всех LiveTex переменных лида |
[lead.**getLiveTexAttr**(string $key): **mixed|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetlivetexattr "lead.getLiveTexAttr()")
| Возвращает значение LiveTex переменной лида |
#### Методы memory
Метод | Описание |
[memory.**setAttr**(string $key, string $value): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/memorysetattr "memory.setAttr()") | Устанавливает значение временной переменной |
[memory.**getAttr**(string $key): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/memorygetattr "memory.getAttr()") | Возвращает значение временной переменной |
[memory.**getIntAttr**(string $key, ?int|null $default = 0): **int****|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/memorygetintattr "memory.getIntAttr()") | Возвращает значение int временной переменной |
[memory.**getFloatAttr**(string $key, ?float|null $default = 0.0): **float****|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/memorygetfloatattr "memory.getFloatAttr()") | Возвращает значение float временной переменной |
[memory.**getBoolAttr**(string $key, ?bool|null $default = false): **bool****|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/memorygetboolattr "memory.getBoolAttr()") | Возвращает значение bool временной переменной |
[memory.**issetAttr**(string $key): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/memoryissetattr-i-memoryisattrexist "memory.issetAttr() и memory.isAttrExist()") | Проверяет наличие временной переменной
|
[memory.**isAttrExist**(string $key): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/memoryissetattr-i-memoryisattrexist "memory.issetAttr() и memory.isAttrExist()") |
[memory.**setAllJsonAttrs**(array $data): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/memorysetalljsonattrs "memory.setAllJsonAttrs()") | Устанавливает значение всех временных JSON переменных |
[memory.**getAllJsonAttrs**(): **array**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/memorygetalljsonattrs "memory.getAllJsonAttrs()") | Возвращает значение всех временных JSON переменных |
[memory.**setJsonAttr**(string $key, $value): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/memorysetjsonattr "memory.setJsonAttr()") | Устанавливает значение временной JSON переменной |
[memory.**getJsonAttr**(string $key): **mixed|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/memorygetjsonattr "memory.getJsonAttr()") | Возвращает значение временной JSON переменной |
[memory.**issetJsonAttr**(string $key): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/memoryissetjsonattr-i-memoryisjsonattrkeyexist "memory.issetJsonAttr() и memory.isJsonAttrKeyExist()") | Проверяет наличие временной JSON переменной
|
[memory.**isJsonAttrKeyExist**(string $key): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/memoryissetjsonattr-i-memoryisjsonattrkeyexist "memory.issetJsonAttr() и memory.isJsonAttrKeyExist()") |
### Работа с триггерами
Метод | Описание |
[bot.**scheduleTrigger**(int|null $triggerId, int|null $leadId, int|null $ticketId = null, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botscheduletrigger "bot.scheduleTrigger()") | Планирует запуск триггера |
[bot.**scheduleTriggerByCode**(string $triggerCode, int|null $leadId, int|null $ticketId = null, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/draft/815 "bot.scheduleTriggerByCode()") | Планирует запуск триггера по коду
|
[bot.**runTriggerForLead**(?int $triggerId, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botruntriggerforlead "bot.runTriggerForLead()")
| Запускает триггер для лида по ID триггера |
[bot.**runTriggerByCodeForLead**(string|null $triggerCode, int|null $leadId, int|null $ticketId = null, $addToQueue = true, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botruntriggerbycodeforlead "bot.runTriggerByCodeForLead()") | Планирует запуск триггера по коду |
[bot.**runTriggerByCodeForPerson**(string|null $triggerCode, int|null $personId, int|null $ticketId = null, $addToQueue = true, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botruntriggerbycodeforperson "bot.runTriggerByCodeForPerson()") | Планирует запуск триггера по коду для последнего лида персоны |
[bot.**clearTriggerJobsForLead**(int|null $leadId, int|null $ticketId = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botcleartriggerjobsforlead "bot.clearTriggerJobsForLead()") | Удаляет триггеры для лида |
[bot.**clearTriggerJobsForAllPersonLeads**(int|null $personId, int|null $ticketId = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botcleartriggerjobsforallpersonleads "bot.clearTriggerJobsForAllPersonLeads()")
| Удаляет триггеры для всех лидов персоны |
[bot.**getTriggerIdByName**(string|null $triggerName): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgettriggeridbyname "bot.getTriggerIdByName()")
| Возвращает ID триггера по наименованию |
[bot.**getTriggerIdByCode**(string|null $triggerCode): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgettriggeridbycode "bot.getTriggerIdByCode()")
| Возвращает ID Триггера по Коду |
[bot.**runTriggerByNameForLead**(string|null $triggerName, int|null $leadId, int|null $ticketId = null, $addToQueue = true, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botruntriggerbynameforlead "bot.runTriggerByNameForLead()")
| Запускает триггер для лида по наименованию |
[bot.**runTriggerForPerson**(int|null $triggerId, int|null $personId, int|null $ticketId = null, $addToQueue = true, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botruntriggerforperson "bot.runTriggerForPerson()")
| Запускает триггер для персоны по ID |
[bot.**runTriggerByNameForPerson**(string|null $triggerName, int|null $personId, int|null $ticketId = null, $addToQueue = true, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botruntriggerbynameforperson "bot.runTriggerByNameForPerson()")
| Запускает триггер для персоны по наименованию |
[bot.**clearTriggerJobsByScriptId**(int|null $scriptId, int|null $leadId = null): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botcleartriggerjobsbyscriptid "bot.clearTriggerJobsByScriptId()")
| Очищает джобы триггера по id скрипта
|
[bot.**clearTriggerJobsByScriptName**(string|null $scriptName, int|null $leadId = null): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botcleartriggerjobsbyscriptname "bot.clearTriggerJobsByScriptName()")
| Очищает джобы триггера по наименованию скрипта
|
[bot.**clearTriggerJobsById**(int|null $triggerId, int|null $leadId = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botcleartriggerjobsbyid "bot.clearTriggerJobsById()")
| Очищает джобы по id триггера
|
[bot.**clearTriggerJobsByCode**(string|null $triggerCode, int|null $leadId = null, int $ticketId = null): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botcleartriggerjobsbycode "bot.clearTriggerJobsByCode()")
| Очищает джобы по коду триггера
|
[bot.**clearTriggerJobsByCodeForAllPersonLeads**(string|null $triggerCode, int|null $personId, int $ticketId = null): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botcleartriggerjobsbycodeforallpersonleads "bot.clearTriggerJobsByCodeForAllPersonLeads()")
| Удаляет триггеры для всех лидов персоны по коду |
[bot.**clearTriggerJobsByName**(string|null $triggerName, int|null $leadId = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botcleartriggerjobsbyname "bot.clearTriggerJobsByName()")
| Очищает джобы по наименованию триггера
|
[bot.**clearTriggerJobsByScriptCode**(string|null $scriptCode, int|null $leadId = null, int|null $ticketId = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botcleartriggerjobsbyscriptcode "bot.clearTriggerJobsByScriptCode()")
| Очищает джобы по коду скрипта
|
[bot.**clearTriggerJobsByIdForTicket**(int|null $triggerId, int|null $ticketId): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botcleartriggerjobsbyidforticket "bot.clearTriggerJobsByIdForTicket()")
| Очищает джобы по id триггера и ID заявки
|
[bot.**clearTriggerJobsByNameForTicket**(string|null $triggerName, int|null $ticketId): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botcleartriggerjobsbynameforticket "bot.clearTriggerJobsByNameForTicket()")
| Очищает джобы по наименованию триггера и ID заявки
|
[bot.**clearTriggerJobsByCodeForTicket**(string|null $triggerCode, int|null $ticketId): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botcleartriggerjobsbycodeforticket "bot.clearTriggerJobsByCodeForTicket()")
| Очищает джобы по коду триггера и ID заявки
|
### Работа со статусами
Метод | Описание |
[lead.**isInStatus**(string $statusName): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadisinstatus "lead.isInStatus()") | Проверяет существует ли статуса у лида |
[lead.**getStatusId**(): **int**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetstatusid "lead.getStatusId()")[**|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetstatusid "lead.getStatusId()") | Возвращает id статуса лида |
[lead.**getAllStatuses**(): **array**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetallstatuses "lead.getAllStatuses()") | Возвращает все статусы лида |
[lead.**getAllStatusesIndexedByName**(): **array**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetallstatusesindexedbyname "lead.getAllStatusesIndexedByName()") | Возвращает все наименования статусов лида |
[lead.**setStatusId**(int $statusId, string $name): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadsetstatusid "lead.setStatusId()") | Устанавливает id статуса лида |
[lead.**setStatusName**(string $name): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadsetstatusname "lead.setStatusName()") | Устанавливает наименование статуса лида |
[lead.**getStatusName**(): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetstatusname "lead.getStatusName()") | Возвращает наименование статуса лида |
[lead.**setStatus**(int $statusId, string $name): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadsetstatus "lead.setStatus()") | Устанавливает статус лида |
[lead.**setStatusById**(int $statusId): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadsetstatusbyid "lead.setStatusById()") | Устанавливает статус лида по id |
[lead.**issetStatusById**(string $id): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadissetstatusbyid "lead.issetStatusById()") | Проверяет существует ли статус у лида по id |
[lead.**issetStatusByName**(string $name): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadissetstatusbyname "lead.issetStatusByName()") | Проверяет существует ли статуса у лида по наименованию |
[lead.**getStatusIdByName**(string $statusName): **int**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetstatusidbyname "lead.getStatusIdByName()") | Возвращает id статуса лида по наименованию |
[lead.**setStatusByName**(string $statusName): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadsetstatusbyname "lead.setStatusByName()") | Устанавливает статус лида по наименованию |
### Работа с рассылками
Метод | Описание |
[bot.**scheduleBroadcast**(int|null $broadcastId, int|null $ticketId = null, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botschedulebroadcast "bot.scheduleBroadcast()") | Планирует запуск рассылки |
[bot.**scheduleBroadcastByCode**(string|null $broadcastCode, int|null $ticketId = null, $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botschedulebroadcastbycode "bot.scheduleBroadcastByCode()") | Планирует запуск рассылки по коду |
[bot.**getBroadcastIdByCode**(string|null $broadcastCode): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetbroadcastidbycode "bot.getBroadcastIdByCode()") | Возвращает ID рассылки по коду |
### Работа с тэгами
Метод | Описание |
[lead.**isTagExist**('some\_tag'): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadistagexist-i-leadissettag "lead.isTagExist() и lead.issetTag()") | Проверяет наличие тэга лида
|
[lead.**issetTag**('some\_tag'): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadistagexist-i-leadissettag) |
[lead.**setTag**(string $key, $value): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadsettag "lead.setTag()") | Устанавливает значение тэга лида |
[lead.**getTag**(string $key): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgettag "lead.getTag()") | Возвращает значение тэга лида |
[lead.**getAllTags**(): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetalltags "lead.getAllTags()") | Возвращает массив всех тэгов лида |
[lead.**addTags**(string|object|array|null $tags, int $ticketId = null, $scriptRequestParams = \[\], bool $isSuppressTriggers = false): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadaddtags-i-leadaddtag "lead.addTags() и lead.addTag()") | Добавляет тэги лиду
|
[lead.**addTag**(string|object|array|null $tags, int|null $ticketId = null, $scriptRequestParams = \[\], bool $isSuppressTriggers = false): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadaddtags-i-leadaddtag) |
[lead.**deleteTags**(string|object|array|null $tags, int|null $ticketId = null, $scriptRequestParams = \[\], bool $isForceDelete = false, bool $isSuppressTriggers = false): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leaddeletetags-i-leaddeletetag "lead.deleteTags() и lead.deleteTag()") | Удаляет тэги лида
|
[lead.**deleteTag**(string|object|array|null $tags, int|null $ticketId = null, $scriptRequestParams = \[\], bool $isForceDelete = false, bool $isSuppressTriggers = false): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leaddeletetags-i-leaddeletetag) |
[lead.**forceDeleteTags**(string|object|array|null $tags, int|null $ticketId = null, $scriptRequestParams = \[\], bool $isSuppressTriggers = false): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadforcedeletetags-i-leadforcedeletetag "lead.forceDeleteTags() и lead.forceDeleteTag()") | Принудительно удаляет тэги лида из БД
|
[lead.**forceDeleteTag**(string|object|array|null $tags, int|null $ticketId = null, $scriptRequestParams = \[\], bool $isSuppressTriggers = false): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadforcedeletetags-i-leadforcedeletetag "lead.forceDeleteTags() и lead.forceDeleteTag()") |
### Работа с контекстами
Метод | Описание |
[lead.**setContext**(string $key, $value): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadsetcontext "lead.setContext()") | Устанавливает значение контекста лида |
[lead.**isContextExist**('some\_tag'): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadiscontextexist-i-leadissetcontext "lead.isContextExist() и lead.issetContext()") | Проверяет наличие контекста лида
|
[lead.**issetContext**('some\_tag'): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadiscontextexist-i-leadissetcontext) |
[lead.**getContext**(string $key): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetcontext "lead.getContext()") | Возвращает значение контекста лида |
[lead.**getAllContexts**(): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetallcontexts "lead.getAllContexts()") | Возвращает массив всех контекстов лида |
### Работа с переключением на оператора
#### Методы bot
Метод | Описание |
[bot.**getForwardEventType**(): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetforwardeventtype "bot.getForwardEventType()") | Проверяет кто переключил на оператора
|
[bot.**isForwardedToOperator**(): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botisforwardedtooperator "bot.isForwardedToOperator()") | Проверяет переключения на оператора
|
#### Методы lead
Метод | Описание |
[lead.**setForwarded**(bool|int $state): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadsetforwarded "lead.setForwarded()") | Переключает бот на оператора
|
### Работа с заявками
#### Методы bot
Метод | Описание |
[bot.**createTicket**($data): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botcreateticket "bot.createTicket()") | Создает заявку |
[bot.**updateTicketById**(int $ticketId, $data): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botupdateticketbyid "bot.updateTicketById()") | Обновляет заявку |
[bot.**getMaxRejectsTicketCount**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetmaxrejectsticketcount "bot.getMaxRejectsTicketCount()") | Возвращает максимальное количество отказов |
[bot.**findTickets**($where = \[\], bool $findInAllBusinessBots = false, $orderBy = \[\], int|null $limit = null, int|null $offset = null): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botfindtickets "bot.findTickets()") | Находит заявку по заданным атрибутам |
[bot.**findTicketIdByCustomField**(string $fieldName, $value): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botfindticketidbycustomfield "bot.findTicketIdByCustomField()") | Возвращает id заявки по значению поля
|
[bot.**getTicketTypeIdByName**(string $typeName): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgettickettypeidbyname "bot.getTicketTypeIdByName()") | Возвращает id заявки по наименованию вида заявки |
[bot.**getTicketTypeNameById**(int|null $ticketTypeId): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botgettickettypenamebyid "bot.getTicketTypeNameById()") | Возвращает наименование заявки по id вида заявки |
[bot.**getTicketStatusIdByName**(string $statusName): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetticketstatusidbyname "bot.getTicketStatusIdByName()") | Возвращает id заявки по наименованию статуса заявки |
[bot.**setCurrentTicketById**(int|null $ticketId): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botsetcurrentticketbyid "bot.setCurrentTicketById()") | Устанавливает указанную заявку как текущую |
[bot.**clearTicketAssignedPersonsLog**(): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botclearticketassignedpersonslog "bot.clearTicketAssignedPersonsLog()") | Очищает лог назначения тикета персонам |
#### Методы ticket
Метод | Описание |
[ticket.**update**($data): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketupdate "ticket.update()")
| Обновляет заявку, через объект заявки |
[ticket.**getAllData**(): **array**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketgetalldata "ticket.getAllData()")
| Возвращает значение всех данных заявки
|
[ticket.**setData**(string $key, $value): **self**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketsetdata "ticket.setData()")
| Устанавливает значение данных заявки по ключу
В качестве ключа можно указать:
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
|
[ticket.**getData**(string $key): **mixed|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetdata "ticket.getData()")
| Возвращает значение данных заявки по ключу
В качестве ключа можно указать:
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
|
[ticket.**getCustomData**(string $key): **mixed|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetcustomdata "ticket.getCustomData()")
| Считывает произвольные поля заявки по ключу
В качестве ключа можно указать:
- **названия всех произвольных полей заявки**;
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
|
[ticket.**issetData**(string $key): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketissetdata-i-ticketisdataexist "ticket.issetData() и ticket.isDataExist()")
| Проверяет наличие данных по заявке по ключу
В качестве ключа можно указать:
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
|
[ticket.**isDataExist**(string $key): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketissetdata-i-ticketisdataexist)
|
[ticket.**reloadCustomData**(bool $isReloadModel = false): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketreloadcustomdata "ticket.reloadCustomData()")
| Перезагружает кастомные данные |
[ticket.**loadCustomDataIfNotLoaded**(bool $isReloadModel = false): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketloadcustomdataifnotloaded "ticket.loadCustomDataIfNotLoaded()")
| Загружает кастомные данные, если они не загружены |
[ticket.**setAllCustomData**(array $customData): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketsetallcustomdata "ticket.setAllCustomData()")
| Переопределяет список кастомных полей |
[ticket.**getAllCustomData**(): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetallcustomdata "ticket.getAllCustomData()")
| Возвращает список кастомных полей |
[ticket.**setCustomData**(string $key, $value): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketsetcustomdata "ticket.setCustomData()")
| Устанавливает значение кастомного поля
В качестве ключа можно указать:
- **названия всех произвольных полей заявки**;
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
|
[ticket.**issetCustomData**(string $key): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketissetcustomdata "ticket.issetCustomData()")
| Проверяет имеет ли значение кастомное поле
В качестве ключа можно указать:
- **названия всех произвольных полей заявки**;
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
|
[ticket.**isCustomDataExist**(string $key): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketiscustomdataexist "ticket.isCustomDataExist()")
| Проверяет существует ли кастомное поле
В качестве ключа можно указать:
- **названия всех произвольных полей заявки**;
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
|
[ticket.**getTicketTypeName**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgettickettypename "ticket.getTicketTypeName()")**[|null](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetstatusid "lead.getStatusId()")**
| Возвращает название типа заявки |
[ticket.**getStatusId**(): **int**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetstatusid-i-ticketgetattrstatus-id "ticket.getStatusId() и ticket.getAttr("status_id")")**[|null](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetstatusid "lead.getStatusId()")**
| Возвращает ID статуса заявки
|
[ticket.**getAttr**('status\_id'): **int**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetstatusid-i-ticketgetattrstatus-id)**[|null](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetstatusid "lead.getStatusId()")**
|
[ticket.**getStatusName**(): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetstatusname "ticket.getStatusName()")
| Возвращает название статуса заявки
|
[ticket.**getStatusType**(): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetstatustype "ticket.getStatusType()")
| Возвращает тип статуса заявки
|
[ticket.**isInStatus**($statusName): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketisinstatus "ticket.isInStatus()")
| Проверяет статус заявки
|
[ticket.**setStatusId**(int|null $statusId, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketsetstatusid "ticket.setStatusId()")
| Устанавливает статус заявки по id
|
[ticket.**setStatusByName**(string $statusName, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketsetstatusbyname "ticket.setStatusByName()")
| Устанавливает статус заявки по имени
|
[ticket.**reloadTicket**(): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketreloadticket "ticket.reloadTicket()")
| Загружает заявку повторно
|
[ticket.**getAuthorPersonId**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetauthorpersonid "ticket.getAuthorPersonId()")
| Возвращает ID автора заявки
|
[ticket.**getAssignedPersonId**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetassignedpersonid "ticket.getAssignedPersonId()")
| Возвращает ID исполнителя заявки
|
[ticket.**getClientPersonId**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetclientpersonid "ticket.getClientPersonId()")
| Возвращает ID клиента заявки
|
[ticket.**getAuthorPersonFullName**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetauthorpersonfullname "ticket.getAuthorPersonFullName()")
| Возвращает ФИО автора заявки
|
[ticket.**getAssignedPersonFullName**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetassignedpersonfullname "ticket.getAssignedPersonFullName()")
| Возвращает ФИО исполнителя заявки
|
[ticket.**getClientPersonFullName**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetclientpersonfullname "ticket.getClientPersonFullName()")
| Возвращает ФИО клиента заявки
|
[ticket.**getAuthorPersonRoleId**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetauthorpersonroleid "ticket.getAuthorPersonRoleId()")
| Возвращает ID роли автора заявки
|
[ticket.**getAssignedPersonRoleId**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetassignedpersonroleid "ticket.getAssignedPersonRoleId()")
| Возвращает ID роли исполнителя заявки
|
[ticket.**getClientPersonRoleId**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetclientpersonroleid "ticket.getClientPersonRoleId()")
| Возвращает ID роли клиента заявки |
[ticket.**getAuthorPersonRoleName**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetauthorpersonrolename "ticket.getAuthorPersonRoleName()")
| Возвращает имя роли автора заявки |
[ticket.**getAssignedPersonRoleName**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetassignedpersonrolename "ticket.getAssignedPersonRoleName()")
| Возвращает имя роли исполнителя заявки |
[ticket.**getClientPersonRoleName**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetclientpersonrolename "ticket.getClientPersonRoleName()")
| Возвращает имя роли клиента заявки |
[ticket.**getAuthorPersonRoleTitle**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetauthorpersonroletitle "ticket.getAuthorPersonRoleTitle()")
| Возвращает заголовок роли автора заявки |
[ticket.**getAssignedPersonRoleTitle**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetassignedpersonroletitle "ticket.getAssignedPersonRoleTitle()")
| Возвращает заголовок роли исполнителя заявки |
[ticket.**getClientPersonRoleTitle**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetclientpersonroletitle "ticket.getClientPersonRoleTitle()")
| Возвращает заголовок роли клиента заявки |
[ticket.**getAuthorPersonRoleFormattedTitle**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetauthorpersonroleformattedtitle "ticket.getAuthorPersonRoleFormattedTitle()")
| Возвращает форматированное название роли автора заявки |
[ticket.**getAssignedPersonRoleFormattedTitle**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetassignedpersonroleformattedtitle "ticket.getAssignedPersonRoleFormattedTitle()")
| Возвращает форматированное название роли исполнителя заявки |
[ticket.**getClientPersonRoleFormattedTitle**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetclientpersonroleformattedtitle "ticket.getClientPersonRoleFormattedTitle()")
| Возвращает форматированное название роли клиента заявки |
[ticket.**getPerson1Id**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetperson1id "ticket.getPerson1Id()")
| Возвращает id первой дополнительной персоны |
[ticket.**getPerson2Id**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetperson2id "ticket.getPerson2Id()")
| Возвращает id второй дополнительной персоны |
[ticket.**getPerson3Id**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetperson3id "ticket.getPerson3Id()")
| Возвращает id третьей дополнительной персоны |
[ticket.**setPerson1Id**(int|null $personId): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketsetperson1id "ticket.setPerson1Id()")
| Устанавливает id первой дополнительной персоны |
[ticket.**setPerson2Id**(int|null $personId): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketsetperson2id "ticket.setPerson2Id()")
| Устанавливает id второй дополнительной персоны |
[ticket.**setPerson3Id**(int|null $personId): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketsetperson3id "ticket.setPerson3Id()")
| Устанавливает id третьей дополнительной персоны |
[ticket.**getTotalFormatted**(): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketgettotalformatted "ticket.getTotalFormatted()")
| Возвращает форматированную итоговую стоимость заказа |
[ticket.**getSubtotalFormatted**(): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketgetsubtotalformatted "ticket.getSubtotalFormatted()")
| Возвращает форматированную промежуточную стоимость заказа |
[ticket.**getTotalFeeFormatted**(): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketgettotalfeeformatted "ticket.getTotalFeeFormatted()")
| Возвращает форматированную стоимость заказа |
[ticket.**getDeliveryFeeFormatted**(): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketgetdeliveryfeeformatted "ticket.getDeliveryFeeFormatted()")
| Возвращает форматированную стоимость доставки
|
[ticket.**getTicketLines**(): **ScriptTicketLine**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketgetticketlines "ticket.getTicketLines()")
| Возвращает массив объектов ScriptTicketLine
|
#### Методы ScriptTicketLine
Метод | Описание |
[ScriptTicketLine.**reload**(): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinereload "ScriptTicketLine.reload()") | Обновляет данные по строке заявки из бд |
[ScriptTicketLine.**getId**(): **int|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetid "ScriptTicketLine.getId()") | Возвращает id ScriptTicketLine |
[ScriptTicketLine.**getTicketId**(): **int|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetticketid "ScriptTicketLine.getTicketId()") | Возвращает id заявки |
[ScriptTicketLine.**getProductId**(): **int|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetproductid "ScriptTicketLine.getProductId()") | Возвращает id продукта заявки |
[ScriptTicketLine.**getProduct**(): **ScriptProduct|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetproduct "ScriptTicketLine.getProduct()") | Возвращает все данные продукта заявки |
[ScriptTicketLine.**getQuantity**(): **int|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetquantity "ScriptTicketLine.getQuantity()") | Возвращает количество продукта в заявке |
[ScriptTicketLine.**getPrice**(): **float**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetprice "ScriptTicketLine.getPrice()") | Возвращает цену продукта в заявке |
[ScriptTicketLine.**getPriceFormatted**(): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetpriceformatted "ScriptTicketLine.getPriceFormatted()") | Возвращает форматированную цену продукта в заявке |
[ScriptTicketLine.**getPriceDateFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetpricedateformatted-i-scriptticketlinepricedateformatted "ScriptTicketLine.getPriceDateFormatted() и ScriptTicketLine.priceDateFormatted()")
| Возвращает цену продукта в заявке в указанном форматировании |
[ScriptTicketLine.**priceDateFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetpricedateformatted-i-scriptticketlinepricedateformatted "ScriptTicketLine.getPriceDateFormatted() и ScriptTicketLine.priceDateFormatted()")
|
[ScriptTicketLine.**getFee**(): **float**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetfee "ScriptTicketLine.getFee()") | Возвращает стоимость заявки |
[ScriptTicketLine.**getFeeFormatted**(): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetfeeformatted "ScriptTicketLine.getFeeFormatted()") | Возвращает форматированную стоимость заявки |
[ScriptTicketLine.**getSubtotal**(): **float**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetsubtotal "ScriptTicketLine.getSubtotal()") | Возвращает итоговую стоимость заявки |
[ScriptTicketLine.**getSubtotalFormatted**(): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetsubtotalformatted "ScriptTicketLine.getSubtotalFormatted()") | Возвращает форматированную итоговую стоимость заявки |
[ScriptTicketLine.**getCreatedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetcreatedatformatted-i-scriptticketlinecreatedatformatted "ScriptTicketLine.getCreatedAtFormatted() и ScriptTicketLine.createdAtFormatted()")
| Возвращает форматированную дату создания заказа
|
[ScriptTicketLine.**createdAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetcreatedatformatted-i-scriptticketlinecreatedatformatted "ScriptTicketLine.getCreatedAtFormatted() и ScriptTicketLine.createdAtFormatted()")
|
[ScriptTicketLine.**getUpdatedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetupdatedatformatted-i-scriptticketlineupdatedatformatted "ScriptTicketLine.getUpdatedAtFormatted() и ScriptTicketLine.updatedAtFormatted()")
| Возвращает форматированную дату обновления заказа |
[ScriptTicketLine.**updatedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetupdatedatformatted-i-scriptticketlineupdatedatformatted "ScriptTicketLine.getUpdatedAtFormatted() и ScriptTicketLine.updatedAtFormatted()")
|
[ScriptTicketLine.**getDeletedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetdeletedatformatted-i-scriptticketlinedeletedatformatted "ScriptTicketLine.getDeletedAtFormatted() и ScriptTicketLine.deletedAtFormatted()")
| Возвращает форматированную дату удаления заказа |
[ScriptTicketLine.**deletedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptticketlinegetdeletedatformatted-i-scriptticketlinedeletedatformatted "ScriptTicketLine.getDeletedAtFormatted() и ScriptTicketLine.deletedAtFormatted()")
|
#### Методы ScriptProduct
Метод | Описание |
[ScriptProduct.**reload**(): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductreload "ScriptProduct.reload()") | Обновить данные по продукту из бд |
[ScriptProduct.**getId**(): **int|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductgetid "ScriptProduct.getId()") | Возвращает id продукта |
[ScriptProduct.**getTitle**(): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductgettitle "ScriptProduct.getTitle()") | Возвращает наименование продукта |
[ScriptProduct.**getCode**(): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductgetcode "ScriptProduct.getCode()") | Возвращает код продукта |
[ScriptProduct.**getPrice**(): **float|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductgetprice "ScriptProduct.getPrice()") | Возвращает цену продукта |
[ScriptProduct.**getMainCategoryId**(): **int|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductgetmaincategoryid "ScriptProduct.getMainCategoryId()") | Возвращает id категории продукта |
[ScriptProduct.**getIsEnabled**(): **bool|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductgetisenabled "ScriptProduct.getIsEnabled()") | Проверяет активен ли продукт |
[ScriptProduct.**getIsAvailableInStock**(): **bool|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductgetisavailableinstock "ScriptProduct.getIsAvailableInStock()") | Проверяет есть ли продукт в наличии |
[ScriptProduct.**getUrl**(): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductgeturl "ScriptProduct.getUrl()") | Возвращает url продукта |
[ScriptProduct.**getThumbUrl**(): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductgetthumburl "ScriptProduct.getThumbUrl()") | Возвращает thumb url продукта |
[ScriptProduct.**getPriceFormatted**(): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductgetpriceformatted "ScriptProduct.getPriceFormatted()") | Возвращает форматированную цену продукта |
[ScriptProduct.**getCreatedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductgetcreatedatformatted-i-scriptproductcreatedatformatted "ScriptProduct.getCreatedAtFormatted() и ScriptProduct.createdAtFormatted()")
| Возвращает форматированную дату создания продукта
|
[ScriptProduct.**createdAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductgetcreatedatformatted-i-scriptproductcreatedatformatted "ScriptProduct.getCreatedAtFormatted() и ScriptProduct.createdAtFormatted()")
|
[ScriptProduct.**getUpdatedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductupdatedatformatted-i-scriptproductgetupdatedatformatted "ScriptProduct.updatedAtFormatted() и ScriptProduct.getUpdatedAtFormatted()")
| Возвращает форматированную дату обновления продукта |
[ScriptProduct.**updatedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductupdatedatformatted-i-scriptproductgetupdatedatformatted "ScriptProduct.updatedAtFormatted() и ScriptProduct.getUpdatedAtFormatted()")
|
[ScriptProduct.**getDeletedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductgetdeletedatformatted-i-scriptproductdeletedatformatted "ScriptProduct.getDeletedAtFormatted() и ScriptProduct.deletedAtFormatted()")
| Возвращает форматированную дату удаления продукта |
[ScriptProduct.**deletedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/scriptproductgetdeletedatformatted-i-scriptproductdeletedatformatted "ScriptProduct.getDeletedAtFormatted() и ScriptProduct.deletedAtFormatted()")
|
### Работа со статусами заявок
#### Методы ticketStatus
Метод | Описание |
[ticketStatus.**reload**(): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketstatusreload "ticketStatus.reload()") | Перезагружает статус в БД |
[ticketStatus.**getId**(): **int**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketstatusgetid "ticketStatus.getId()") | Возвращает id статуса |
[ticketStatus.**getName**(): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketstatusgetname "ticketStatus.getName()") | Возвращает наименование статуса |
[ticketStatus.**getType**(): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketstatusgettype "ticketStatus.getType()") | Возвращает тип статуса |
[ticketStatus.**getOrderPos**(): **int**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketstatusgetorderpos "ticketStatus.getOrderPos()") | Возвращает значение статуса |
[ticketStatus.**isSameStatusName**($statusName): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketstatusissamestatusname "ticketStatus.isSameStatusName()") | Проверяет наименование статуса на сходство |
[ticketStatus.**getCreatedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketstatusgetcreatedatformatted-i-ticketstatuscreatedatformatted "ticketStatus.getCreatedAtFormatted() и ticketStatus.createdAtFormatted()")
| Возвращает форматированную дату создания статуса |
[ticketStatus.**createdAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketstatusgetcreatedatformatted-i-ticketstatuscreatedatformatted "ticketStatus.getCreatedAtFormatted() и ticketStatus.createdAtFormatted()")
|
[ticketStatus.**getUpdatedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketstatusgetupdatedatformatted-i-ticketstatusgetupdatedatformatted "ticketStatus.getUpdatedAtFormatted() и ticketStatus.getUpdatedAtFormatted()")
| Возвращает форматированную дату обновления статуса |
[ticketStatus.**updatedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketstatusgetupdatedatformatted-i-ticketstatusgetupdatedatformatted "ticketStatus.getUpdatedAtFormatted() и ticketStatus.getUpdatedAtFormatted()")
|
[ticketStatus.**getDeletedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketstatusgetdeletedatformatted-i-ticketstatusdeletedatformatted "ticketStatus.getDeletedAtFormatted() и ticketStatus.deletedAtFormatted()")
| Возвращает форматированную дату удаления статуса |
[ticketStatus.**deletedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/ticketstatusgetdeletedatformatted-i-ticketstatusdeletedatformatted "ticketStatus.getDeletedAtFormatted() и ticketStatus.deletedAtFormatted()")
|
#### Методы ticketStatuses
Метод | Описание |
[ticketStatuses.**reload**(): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketstatusesreload "ticketStatuses.reload()") | Перезагружает все статусы из БД |
[ticketStatuses.**getCollection**(): **Collection|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketstatusesgetcollection "ticketStatuses.getCollection()") | Возвращает Laravel Collection |
[ticketStatuses.**find**(array|object|null $where, bool $isReturnCollection = false): **ScriptTicketStatus|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketstatusesfind "ticketStatuses.find()") | Возвращает статусы заявок |
[ticketStatuses.**findById**(string|int|null $id): **ScriptTicketStatus|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketstatusesfindbyid "ticketStatuses.findById()") | Возвращает статус по ID |
[ticketStatuses.**findByName**(string $name): **ScriptTicketStatus|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketstatusesfindbyname "ticketStatuses.findByName()") | Возвращает статус по имени |
[ticketStatuses.**findAllByNames**(string|array|object|null $names, string $operator = '=', bool $isReturnCollection = false): **Collection|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketstatusesfindallbynames "ticketStatuses.findAllByNames()") | Возвращает статусы по имени |
[ticketStatuses.**findAllByTypes**(string|array|object|null $types, string $operator = '=', bool $isReturnCollection = false): **Collection|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketstatusesfindallbytypes "ticketStatuses.findAllByTypes()") | Возвращает статусы по типу статуса |
### Работа с персонами
#### Методы bot
Метод | Описание |
[bot.**createPerson**($data): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botcreateperson "bot.createPerson()") | Создает персону |
[bot.**findPersons**($where = \[\], $orderBy = \[\], int|null $limit = null, int|null $offset = null, bool $isLogErrorIfManyPersonsFound = false): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botfindpersons "bot.findPersons()") | Возвращает данные персон соответствующих атрибутам |
[bot.**updatePersonById**(int $personId, $data): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botupdatepersonbyid "bot.updatePersonById()") | Обновляет персону по id
|
[bot.**deletePersonById**(int $personId): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botdeletepersonbyid "bot.deletePersonById()") | Удаляет персону по id
|
[bot.**getDefaultPersonRoleId**(): **int|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botgetdefaultpersonroleid "bot.getDefaultPersonRoleId()") | Возвращает id роли персоны по умолчанию
|
#### Методы lead
Метод | Описание |
[lead.**getPersonId**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetpersonid "lead.getPersonId()") | Возвращает id персоны |
[lead.**setPersonId**(int|null $personId): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadsetpersonid "lead.setPersonId()") | Привязывает персону к лиду |
[lead.**createPersonForCurrentLead**($data): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadcreatepersonforcurrentlead "lead.createPersonForCurrentLead()") | Создает персону для лида
|
#### Методы person
Метод | Описание |
[person.**update**($data): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personupdate "person.update()") | Обновляет данные персоны
|
[person.**delete**(): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/persondelete "person.delete()") | Удаляет персону
|
[person.**getAllData**(): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/persongetalldata "person.getAllData()") | Возвращает все поля персоны
|
[person.**setData**(string $key, $value): **self**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personsetdata "person.setData()") | Устанавливает поле персоны по ключу
В качестве ключа можно указать:
- **id** - id персоны;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **person\_role\_id** - id роли;
- **is\_external** - значение поля **Сотрудник/Клиент**;
- **user\_id** - id пользователя;
- **firstname** - имя;
- **lastname** - фамилия;
- **middlename** - отчество;
- **email** - адрес электронной почты;
- **phone** - номер телефона;
- **organization\_name** - название организации;
- **organization\_address** - адрес организации;
- **comment** - комментарий;
- **created\_at** - дата создания;
- **updated\_at** - дата последнего редактирования;
- **deleted\_at** - дата удаления;
- все системные поля персоны (по английски).
|
[person.**getData**(string $key)](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/persongetdata "person.getData()") | Возвращает значение данных персоны
В качестве ключа можно указать:
- **id** - id персоны;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **person\_role\_id** - id роли;
- **is\_external** - значение поля **Сотрудник/Клиент**;
- **user\_id** - id пользователя;
- **firstname** - имя;
- **lastname** - фамилия;
- **middlename** - отчество;
- **email** - адрес электронной почты;
- **phone** - номер телефона;
- **organization\_name** - название организации;
- **organization\_address** - адрес организации;
- **comment** - комментарий;
- **created\_at** - дата создания;
- **updated\_at** - дата последнего редактирования;
- **deleted\_at** - дата удаления;
- все системные поля персоны (по английски).
|
[person.**issetData**(string $key): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personissetdata-i-personisdataexist "person.issetData() и person.isDataExist()") | Проверяет наличие данных по персоне
В качестве ключа можно указать:
- **id** - id персоны;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **person\_role\_id** - id роли;
- **is\_external** - значение поля **Сотрудник/Клиент**;
- **user\_id** - id пользователя;
- **firstname** - имя;
- **lastname** - фамилия;
- **middlename** - отчество;
- **email** - адрес электронной почты;
- **phone** - номер телефона;
- **organization\_name** - название организации;
- **organization\_address** - адрес организации;
- **comment** - комментарий;
- **created\_at** - дата создания;
- **updated\_at** - дата последнего редактирования;
- **deleted\_at** - дата удаления;
- все системные поля персоны (по английски).
|
[person.**isDataExist**(string $key): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personissetdata-i-personisdataexist) |
[person.**getLeads**(bool $isFindInAllBusinessBots = false): **array**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/persongetleads "person.getLeads()") | Возвращает лиды персоны
|
[person.**getId**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/persongetid "person.getId()") | Возвращает ID персоны
|
[person.**getFullName**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/persongetfullname "person.getFullName()")
| Возвращает полное имя персоны
|
[person.**getFIO**(): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/persongetfullname-i-persongetfio "person.getFullName() и person.getFIO()")
|
[person.**getRoleId**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/persongetroleid "person.getRoleId()") | Возвращает ID роли персоны
|
[person.**getRoleName**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/persongetrolename "person.getRoleName()") | Возвращает название роли персоны
|
[person.**getRoleTitle**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/persongetroletitle "person.getRoleTitle()") | Возвращает заголовок роли персоны
|
[person.**getRoleFormattedTitle**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/persongetroleformattedtitle "person.getRoleFormattedTitle()") | Возвращает форматированное название роли персоны.
|
[person.**getPhone**(): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/persongetphone "person.getPhone()") | Возвращает номер телефона персоны
|
[person.**setPhone**(string|null $phone): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personsetphone "person.setPhone()") | Устанавливает номер телефона персоны
|
[person.**getEmail**(): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/persongetemail "person.getEmail()") | Возвращает почту персоны
|
### Работа с очередями исполнителей
#### Методы ticket
Метод | Описание |
[ticket.**assignToNextQueuePerson**(int $queueMode = 1, int|null $personQueueId = null, string|null $personQueueTable = null, int|null $currentAssignAttempt = null, bool $isIncRejectsCount = true, bool $isMoveToEndIfRejectsExceed = true): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketassigntonextqueueperson "ticket.assignToNextQueuePerson()") | Назначает заявку следующему исполнителю |
[ticket.**moveAssignedPersonToEndOfQueue**(int $queueMode = 1, int|null $personQueueId = null, string|null $personQueueTable = null, bool $isResetRejectsCount = true): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketmoveassignedpersontoendofqueue "ticket.moveAssignedPersonToEndOfQueue()") | Переносит исполнителя в конец очереди |
[ticket.**assignToPersonById**(int|null $personId, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null, int|null $assignAttemptForLog = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketassigntopersonbyid "ticket.assignToPersonById()")
| Назначает исполнителя заявки
|
[ticket.**assignToNextPersonAndMoveToEnd**(): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketassigntonextpersonandmovetoend "ticket.assignToNextPersonAndMoveToEnd()")
| Назначает заявку следующему исполнителю и переносит его в конец очереди
|
[ticket.**getAssignedPersonRejectsCount**(int $personQueueId = null, string|null $personQueueTable = null): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketgetassignedpersonrejectscount "ticket.getAssignedPersonRejectsCount()")
| Возвращает количество отказов от заявок
|
[ticket.**setAssignedPersonRejectsCount**(int $rejectsCount, int|null $personQueueId = null, string|null $personQueueTable = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketsetassignedpersonrejectscount "ticket.setAssignedPersonRejectsCount()")
| Устанавливает количество отказов от заявок
|
[ticket.**incAssignedPersonRejectsCount**(int|null $personQueueId = null, string|null $personQueueTable = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/ticketincassignedpersonrejectscount "ticket.incAssignedPersonRejectsCount()")
| Увеличивает количество отказов от заявок
|
#### Методы person
Метод | Описание |
[person.**addToQueue**(int|null $personQueueId = null, string|null $personQueueTable = null, int|null $ticketTypeId = null, bool $isActive = true, int $rejectsCount = 0): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personaddtoqueue "person.addToQueue()") | Добавляет персону в очередь |
[person.**removeFromQueue**(int|null $personQueueId = null, string|null $personQueueTable = null, int|null $ticketTypeId = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personremovefromqueue "person.removeFromQueue()") | Удаляет персону из очереди |
[person.**moveToEndOfQueue**(int $queueMode = 1, int|null $personQueueId = null, string|null $personQueueTable = null, int|null $ticketTypeId = null, bool $isResetRejectsCount = true): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personmovetoendofqueue "person.moveToEndOfQueue()") | Перемещает персону в конец очереди |
[person.**setIsActiveInQueue**(bool $isActive = true): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personsetisactiveinqueue "person.setIsActiveInQueue()") | Активирует/деактивирует персону в очереди |
#### Методы personQueue
Метод | Описание |
[personQueue.**getId**(): **int**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/personqueuegetid "personQueue.getId()") | Возвращает id очереди персон |
[personQueue.**getCode**(): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/personqueuegetcode "personQueue.getCode()") | Возвращает код очереди персон |
[personQueue.**getIsEnabled**(): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/personqueuegetisenabled "personQueue.getIsEnabled()") | Проверяет активна ли очередь персон |
[personQueue.**getName**(): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/personqueuegetname "personQueue.getName()") | Возвращает наименование очереди персон |
[personQueue.**isSameName**($name): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/personqueueissamename "personQueue.isSameName()") | Проверяет наименование очереди персон на сходство |
[personQueue.**getCreatedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/personqueuegetcreatedatformatted-i-personqueuecreatedatformatted "personQueue.getCreatedAtFormatted() и personQueue.createdAtFormatted()")
| Возвращает форматированную дату создания очереди персон |
[personQueue.**createdAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/personqueuegetcreatedatformatted-i-personqueuecreatedatformatted "personQueue.getCreatedAtFormatted() и personQueue.createdAtFormatted()")
|
[personQueue.**getUpdatedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/personqueuegetupdatedatformatted-i-personqueueupdatedatformatted "personQueue.getUpdatedAtFormatted() и personQueue.updatedAtFormatted()")
| Возвращает форматированную дату обновления очереди персон |
[personQueue.**updatedAtFormatted**(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/personqueuegetupdatedatformatted-i-personqueueupdatedatformatted "personQueue.getUpdatedAtFormatted() и personQueue.updatedAtFormatted()")
|
#### Методы personQueues
Метод | Описание |
[personQueues.**find**($where, bool $isReturnCollection = false): **ScriptPersonQueue\[\]|Collection**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personqueuesfind "personQueues.find()") | Возвращает очередь исполнителей |
[personQueues.**findById**(string|int|null $id): **ScriptPersonQueue|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personqueuesfindbyid "personQueues.findById()")
| Возвращает очередь исполнителей по id |
[personQueues.**findByName**(string $name, bool $isEnabled = null): **ScriptPersonQueue|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/personqueuesfindbyname "personQueues.findByName()")
| Возвращает очередь исполнителей по наименованию |
[personQueues.**findAllByNames**($names, bool $isEnabled = null, string $findNameOperator = 'IN', bool $isReturnCollection = false): **ScriptPersonQueue\[\]|Collection**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/personqueuesfindallbynames "personQueues.findAllByNames()")
| Возвращает очереди исполнителей по наименованию |
[personQueues.**findByCode**(string $code, bool $isEnabled = null, string $findCodeOperator = '='): **ScriptPersonQueue|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personqueuesfindbycode "personQueues.findByCode()")
| Возвращает очередь исполнителей по коду |
[personQueues.**findAllByCodes**($codes, bool $isEnabled = null, string $findCodeOperator = 'IN', bool $isReturnCollection = false): **ScriptPersonQueue\[\]|Collection**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personqueuesfindallbycodes "personQueues.findAllByCodes()")
| Возвращает очереди исполнителей по коду |
[personQueues.**reload**(): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personqueuesreload "personQueues.reload()") | Обновляет очередь исполнителей |
[personQueues.**getCollection**(): **Collection|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/personqueuesgetcollection "personQueues.getCollection()") | Возвращает коллекцию очередей |
### Работа с интеграциями NLP
#### Методы bot
Метод | Описание |
[bot.**getIntegrationIdByCode**(string|null $integrationCode): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetintegrationidbycode "bot.getIntegrationIdByCode()")
| Возвращает id интеграции бота по коду |
[bot.**getEnabledIntegrationIdByCode**(string|null $integrationCode): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetenabledintegrationidbycode "bot.getEnabledIntegrationIdByCode()") | Возвращает id включенной интеграции бота по коду |
[bot.**isEnabledIntegrationById**(int|null $integrationId): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botisenabledintegrationbyid "bot.isEnabledIntegrationById()")
| Проверяет активность интеграции по id |
[bot.**isEnabledIntegrationByCode**(string|null $integrationCode): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botisenabledintegrationbycode "bot.isEnabledIntegrationByCode()")
| Проверяет активность интеграции по коду |
#### Методы lead
Метод | Описание |
[lead.**setActiveNlpIntegrationByCode**(string|null $integrationCode): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadsetactivenlpintegrationbycode "lead.setActiveNlpIntegrationByCode()") | Присваивает интеграцию лиду по коду |
[lead.**setActiveNlpIntegrationById**(int|null $nlpIntegrationId): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadsetactivenlpintegrationbyid "lead.setActiveNlpIntegrationById()") | Присваивает интеграцию лиду по id |
[lead.**hasActiveNlpIntegration**(): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadhasactivenlpintegration "lead.hasActiveNlpIntegration()") | Проверяет активна ли интеграция |
[lead.**getActiveNlpIntegrationId**(int|null $nlpIntegrationId): **int|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetactivenlpintegrationid "lead.getActiveNlpIntegrationId()") | Возвращает интеграцию по id |
[lead.**getActiveNlpIntegrationCode**(string|null $integrationCode): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetactivenlpintegrationcode "lead.getActiveNlpIntegrationCode()") | Возвращает интеграцию по коду |
[lead.**getActiveOrFirstNlpIntegrationId**(int|null $nlpIntegrationId): **int|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetactiveorfirstnlpintegrationid "lead.getActiveOrFirstNlpIntegrationId()") | Возвращает активную или первую интеграцию по id |
[lead.**getActiveOrFirstNlpIntegrationCode**(string|null $integrationCode): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetactiveorfirstnlpintegrationcode "lead.getActiveOrFirstNlpIntegrationCode()") | Возвращает активную или первую интеграцию по коду |
### Работа с интеграциями
#### Методы lead
Метод | Описание |
[lead.**getForwardEventTypeForFB**(): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetforwardeventtypeforfb "lead.getForwardEventTypeForFB()")
| Возвращает тип события для ФБ |
### Работа с кастомными таблицами
#### Методы table
Метод | Описание |
[table.**createItem**(string $tableName, array|object $data): **ScriptCustomTableItem**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/tablecreateitem "table.createItem()") | Создает запись в таблице |
[table.**find**(string $tableName, array|object $columns = \[\], array|object $where = \[\], array|object $orderBy = \[\], int|null $limit = null, int|null $offset = null): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/tablefind "table.find()")
| Ищет запись в таблице |
[table.**count**(string $tableName, array|object $where = \[\]): **int** ](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/tablecount "table.count()")
| Подсчитывает количество записей |
[table.**sum**(string $tableName, string $column, array|object $where = \[\]): **int**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/tablesum "table.sum()") | Подсчитывает сумму значений по полю
|
[table.**max**(string $tableName, string $column, array|object $where = \[\]): **mixed|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/tablemax "table.max()") | Ищет максимальное значение по полю
|
#### Методы item
За объект **item** принимаем запись кастомной таблицы полученную с помощью **table.createItem** или **table.find**.
Метод | Описание |
[item.**update**(array|object $data): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/itemupdate "item.update()") | Обновляет записи в таблице
|
[item.**delete**(): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/itemdelete "item.delete()") | Удаляет записи из таблицы
|
[item.**getDateFormatted**(string $fieldName, string $format = 'Y-m-d H:i:s', string|null $timeZone = null): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/itemgetdateformatted "item.getDateFormatted()") | Возвращает форматированную дату по названию поля
|
[item.**getDateFormattedString**(string|DateTimeInterface $date, string $toFormat = 'Y-m-d H:i:s', string|null $fromFormat = 'Y-m-d H:i:s', string|null $toTimeZone = null, string|null $fromTimeZone = null): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/itemgetdateformattedstring "item.getDateFormattedString()") | Возвращает форматированную дату из произвольной строки
|
[item.**reload**(): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/itemreload "item.reload()")
| Перезагружает данные записи из БД
|
### Работа с блокировками
Метод | Описание |
[bot.**getLockNameForBot**(string $lockName, string $lockPrefix = ''): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetlocknameforbot "bot.getLockNameForBot()") | Генерирует имя блокировки по боту |
[bot.**getLockNameForBusiness**(string $lockName, string $lockPrefix = ''): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetlocknameforbusiness "bot.getLockNameForBusiness()") | Генерирует имя блокировки по бизнесу |
[bot.**waitForBusinessLock**(string $lockName, string $lockPrefix = '', int|null $ttlSec = null, $maxWaitSec = 300): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botwaitforbusinesslock "bot.waitForBusinessLock()") | Захватывает блокировку по бизнесу |
[bot.**waitForBotLock**(string $lockName, string $lockPrefix = '', int|null $ttlSec = null, $maxWaitSec = 300): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botwaitforbusinesslock "bot.waitForBusinessLock()") | Захватывает блокировку по боту |
[bot.**releaseAllCurrentLocks**(): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botreleaseallcurrentlocks "bot.releaseAllCurrentLocks()") | Освобождает все блокировки захваченные в текущем скрипте |
[bot.**releaseCurrentLockForBusiness**(string $lockName, string $lockPrefix = ''): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botreleasecurrentlockforbusiness "bot.releaseCurrentLockForBusiness()") | Освобождает блокировку захваченную текущем скрипте по бизнесу |
[bot.**releaseCurrentLockForBot**(string $lockName, string $lockPrefix = ''): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botreleasecurrentlockforbot "bot.releaseCurrentLockForBot()") | Освобождает блокировку захваченную в текущем скрипте по боту |
[bot.**releaseLockForBusiness**(string $lockName, string $lockPrefix = ''): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botreleaselockforbusiness "bot.releaseLockForBusiness()") | Освобождает блокировку по бизнесу |
[bot.**releaseLockForBot**(string $lockName, string $lockPrefix = ''): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botreleaselockforbot "bot.releaseLockForBot()") | Освобождает блокировку по боту |
[bot.**hasLockForBusiness**(string $lockName, string $lockPrefix = '', $checkValue = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/bothaslockforbusiness "bot.hasLockForBusiness()") | Проверяет существование блокировки по бизнесу |
[bot.**hasLockForBot**(string $lockName, string $lockPrefix = '', $checkValue = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/bothaslockforbot "bot.hasLockForBot()") | Проверяет существование блокировки по боту |
### Работа с контакт-центром
#### Методы bot
Метод | Описание |
[bot.**canAutoForward**(): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botcanautoforward "bot.canAutoForward()") | Узнает доступно ли авто-назначение оператора в данном скрипте
|
#### Методы lead
Метод | Описание |
[lead.**canAutoForward**(): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadcanautoforward "lead.canAutoForward()") | Узнает доступно ли авто-назначение оператора в данном скрипте
|
[lead.**getNextOperators**(string $departmentCode = null, bool $isOnline = true, int|null $limit = 1, bool $useLocks = true): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetnextoperators "lead.getNextOperators()") | Возвращает список следующих операторов
|
[lead.**assignDialogToNextOperator**(string|null $departmentCode = null, bool $isOnline = true, bool $isForwardIfOperatorNotFound = true, bool $useLocks = true): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadassigndialogtonextoperator "lead.assignDialogToNextOperator()") | Назначает диалог на следующего оператора полученного с помощью **getNextOperators**
|
[lead.**assignDialogToOperator**(int|null $operatorId, bool $isForwardIfOperatorNotFound = true, bool $useLocks = true): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadassigndialogtooperator "lead.assignDialogToOperator()") | Назначает диалог на указанного в методе оператора
|
### Работа с API
#### Методы bot
Метод | Описание |
[bot.**scheduleJob**($jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botschedulejob "bot.scheduleJob()") | Планирует любую задачу
|
[bot.**randomStr**(int $length = 16): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botrandomstr "bot.randomStr()") | Генерирует случайную буквенно-цифровую строку
|
[bot.**newGuid**(): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botnewguid "bot.newGuid()") | Генерирует случайный уникальный guid
|
[bot.**newOrderedGuid**(): **string**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botneworderedguid "bot.newOrderedGuid()") | Генерирует случайный уникальный guid упорядоченный по времени
|
#### Методы lead
Метод | Описание |
[lead.**getLastRequest**(): **ScriptRequest|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetlastrequest "lead.getLastRequest()") | Возвращает объект с параметрами последнего реквеста
|
[lead.**getLang**(): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadgetlang "lead.getLang()") | Возвращает язык установленный в бизнесе
|
[lead.**setLang**(string|null $langCode): **string|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadsetlang "lead.setLang()") | Устанавливает язык в бизнесе
|
[lead.**isLangExist**(string $langCode, bool|null $isEnabled = true): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/leadislangexist "lead.isLangExist()") | Проверяет существует ли язык
|
#### Методы request
За объект **request** принимаем объект с параметрами последнего реквеста полученный с помощью **lead**.**getLastRequest**.
Метод | Описание |
[request.json](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/request "request.") | Доступ к json параметрам в виде javascript json-обьекта
|
[request.asJson(): **ScriptRequest|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/request) |
[request.array](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/request) | Доступ к json параметрам в виде javascript json-обьекта
|
[request.asArray(): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/request) |
[request.string](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/request) | Входящие параметры в виде json обьекта |
[request.asString(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/request) |
#### Методы last\_request
За объект **last\_request** принимаем объект с параметрами последнего реквеста полученный с помощью **lead**.**getLastRequest**.
Метод | Описание |
[last\_request.json](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/last-request "last_request.") | Доступ к последнему реквесту в виде javascript json-обьекта
|
[last\_request.asJson(): **ScriptRequest|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/last-request) |
[last\_request.array](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/last-request) | Доступ к последнему реквесту в виде массива |
[last\_request.asArray(): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/last-request) |
[last\_request.string](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/last-request) | Доступ к последнему реквесту в виде json обьекта |
[last\_request.asString(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/last-request) |
#### Методы api
Метод | Описание |
api.**callEndpoint**(
string $externalApiEndpointCode,
string|null $uri = null,
string|null $method = null,
string|null $format = null,
array|object|string|null $body = null,
array|object|string|null $headers = \[\],
array|object|string|null $requestOptions = \[\],
array|object|string|null $httpClientConfig = \[\],
string|null $proxyUrl = null
): **array|string|null** | Вызывает внешнее API из чат-бота
|
[api.**request**(string $method, string $uri, $requestOptions = \[\], $httpClientConfig = \[\], $body = null, $jsonBody = null, $headers = \[\], bool $isForceAddJsonHeaders = false): **ResponseInterface|null|mixed**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/apirequest "api.request()") | Выполняет HTTP запрос, с помощью Guzzle
|
[api.**post**(string $uri, $body = \[\], $requestOptions = \[\], $headers = \[\], $httpClientConfig = \[\]): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/apipost "api.post()") | Выполняет HTTP POST запрос, с помощью Guzzle
|
api.**get**(string $uri, $requestOptions = \[\], $headers = \[\], $httpClientConfig = \[\]): **string|null** | Выполняет HTTP GET запрос, с помощью Guzzle
|
api.**getJson**(string $uri, $jsonBody = \[\], $headers = \[\], $requestOptions = \[\], $httpClientConfig = \[\]): **array|null** | Выполняет HTTP POST запрос с jsonBody, с помощью Guzzle
|
api.**postJson**(string $uri, $jsonBody = \[\], $headers = \[\], $requestOptions = \[\], $httpClientConfig = \[\]): **array|null** | Выполняет HTTP GET запрос с jsonBody, с помощью Guzzle
|
api.**getHttpConfig**(): **array** | Возвращает HTTP Config
|
api.**setHttpConfig**($config): **self** | Устанавливает HTTP Config
|
api.**getRequestOptions**(): **array** | Возвращает параметры HTTP запроса
|
api.**setRequestOptions**($options): **self** | Устанавливает параметры HTTP запроса
|
api.**getHeaders**(): **array** | Возвращает заголовки HTTP запроса
|
api.**setHeaders**($headers): **self** | Устанавливает заголовки HTTP запроса
|
api.**getProxyUrl**(): **string|null** | Возвращает Proxy Url HTTP запроса
|
api.**setProxyUrl**($proxyUrl): **self** | Устанавливает Proxy Url HTTP запроса
|
api.**getLastResponse**(): **mixed|ResponseInterface|null** | Возвращает последний ответ HTTP запроса
|
api.**getLastResponseCode**(): **int** | Возвращает код последнего ответа HTTP запроса
|
api.**getLastResponseContent**(): **string|null** | Возвращает содержимое последнего ответа HTTP запроса
|
api.**getLastJsonResponse**(): **array|null** | Возвращает последний ответ HTTP запроса в формате JSON
|
api.**enableExceptions**(): **self** | Включает исключения для HTTP запросов
|
api.**disableExceptions**(): **self**
| Выключает исключения для HTTP запросов
|
api.**setTimeout**(float $timeout): **self**
| Устанавливает время задержки для HTTP запросов
|
api.**getTimeout**(): **float**
| Возвращает время задержки для HTTP запросов
|
api.**isExceptionThrown**(): **bool**
| Проверяет существует ли исключение
|
api.**isConnectExceptionThrown**(): **bool**
| Проверяет существует ли исключение подключения
|
api.**getLastResponseTime**(): **float**
| Возвращает время последнего ответа HTTP запроса
|
api.**getLastErrorBody**(bool $isAutoConvertToJson = true): **string|array|null**
| Возвращает содержимое ошибки последнего ответа HTTP запроса
|
api.**enableContinueCallEndpointOnJsError**(): **self**
| Включает вызов эндпоинта при ошибке JS
|
api.**disableContinueCallEndpointOnJsError**(): **self**
| Выключает вызов эндпоинта при ошибке JS
|
api.**getIsContinueCallEndpointOnJsError**(): **bool**
| Возвращает режим вызова эндпоинта при ошибке JS
|
### Работа с файлами
#### Методы bot
Метод | Описание |
[bot.**getIncomingMessage**(bool $useOutputFilter = false): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetincomingmessage "bot.getIncomingMessage()")
| Возвращает текст входящего сообщения или текст подписи к вложению |
[bot.**getWebhookJobId**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetwebhookjobid "bot.getWebhookJobId()")
| Возвращает id вебхука зарегистрированного в очереди Метабот |
[bot.**getWebhookJobRecord**(): **BotWebhookQueueRecord|null**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botgetwebhookjobrecord "bot.getWebhookJobRecord()")
| Возвращает запись вебхука зарегистрированного в очереди Метабот |
[bot.**getWebhookJob**(): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetwebhookjob "bot.getWebhookJob()")
| Возвращает информацию о вебхуке |
[bot.**getWebhookPayload**(): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetwebhookpayload "bot.getWebhookPayload()")
| Возвращает payload входящего вебхука в виде массива
|
[bot.**getLastResultPayload**(): **array|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetlastresultpayload "bot.getLastResultPayload()")
| Возвращает payload c данными о последнем ответе мессенджера в ввиде массива |
[bot.**getChannelData**(string|null $key = null): **array|null|mixed**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetchanneldata "bot.getChannelData()")
| Возвращает настройки канала лида |
[bot.**disableBuffer**()](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botdisablebuffer "bot.disableBuffer()")
| Принудительное отключение буффера исходящих сообщений
|
[bot.**enableBuffer**()](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botenablebuffer "bot.enableBuffer()")
| Принудительное включение буффера исходящих сообщений
|
[bot.**flushBuffer**()](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botflushbuffer "bot.flushBuffer()")
| Принудительное освобождение буффера исходящих сообщений
|
[bot.**getAllAttachments**(string|null $filesMimeExcludeFilter = 'image|video'): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetallattachments "bot.getAllAttachments()")
| Возвращает вложения всех видов |
[bot.**getFiles**(string|null $mimeIncludeFilter = null, string|null $mimeExcludeFilter = 'image|video'): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetfiles "bot.getFiles()")
| Возвращает все вложения, которые распознаны как файл |
[bot.**getImages**(string|null $mimeIncludeFilter = 'image'): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetimages "bot.getImages()")
| Возвращает все изображения, а также файлы, которые распознаны как изображение |
[bot.**getVideos**(string|null $mimeIncludeFilter = 'video'): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetvideos "bot.getVideos()")
| Возвращает все видео, а также файлы, которые распознаны как видео |
[bot.**sendPayload**(string|null $endpoint, array|object $payload): **array|string|mixed**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botsendpayload "bot.sendPayload()")
| Отправляет payload в мессенджер |
[bot.**sendText**(string|null|mixed $messageText, array|object|null $apiAdditionalParams = null, bool $isDisableBuffer = true): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botsendtext "bot.sendText()")
| Отправляет текст в мессенджер
|
[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): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botsendmessage "bot.sendMessage()")
| Отправляет сообщение в мессенджер, сообщение может содержать текст, кнопки меню и вложения
|
[bot.**sendButtons**(string|null|mixed $messageText, array|object $buttons, array|object|null $apiAdditionalParams = null, bool $isDisableBuffer = true, bool $isUpdateMessageButtons = false): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botsendbuttons "bot.sendButtons()")
| Отправляет кнопки с сообщением в мессенджер
|
[bot.**getTelegramFileInfoById**(string|null $fileId, bool $isShowOriginalInfo = false): **array|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgettelegramfileinfobyid "bot.getTelegramFileInfoById()")
| Возвращает информацию о файле в Telegram по его id
|
[bot.**sendTelegramAttachmentAndGetFileId**(string|null $messageText, array|object|null $attachment, array|object|null $buttons = null, array|object|null $apiAdditionalParams = null): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botsendtelegramattachmentandgetfileid "bot.sendTelegramAttachmentAndGetFileId()")
| Отправляет файл в телеграм и возвращает его id
|
[bot.**editTelegramInlineKeyboard**(int|string $chatId, int|string $messageId, string|null string $inlineMessageId, array|object|null $inlineKeyboardMarkup): **array|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botedittelegraminlinekeyboard "bot.editTelegramInlineKeyboard()")
| Редактирует кнопки меню уже отправленного в Telegram сообщения
|
[bot.**removeTelegramInlineKeyboard**(int|string $chatId, int|string $messageId, string|null $inlineMessageId = null): **array|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botremovetelegraminlinekeyboard "bot.removeTelegramInlineKeyboard()")
|
[bot.**getTelegramLastMessageId**(): **int|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgettelegramlastmessageid "bot.getTelegramLastMessageId()")
| Возвращает ID последнего сообщения, отправленного в Telegram
|
[bot.**setCdnConfig**(array|object|null $cdnConfig = null): **bool**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botsetcdnconfig "bot.setCdnConfig()")
| Устанавливает конфиг для доступа к CDN
|
[bot.**getCdnConfig**(): **array|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetcdnconfig "bot.getCdnConfig()")
| Возвращает текущий конфиг CDN
|
[bot.**getFileInfoByUrl**(string $fileUrl): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botgetfileinfobyurl "bot.getFileInfoByUrl()")
| Возвращает информацию о файле по URL
|
[bot.**downloadFileFromUrl**(string $fileUrl): **string|array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botdownloadfilefromurl "bot.downloadFileFromUrl()")
| Скачивает файл с URL и загружает в хранилище файлов Метабот для вашего бизнеса
|
[bot.**downloadTmpFileFromUrl**(string $fileUrl): **string|array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botdownloadtmpfilefromurl "bot.downloadTmpFileFromUrl()")
| Скачивает файл с URL и загружает во временное хранилище файлов Метабот для вашего бизнеса
|
[bot.**removeFile**(string $fileUrl): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botremovefile "bot.removeFile()")
| Удаляет файл по URL из хранилища файлов Метабот для вашего бизнеса
|
[bot.**removeTmpFile**(string $fileUrl): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botremovetmpfile "bot.removeTmpFile()")
| Удаляет файл по URL из временного хранилища файлов Метабот для вашего бизнеса
|
[bot.**uploadFileToCdnAndGetNewUrl**(string $fileUrl, array|object|null $cdnConfig = null): **array**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botuploadfiletocdnandgetnewurl "bot.uploadFileToCdnAndGetNewUrl()")
| Заливает файл на CDN и возвращает новую ссылку
|
[bot.**removeFileFromCdn**(string $fileUrl, $cdnConfig = null)](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/botremovefilefromcdn "bot.removeFileFromCdn()")
| Удаляет файл из CDN
|
#### Методы lead
Метод | Описание |
[lead.**getMessenger**(): **int**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetmessenger "lead.getMessenger()")
| Возвращает обозначение текущего мессенджера канала |
[lead.**getMessengerCode**(): **string**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetmessengercode "lead.getMessengerCode()")
| Возвращает буквенное обозначение текущего мессенджера канала |
[lead.**getIdentification**(): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetidentification "lead.getIdentification()")
| Возвращает идентификатор лида во внешней системе |
[lead.**getIdentificationEntity**(): **string|null**](https://docs.metabot24.ru/books/7-spravocnik-po-funkciyam-js/page/leadgetidentificationentity "lead.getIdentificationEntity()")
| Возвращает дополнительный идентификатор лида во внешней системе |
### Работа с GPT
#### Методы bot
Метод | Описание |
[bot.**run**(array|object|null $jobParams = \[\]): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botrun "bot.run()") | Запускает скрипт в рамках текущего потока бота |
bot.**stop**(): **bool** | Прерывает текущий скрипт |
bot.**throw**(string $message = '', int $code = 0): **bool** | Создает искусственное падение скрипта |
bot.**disableRepeatMessageText**(): **bool** | Отключает вывод сообщения для команды конструктора "Повтор" для текущего вебхука/задания |
bot.**enableRepeatMessageText**(): **bool** | Включает вывод сообщения для команды конструктора "Повтор" для текущего вебхука/задания |
bot.**isEnabledRepeatMessageText**(): **bool** | Проверяет включен или нет вывод сообщения для команды конструктора "Повтор" для текущего вебхука/задания |
bot.**hideRepeatMessageButtons**(): **bool** | Отключает вывод меню для команды конструктора "Повтор" для текущего вебхука/задания |
bot.**showRepeatMessageButtons**(): **bool** | Включает вывод меню для команды конструктора "Повтор" для текущего вебхука/задания |
bot.**isShowRepeatMessageButtons**(): **bool** | Проверяет включен или нет вывод меню для команды конструктора "Повтор" для текущего вебхука/задания |
bot.**getConversationQuestion**(): **OverridenQuestion|null** | Возвращает текущее состояние беседы |
bot.**getCurrentScriptId**(): **int|null** | Возвращает ID текущего скрипта |
bot.**getCurrentScriptCode**(): **string|null** | Возвращает код текущего скрипта |
bot.**getCurrentCommandId**(): **int|null** | Возвращает код текущей команды |
bot.**getConversationButtons**(): **array** | Возвращает текущие кнопки |
bot.**getMenuItemsForScript**(?string $scriptCode): **array** | Возвращает все пункты меню скрипта |
bot.**getMenuItemsForCurrentScript**(): **array** | Возвращает все пункты меню текущего скрипта |
bot.**getButtonsForScript**(?string $scriptCode, ?int $scriptId = null, bool $withRunScriptId = true): **array** | Возвращает все кнопки скрипта |
bot.**getButtonsForCurrentScript**(bool $withRunScriptId = true): **array** | Возвращает все кнопки текущего скрипта |
bot.**findButtonByIncomingMessage**(array|object $buttons, ?string $overrideIncomingMessage = null, bool $isLogFoundButton = true): **array|null**
| Находит кнопку которую "нажимает пользователь" по входящему сообщению |
bot.**getScriptIdFromButtonsByIncomingMessage**(array|object $buttons, ?string $overrideIncomingMessage = null, bool $isLogFoundButton = true): **int|null** | Возвращает id скрипта по кнопке которую "нажимает пользователь" |
bot.**getScriptCodeFromButtonsByIncomingMessage**(array|object $buttons, ?string $overrideIncomingMessage = null, bool $isLogFoundButton = true): **string|null**
| Возвращает код скрипта по кнопке которую "нажимает пользователь" |
#### Методы api
Метод | Описание |
api.**getLastErrorBody**(bool $isAutoConvertToJson = true): **string|array|null** | Возвращает содержимое API ответа, если внешнее API вернуло код ошибки |
api.**enableContinueCallEndpointOnJsError**(): **bool** | Игнорирует ошибку в JS Body |
api.**disableContinueCallEndpointOnJsError**(): **bool** | Отключает игнорирование ошибки в JS Body |
api.**getIsContinueCallEndpointOnJsError**(): **bool** | Проверяет вкл. или выключено игнорирование ошибки в JS Body перед запуском внешнего api |
api.**callApiOnlyByOkFlag**(bool $value = true): **bool** | Выполняет обращение по api, только если JS валиден |
api.**onlyForOk**(bool $value = true): **bool** |
api.**isCallApiOnlyByOkFlag**(): **bool** | Проверяет включен или нет флаг isCallApiOnlyByOkFlag |
api.**isOnlyForOk**(): **bool** |
api.**ok**(bool $value = true): **bool** | Указывает что JS валиден, для того чтобы выполнился запуск внешнего api |
api.**isOk**(): **bool** | Проверяет валиден ли JS |
### Работа с отладкой
Метод | Описание |
[bot.**sysLogInfo**($data, bool $isSendMessageToLead = false): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botsysloginfo "bot.sysLogInfo()") | Добавляет в лог системы информацию |
[bot.**sysLogError**($data, bool $isSendMessageToLead = false): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botsyslogerror "bot.sysLogError()") | Добавляет в лог системы информацию об ошибке |
[bot.**sysLogInfoToAdmin**($data): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botsysloginfotoadmin "bot.sysLogInfoToAdmin()") | Добавляет в лог системы информацию для админа |
[bot.**sysLogErrorToAdmin**($data): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botsyslogerrortoadmin "bot.sysLogErrorToAdmin()") | Добавляет в лог системы информацию об ошибке для админа |
[bot.**debug**($data, bool $isStopBot = false): **bool**](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/botdebug "bot.debug()") | Выводит информацию в мессенджер |
# Подробное описание сложных методов
Некоторые методы обладают сложной структурой и требуют более детального объяснения. В этом разделе вы найдете отдельные страницы, посвященные подробному описанию параметров и особенностей работы таких методов.
# Операторы условий в методах
В условиях можно использовать различные операторы:
- **Сравнения**: =, <, >, <=, >=, <>, !=
- **Строковые**: like, not like
- **Множества**: IN, NOT IN
Оператор | Описание | Тип переменной | Пример |
= | Равно | string, int | \['id', '=', 100\] |
< | Меньше | int, float | \['price', '<', 1000\] |
> | Больше | int, float | \['age', '>', 18\] |
<= | Меньше или равно | int, float | \['quantity', '<=', 50\] |
>= | Больше или равно | int, float | \['rating', '>=', 4.5\] |
<> или != | Не равно | string, int | \['status', '<>', 'closed'\] |
like | Соответствует шаблону | string | \['name', 'like', '%John%'\] |
not like | Не соответствует шаблону | string | \['email', 'not like', '%@spam.com'\] |
ilike | Соответствует шаблону (без учета регистра) | string | \['title', 'ilike', '%book%'\] |
IN | Содержится в списке | array | \['id', 'IN', \[1, 2, 3\]\] |
NOT IN | Не содержится в списке | array | \['status', 'NOT IN', \['closed', 'deleted'\]\] |
is | Равно (для null) | null | \['manager\_id', 'is', null\] |
is not | Не равно (для null) | null | \['end\_date', 'is not', null\] |
regexp | Соответствует регулярному выражению | string | \['phone', 'regexp', '^\\\\+7'\] |
not regexp | Не соответствует регулярному выражению | string | \['username', 'not regexp', '\[0-9\]'\] |
**Примечание!** Некоторые операторы могут быть недоступны или работать иначе.
Пример использования операторов:
```JavaScript
let where = [
['id', '>', 1000],
['name', 'like', '%Иван%'],
['channels.code', 'IN', ['telegram', 'whatsapp']]
]
```
# where для bot.findLeads()
### Базовая структура
Каждое условие внутри массива **where** имеет следующую структуру:
- **Простое условие**: \['поле', 'значение'\] — проверяет, равно ли поле заданному значению;
- **Условие с оператором**: \['поле', 'оператор', 'значение'\] — проверяет поле с использованием указанного оператора.
```JavaScript
let where = [
['поле', 'значение'],
['поле', 'оператор', 'значение']
]
bot.findLeads([], where, [])
```
### Доступные категории полей
- Поля лидов;
- Каналы (channels);
- Статусы лидов (leadstatuses);
- Атрибуты лидов (lead\_attributes).
#### Поля лидов
Это основные поля, доступные для каждого лида.
Поле | Описание |
id | ID лида |
name | Имя лида |
identification | ID в мессенджере (например, Telegram ID) |
person\_id | ID персоны |
manager\_id | ID менеджера |
bot\_id | ID бота |
channel\_id | ID канала |
lang\_code | Код языка |
status\_id | ID статуса |
is\_mute | Включен ли бот для лида (0 или 1) |
is\_forwarded | Передан ли оператору (0 или 1) |
last\_activity | Дата последней активности |
last\_response | Timestamp последнего ответа |
messenger | ID мессенджера |
bot\_debug\_level | Уровень отладки бота (0 - обычный, 11 - админ) |
created\_at | Дата создания |
updated\_at | Дата обновления |
dialog\_id | ID диалога |
unread\_count | Количество непрочитанных сообщений |
forwarded\_at | Дата передачи оператору |
Пример использования:
```JavaScript
where = [
['id', 145492],
['name', 'like', '%Иван%'],
['created_at', '>=', '2023-01-01']
]
```
#### Каналы (channels)
Для поиска по каналам используются поля **channels.code** и **channels.id**.
Код | ID | Описание |
unknown | 0 | Неизвестный канал |
avito | 1 | Avito |
facebook | 2 | Facebook |
instagram | 3 | Instagram |
livechatWidget | 4 | LiveChat Widget |
skype | 5 | Skype |
telegram | 6 | Telegram |
twitter | 7 | Twitter |
viber | 8 | Viber |
vk | 9 | VKontakte |
whatsapp | 10 | WhatsApp |
youla | 11 | Youla |
wechat | 12 | WeChat |
metabotWidget | 13 | MetaBot Widget |
webim | 14 | Webim |
jivoWidget | 15 | Jivo Widget |
odnoklassniki | 16 | Odnoklassniki |
apple\_business\_chat | 17 | Apple Business Chat |
Канал текущего лида можно получить с помощью метода **lead.getMessengerCode()**.
Пример использования:
```JavaScript
// Ищет только telegram
let where = [
['channels.code', 'telegram']
]
// Ищет telegram и whatsapp
let where = [
['channels.id', 'IN', [6, 10]]
]
```
#### Статусы лидов (leadstatuses)
Для поиска по статусам используются поля **leadstatuses.name** и **leadstatuses.id**.
Пример использования:
```JavaScript
let where = [
['leadstatuses.name', 'Новый'],
['leadstatuses.id', 1]
]
```
Используйте вместо **leadstatuses.id** — **status\_id**, а вместо **channels.id** — **channel\_id**. Если вы выполняете большие операции это сократит время вычисления.
#### Атрибуты лидов (lead\_attributes)
Для поиска по атрибутам используются следующие поля:
Поле | Описание |
lead\_attributes.attribute\_type | Тип атрибута (tag, variable, system, json, context) |
lead\_attributes.attribute\_key | Ключ атрибута |
lead\_attributes.attribute\_value | Значение атрибута. Если type = tag, то можно не использовать |
Пример использования:
```JavaScript
let where = [
['lead_attributes.attribute_type', 'variable'],
['lead_attributes.attribute_key', 'is_pay'],
['lead_attributes.attribute_value', '1']
]
```
### Полный пример использования
```JavaScript
let where = [
['name', 'like', '%Иван%'],
['channels.code', 'telegram'],
['leadstatuses.name', 'Новый'],
['lead_attributes.attribute_type', 'tag'],
['lead_attributes.attribute_key', 'важный_клиент']
]
let leads = bot.findLeads([], where, [])
debug(leads)
```
# orderBy для bot.findLeads()
### Базовая структура:
Параметр **orderBy** используется для сортировки результатов поиска лидов по заданным полям. Он представляет собой массив условий, где каждое условие задаёт поле для сортировки и порядок сортировки (по возрастанию или по убыванию).
Каждое условие внутри массива **orderBy** имеет следующую структуру:
```JavaScript
let orderBy = [
['поле', 'порядок']
]
bot.findLeads([], [], orderBy)
```
- **Поле** — название поля, по которому будет производиться сортировка (например, created\_at, updated\_at, id);
- **Порядок** — определяет, как будет сортироваться поле. Возможны два значения:
- **ASC** — по возрастанию;
- **DESC** — по убыванию.
Доступные категории полей:
- [Поля лидов;](https://docs.metabot24.ru/link/744#bkmrk-1.-%D0%9F%D0%BE%D0%BB%D1%8F-%D0%BB%D0%B8%D0%B4%D0%BE%D0%B2)
- [Статусы лидов (leadstatuses).](https://docs.metabot24.ru/link/744#bkmrk-3.-%D0%A1%D1%82%D0%B0%D1%82%D1%83%D1%81%D1%8B-%D0%BB%D0%B8%D0%B4%D0%BE%D0%B2-%28le)
### Примеры использования
#### Сортировка по одному полю
```JavaScript
let orderBy = [
['created_at', 'ASC']
]
let leads = bot.findLeads([], [], orderBy)
```
Этот пример сортирует лидов по дате создания в порядке возрастания (от самого раннего к самому позднему).
#### Сортировка по нескольким полям
```JavaScript
let orderBy = [
['updated_at', 'DESC'],
['id', 'ASC']
]
let leads = bot.findLeads([], [], orderBy)
```
Этот пример сначала сортирует лидов по дате обновления в порядке убывания (от самого последнего к самому раннему), а затем — по **id** в порядке возрастания.
### Пример с where и orderBy
```JavaScript
let where = [
['name', 'like', '%Иван%'],
['channels.code', 'telegram']
]
let orderBy = [
['created_at', 'DESC']
]
let leads = bot.findLeads([], where, orderBy)
```
# Методы bot
# bot.getData()
### Получить значение данных бота
```JavaScript
bot.getData(string $key)
```
##### Описание:
Возвращает значение данных бота по ключу.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Ключ данных бота |
В качестве ключа можно указать:
- leadsCount - количество лидов бота.
##### Возвращает:
**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
|
Возможные параметры в jobParams:
- **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.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
|
Возможные параметры в jobParams:
- **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
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
|
Возможные параметры в jobParams:
- **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
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
|
Возможные параметры в jobParams:
- **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
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
|
Возможные параметры в jobParams:
- **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
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
|
Возможные параметры в jobParams:
- **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
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
|
Возможные параметры в jobParams:
- **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
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
|
Возможные параметры в jobParams:
- **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.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
|
Возможные параметры в jobParams:
- **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.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
|
Возможные параметры в jobParams:
- **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.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, 229715);
```
# 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
|
Возможные параметры в jobParams:
- **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
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
|
Возможные параметры в jobParams:
- **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
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
|
Возможные параметры в jobParams:
- **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
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
|
Возможные параметры в jobParams:
- **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
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** — заявка;
- **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 в мессенджер. Работают только для Telegram |
isDisableBuffer | bool | Принудительное отключение буффера исходящих сообщений |
isUpdateMessageButtons | bool | true, для обновления последнего отправленного сообщения в логе,
чтобы не писать в лог повторы сообщений от GPT при апдейте |
#### Возвращает:
**bool** - подтверждение успешной отправки сообщения.
#### Пример для Telegram:
##### Кнопки:
Пример Array of Array of Button без параметра line\_num:
```JavaScript
let inlineKeyboard = [[{
"text": "🌳 Программа курса", //Заголовок кнопки
"callback_data": "btn_static_program", //Данные которые отправляются в Telegram и прилетают во входящем вебхуке при нажатии кнопки
"text_button_label": "1" //Доп. заголовок, который клеится к тексту кнопки при выключеном inline режиме
}],
[{
"text": "Открыть главное меню",
"callback_data": "btn_static_menu",
"text_button_label": "2"
}]];
```
Пример Array of Array of Button с параметром line\_num:
```JavaScript
let inlineKeyboard = [{
"text": "🌳 Программа курса",
"callback_data": "btn_static_program",
"text_button_label": "1",
"line_num": 0 //Номер строки для группировки кнопок
},
{
"text": "Открыть главное меню",
"callback_data": "btn_static_menu",
"text_button_label": "2",
"line_num": 1
}];
```
Если в значении параметра содержится строка \_static\_ то платформа Метабот не будет автоматически удалять inline кнопки после принятия входящего вебхука.
##### Вложения:
```JavaScript
let attachments = [{
"type": "image",
"url": "https://image.png"
},
{
"type": "file",
"url": "https://file.pdf"
}]
```
Типы вложений: **'image' 'video' 'audio' 'file'**.
При отправке файлов (документов, не медиа) в Telegram по URL, нужно понимать, что только 'gif', 'zip', 'pdf' для документов отправляются по URL, для других расширений файл скачивается на сервер платформы а затем его содержимое отправляется в Telegram.
##### Дополнительные параметры:
```JavaScript
let apiAdditionalParams = {
"endpoint": "deleteMessage",
"message_id": bot.getTelegramLastMessageId(),
"parse_mode": 'HTML',
"item": "параметр"
}
```
##### Общий пример:
```JavaScript
//Сообщение отправляемое методом--------------------------------
let messageText = "Текст сообщения";
//--------------------------------------------------------------
//Кнопки отправляемые методом--------------------------------
let msg = bot.getIncomingMessage().toLowerCase();
if (["btn_static_program", "1"].includes(msg)) {
return {
break: true,
run_script_by_code: 'courseProgram', //Код активируемого по кнопке скрипта
};
} else if (["btn_static_menu", "2"].includes(msg)) {
return {
break: true,
run_script_by_code: 'Menu',
};
}
let inlineKeyboard = [[{
"text": "🌳 Программа курса",
"callback_data": "btn_static_program",
"text_button_label": "1"
}],
[{
"text": "Открыть главное меню",
"callback_data": "btn_static_menu",
"text_button_label": "2"
}]];
//--------------------------------------------------------------
bot.sendMessage(
messageText,
inlineKeyboard,
[{
"type": "image",
"url": "https://s3.objstor.cloud4u.com/unti-prod-people/file/project/ob87fkfvxa.png"
}],
{
"parse_mode": 'HTML'
}
);
```
Дополнительно доступен предопределенный параметр «endpoint» – для замены параметра конечной точки в URL, например чтобы направить сообщение Телеграм не по классическому пути sendMessage а «по пути» editMessageMedia для редактирования сообщения, также можно подменить «endpoint», чтобы удалить сообщение, но для данных действий необходимо запоминать и передавать дополнительно как минимум параметр message\_id.
```JavaScript
// Функции для работы с id последнего сообщения
let getLastTelegramMessageId = function() {
return parseInt(lead.getAttr("last_telegram_message_id"))
}
let hasLastTelegramMessageId = function() {
let messageId = getLastTelegramMessageId()
return (!isNaN(messageId) && messageId > 0)
}
let saveLastTelegramMessageId = function() {
lead.setAttr("last_telegram_message_id", bot.getTelegramLastMessageId())
}
// Задание apiAdditionalParams
if (hasLastTelegramMessageId()) {
if (endpoint) {
let apiAdditionalParams = {
"endpoint": "editMessageText", //"deleteMessage"
"message_id": getLastTelegramMessageId(),
"parse_mode": 'HTML'
}
}
} else {
let apiAdditionalParams = { "parse_mode": 'HTML' }
saveLastTelegramMessageId();
}
```
#### Пример для остальных каналов:
Для всех каналов кроме Telegram не работает параметр **apiAdditionalParams**.
Также группировка кнопок меню по строкам с помощью **line\_num** работает только в Telegram. Даже если указать номера строк, кнопки будут отправлены по порядку их определения в массиве.
```JavaScript
//Сообщение отправляемое методом--------------------------------
let messageText = "Текст сообщения";
//--------------------------------------------------------------
//Кнопки отправляемые методом--------------------------------
let msg = bot.getIncomingMessage().toLowerCase();
if (["btn_static_program", "1"].includes(msg)) {
return {
break: true,
run_script_by_code: 'courseProgram', //Код активируемого по кнопке скрипта
};
} else if (["btn_static_menu", "2"].includes(msg)) {
return {
break: true,
run_script_by_code: 'Menu',
};
}
let inlineKeyboard = [[{
"text": "🌳 Программа курса",
"callback_data": "btn_static_program",
"text_button_label": "1"
}],
[{
"text": "Открыть главное меню",
"callback_data": "btn_static_menu",
"text_button_label": "2"
}]];
//--------------------------------------------------------------
bot.sendMessage(
messageText,
inlineKeyboard,
[{
"type": "image",
"url": "https://s3.objstor.cloud4u.com/unti-prod-people/file/project/ob87fkfvxa.png"
}]
);
```
Отправка файлов доступна для следующих каналов: **Telegram**, **Metabot Wiget**. Для остальных параметр **attachments** следует убрать из метода.
# 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** - данные файла.
# bot.randomStr()
### Получить случайную буквенно-цифровую строку
```JavaScript
bot.randomStr(int $length = 16)
```
##### Описание:
Генерирует случайную буквенно-цифровую строку.
При вызове внешнего API эндпоинта через асинхронную команду, можно генерировать guid или случайную строку, сохранять и передавать во внешнюю систему, при приеме ответа на асинхронный запрос можно валидировать пришедший код.
Таким образом можно идентифицировать вызовы между двумя системами, или гарантировать то что ответ из внешней системы пришел именно на данный запрос а не на предыдущий.
##### Атрибуты:
Имя | Тип | Описание |
length | int | Длина строки, по умолчанию 16 |
##### Возвращает:
**string** - строка.
# bot.newGuid()
### Получить случайный уникальный guid
```JavaScript
bot.newGuid()
```
##### Описание:
Генерирует случайный уникальный guid (UUID версии 4).
При вызове внешнего API эндпоинта через асинхронную команду, можно генерировать guid или случайную строку, сохранять и передавать во внешнюю систему, при приеме ответа на асинхронный запрос можно валидировать пришедший код.
Таким образом можно идентифицировать вызовы между двумя системами, или гарантировать то что ответ из внешней системы пришел именно на данный запрос а не на предыдущий.
##### Возвращает:
**string** - случайный уникальный guid.
# bot.newOrderedGuid()
### Получить случайный уникальный guid упорядоченный по времени
```JavaScript
bot.newOrderedGuid()
```
##### Описание:
Генерирует случайный уникальный guid (UUID версии 4) упорядоченный по времени.
При вызове внешнего API эндпоинта через асинхронную команду, можно генерировать guid или случайную строку, сохранять и передавать во внешнюю систему, при приеме ответа на асинхронный запрос можно валидировать пришедший код.
Таким образом можно идентифицировать вызовы между двумя системами, или гарантировать то что ответ из внешней системы пришел именно на данный запрос а не на предыдущий.
##### Возвращает:
**string** - случайный уникальный guid.
# bot.sysLogInfo()
### Вывести информацию в лог
```JavaScript
bot.sysLogInfo($data, bool $isSendMessageToLead = false)
```
##### Описание:
Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит обычный лид, но только если у него включена отладка уровня только V8 (editor).
##### Атрибуты:
Имя | Тип | Описание |
data | mixed | Информация |
isSendMessageToLead | bool | Отправлять или нет сообщение в мессенджер |
##### Возвращает:
**bool** - успешное срабатывание метода.
# bot.sysLogError()
### Вывести информацию об ошибке в лог
```JavaScript
bot.sysLogError($data, bool $isSendMessageToLead = false)
```
##### Описание:
Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит обычный лид, но только если у него включена отладка уровня только V8 (editor).
##### Атрибуты:
Имя | Тип | Описание |
data | mixed | Информация об ошибке |
isSendMessageToLead | bool | Отправлять или нет сообщение в мессенджер |
##### Возвращает:
**bool** - успешное срабатывание метода.
# bot.sysLogInfoToAdmin()
### Вывести информацию в лог для админа
```JavaScript
bot.sysLogInfoToAdmin($data)
```
##### Описание:
Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит только лид-админ, т.е. если у него включен уровень отладки V8 и Exceptions (admin)
##### Атрибуты:
Имя | Тип | Описание |
data | mixed | Информация |
##### Возвращает:
**bool** - успешное срабатывание метода.
# bot.sysLogErrorToAdmin()
### Вывести информацию об ошибке в лог для админа
```JavaScript
bot.sysLogErrorToAdmin($data)
```
##### Описание:
Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит только лид-админ, т.е. если у него включен уровень отладки V8 и Exceptions (admin).
##### Атрибуты:
Имя | Тип | Описание |
data | mixed | Информация об ошибке |
##### Возвращает:
**bool** - успешное срабатывание метода.
# bot.debug()
### Вывести информацию в мессенджер
```JavaScript
bot.debug($data, bool $isStopBot = false)
```
##### Описание:
Добавляет в сообщения мессенджера информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Функция идентична функции из глобального пространства имен debug(),
по умолчанию не останавливает выполнение скрипта.
##### Атрибуты:
Имя | Тип | Описание |
data | mixed | Информация |
isStopBot | bool | Прерывать или нет выполнение скрипта |
##### Возвращает:
**bool** - успешное срабатывание метода.
# bot.getGeoLocation()
### Геолокация лида
```JavaScript
bot.getGeoLocation()
```
##### Описание:
Для Telegram вернет массив {latitude: n, longitute: m}, если в вебхуке пришла локация, иначе null. Для мессенджера отличного от Telegram вернет null.
##### Возвращает:
**array** - массив {latitude: n, longitute: m}
или
**null** - если локация не найдена.
# bot.getAllData()
### Получить все данные текущего бота
```JavaScript
bot.getAllData()
```
##### Описание:
Возвращает все данные текущего бота.
##### Возвращает:
**array** - значение данных бота в формате массива:
- leadsCount - количество лидов бота.
##### Пример:
```JavaScript
let data = bot.getAllData();
```
# bot.setData()
### Установить значение данных бота по ключу
```JavaScript
bot.setData(string $key, $value)
```
##### Описание:
Устанавливает значение данных текущего бота по ключу.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Ключ данных бота |
value | mixed | Значение данных бота |
В качестве ключа можно указать:
- leadsCount - количество лидов бота.
##### Возвращает:
**self** - значение данных бота в формате, в котором они находятся в сущности.
##### Пример:
```JavaScript
let data = bot.setData('leadsCount', 4);
```
# bot.scheduleScriptByCode()
### Планирование скрипта по коду
```JavaScript
bot.scheduleScriptByCode(string $scriptCode, int|null $leadId, int|null $ticketId = null, $jobParams = [])
```
##### Описание:
Планирует вызов скрипта по коду.
##### Атрибуты:
Имя | Тип | Описание |
scriptCode | string | Код скрипта, который будет запущен |
leadId | int | ID лида, для которого будет запущен скрипт |
ticketId | int | ID заявки, для которой будет запущен скрипт |
jobParams | json | Передача в планируемую задачу входящих json параметров. Указывать через script\_request\_params
|
Возможные параметры в jobParams:
- **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.scheduleScriptByCode('trigger', 6473, null, {
"script_request_params": {
"name": "Alex"
}
});
```
# bot.getScriptCodeById()
### Получить ID скрипта по коду
```JavaScript
bot.getScriptCodeById(int|null $scriptId)
```
##### Описание:
Возвращает id скрипта по его дополнительному идентификатору.
##### Атрибуты:
Имя | Тип | Описание |
scriptId | int | Id скрипта |
##### Возвращает:
**int** - id скрипта в формате числа
или
**null** - если таких данных не существует.
##### Пример:
```JavaScript
let ScriptId = bot.getScriptCodeById(23121);
```
# bot.getIntAttr()
### Получить значение переменной бота в int формате
```JavaScript
bot.getIntAttr(string $key, ?int|null $default = 0)
```
### Описание:
Возвращает значение int переменной бота.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
default | int |
|
##### Возвращает:
**int** - объект int
или
**null** - если таких данных не существует.
##### Пример:
Получение значения глобальной переменной бота bot\_attribute:
```JavaScript
let bot_attribute_value = bot.getIntAttr('bot_attribute');
```
# bot.getFloatAttr()
### Получить значение переменной бота в формате float
```JavaScript
bot.getFloatAttr(string $key, float|null $default = 0.0)
```
### Описание:
Возвращает значение float переменной бота.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
default | float |
|
##### Возвращает:
**float** - объект формата float
или
**null** - если таких данных не существует.
##### Пример:
Получение значения глобальной переменной бота bot\_attribute:
```JavaScript
let bot_attribute_value = bot.getFloatAttr('bot_attribute');
```
# bot.getBoolAttr()
### Получить значение bool переменной бота
```JavaScript
bot.getBoolAttr(string $key, bool|null $default = false)
```
### Описание:
Возвращает значение bool переменной бота.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
default | bool | Если переменная пуста, то вернуть данное значение |
##### Возвращает:
**bool** - значение bool переменной
или
**null** - если такой переменной нет.
##### Пример:
```JavaScript
let bot_attribute_value = bot.getBoolAttr('bot_attribute');
```
# bot.getAllJsonAttrs()
### Получить значение всех JSON переменных бота
```JavaScript
bot.getAllJsonAttrs()
```
#### Описание:
Возвращает значение всех JSON переменных бота.
##### Возвращает:
**array** - массив JSON переменных бота.
##### Пример:
```JavaScript
let bot_attribute_value = bot.getAllJsonAttrs();
```
# bot.setJsonAttr()
### Установить значение JSON переменной бота
```JavaScript
bot.setJsonAttr(string $key, $value)
```
#### Описание:
Устанавливает значение JSON переменной бота.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
value | mixed | JSON значение переменной |
##### Возвращает:
**self** - объект того же типа и значения, что задан в методе.
##### Пример:
```JavaScript
let bot_attribute_value = bot.setJsonAttr('bot_attribute', {
"id": 2415,
"name": "Имя"
});
```
# bot.getJsonAttr()
### Получить значение JSON переменной бота
```JavaScript
bot.getJsonAttr(string $key)
```
#### Описание:
Возвращает значение JSON переменной бота.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
##### Возвращает:
**mixed** - объект того же типа и значения, что у запрашиваемой переменной.
##### Пример:
```JavaScript
let bot_attribute_value = bot.getJsonAttr('bot_attribute');
```
# bot.issetJsonAttr() и bot.isJsonAttrKeyExist()
### Проверить наличие JSON переменной бота
```JavaScript
bot.issetJsonAttr(string $key)
и
bot.isJsonAttrKeyExist(string $key)
```
#### Описание:
Проверяет наличие JSON переменной бота.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
##### Возвращает:
**bool** - подтверждение существования переменной.
##### Пример:
```JavaScript
let bot_attribute_value = bot.issetJsonAttr('bot_attribute');
или
let bot_attribute_value = bot.isJsonAttrKeyExist('bot_attribute');
```
# bot.scheduleTriggerByCode()
### Планирование триггера по коду
```JavaScript
bot.scheduleTriggerByCode(string $triggerCode, int|null $leadId, int|null $ticketId = null, $jobParams = [])
```
##### Описание:
Запускает триггер по коду в соответствии с указанными параметрами.
##### Атрибуты:
Имя | Тип | Описание |
triggerCode | string | Код триггера, который будет запущен |
leadId | int | ID лида, для которого будет запущен триггер |
ticketId | int | ID заявки, для которой будет запущен триггер |
jobParams | json | Передача в планируемую задачу входящих json параметров. Можно указать script\_request\_params
|
Возможные параметры в jobParams:
- **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.scheduleTriggerByCode("trigger_code", 1426, null, {
"is_periodic": true,
"repeat_interval_sec": 10,
"script_request_params": {
"name": "Alex"
}
});
```
# bot.clearTriggerJobsByScriptId()
### Удалить джобы триггера по id скрипта
```JavaScript
bot.clearTriggerJobsByScriptId(int|null $scriptId, int|null $leadId = null)
```
##### Описание:
Очищает джобы триггера по id скрипта.
##### Атрибуты:
Имя | Тип | Описание |
leadId | int | ID лида, триггеры которого будут удалены |
scriptId | int | ID скрипта, триггеры которого будут удалены |
##### Возвращает:
**bool** - подтверждение удаления триггеров.
##### Пример:
```JavaScript
bot.clearTriggerJobsByScriptId(236178, 36462);
```
# bot.clearTriggerJobsByScriptName()
### Удалить триггеры для лида
```JavaScript
bot.clearTriggerJobsByScriptName(string|null $scriptName, int|null $leadId = null)
```
##### Описание:
Удаляет все триггеры из очереди для лида.
##### Атрибуты:
Имя | Тип | Описание |
leadId | int | ID лида, триггеры которого будут удалены |
scriptName | string | Наименование скрипта, триггеры которого будут удалены |
##### Возвращает:
**bool** - подтверждение удаления триггеров.
##### Пример:
```JavaScript
bot.clearTriggerJobsByScriptName("skript_name", 236178);
```
# bot.clearTriggerJobsByCode()
### Удалить джобы по коду триггера
```JavaScript
bot.clearTriggerJobsByCode(string|null $triggerCode, int|null $leadId = null, int $ticketId = null)
```
##### Описание:
Очищает джобы по коду триггера.
##### Атрибуты:
Имя | Тип | Описание |
triggerCode | string | Код триггера |
leadId | int | ID лида, триггеры которого будут удалены |
ticketId | int | ID заявки, триггеры которого будут удалены |
##### Возвращает:
**bool** - подтверждение удаления триггеров.
##### Пример:
```JavaScript
bot.clearTriggerJobsByCode("trigger_code" , 236178, 229715);
```
# bot.clearTriggerJobsByCodeForAllPersonLeads()
### Удалить триггеры для всех лидов персоны по коду
```JavaScript
bot.clearTriggerJobsByCodeForAllPersonLeads(string|null $triggerCode, int|null $personId, int $ticketId = null)
```
##### Описание:
Удаляет триггеры для всех лидов персоны по коду.
##### Атрибуты:
Имя | Тип | Описание |
triggerCode | string | Код триггера |
personId | int | ID персоны, триггеры которой будут удалены |
ticketId | int | ID заявки, триггеры которого будут удалены |
##### Возвращает:
**bool** - подтверждение удаления триггеров.
##### Пример:
```JavaScript
bot.clearTriggerJobsByCodeForAllPersonLeads("trigger_code", 236, 229715);
```
# bot.clearTriggerJobsByCodeForTicket()
### Удалить джобы по коду триггера и ID заявки
```JavaScript
bot.clearTriggerJobsByCodeForTicket(string|null $triggerCode, int|null $ticketId)
```
##### Описание:
Очищает джобы по коду триггера и ID заявки.
##### Атрибуты:
Имя | Тип | Описание |
triggerCode | string | Код триггера |
ticketId | int | ID заявки, триггеры которого будут удалены |
##### Возвращает:
**bool** - подтверждение удаления триггеров.
##### Пример:
```JavaScript
bot.clearTriggerJobsByCodeForTicket("trigger_code", 229715);
```
# bot.getTicketTypeNameById()
### Получить наименование заявки по id вида заявки
```JavaScript
bot.getTicketTypeNameById(int|null $ticketTypeId)
```
##### Описание:
Возвращает наименование заявки по id вида заявки.
##### Атрибуты:
Имя | Тип | Описание |
ticketTypeId | int | Наименование тэга |
##### Возвращает:
**string** - наименование заявки в формате строки.
##### Пример:
```JavaScript
let TicketType = bot.getTicketTypeNameById(14);
```
# bot.getDefaultPersonRoleId()
### Получить id роли персоны по умолчанию
```JavaScript
bot.getDefaultPersonRoleId()
```
##### Описание:
Возвращает id роли персоны по умолчанию.
##### Возвращает:
**int** - id роли
или
**null** - если таких данных нет.
##### Пример:
```JavaScript
let RoleId = bot.getDefaultPersonRoleId();
```
# bot.getWebhookJobRecord()
### Получить запись вебхука зарегистрированного в очереди Метабот
```
bot.getWebhookJobRecord()
```
##### Описание:
Возвращает запись вебхука зарегистрированного в очереди Метабот.
##### Возвращает:
**BotWebhookQueueRecord** - запись в очереди
или
**null** - если таких данных не существует.
# bot.run()
### Запустить скрипт в рамках текущего потока бота
```JavaScript
bot.run(array|object|null $jobParams = [])
```
##### Описание:
Запускает скрипт в рамках текущего потока бота. Можно использовать только в V8 команде/условии команды размещенной в скрипте конструктора, т.е. не применимо для запуска в JS триггера, маршрута, в внутреннего эндпоинта и т.д.
##### Атрибуты:
Имя | Тип | Описание |
jobParams | json | Передача в планируемую задачу входящих json параметров
|
Возможные параметры в jobParams:
- **script\_id** — id вызываемого скрипта;
- **script\_code** — код вызываемого скрипта;
- **lead\_id** — id лида;
- **skip\_till\_command\_id** — id команды скрипта, с которой начнется запуск (если указать не верный id, то будут пропущены все команды);
- **stop\_current\_flow** — по умолчанию **true**, после выполнения вызываемого скрипта, текущий JS будет остановлен. Если указано **false**, то после выполнения вызываемого скрипта JS вернется и продолжится с текущей точки.
##### Возвращает:
**bool** - подтверждение запуска скрипта.
##### Пример:
```JavaScript
bot.run({
"script_id": 111,
"skip_till_command_id": 123,
"stop_current_flow": false,
})
```
# Методы lead
# lead.getData()
### Получить значение данных лида
```JavaScript
lead.getData(string $key)
```
##### Описание:
Возвращает значение данных сущности лида по ключу.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Ключ данных лида |
В качестве ключа можно указать:
- **id** - id лида;
- **name** - имя лида;
- **identification** - внешний id лида;
- **identification\_entity** - внешний id сущности;
- **person\_id** - id персоны лида;
- **manager\_id** - id менеджера привязанного к лиду;
- **bot\_id** - id бота лида;
- **channel\_id** - id канала лида;
- **lang\_code** - код языка;
- **status\_id** - id статуса лида;
- **extra**
- last\_message\_payload
- **identification** - id последнего сообщения;
- **event\_name** - код события, например, user\_uttered, когда последнее сообщение - ответ пользователя;
- **text** - текст последнего сообщения;
- **payload** - данные последнего сообщения;
- **timestamp** - время отправки;
- **session\_id** - id сессии;
- **socket\_id** - id сокета;
- **is\_mute** - включен ли бот для лида;
- **last\_message\_date** - дата последнего сообщения;
- **active\_nlp\_integration\_id** - id активной NLP интеграции;
- **last\_activity** - время последней активности;
- **last\_response** - код последнего ответа;
- **messenger** - id мессенджера;
- **bot\_debug\_level** - уровень отладки бота;
- **created\_at** - время создания;
- **updated\_at** - время обновления;
- **dialog\_id** - id диалога;
- **unread\_count** - количество непрочитанных оператором сообщений;
- **last\_message** - последнее сообщение;
- **last\_message\_botlog\_id** - id последнего сообщения в логе.
##### Возвращает:
**mixed** - значение данных лида в формате, в котором они находятся в сущности
или
**null** - если таких данных не существует.
##### Пример:
```JavaScript
let extra = lead.getData('extra');
```
# lead.issetData() и lead.isDataExist()
### Проверить наличие данных
```JavaScript
lead.issetData(string $key)
```
или
```
lead.isDataExist(string $key)
```
##### Описание:
Проверяет существуют ли данные по ключу.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Ключ данных лида |
В качестве ключа можно указать:
- **id** - id лида;
- **name** - имя лида;
- **identification** - внешний id лида;
- **identification\_entity** - внешний id сущности;
- **person\_id** - id персоны лида;
- **manager\_id** - id менеджера привязанного к лиду;
- **bot\_id** - id бота лида;
- **channel\_id** - id канала лида;
- **lang\_code** - код языка;
- **status\_id** - id статуса лида;
- **extra**
- last\_message\_payload
- **identification** - id последнего сообщения;
- **event\_name** - код события, например, user\_uttered, когда последнее сообщение - ответ пользователя;
- **text** - текст последнего сообщения;
- **payload** - данные последнего сообщения;
- **timestamp** - время отправки;
- **session\_id** - id сессии;
- **socket\_id** - id сокета;
- **is\_mute** - включен ли бот для лида;
- **last\_message\_date** - дата последнего сообщения;
- **active\_nlp\_integration\_id** - id активной NLP интеграции;
- **last\_activity** - время последней активности;
- **last\_response** - код последнего ответа;
- **messenger** - id мессенджера;
- **bot\_debug\_level** - уровень отладки бота;
- **created\_at** - время создания;
- **updated\_at** - время обновления;
- **dialog\_id** - id диалога;
- **unread\_count** - количество непрочитанных оператором сообщений;
- **last\_message** - последнее сообщение;
- **last\_message\_botlog\_id** - id последнего сообщения в логе.
##### Возвращает:
**bool** - подтверждение существования данных.
##### Пример:
```JavaScript
let data = lead.issetData('manager_id');
let altdata = lead.isDataExist('status_id');
```
# lead.getSerialNumber()
### Порядковый номер лида
```JavaScript
lead.getSerialNumber()
```
##### Описание:
Возвращает порядковый номер лида в боте начиная с первого созданного.
Возвращает:
**int** - порядковый номер лида
или
**null** - если лид не найден.
##### Пример:
```JavaScript
let num = lead.getSerialNumber();
```
# lead.getChannelCode()
### Код канала лида
```JavaScript
lead.getChannelCode()
```
##### Описание:
Возвращает код канала лида (telegram, umnico, bitrix, и пр.)
##### Возвращает:
**string** - код канала лида в формате строки.
Коды которые может возвращать данная функция:
- 'unknown'
- 'avito'
- 'apple\_business\_chat'
- 'facebook'
- 'instagram'
- 'jivoWidget'
- 'livechatWidget'
- 'odnoklassniki'
- 'skype'
- 'telegram'
- 'twitter'
- 'viber'
- 'vk'
- 'wechat'
- 'whatsapp'
- 'youla'
- 'metabotWidget'
- 'webim'
# lead.setAttr()
### Установить значение переменной лида
```JavaScript
lead.setAttr(string $key, string $value)
```
##### Описание:
Обновляет значение уже существующей переменной лида или создает новую переменную с указанным значением. Данные будут сохранены в БД.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
value | string | Значение переменной |
##### Возвращает:
**self** - объект того же типа, в данном случае переменную, которая была создана.
##### Пример:
Создание переменной лида lead\_attribute:
```JavaScript
let lead = "Значение переменной лида";
let lead_attribute = lead.setAttr('lead_attribute', lead);
```
# lead.getAttr()
### Получить значение переменной лида
```JavaScript
lead.getAttr(string $key)
```
##### Описание:
Возвращает значение уже существующей переменной лида.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
##### Возвращает:
**string** - значение запрашиваемой переменной в виде строки
или
**null** - если переменная не была найдена.
##### Пример:
Получение значения переменной лида lead\_attribute:
```JavaScript
let lead_attribute_value = lead.getAttr('lead_attribute');
```
# lead.getAllAttr()
### Получить все переменные лида
```JavaScript
lead.getAllAttr()
```
##### Описание:
Возвращает значение всех переменных лида.
Возвращает:
**array** - массив значений всех переменных.
##### Пример:
Получение значения всех переменных лида и вынесение из массива одного из значений:
```JavaScript
let all_lead_attributes = lead.getAllAttr();
let lead_attribute = all_lead_attributes[3];
```
# lead.issetAttr() и lead.isAttrExist()
### Проверить наличие переменной лида
```JavaScript
lead.issetAttr(string $key)
```
или
```JavaScript
lead.isAttrExist(string $key)
```
##### Описание:
Проверяет существует ли переменная лида в боте.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
Возвращает:
**bool** - подтверждение существования переменной.
##### Пример:
Проверка двумя способами существования переменной лида lead\_attribute:
```JavaScript
let lead_exists = lead.issetAttr('lead_attribute');
let lead_altexists = lead.isAttrExist('lead_attribute');
```
# lead.deleteAttrs() и lead.deleteAttr()
### Удаление переменных лида
```JavaScript
lead.deleteAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false)
```
или
```JavaScript
lead.deleteAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false)
```
##### Описание:
Удаляет переменную из бота.
##### Атрибуты:
Имя | Тип | Описание |
attrs | string|object|array|null | Строка, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив |
ticketId | ?int | Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной |
scriptRequestParams | object | Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной |
isForceDelete | bool | Подавить запуск триггеров или нет, т.е. если передать true,
и есть триггер подписанный на событие изменения/удаления переменной то он не будет запущен. |
isSuppressTriggers | bool | Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается |
Возвращает:
**self** - подтверждение удаления переменной.
##### Пример:
```JavaScript
lead.deleteAttrs('var1, var2, var3', null, null, true);
```
# lead.forceDeleteAttrs() и lead.forceDeleteAttr()
### Принудительное удаление переменных лида из БД
```JavaScript
lead.forceDeleteJsonAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)
```
или
```JavaScript
lead.forceDeleteJsonAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)
```
##### Описание:
Удаляет переменную из бота и БД.
##### Атрибуты:
Имя | Тип | Описание |
attrs | string|object|array|null | Строка, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив |
ticketId | ?int | Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной |
scriptRequestParams | object | Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной |
isSuppressTriggers | bool | Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается |
Возвращает:
**self** - подтверждение удаления переменной.
##### Пример:
```JavaScript
lead.forceDeleteAttrs('var1, var2, var3');
```
# lead.deleteJsonAttrs() и lead.deleteJsonAttr()
### Удаление json-переменных лида
```JavaScript
lead.deleteJsonAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false)
```
или
```JavaScript
lead.deleteJsonAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false)
```
##### Описание:
Удаляет json переменную из бота.
##### Атрибуты:
Имя | Тип | Описание |
attrs | string|object|array|null | Строка, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив |
ticketId | ?int | Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной |
scriptRequestParams | object | Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной |
isForceDelete | bool | Подавить запуск триггеров или нет, т.е. если передать true,
и есть триггер подписанный на событие изменения/удаления переменной то он не будет запущен. |
isSuppressTriggers | bool | Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается |
Возвращает:
**self** - подтверждение удаления переменной.
##### Пример:
```JavaScript
lead.deleteJsonAttrs('json_var1, json_var2, json_var3', null, null, true);
```
# lead.forceDeleteJsonAttrs() и lead.forceDeleteJsonAttr()
### Принудительное удаление json-переменных лида из БД
```JavaScript
lead.forceDeleteJsonAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)
```
или
```JavaScript
lead.forceDeleteJsonAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)
```
##### Описание:
Удаляет json переменную из бота и БД.
##### Атрибуты:
Имя | Тип | Описание |
attrs | string|object|array|null | Строка, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив |
ticketId | ?int | Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной |
scriptRequestParams | object | Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной |
isSuppressTriggers | bool | Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается |
Возвращает:
**self** - подтверждение удаления переменной.
##### Пример:
```JavaScript
lead.forceDeleteJsonAttrs('json_var1, json_var2, json_var3');
```
# lead.isInStatus()
### Проверка существования статуса у лида
```JavaScript
lead.isInStatus(string $statusName)
```
##### Описание:
Проверить, что лид находится в статусе с указанным в методе именем.
##### Атрибуты:
Имя | Тип | Описание |
statusName | string | Наименование статуса |
##### Возвращает:
**bool** — подтверждение существования статуса.
# lead.getStatusId()
### Узнать id статуса лида
```JavaScript
lead.getStatusId()
```
##### Описание:
Возвращает значение поля status\_id лида.
##### Возвращает:
**int** — id статуса лида в форме числа
или
**null** — если у лида нет статуса.
# lead.isTagExist() и lead.issetTag()
### Проверить наличие тэга лида
```JavaScript
lead.isTagExist($some_tag)
```
или
```JavaScript
lead.issetTag($some_tag)
```
##### Описание:
Проверяет существование тега у лида.
##### Атрибуты:
Имя | Тип | Описание |
some\_tag | string | Наименование тэга |
##### Возвращает:
**bool** - подтверждение существования тега.
##### Пример:
```JavaScript
let TagExist = lead.isTagExist('тэг');
```
или
```JavaScript
let TagExist = lead.issetTag('тэг');
```
# lead.getTag()
### Получить значение тэга лида
```JavaScript
lead.getTag(string $key)
```
##### Описание:
Возвращает значение тэга лида по наименованию.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование тэга |
##### Возвращает:
**string** - если тэг активен
или
**null** - если тэг неактивен.
##### Пример:
```JavaScript
let Tag = lead.getTag('тэг');
```
# lead.getAllTags()
### Получить массив всех тэгов лида
```JavaScript
lead.getAllTags()
```
##### Описание:
Возвращает массив всех тэгов лида.
##### Возвращает:
**array** - массив наименований тэгов лида.
##### Пример:
```JavaScript
let AllTags = lead.getAllTags();
let Tag2 = AllTags[1];
```
# lead.addTags() и lead.addTag()
### Добавление тэгов лида
```
lead.addTags(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)
```
или
```
lead.addTag(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)
```
##### Описание:
Добавляет тэг в бот.
##### Атрибуты:
Имя | Тип | Описание |
tags | string|object|array|null | Строка, представляющая собой список названий тэгов(разделитель запятая). Можно указать вместо списка json объект или массив |
ticketId | ?int | Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления тэга |
scriptRequestParams | object | Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления тэга |
isSuppressTriggers | bool | Не мягкое удаление. Если передано true, то тэг будет удален из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается |
Возвращает:
**self** - наименование созданного тэга.
##### Пример:
```JavaScript
lead.addTags('new_tag', null, {"some_key": "some_value"});
```
# lead.deleteTags() и lead.deleteTag()
### Удаление тэгов лида
```
lead.deleteTags(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false)
```
или
```
lead.deleteTag(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false)
```
##### Описание:
Удаляет тэг из бота.
##### Атрибуты:
Имя | Тип | Описание |
tags | string|object|array|null | Строка, представляющая собой список названий тэгов (разделитель запятая). Можно указать вместо списка json объект или массив |
ticketId | ?int | Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления тэга |
scriptRequestParams | object | Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления тэга |
isForceDelete | bool | Подавить запуск триггеров или нет, т.е. если передать true,
и есть триггер подписанный на событие изменения/удаления тэга то он не будет запущен. |
isSuppressTriggers | bool | Не мягкое удаление. Если передано true, то тэг будет удален из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается |
Возвращает:
**self** - подтверждение удаления тэга.
##### Пример:
```JavaScript
lead.deleteTags('TAG_111, tag_222 , tag_333', null, null, true);
```
# lead.forceDeleteTags() и lead.forceDeleteTag()
### Принудительное удаление тэгов лидаиз БД
```JavaScript
lead.forceDeleteTags(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)
```
или
```JavaScript
lead.forceDeleteTag(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)
```
##### Описание:
Удаляет тэг из бота и БД.
##### Атрибуты:
Имя | Тип | Описание |
attrs | string|object|array|null | Строка, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив |
ticketId | ?int | Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления тэга |
scriptRequestParams | object | Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления тэга |
isSuppressTriggers | bool | Не мягкое удаление. Если передано true, то тэг будет удален из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается |
Возвращает:
**self** - подтверждение удаления тэга.
##### Пример:
```JavaScript
lead.forceDeleteTags('TAG_111, tag_222 , tag_333');
```
# lead.setForwarded()
### Переключить на оператора
```JavaScript
lead.setForwarded(bool|int $state)
```
##### Описание:
Установка ($state == true) или сброс ($state == false) у лида признака “Переведён на оператора”.
##### Атрибуты:
Имя | Тип | Описание |
state | bool|int | При $state = true установка и при $state = false сброс признака “Переведён на оператора” |
##### Возвращает:
**self** - подтверждение установки или сброса в формате используемом при вызове метода.
# lead.getPersonId()
### Получить id персоны
```JavaScript
lead.getPersonId()
```
##### Описание:
Возвращает id персоны лида.
Возвращает:
**int** - id персоны в формате числа
или
**null** - если персоны нет.
##### Пример:
```JavaScript
let PersonId = lead.getPersonId();
lead.setAttr('PersonId', PersonId);
```
# lead.setPersonId()
### Привязать персону к лиду
```JavaScript
lead.setPersonId(?int $personId)
```
##### Описание:
Привязывает к лиду персону с соответствующим id.
##### Атрибуты:
Имя | Тип | Описание |
personId
| int | Id персоны |
##### Возвращает:
**bool** - подтверждение успешной привязки персоны к лиду.
##### Пример:
```JavaScript
lead.setPersonId(167435);
```
# lead.createPersonForCurrentLead()
### Создать персону для лида
```JavaScript
lead.createPersonForCurrentLead($data)
```
##### Описание:
Создает персону для текущего лида в контексте которого запущен v8-скрипт.
##### Атрибуты:
Имя | Тип | Описание |
data
| json | Данные о персоне в формате json. Возможные поля расписаны ниже |
person\_role\_id
| integer | Id роли |
is\_external
| bool | Если не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом.
А 0 означает что персона является работником бизнеса
|
user\_id
| integer | Id пользователя, привязываемого к персоне |
firstname
| string|null | Имя персоны |
lastname
| string|null | Фамилия персоны |
middlename
| string|null | Отчество персоны |
email
| string|null | Адрес электронной почты персоны |
phone
| string|null | Номер телефона персоны |
organization\_name
| string|null | Название организации |
organization\_address
| string|null | Адрес организации |
comment
| string|null | Комментарий к персоне |
##### Возвращает:
**int** - id созданной персоны в формате числа.
##### Пример:
```JavaScript
let newPersonId = lead.createPersonForCurrentLead({
'is_external': 1,
'firstname': 'Иван',
'lastname': 'Иванов'
})
```
# lead.isContextExist() и lead.issetContext()
### Проверить наличие контекста лида
```
lead.isContextExist(string $key)
```
или
```
lead.issetContext(string $key)
```
##### Описание:
Проверяет существование контекста у лида.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование контекста |
##### Возвращает:
**bool** - подтверждение существования контекста.
##### Пример:
```
let ContextExist = lead.isContextExist('контекст');
```
или
```
let ContextExist = lead.issetContext('контекст');
```
# lead.getContext()
### Получить значение контекста лида
```
lead.getContext(string $key)
```
##### Описание:
Возвращает значение контекста лида по наименованию.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование контекста |
##### Возвращает:
**string** - если контекст активен
или
**null** - если контекст неактивен.
##### Пример:
```
let Context = lead.getContext('контекст');
```
# lead.getAllContexts()
### Получить массив всех контекстов лида
```
lead.getAllContexts()
```
##### Описание:
Возвращает массив всех контекстов лида.
##### Возвращает:
**array** - массив наименований контекстов лида.
##### Пример:
```JavaScript
let AllContexts = lead.getAllContexts();
let Context2 = AllContexts[1];
```
# lead.setActiveNlpIntegrationByCode()
### Присвоить интеграцию лиду по коду
```JavaScript
lead.setActiveNlpIntegrationByCode(?string $integrationCode)
```
##### Описание:
Присваивает интеграцию лиду в соответствии с кодом интеграции.
##### Атрибуты:
Имя | Тип | Описание |
integrationCode | string | Код интеграции |
##### Возвращает:
**bool** - подтверждение присвоения интеграции.
# lead.canAutoForward()
### Узнать доступно ли авто-назначение оператора в данном скрипте
```
lead.canAutoForward()
```
##### Описание:
Функция необходима для исключения рекурсивного вызова назначения диалога на оператора, а также для исключения выполнения авто-назначения диалога на оператора, если оператор сам подключается к диалога из контакт-центра.
Результат выполнения данной функции аналогичен результату выполнения функции **bot.canAutoForward()**, функция в bot первична, в лиде функция добавлена для удобства.
Если оператор сам выполняет подключение к диалогу из контакт-центра, то результат функции аналогичен проверке:
```JavaScript
return bot.getForwardEventType() !== 'forwarded_by_operator';
```
Но при этом **lead.canAutoForward(): bool** гарантирует что назначение заявки на оператора не вызвано рекурсивно.
##### Возвращает:
**bool** - подтверждение доступа к авто-назначению.
# lead.getNextOperators()
### Вернуть список следующих операторов
```JavaScript
lead.getNextOperators(string $departmentCode = null, bool $isOnline = true, int|null $limit = 1, bool $useLocks = true)
```
##### Описание:
Возвращает список следующих операторов.
Полученный список будет отсортирован, по:
\- Кол-ву диалогов на операторе;
\- Дате последнего назначения/принятия диалога;
\- ID оператора.
##### Атрибуты:
Имя | Тип | Описание |
departmentCode | string | Код отдела |
isOnline | bool | Должны ли операторы быть онлайн |
limit | int|null | Лимит возвращенных операторов. Чтобы получить всех операторов, указываем $limit=null |
useLocks | bool | Использовать ли блокировки |
##### Возвращает:
**int** - список операторов
или
**null** - если нет операторов.
# lead.assignDialogToNextOperator()
### Назначить диалог на следующего оператора
```JavaScript
lead.assignDialogToNextOperator(string|null $departmentCode = null, bool $isOnline = true, bool $isForwardIfOperatorNotFound = true, bool $useLocks = true)
```
##### Описание:
Назначает диалог на следующего оператора полученного с помощью **getNextOperators**.
Варианты откуда может запускаться:
\- оператор сам подключился к КЦ и в системном скрипте есть вызов данной функции - игнорируем ее вызов;
\- функцию вызвали в другом скрипте и она также есть в системном скрипте - игнорируем ее вызов только из системного скрипта;
\- функцию вызвали в системном скрипте - не игнорируем ее вызов.
Если вызываем функцию из системного скрипта перевода на оператора, то данная функция не выполняет перевод (так как он уже выполнен на момент запуска функции) и также не запускает системный скрипт (так как он уже запущен на момент запуска функции) - для этого есть внутренние механизмы отслеживания, откуда запущена функция, и по сути это исключает рекурсивный запуск функций, для этого и введена новая функция bot / lead.canAutoForward на самом деле выполнять данную проверку canAutoForward смысла нет, так как она выполняется автоматически внутри функций назначения оператора и автоматом отсечет рекурсивный вызов, но где может понадобиться использование canAutoForward - это для написания JavaScript условия - нужно ли отсылать уведомление лиду, о том что скрипт перевод на оператора: пример вызываем назначение на оператора в обычном скрипте, и в этом же скрипте уведомляем о то, что мы перевели на оператора, тогда при запуске системного скрипта Перевод на оператора вывод такого же сообщения нужно исключить.
##### Атрибуты:
Имя | Тип | Описание |
departmentCode | string | Код отдела |
isOnline | bool | Должны ли операторы быть онлайн |
isForwardIfOperatorNotFound | bool | Продолжить если оператор не найден |
useLocks | bool | Использовать ли блокировки |
##### Возвращает:
**int** - оператора
или
**null** - если не удалось назначить.
# lead.assignDialogToOperator()
### Назначить диалог на указанного оператора
```JavaScript
lead.assignDialogToOperator(int|null $operatorId, bool $isForwardIfOperatorNotFound = true, bool $useLocks = true)
```
##### Описание:
Назначает диалог на указанного в методе оператора.
Если вызываем функцию из системного скрипта перевода на оператора, то данная функция не выполняет перевод (так как он уже выполнен на момент запуска функции) и также не запускает системный скрипт (так как он уже запущен на момент запуска функции).
Если вызываем функцию из обычного скрипта, то в данной точке сразу будет вызван системный скрипт (если он есть). Системный скрипт можно не создавать и обрабатывать все в точке вызова (можно через v8 плагина) или в отдельном обычном скрипте. Если в системном скрипте и скрипте в котором вызывает данную функцию есть отправка сообщений то необходимо вызывать **bot.disableBuffer()**, чтобы не нарушать последовательность сообщений. Но лучше отправлять сообщения только в одном из скриптов.
##### Атрибуты:
Имя | Тип | Описание |
operatorId | string | ID оператора |
limit | int|null | Лимит возвращенных операторов. Чтобы получить всех операторов, указываем $limit=null |
useLocks | bool | Использовать ли блокировки |
##### Возвращает:
**int** - оператора
или
**null** - если не удалось назначить оператора.
# lead.getLastRequest()
### Получить объект с параметрами последнего реквеста
```JavaScript
lead.getLastRequest()
```
##### Описание:
Находит последний реквест и возвращает объект с его параметрами.
##### Возвращает:
**ScriptRequest** — последний реквест.
# lead.getMessengerCode()
### Получить буквенное обозначение текущего мессенджера канала
```
lead.getMessengerCode()
```
##### Описание:
Возвращает буквенное обозначение текущего мессенджера канала.
##### Возвращает:
**string** - буквенное обозначение текущего мессенджера канала.
Коды которые может возвращать данная функция:
- 'unknown'
- 'avito'
- 'apple\_business\_chat'
- 'facebook'
- 'instagram'
- 'jivoWidget'
- 'livechatWidget'
- 'odnoklassniki'
- 'skype'
- 'telegram'
- 'twitter'
- 'viber'
- 'vk'
- 'wechat'
- 'whatsapp'
- 'youla'
- 'metabotWidget'
- 'webim'
# lead.getIdentification()
### Получить идентификатор лида во внешней системе
```
lead.getIdentification()
```
##### Описание:
Возвращает идентификатор лида во внешней системе, т.е. в мессенджере, например для Telegram - это id чата клиента.
##### Возвращает:
**string** - идентификатор лида во внешней системе в формате строки
или
**null** - если идентификатор не найден.
# lead.getIdentificationEntity()
### Получить дополнительный идентификатор лида во внешней системе
```
lead.getIdentificationEntity()
```
##### Описание:
Возвращает дополнительный идентификатор лида во внешней системе, например используется для Bitrix24 – и возвращает ‘LEAD’ / ‘DEAL’.
##### Возвращает:
**string** - дополнительный идентификатор лида во внешней системе в формате строки
или
**null** - если нет составного идентификатора лида.
# lead.getMessenger()
### Получить текущий мессенджер
```
lead.getMessenger()
```
##### Описание:
Метод для получения обозначения текущего мессенджера канала.
Коды которые может возвращать данная функция:
- Unknown - 0
- Avito - 1
- Apple business chat - 17
- Facebook - 2
- Instagram - 3
- JivoWidget - 15
- LivechatWidget - 4
- Jdnoklassniki - 16
- Skype - 5
- Telegram - 6
- Twitter - 7
- Viber - 8
- VK - 9
- Wechat - 12
- Whatsapp - 10
- Юла - 11
- MetabotWidget - 13
- Webim - 14
##### Возвращает:
**int** - код канала.
# lead.getAllData()
### Получить все данные лида
```JavaScript
lead.getAllData()
```
##### Описание:
Возвращает все данные лида.
##### Возвращает:
**array** - значение данных лида в формате массива:
- **id** - id лида;
- **name** - имя лида;
- **identification** - внешний id лида;
- **identification\_entity** - внешний id сущности;
- **person\_id** - id персоны лида;
- **manager\_id** - id менеджера привязанного к лиду;
- **bot\_id** - id бота лида;
- **channel\_id** - id канала лида;
- **lang\_code** - код языка;
- **status\_id** - id статуса лида;
- **extra**
- last\_message\_payload
- **identification** - id последнего сообщения;
- **event\_name** - код события, например, user\_uttered, когда последнее сообщение - ответ пользователя;
- **text** - текст последнего сообщения;
- **payload** - данные последнего сообщения;
- **timestamp** - время отправки;
- **session\_id** - id сессии;
- **socket\_id** - id сокета;
- **is\_mute** - включен ли бот для лида;
- **last\_message\_date** - дата последнего сообщения;
- **active\_nlp\_integration\_id** - id активной NLP интеграции;
- **last\_activity** - время последней активности;
- **last\_response** - код последнего ответа;
- **messenger** - id мессенджера;
- **bot\_debug\_level** - уровень отладки бота;
- **created\_at** - время создания;
- **updated\_at** - время обновления;
- **dialog\_id** - id диалога;
- **unread\_count** - количество непрочитанных оператором сообщений;
- **last\_message** - последнее сообщение;
- **last\_message\_botlog\_id** - id последнего сообщения в логе.
##### Пример:
```JavaScript
let extra = lead.getAllData();
```
# lead.setData()
### Установить значение данных лида
```JavaScript
lead.setData(string $key, $value)
```
##### Описание:
Устанавливает значение данных лида по ключу.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Ключ данных лида |
value | mixed | Значение данных |
В качестве ключа можно указать:
- **id** - id лида;
- **name** - имя лида;
- **identification** - внешний id лида;
- **identification\_entity** - внешний id сущности;
- **person\_id** - id персоны лида;
- **manager\_id** - id менеджера привязанного к лиду;
- **bot\_id** - id бота лида;
- **channel\_id** - id канала лида;
- **lang\_code** - код языка;
- **status\_id** - id статуса лида;
- **extra**
- last\_message\_payload
- **identification** - id последнего сообщения;
- **event\_name** - код события, например, user\_uttered, когда последнее сообщение - ответ пользователя;
- **text** - текст последнего сообщения;
- **payload** - данные последнего сообщения;
- **timestamp** - время отправки;
- **session\_id** - id сессии;
- **socket\_id** - id сокета;
- **is\_mute** - включен ли бот для лида;
- **last\_message\_date** - дата последнего сообщения;
- **active\_nlp\_integration\_id** - id активной NLP интеграции;
- **last\_activity** - время последней активности;
- **last\_response** - код последнего ответа;
- **messenger** - id мессенджера;
- **bot\_debug\_level** - уровень отладки бота;
- **created\_at** - время создания;
- **updated\_at** - время обновления;
- **dialog\_id** - id диалога;
- **unread\_count** - количество непрочитанных оператором сообщений;
- **last\_message** - последнее сообщение;
- **last\_message\_botlog\_id** - id последнего сообщения в логе.
##### Возвращает:
**self** - значение данных лида в формате, в котором они находятся в сущности.
##### Пример:
```JavaScript
let person_id = lead.setData('person_id', 34);
```
# lead.isInlineButtonsAvailable()
### Проверка включения инлайн кнопок
```JavaScript
lead.isInlineButtonsAvailable()
```
##### Описание:
Проверяет включены ли инлайн кнопки.
##### Возвращает:
**bool** - 0, если не включены, 1, если включены
или
**null** - если таких данных не существует.
##### Пример:
```JavaScript
let inlineButtons = lead.isInlineButtonsAvailable();
```
# lead.isInlineButtonsAvailableGeneralChannelSetting()
### Получить настройки кнопок канала
```JavaScript
lead.isInlineButtonsAvailableGeneralChannelSetting()
```
##### Описание:
Возвращает настройки кнопок текущего канала лида.
##### Возвращает:
**bool** - 0, если не включены, 1, если включены
или
**null** - если таких данных не существует.
##### Пример:
```JavaScript
let inlineButtons = lead.isInlineButtonsAvailableGeneralChannelSetting();
```
# lead.getIntAttr()
### Получить значение числовой переменной лида
```JavaScript
lead.getIntAttr(string $key, ?int|null $default = 0)
```
##### Описание:
Возвращает значение уже существующей числовой переменной лида.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
default | int | Дефолтное значение переменной |
##### Возвращает:
**int** - числовое значение запрашиваемой переменной
или
**null** - если переменная не была найдена.
##### Пример:
```JavaScript
let lead_attribute_value = lead.getIntAttr('lead_attribute', 2);
```
# lead.getFloatAttr()
### Получить значение float переменной лида
```JavaScript
lead.getFloatAttr(string $key, ?float|null $default = 0.0)
```
##### Описание:
Возвращает значение уже существующей float переменной лида.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
default | float | Дефолтное значение |
##### Возвращает:
**float** - значение запрашиваемой float переменной
или
**null** - если переменная не была найдена.
##### Пример:
```JavaScript
let lead_attribute_value = lead.getFloatAttr('lead_attribute', 0.1);
```
# lead.getBoolAttr()
### Получить значение bool переменной лида
```JavaScript
lead.getBoolAttr(string $key, ?bool|null $default = false)
```
##### Описание:
Возвращает значение уже существующей bool переменной лида.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
default | bool | Дефолтное значение |
##### Возвращает:
**bool** - значение запрашиваемой bool переменной
или
**null** - если переменная не была найдена.
##### Пример:
```JavaScript
let lead_attribute_value = lead.getBoolAttr('lead_attribute', true);
```
# lead.getJsonAttr()
### Получить значение JSON переменной лида
```JavaScript
lead.getJsonAttr(string $key)
```
##### Описание:
Возвращает значение уже существующей JSON переменной лида.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
##### Возвращает:
**mixed** - значение запрашиваемой JSON переменной
или
**null** - если переменная не была найдена.
##### Пример:
```JavaScript
let lead_attribute_value = lead.getJsonAttr('lead_attribute');
```
# lead.getAllJsonAttrs()
### Получить значение всех JSON переменных лида
```JavaScript
lead.getAllJsonAttrs()
```
#### Описание:
Возвращает значение всех JSON переменных лида.
##### Возвращает:
**array** - массив JSON переменных лида.
##### Пример:
```JavaScript
let lead_attribute_value = lead.getAllJsonAttrs();
```
# lead.setJsonAttr()
### Установить значение JSON переменной лида
```JavaScript
lead.setJsonAttr(string $key, $value)
```
#### Описание:
Устанавливает значение JSON переменной лида.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
value | mixed | JSON значение переменной |
##### Возвращает:
**self** - объект того же типа и значения, что задан в методе.
##### Пример:
```JavaScript
let lead_attribute_value = lead.setJsonAttr('lead_attribute', {
"id": 2415,
"name": "Имя"
});
```
# lead.issetJsonAttr() и lead.isJsonAttrKeyExist()
### Проверить наличие JSON переменной лида
```JavaScript
lead.issetJsonAttr(string $key)
и
lead.isJsonAttrKeyExist(string $key)
```
#### Описание:
Проверяет наличие JSON переменной лида.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
##### Возвращает:
**bool** - подтверждение существования переменной.
##### Пример:
```JavaScript
let lead_attribute_value = lead.issetJsonAttr('lead_attribute');
или
let lead_attribute_value = lead.isJsonAttrKeyExist('lead_attribute');
```
# lead.setAllLiveTexAttrs()
### Установить значение всех LiveTex переменных лида
```JavaScript
lead.setAllLiveTexAttrs(string $value)
```
#### Описание:
Устанавливает значение всех LiveTex переменных лида.
##### Атрибуты:
Имя | Тип | Описание |
value | string | Значение переменной |
##### Возвращает:
**self** - объект того же типа и значения, что задан в методе.
##### Пример:
```JavaScript
let lead_attribute_value = lead.setAllLiveTexAttrs('lead_value');
```
# lead.setLiveTexAttr()
### Установить значение LiveTex переменной лида
```JavaScript
lead.setLiveTexAttr(string $key,string $value)
```
#### Описание:с
Устанавливает значение LiveTex переменной лида.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
value | string | Значение переменной |
##### Возвращает:
**self** - объект того же типа и значения, что задан в методе.
##### Пример:
```JavaScript
let lead_attribute_value = lead.setLiveTexAttr('lead_attribute', "lead_value");
```
# lead.getLiveTexAttr()
### Получить значение LiveTex переменной лида
```JavaScript
lead.getLiveTexAttr(string $key)
```
##### Описание:
Возвращает значение уже существующей LiveTex переменной лида.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
##### Возвращает:
**mixed** - значение запрашиваемой переменной
или
**null** - если переменная не была найдена.
##### Пример:
```JavaScript
let lead_attribute_value = lead.getLiveTexAttr('lead_attribute');
```
# lead.getAllLiveTexAttrs()
### Получить значение всех LiveTex переменных лида
```JavaScript
lead.getAllLiveTexAttrs()
```
#### Описание:
Возвращает значение всех LiveTex переменных лида.
##### Возвращает:
**array** - массив LiveTex переменных лида.
##### Пример:
```JavaScript
let lead_attribute_value = lead.getAllLiveTexAttrs();
```
# lead.setTag()
### Установить значение тэга лида
```JavaScript
lead.setTag(string $key, $value)
```
##### Описание:
Устанавливает значение тэга лида по наименованию.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование тэга |
value | mixed | Значение тэга |
##### Возвращает:
**self** - значение, указанное в методе.
##### Пример:
```JavaScript
let Tag = lead.setTag('тэг', "регистрация");
```
# lead.setContext()
### Установить значение контекста лида
```JavaScript
lead.setContext(string $key, $value)
```
##### Описание:
Устанавливает значение контекста лида по наименованию.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование контекста |
value | mixed | Значение контекста |
##### Возвращает:
**self** - значение, указанное в методе.
##### Пример:
```JavaScript
let Con = lead.setContext('контекст', "регистрация");
```
# lead.getAllStatuses()
### Узнать все статусы лида
```JavaScript
lead.getAllStatuses()
```
##### Описание:
Возвращает все статусы лида.
##### Возвращает:
**array** — id статусов лида в формате массива.
# lead.getAllStatusesIndexedByName()
### Узнать все наименования статусов лида
```JavaScript
lead.getAllStatusesIndexedByName()
```
##### Описание:
Возвращает все наименования статусов лида.
##### Возвращает:
**array** — массив наименований статусов лида.
# lead.setStatusId()
### Установить id статуса лида
```JavaScript
lead.setStatusId(int $statusId, string $name)
```
##### Описание:
Устанавливает id статуса лида.
##### Атрибуты:
Имя | Тип | Описание |
statusId | int | Id статуса |
name | string | Наименование статуса |
##### Возвращает:
**self** — id статуса лида.
# lead.setStatusName()
### Установить наименование статуса лида
```JavaScript
lead.setStatusName(string $name)
```
##### Описание:
Устанавливает наименование статуса лида.
##### Атрибуты:
Имя | Тип | Описание |
name | string | Наименование статуса |
##### Возвращает:
**self** — наименование статуса лида.
# lead.getStatusName()
### Узнать наименование статуса лида
```JavaScript
lead.getStatusName()
```
##### Описание:
Возвращает наименование статуса лида.
##### Возвращает:
**string** — наименование статуса лида в формате строки.
# lead.setStatus()
### Установить статус лида
```JavaScript
lead.setStatus(int $statusId, string $name)
```
##### Описание:
Устанавливает статус лида.
##### Атрибуты:
Имя | Тип | Описание |
statusId | int | Id статуса |
name | string | Наименование статуса |
##### Возвращает:
**self** — id статуса лида.
# lead.setStatusById()
### Установить статус лида по id
```JavaScript
lead.setStatusById(int $statusId)
```
##### Описание:
Устанавливает статус лида по id.
##### Атрибуты:
Имя | Тип | Описание |
statusId | int | Id статуса |
##### Возвращает:
**self** — id статуса.
# lead.issetStatusById()
### Проверить существует ли статус у лида по id
```JavaScript
lead.issetStatusById(string $id)
```
##### Описание:
Проверяет существует ли статус у лида по id.
##### Атрибуты:
Имя | Тип | Описание |
id | string | Id статуса |
##### Возвращает:
**bool** — подтверждение существования статуса.
# lead.issetStatusByName()
### Проверить существует ли статуса у лида по наименованию
```JavaScript
lead.issetStatusByName(string $name)
```
##### Описание:
Проверяет существует ли статуса у лида по наименованию.
##### Атрибуты:
Имя | Тип | Описание |
name | string | Наименование статуса |
##### Возвращает:
**bool** — подтверждение существования статуса.
# lead.getStatusIdByName()
### Узнать id статуса лида по наименованию
```JavaScript
lead.getStatusIdByName(string $statusName)
```
##### Описание:
Возвращает id статуса лида по наименованию.
##### Атрибуты:
Имя | Тип | Описание |
statusName | string | Наименование статуса |
##### Возвращает:
**int** — id статуса.
# lead.setStatusByName()
### Установить статус лида по наименованию
```JavaScript
lead.setStatusByName(string $statusName)
```
##### Описание:
Устанавливает статус лида по наименованию.
##### Атрибуты:
Имя | Тип | Описание |
statusName | string | Наименование статуса |
##### Возвращает:
**self** — наименование статуса лида.
# lead.setActiveNlpIntegrationById()
### Присвоить интеграцию лиду по id
```JavaScript
lead.setActiveNlpIntegrationById(int|null $nlpIntegrationId)
```
##### Описание:
Присваивает интеграцию лиду по id.
##### Атрибуты:
Имя | Тип | Описание |
nlpIntegrationId | int | Id интеграции |
##### Возвращает:
**bool** - подтверждение присвоения интеграции.
# lead.hasActiveNlpIntegration()
### Проверить активна ли интеграция
```JavaScript
lead.hasActiveNlpIntegration()
```
##### Описание:
Проверяет активна ли интеграция.
##### Возвращает:
**bool** - подтверждение активности интеграции.
# lead.getActiveNlpIntegrationId()
### Получить интеграцию по id
```JavaScript
lead.getActiveNlpIntegrationId(int|null $nlpIntegrationId)
```
##### Описание:
Возвращает интеграцию по id.
##### Атрибуты:
Имя | Тип | Описание |
nlpIntegrationId | int | Id интеграции |
##### Возвращает:
**int** - id интеграции
или
**null** - если таких данных нет.
# lead.getActiveNlpIntegrationCode()
### Получить интеграцию по коду
```JavaScript
lead.getActiveNlpIntegrationCode(string|null $integrationCode)
```
##### Описание:
Возвращает интеграцию по коду.
##### Атрибуты:
Имя | Тип | Описание |
integrationCode | string | Код интеграции |
##### Возвращает:
**string** - код интеграции
или
**null** - если таких данных нет.
# lead.getActiveOrFirstNlpIntegrationCode()
### Получить активную или первую интеграцию по коду
```JavaScript
lead.getActiveOrFirstNlpIntegrationCode(string|null $integrationCode)
```
##### Описание:
Возвращает активную или первую интеграцию по коду.
##### Атрибуты:
Имя | Тип | Описание |
integrationCode | string | Код интеграции |
##### Возвращает:
**string** - код интеграции
или
**null** - если таких данных нет.
# lead.getActiveOrFirstNlpIntegrationId()
### Получить активную или первую интеграцию по id
```JavaScript
lead.getActiveOrFirstNlpIntegrationId(int|null $nlpIntegrationId)
```
##### Описание:
Возвращает активную или первую интеграцию по id.
##### Атрибуты:
Имя | Тип | Описание |
nlpIntegrationId | int | Id интеграции |
##### Возвращает:
**int** - id интеграции
или
**null** - если данные не найдены.
# lead.getForwardEventTypeForFB()
### Получить тип события для ФБ
```JavaScript
lead.getForwardEventTypeForFB()
```
##### Описание:
Возвращает тип события для ФБ.
##### Возвращает:
**string** - тип события интеграции
или
**null** - если таких данных нет.
# lead.getLang()
### Получить язык установленный в бизнесе
```JavaScript
lead.getLang()
```
##### Описание:
Возвращает язык установленный в бизнесе.
##### Возвращает:
**string** - код языка
или
**null** - если таких данных нет.
# lead.setLang()
### Установить язык в бизнесе
```JavaScript
lead.setLang(string|null $langCode)
```
##### Описание:
Устанавливает язык в бизнесе.
##### Атрибуты:
Имя | Тип | Описание |
langCode | string | Код языка |
##### Возвращает:
**string** - код языка
или
**null** - если таких данных не существует.
# lead.isLangExist()
### Проверить существует ли язык
```JavaScript
lead.isLangExist(string $langCode, bool|null $isEnabled = true)
```
##### Описание:
Проверяет существует ли язык.
##### Атрибуты:
Имя | Тип | Описание |
langCode | string | Код языка |
isEnabled | bool | Активность языка |
##### Возвращает:
**bool** - подтверждения существования языка.
# Методы ticket
# ticket.update()
#### Обновление заявки, через объект заявки
```JavaScript
ticket.update($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 | Описание заявки |
##### Возвращает:
**bool** - подтверждение обновления заявки.
##### Пример:
```JavaScript
let ticketData = {
'title': 'Создано в боте',
'ticket_type_id': 1013,
'status_id': 1096
};
ticketData.custom = {
'client_contacts': 'my contacts',
'details': 'some details'
};
let isUpdated = ticket.update(ticketData);
lead.setAttr('is_ticket_updated', isUpdated);
```
Пример обновления одного поля заявки:
```JavaScript
let ticket = bot.findTickets([['id', ticketId]])[0];
let ticketData = {
'client_comment': lead.getAttr('Отзыв')
};
ticket.update(ticketData);
```
# ticket.getData()
#### Получить значение данных заявки
```JavaScript
ticket.getData(string $key)
```
##### Описание:
Получить значение данных заявки по ключу или названию поля БД.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Ключ наименование поля |
В качестве ключа можно указать:
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
##### Возвращает:
**mixed** - если значение найдено
или
**null** - если значение не найдено.
##### Пример:
```JavaScript
let Data = ticket.getData('title');
```
# ticket.getCustomData()
### Считывание произвольных полей заявки
```JavaScript
ticket.getCustomData(string $key)
```
##### Описание:
Находит значение указанного типа произвольного поля заявки.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Ключ наименование поля |
В качестве ключа можно указать:
- **названия всех произвольных полей заявки**;
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
Можно получить код значения, используя суффикс **".raw"** к имени произвольного поля. Т.е. если в заявке установлено из опций поля с именем age второе значение:
({
"1": "18-25 лет",
"2": "25-30 лет",
"3": "30-35 лет",
"4": "35-40 лет",
"5": "Больше 40 лет",
"6": "Не важно"
})
то **ticket.getCustomData('age')** вернёт "25-30 лет", **ticket.getCustomData('age.raw')** вернёт "2".
##### Возвращает:
**mixed** - если значение найдено
или
**null** - если значение не найдено.
##### Пример:
```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);
```
# ticket.issetData() и ticket.isDataExist()
#### Проверить наличие данных по заявке
```JavaScript
ticket.issetData(string $key)
```
или
```JavaScript
ticket.isDataExist(string $key)
```
##### Описание:
Проверяет существуют ли данные заявки по заданному ключу.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Ключ наименование поля |
В качестве ключа можно указать:
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
##### Возвращает:
**bool** - подтверждение существования данных.
##### Пример:
```JavaScript
let Data = ticket.issetData('title');
```
или
```JavaScript
let Data = ticket.isDataExist('title');
```
# ticket.reloadCustomData()
### Перезагрузка кастомных данных
```JavaScript
ticket.reloadCustomData(bool $isReloadModel = false)
```
##### Описание:
Перезагружает кастомные поля заявки.
##### Атрибуты:
Имя | Тип | Описание |
isReloadModel | bool | Перезагружает и системные поля заявки, вызывая ticket.reloadTicket() |
##### Возвращает:
**bool** — подтверждение успешной перезагрузки.
# ticket.setAllCustomData()
### Переопределить список кастомных полей
```JavaScript
ticket.setAllCustomData(array $customData)
```
##### Описание:
Не переносится в БД. Будет переопределен массив кастомных полей в памяти, используется для внутренних целей задания значений полей.
##### Атрибуты:
Имя | Тип | Описание |
customData | array | Массив кастомных полей |
##### Возвращает:
**self** - тип указанный при вызове метода.
##### Пример:
```JavaScript
ticket.setAllCustomData([{
"место": "Место 01",
"время": "12:30"
}]);
```
# ticket.getAllCustomData()
### Получить список кастомных полей
```JavaScript
ticket.getAllCustomData()
```
##### Описание:
Возвращает значения всех кастомных полей.
##### Возвращает:
**array** - массив значений кастмных полей.
# ticket.setCustomData()
### Установить значение кастомного поля
```JavaScript
ticket.setCustomData(string $key, $value)
```
##### Описание:
Устанавливает значение кастомного поля. Не сохраняется в БД.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Ключ наименование поля |
value | self | Значение поля |
В качестве ключа можно указать:
- **названия всех произвольных полей заявки**;
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
##### Возвращает:
**self** - тип указанный при вызове метода.
##### Пример:
```JavaScript
ticket.setCustomData("место", "Место1");
```
# ticket.issetCustomData()
### Имеет ли значение кастомное поле
```JavaScript
ticket.issetCustomData(string $key)
```
##### Описание:
Проверяет существует ли ключ и не имеет ли он значение null.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Ключ наименование поля |
В качестве ключа можно указать:
- **названия всех произвольных полей заявки**;
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
##### Возвращает:
**bool** - подтверждение существования ключа.
##### Пример:
```JavaScript
ticket.issetCustomData("время");
```
# ticket.isCustomDataExist()
### Существует ли кастомное поле
```JavaScript
ticket.isCustomDataExist(string $key)
```
##### Описание:
Проверяет существует ли такой ключ в списке кастомных полей.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Ключ наименование поля |
В качестве ключа можно указать:
- **названия всех произвольных полей заявки**;
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
##### Возвращает:
**bool** - подтверждение существования ключа.
##### Пример:
```JavaScript
ticket.isCustomDataExist("место");
```
# ticket.getTicketTypeName()
#### Получить название типа заявки
```
ticket.getTicketTypeName()
```
##### Описание:
Находит название типа заявки.
##### Возвращает:
**string** — название типа заявки
или
**null** — если у заявки нет типа.
# ticket.getStatusId() и ticket.getAttr('status_id')
#### Получить ID статуса заявки
```JavaScript
ticket.getStatusId()
```
или
```
ticket.getAttr('status_id')
```
##### Описание:
Находит id статуса заявки.
##### Атрибуты:
Имя | Тип | Описание |
status\_id | string | Ключ id статуса заявки |
##### Возвращает:
**int** — id статуса заявки
или
**null** — если у заявки нет статуса.
# ticket.getStatusName()
#### Получить название статуса заявки
```
ticket.getStatusName()
```
##### Описание:
Находит название статуса заявки.
##### Возвращает:
**string** — название статуса заявки
или
**null** — если у заявки нет статуса.
# ticket.getStatusType()
#### Получить тип статуса заявки
```JavaScript
ticket.getStatusType()
```
##### Описание:
Находит тип статуса заявки.
##### Возвращает:
**string** — тип статуса заявки
или
**null** — если у заявки нет статуса или у статуса нет типа.
# ticket._sanitizeString()
#### Приведение названия статуса к стандартному виду
```JavaScript
ticket._sanitizeString($string)
```
##### Описание:
Вспомогательная функция используемая для приведения названия статуса к нижнему регистру и удаления лишних символов из названия.
##### Атрибуты:
Имя | Тип | Описание |
statusNme | string | Наименование статуса заявки |
##### Возвращает:
**string** - обновленное наименование статуса заявки.
В v8 скриптах не используется.
# ticket.isInStatus()
### Проверить статус заявки
```JavaScript
ticket.isInStatus($statusName)
```
##### Описание:
Проверить, что заявка находится в статусе с именем $statusName.
##### Атрибуты:
Имя | Тип | Описание |
statusName | string | Наименование статуса заявки |
##### Возвращает:
**bool** — подтверждение, что заявка находится в указанном статусе.
# ticket.setStatusId()
#### Установить статус заявки по id
```JavaScript
ticket.setStatusId(int|null $statusId, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null)
```
##### Описание:
Устанавливает указанный статус для заявки по id.
##### Атрибуты:
Имя | Тип | Описание |
statusId | int|null | id статуса заявки |
personQueueIdForLog | int|null | id очереди записываемый в лог |
personQueueTableForLog | string|null | Название таблицы-связки для очередей записываемое в лог |
##### Возвращает:
**bool** — подтверждение установки нового статуса.
# ticket.setStatusByName()
#### Установить статус заявки по имени
```JavaScript
ticket.setStatusByName(string $statusName, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null)
```
##### Описание:
Устанавливает указанный статус для заявки по имени.
##### Атрибуты:
Имя | Тип | Описание |
statusName | string | Наименование статуса заявки |
personQueueIdForLog | int|null | id очереди записываемый в лог |
personQueueTableForLog | string|null | Название таблицы-связки для очередей записываемое в лог |
##### Возвращает:
**bool** — подтверждение установки нового статуса.
# ticket.reloadTicket()
#### Загрузить заявку повторно
```JavaScript
ticket.reloadTicket()
```
##### Описание:
Загрузить заявку повторно из БД. Автоматически выполняется, например, в случае изменения статуса заявки, назначении другого исполнителя и т.п.
##### Возвращает:
**bool** — подтверждение повторной загрузки заявки.
# ticket.getAuthorPersonId()
#### Получить ID автора заявки
```JavaScript
ticket.getAuthorPersonId()
```
##### Описание:
Возвращает id автора заявки.
##### Возвращает:
**int** — id автора заявки в формате числа
или
**null** — если автор не найден.
# ticket.getAssignedPersonId()
#### Получить ID исполнителя заявки
```JavaScript
ticket.getAssignedPersonId()
```
##### Описание:
Возвращает id исполнителя заявки.
##### Возвращает:
**int** — id исполнителя заявки в формате числа
или
**null** — если исполнитель не найден.
# ticket.getClientPersonId()
#### Получить ID клиента заявки
```JavaScript
ticket.getClientPersonId()
```
##### Описание:
Возвращает id клиента заявки.
##### Возвращает:
**int** — id клиента заявки в формате числа
или
**null** — если клиент не найден.
# ticket.getAuthorPersonFullName()
#### Получить ФИО автора заявки
```JavaScript
ticket.getAuthorPersonFullName()
```
##### Описание:
Возвращает ФИО автора заявки.
##### Возвращает:
**string** — ФИО автора заявки.
# ticket.getAssignedPersonFullName()
### Получить ФИО исполнителя заявки
```JavaScript
ticket.getAssignedPersonFullName()
```
##### Описание:
Возвращает ФИО исполнителя заявки.
##### Возвращает:
**string** — ФИО исполнителя заявки.
# ticket.getClientPersonFullName()
### Получить ФИО клиента заявки
```JavaScript
ticket.getClientPersonFullName()
```
##### Описание:
Возвращает ФИО клиента заявки.
##### Возвращает:
**string** — ФИО клиента заявки.
# ticket.getAuthorPersonRoleId()
### Получить ID роли автора заявки
```JavaScript
ticket.getAuthorPersonRoleId()
```
##### Описание:
Возвращает ID роли автора заявки.
##### Возвращает:
**int** — ID роли автора заявки
или
**null** — если клиент или роль не найдены.
# ticket.getAssignedPersonRoleId()
#### Получить ID роли исполнителя заявки
```JavaScript
ticket.getAssignedPersonRoleId()
```
##### Описание:
Возвращает ID роли исполнителя заявки.
##### Возвращает:
**int** — ID роли исполнителя заявки
или
**null** — если клиент или роль не найдены.
# ticket.getClientPersonRoleId()
### Получить ID роли клиента заявки
```JavaScript
ticket.getClientPersonRoleId()
```
##### Описание:
Возвращает ID роли клиента заявки.
##### Возвращает:
**int** — ID роли клиента заявки
или
**null** — если клиент или роль не найдены.
# ticket.getAuthorPersonRoleName()
### Получить имя роли автора заявки
```JavaScript
ticket.getAuthorPersonRoleName()
```
##### Описание:
Возвращает имя роли автора заявки.
##### Возвращает:
**string** — имя роли автора заявки.
# ticket.getAssignedPersonRoleName()
#### Получить имя роли исполнителя заявки
```JavaScript
ticket.getAssignedPersonRoleName()
```
##### Описание:
Возвращает имя роли исполнителя заявки.
##### Возвращает:
**string** — имя роли исполнителя заявки.
# ticket.getClientPersonRoleName()
### Получить имя роли клиента заявки
```JavaScript
ticket.getClientPersonRoleName()
```
##### Описание:
Возвращает имя роли клиента заявки.
##### Возвращает:
**string** — имя роли клиента заявки.
# ticket.getAuthorPersonRoleTitle()
### Получить заголовок роли автора заявки
```JavaScript
ticket.getAuthorPersonRoleTitle()
```
##### Описание:
Возвращает заголовок роли автора заявки.
##### Возвращает:
**string** — заголовок роли автора заявки.
# ticket.getAssignedPersonRoleTitle()
#### Получить заголовок роли исполнителя заявки
```JavaScript
ticket.getAssignedPersonRoleTitle()
```
##### Описание:
Возвращает заголовок роли исполнителя заявки.
##### Возвращает:
**string** — заголовок роли исполнителя заявки.
# ticket.getClientPersonRoleTitle()
### Получить заголовок роли клиента заявки
```JavaScript
ticket.getClientPersonRoleTitle()
```
##### Описание:
Возвращает заголовок роли клиента заявки.
##### Возвращает:
**string** — заголовок роли клиента заявки.
# ticket.getAuthorPersonRoleFormattedTitle()
### Получить форматированное название роли автора заявки
```JavaScript
ticket.getAuthorPersonRoleFormattedTitle()
```
##### Описание:
Возвращает форматированное название роли автора заявки.
##### Возвращает:
**string** — форматированное название роли автора заявки.
# ticket.getAssignedPersonRoleFormattedTitle()
### Получить форматированное название роли исполнителя заявки
```JavaScript
ticket.getAssignedPersonRoleFormattedTitle()
```
##### Описание:
Возвращает форматированное название роли исполнителя заявки.
##### Возвращает:
**string** — форматированное название роли исполнителя заявки.
# ticket.getClientPersonRoleFormattedTitle()
### Получить форматированное название роли клиента заявки
```JavaScript
ticket.getClientPersonRoleFormattedTitle()
```
##### Описание:
Возвращает форматированное название роли клиента заявки.
##### Возвращает:
**string** — форматированное название роли клиента заявки.
# ticket.getPerson1Id()
### Получение id первой дополнительной персоны
```JavaScript
ticket.getPerson1Id()
```
##### Описание:
Возвращает id первой дополнительной персоны заявки.
##### Возвращает:
**int** — id персоны в формате числа
или
**null** — если персона не найдена.
# ticket.getPerson2Id()
### Получение id второй дополнительной персоны
```JavaScript
ticket.getPerson2Id()
```
##### Описание:
Возвращает id второй дополнительной персоны заявки.
##### Возвращает:
**int** — id персоны в формате числа
или
**null** — если персона не найдена.
# ticket.getPerson3Id()
### Получение id третьей дополнительной персоны
```JavaScript
ticket.getPerson3Id()
```
##### Описание:
Возвращает id третьей дополнительной персоны заявки.
##### Возвращает:
**int** — id персоны в формате числа
или
**null** — если персона не найдена.
# ticket.setPerson1Id()
### Установка id первой дополнительной персоны
```JavaScript
ticket.setPerson1Id(int|null $personId)
```
##### Описание:
Устанавливает id первой дополнительной персоны заявки.
##### Атрибуты:
Имя | Тип | Описание |
personId | int|null | ID персоны |
##### Возвращает:
**bool** — подтверждение установки значения.
# ticket.setPerson2Id()
### Установка id второй дополнительной персоны
```JavaScript
ticket.setPerson2Id(int|null $personId)
```
##### Описание:
Устанавливает id второй дополнительной персоны заявки.
##### Атрибуты:
Имя | Тип | Описание |
personId | int|null | ID персоны |
##### Возвращает:
**bool** — подтверждение установки значения.
# ticket.setPerson3Id()
### Установка id третьей дополнительной персоны
```JavaScript
ticket.setPerson3Id(int|null $personId)
```
##### Описание:
Устанавливает id третьей дополнительной персоны заявки.
##### Атрибуты:
Имя | Тип | Описание |
personId | int|null | ID персоны |
##### Возвращает:
**bool** — подтверждение установки значения.
# ticket.assignToNextQueuePerson()
#### Назначить заявку следующему исполнителю
```JavaScript
ticket.assignToNextQueuePerson(int $queueMode = 1, int|null $personQueueId = null, string|null $personQueueTable = null, int|null $currentAssignAttempt = null, bool $isIncRejectsCount = true, bool $isMoveToEndIfRejectsExceed = true)
```
##### Описание:
Назначить заявку следующему исполнителю. Исполнитель будет определен, как первый в очереди распределения по типу заявки.
Логика работы функции:
1. Ищет первую персону из очереди распределения, которой еще не назначали тикет (заявку).
2. Если персоны нет, то возвращаем false (чтобы остановить триггер распределения очереди).
3. Увеличивает счетчик отказов у найденной персоны.
4. Увеличивается счетчик отказов по найденному исполнителю.
5. Если кол-во отказов >= $maxRejects, то исполнитель переносится в конец очереди (исполнитель текущий, которого нашли, а не первый в очереди).
6. Назначает заявку найденной персоне.
Поиск исполнителя выполняется по следующим критериям:
- Исполнитель есть в очереди по типу заявки;
- Исполнитель активен в очереди распределения (включена соответствующая галка);
- Исполнителю еще не назначалась данная заявка.
Условие (количество отказов по исполнителю rejects\_count < $maxRejects+1) НЕ НУЖНО, т.к.:
1. Как только лимит превышен персона сразу будет перемещена в конец очереди, а счетчик сброшен.
2. Может возникнуть баг, если лимит превышен, персона никогда не попадет в выборку и ее счетчик не будет сброшен.
##### Атрибуты:
Имя | Тип | Описание |
queueMode | int | Режим работы очереди.
Для работы с очередью на основе видов заявок указывать не нужно, будет использовано значение по умолчанию **1**;
Для работы с очередью на основе видов очередей указать **2.**
|
personQueueId | int|null | id очереди |
personQueueTable | string|null | Название таблицы-связки для очередей |
currentAssignAttempt | int|null | Номер попытки прогона одного и того же тикета по той же очереди
|
isIncRejectsCount | bool | Увеличивать или нет счетчик попыток у персоны (в очереди исполнителей) |
isMoveToEndIfRejectsExceed | bool | Переносить или нет персону в конец очереди и сбрасывать счетчик попыток, если кол-во попыток превышено (превышает число указанное в настройках бота) |
##### Возвращает:
**bool** — подтверждение назначения заявки следующему исполнителю.
# ticket.moveAssignedPersonToEndOfQueue()
#### Перенести исполнителя в конец очереди
```JavaScript
ticket.moveAssignedPersonToEndOfQueue(int $queueMode = 1, int|null $personQueueId = null, string|null $personQueueTable = null, bool $isResetRejectsCount = true)
```
##### Описание:
Используется для скрипта "Приема заявки" в боте, чтобы переместить исполнителя в конец очереди, после того как он принял заявку.
Переносит персону, которой в данный момент назначен тикет, в конец очереди, при этом исполнитель заявки не меняется.
##### Атрибуты:
Имя | Тип | Описание |
queueMode | int | Режим работы очереди.
Для работы с очередью на основе видов заявок указывать не нужно, будет использовано значение по умолчанию **1**;
Для работы с очередью на основе видов очередей указать **2.**
|
personQueueId | int|null | id очереди |
personQueueTable | string|null | Название таблицы-связки для очередей |
isResetRejectsCount | bool | Обновить или нет счетчик попыток у персоны (в очереди исполнителей) |
##### Возвращает:
**bool** — подтверждение переноса исполнителя.
# ticket.assignToPersonById()
#### Назначить исполнителя заявки
```JavaScript
ticket.assignToPersonById(int|null $personId, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null, int|null $assignAttemptForLog = null)
```
##### Описание:
Назначает указанного исполнителя для заявки. Для сброса персоны необходимо указать null в аргументах функции.
##### Атрибуты:
Имя | Тип | Описание |
personId | int|null | id персоны-исполнителя |
personQueueIdForLog | int|null | id очереди записываемый в лог |
personQueueTableForLog | string|null | Название таблицы-связки для очередей записываемое в лог |
assignAttemptForLog | int|null | Номер попытки прогона одного и того же тикета по той же очереди записываемый в лог |
##### Возвращает:
**bool** — подтверждение назначения исполнителя.
# ticket.getAssignedPersonRejectsCount()
#### Получить количество отказов от заявок
```JavaScript
ticket.getAssignedPersonRejectsCount(int|null $personQueueId = null, string|null $personQueueTable = null): ?int
```
##### Описание:
Возвращает количество отказов от заявок для текущего исполнителя.
##### Атрибуты:
Имя | Тип | Описание |
personQueueId | int|null | id очереди |
personQueueTable | string|null | Название таблицы-связки для очередей |
##### Возвращает:
**int** — количество отказов от заявок в формате числа.
# ticket.setAssignedPersonRejectsCount()
#### Установить количество отказов от заявок
```JavaScript
ticket.setAssignedPersonRejectsCount(int $rejectsCount, int|null $personQueueId = null, string|null $personQueueTable = null)
```
##### Описание:
Установить количество отказов от заявок для текущего исполнителя.
##### Атрибуты:
Имя | Тип | Описание |
rejectsCount | int | Количество отказов |
personQueueId | int|null | id очереди |
personQueueTable | string|null | Название таблицы-связки для очередей |
##### Возвращает:
**bool** — подтверждение успешной установки отказов.
# ticket.incAssignedPersonRejectsCount()
#### Увеличить количество отказов от заявок
```JavaScript
ticket.incAssignedPersonRejectsCount(int|null $personQueueId = null, string|null $personQueueTable = null)
```
##### Описание:
Увеличить количество отказов от заявок для текущего исполнителя на 1. Метод не сбрасывает кол-во попыток, если значение будет больше чем указанное в боте максимальное количество отказов.
##### Атрибуты:
Имя | Тип | Описание |
personQueueId | int|null | id очереди |
personQueueTable | string|null | Название таблицы-связки для очередей |
##### Возвращает:
**bool** — подтверждение успешного увеличения отказов.
# ticket.assignToNextPersonAndMoveToEnd()
### Назначить заявку следующему исполнителю и перенести в конец очереди
```JavaScript
ticket.assignToNextPersonAndMoveToEnd()
```
##### Описание:
Назначает заявку следующему исполнителю и переносит его в конец очереди.
##### Возвращает:
**bool** — подтверждение назначения заявки.
# ticket.getAllData()
### Получить значение всех данных заявки
```JavaScript
ticket.getAllData()
```
##### Описание:
Возвращает значение всех данных заявки.
##### Возвращает:
**array** - массив данных заявки:
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
# ticket.setData()
### Установить значение данных заявки по ключу
```JavaScript
ticket.setData(string $key, $value)
```
##### Описание:
Устанавливает значение данных заявки по ключу.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Ключ наименование поля |
value | mixed | Значение данных |
В качестве ключа можно указать:
- **id** - id заявки;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **author\_person\_id** - id автора заявки;
- **client\_person\_id** - id клиента заявки;
- **assigned\_person\_id** - id исполнителя заявки;
- **ticket\_type\_id** - id вида заявки, виды заявки создаются вручную;
- **payment\_type\_id** - id способа оплаты. Доступные значения:
- 0 - PAYMENT\_TYPE\_NONE;
- **1** - PAYMENT\_TYPE\_ROBOKASSA;
- **2** - PAYMENT\_TYPE\_YANDEXKASSA;
- **3** - PAYMENT\_TYPE\_CASH;
- **status\_id** - id статуса заявки;
- **title** - заголовок заявки;
- **description** - описание заявки;
- **created\_at** - время создания заявки;
- **updated\_at** - время обновления заявки;
- **deleted\_at** - время удаления заявки;
- все системные поля заявки (по английски).
##### Возвращает:
**self** - установленные данные.
# ticket.loadCustomDataIfNotLoaded()
### Загрузить кастомные данные
```JavaScript
ticket.loadCustomDataIfNotLoaded(bool $isReloadModel = false)
```
##### Описание:
Загружает кастомные данные, если они не загружены.
##### Атрибуты:
Имя | Тип | Описание |
isReloadModel | bool |
|
##### Возвращает:
**bool** - подтверждение загрузки.
# ticket.getSubtotalFormatted()
### Узнать форматированную промежуточную стоимость заказа
```JavaScript
ticket.getSubtotalFormatted()
```
##### Описание:
Возвращает форматированную промежуточную стоимость заказа.
##### Возвращает:
**string** - промежуточная стоимость заказа.
# ticket.getTotalFeeFormatted()
### Узнать форматированную стоимость заказа
```JavaScript
ticket.getTotalFeeFormatted()
```
##### Описание:
Возвращает форматированную стоимость заказа.
##### Возвращает:
**string** - стоимость заказа.
# ticket.getDeliveryFeeFormatted()
### Узнать форматированную стоимость доставки
```JavaScript
ticket.getDeliveryFeeFormatted()
```
##### Описание:
Возвращает форматированную стоимость доставки.
##### Возвращает:
**string** - стоимость доставки.
# ticket.getTotalFormatted()
### Узнать форматированную итоговую стоимость заказа
```JavaScript
ticket.getTotalFormatted()
```
##### Описание:
Возвращает форматированную итоговую стоимость заказа.
##### Возвращает:
**string** - итоговая стоимость заказа.
# ticket.getTicketLines()
### Получить массив объектов ScriptTicketLine
```JavaScript
ticket.getTicketLines()
```
##### Описание:
Возвращает массив объектов ScriptTicketLine.
##### Возвращает:
**ScriptTicketLine** - массив объектов.
# Методы ticketStatuses
# ticketStatuses.reload()
### Перезагрузить все статусы из БД
```JavaScript
ticketStatuses.reload()
```
##### Описание:
Перезагружает все статусы из БД.
##### Возвращает:
**bool** - подтверждение перезагрузки.
# ticketStatuses.getCollection()
#### Получить Laravel Collection
```JavaScript
ticketStatuses.getCollection()
```
##### Описание:
Возвращает коллекцию статусов заявок.
##### Возвращает:
**?Collection** - данные статусов в виде коллекции.
##### Пример:
```JavaScript
let collection = ticketStatuses.find([['name', 'like', 'СТАТУС']], true);
status = collection.last();
status = status['_object'] ? status['_object'] : null;
lead.setAttr('7_status_from_collection', status ? status.name : null);
collection = collection.reload();
collection = ticketStatuses.getCollection();
statuses = collection.where('name', '=', 'статус 1');
status = statuses.first();
status = (status && status['_object']) ? status['_object'] : null;
lead.setAttr('8_status_from_collection', status ? status.name : null);
```
# ticketStatuses.find()
#### Поиск статусов
```JavaScript
ticketStatuses.find(array|object|null $where, bool $isReturnCollection = false)
```
##### Описание:
Находит статусы соответствующие указанным данным.
##### Атрибуты:
Имя | Тип | Описание |
where | array|object|null | Параметр по которому будет проверяться соответствие с найденными статусами |
isReturnCollection | bool | Параметр позволяющий вернуть значения в виде коллекции |
##### Возвращает:
**?ScriptTicketStatus** - v8 обертка над моделью
или
**Collection** - данные статусов в виде коллекции.
##### Пример:
```JavaScript
let statuses = ticketStatuses.find([['name', 'like', 'СТАТУС']]);
lead.setAttr('6_found_ticket_statuses_count', statuses.length);
let collection = ticketStatuses.find([['name', 'like', 'СТАТУС']], true);
status = collection.last();
status = status['_object'] ? status['_object'] : null;
lead.setAttr('7_status_from_collection', status ? status.name : null);
```
### Атрибуты и методы ScriptTicketStatus
После получения **ScriptTicketStatus** над ним можно работать с помощью следующих методов для получения необходимых значений:
Описание | Метод | Возвращаемое значение |
Получение элемента
| - .last()
- .first()
- .where()
| **?string** |
Обновление
| - .reload()
| **bool** |
Получение даты создания
| - created\_at
- createdAt
- getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null): ?string
- createdAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **?string** |
Получение даты обновления
| - updated\_at
- updatedAt
- getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null): ?string
- updatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **?string** |
Получение даты удаления
| - deleted\_at
- deletedAt
- getDeletedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null): ?string
- deletedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **?string** |
# ticketStatuses.findById()
#### Поиск статуса по ID
```JavaScript
ticketStatuses.findById(string|int|null $id)
```
##### Описание:
Находит статус соответствующий указанному id.
##### Атрибуты:
Имя | Тип | Описание |
id | string|int|null | ID статуса заявки |
##### Возвращает:
**?ScriptTicketStatus** - v8 обертка над моделью
##### Пример:
```JavaScript
let status = ticketStatuses.findById(1095);
lead.setAttr('2_found_ticket_status_by_id', status ? status.id : null);
```
### Атрибуты и методы ScriptTicketStatus
После получения **ScriptTicketStatus** над ним можно работать с помощью следующих методов для получения необходимых значений:
Описание | Метод | Возвращаемое значение |
Получение элемента
| - .last()
- .first()
- .where()
| **?string** |
Обновление
| - .reload()
| **bool** |
Получение даты создания
| - created\_at
- createdAt
- getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null): ?string
- createdAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **?string** |
Получение даты обновления
| - updated\_at
- updatedAt
- getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null): ?string
- updatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **?string** |
Получение даты удаления
| - deleted\_at
- deletedAt
- getDeletedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null): ?string
- deletedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **?string** |
# ticketStatuses.findByName()
#### Поиск статуса по имени
```JavaScript
ticketStatuses.findByName(string $name)
```
##### Описание:
Находит статус соответствующий указанному имени.
##### Атрибуты:
Имя | Тип | Описание |
name | string | Имя статуса заявки |
##### Возвращает:
**?ScriptTicketStatus** - v8 обертка над моделью.
##### Пример:
```JavaScript
let status = ticketStatuses.findByName('статус 1');
lead.setAttr('0_found_ticket_status_by_name', status ? status.id : null);
```
### Атрибуты и методы ScriptTicketStatus
После получения **ScriptTicketStatus** над ним можно работать с помощью следующих методов для получения необходимых значений:
Описание | Метод | Возвращаемое значение |
Получение элемента
| - .last()
- .first()
- .where()
| **?string** |
Обновление
| - .reload()
| **bool** |
Получение даты создания
| - created\_at
- createdAt
- getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null): ?string
- createdAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **?string** |
Получение даты обновления
| - updated\_at
- updatedAt
- getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null): ?string
- updatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **?string** |
Получение даты удаления
| - deleted\_at
- deletedAt
- getDeletedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null): ?string
- deletedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **?string** |
# ticketStatuses.findAllByNames()
#### Поиск статусов по имени
```JavaScript
ticketStatuses.findAllByNames(string|array|object|null $names, string $operator = '=', bool $isReturnCollection = false)
```
##### Описание:
Находит статусы соответствующие указанным именам.
##### Атрибуты:
Имя | Тип | Описание |
names | string|array|object|null | Имя статуса |
operator | string | Оператор |
isReturnCollection | bool | Параметр позволяющий вернуть значения в виде коллекции |
##### Возвращает:
**Collection** - данные статусов в виде коллекции.
##### Пример:
```JavaScript
let statuses = ticketStatuses.findAllByNames('статус', 'like');
lead.setAttr('1_found_ticket_status_by_names_like', statuses.length);
statuses = ticketStatuses.findAllByNames(['статус 1', 'Статус 2'], 'IN');
lead.setAttr('3_found_ticket_statuses_by_names_count', statuses.length);
```
# ticketStatuses.findAllByTypes()
#### Поиск статусов по типу статуса
```JavaScript
ticketStatuses.findAllByTypes(string|array|object|null $types, string $operator = '=', bool $isReturnCollection = false)
```
##### Описание:
Находит статусы соответствующие указанным типам.
##### Атрибуты:
Имя | Тип | Описание |
types | string|array|object|null | Тип статуса |
operator | string | Оператор |
isReturnCollection | bool | Параметр позволяющий вернуть значения в виде коллекции |
На данный момент поддерживаются следующие типы статусов:
- NEW
- ASSIGNED
- PENDING\_CONFIRMATION
- CONFIRMED
- CANCELLED
- CLOSED
- PENDING\_PAYMENT
- PAYMENT\_FAILED
- PAID
- PREPARING\_ORDER
- DELIVERY\_IN\_PROGRESS
- WAITS\_FOR\_CUSTOMER\_PICK\_UP
- DELIVERED
##### Возвращает:
**Collection** - данные статусов в виде коллекции.
##### Пример:
```JavaScript
var statuses = ticketStatuses.findAllByTypes(['ASSIGNED', 'NEW'], 'IN');
lead.setAttr('4_found_ticket_statuses_by_types_in_count', statuses.length);
statuses = ticketStatuses.findAllByTypes('ASSIGNED', 'like');
lead.setAttr('5_found_ticket_statuses_by_types_like_count', statuses.length);
```
# Методы person
# person.update()
### Обновить персону
```JavaScript
person.update($data)
```
##### Описание:
Обновляет данные персоны в соответствии с БД.
##### Атрибуты:
Имя | Тип | Описание |
data
| json | Данные о персоне в формате json. Возможные поля расписаны ниже |
person\_role\_id
| integer | Id персоны |
is\_external
| bool | Если не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом.
А 0 означает что персона является работником бизнеса
|
user\_id
| integer | Id пользователя, привязываемого к персоне |
firstname
| string|null | Имя персоны |
lastname
| string|null | Фамилия персоны |
middlename
| string|null | Отчество персоны |
email
| string|null | Адрес электронной почты персоны |
phone
| string|null | Номер телефона персоны |
organization\_name
| string|null | Название организации |
organization\_address
| string|null | Адрес организации |
comment
| string|null | Комментарий к персоне |
##### Возвращает:
**bool** - подтверждение обновления данных.
##### Пример:
```JavaScript
person.update({
'is_external': 1,
'firstname': 'Иван',
'lastname': 'Иванов'
});
```
# person.delete()
### Удалить персону
```JavaScript
person.delete()
```
##### Описание:
Удаляет персону лида.
##### Возвращает:
**bool** - подтверждение удаления персоны.
# person.getAllData()
### Получить все поля персоны
```JavaScript
person.getAllData()
```
##### Описание:
Возвращает значения всех полей персоны лида в виде массива.
Возвращает:
**array** - массив всех значений полей персоны:
- **id** - id персоны;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **person\_role\_id** - id роли;
- **is\_external** - значение поля **Сотрудник/Клиент**;
- **user\_id** - id пользователя;
- **firstname** - имя;
- **lastname** - фамилия;
- **middlename** - отчество;
- **email** - адрес электронной почты;
- **phone** - номер телефона;
- **organization\_name** - название организации;
- **organization\_address** - адрес организации;
- **comment** - комментарий;
- **created\_at** - дата создания;
- **updated\_at** - дата последнего редактирования;
- **deleted\_at** - дата удаления;
- все системные поля персоны (по английски).
##### Пример:
```JavaScript
let AllData = person.getAllData();
let Data2 = AllData[1];
```
# person.setData()
### Установить поле персоны
```JavaScript
person.setData(string $key, $value)
```
##### Описание:
Заполняет указанное поле персоны лида указанным значением.
##### Атрибуты:
Имя | Тип | Описание |
key
| string | Ключ наименование поля |
value
| mixed | Значение вводимое в поле |
В качестве ключа можно указать:
- **id** - id персоны;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **person\_role\_id** - id роли;
- **is\_external** - значение поля **Сотрудник/Клиент**;
- **user\_id** - id пользователя;
- **firstname** - имя;
- **lastname** - фамилия;
- **middlename** - отчество;
- **email** - адрес электронной почты;
- **phone** - номер телефона;
- **organization\_name** - название организации;
- **organization\_address** - адрес организации;
- **comment** - комментарий;
- **created\_at** - дата создания;
- **updated\_at** - дата последнего редактирования;
- **deleted\_at** - дата удаления;
- все системные поля персоны (по английски).
##### Возвращает:
**self** - значение отредактированного поля в соответствующем формате.
##### Пример:
```JavaScript
person.setData('email', 'user@mail.ru');
```
# person.getData()
### Получить значение данных персоны
```JavaScript
person.getData(string $key)
```
##### Описание:
Возвращает значение данных персоны по ключу или названию поля БД.
##### Атрибуты:
Имя | Тип | Описание |
key
| string | Ключ наименование поля |
В качестве ключа можно указать:
- **id** - id персоны;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **person\_role\_id** - id роли;
- **is\_external** - значение поля **Сотрудник/Клиент**;
- **user\_id** - id пользователя;
- **firstname** - имя;
- **lastname** - фамилия;
- **middlename** - отчество;
- **email** - адрес электронной почты;
- **phone** - номер телефона;
- **organization\_name** - название организации;
- **organization\_address** - адрес организации;
- **comment** - комментарий;
- **created\_at** - дата создания;
- **updated\_at** - дата последнего редактирования;
- **deleted\_at** - дата удаления;
- все системные поля персоны (по английски).
##### Возвращает:
**self** - значение запрашиваемого поля в соответствующем формате.
##### Пример:
```JavaScript
let createdAt = person.getData('created_at');
```
# person.issetData() и person.isDataExist()
### Проверить наличие данных по персоне
```JavaScript
person.issetData(string $key)
```
или
```
person.isDataExist(string $key)
```
##### Описание:
Проверяет существование данных персоны лида.
##### Атрибуты:
Имя | Тип | Описание |
key
| string | Ключ наименование поля |
В качестве ключа можно указать:
- **id** - id персоны;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **person\_role\_id** - id роли;
- **is\_external** - значение поля **Сотрудник/Клиент**;
- **user\_id** - id пользователя;
- **firstname** - имя;
- **lastname** - фамилия;
- **middlename** - отчество;
- **email** - адрес электронной почты;
- **phone** - номер телефона;
- **comment** - комментарий;
- **created\_at** - дата создания;
- **updated\_at** - дата последнего редактирования;
- **deleted\_at** - дата удаления;
- все системные поля персоны (по английски).
##### Возвращает:
**bool** - подтверждение существования данных.
##### Пример:
```JavaScript
let DataExist = person.issetData('phone');
```
или
```JavaScript
let DataExist = person.isDataExist('phone');
```
# person.getId()
### Получить ID персоны
```JavaScript
person.getId()
```
##### Описание:
Возвращает id персоны привязанной к лиду.
##### Возвращает:
**int** - id персоны в формате числа.
##### Пример:
```JavaScript
let PersonId = person.getId();
lead.setAttr('PersonId', PersonId);
```
# person.getFullName() и person.getFIO()
### Получить полное имя персоны
```JavaScript
person.getFullName()
person.getFIO()
```
##### Описание:
Возвращает полное имя персоны лида в виде **Фамилия + Имя + Отчество**.
##### Возвращает:
**string** - полное имя персоны.
##### Пример:
```JavaScript
let PersonName = person.getFullName();
lead.setAttr('PersonName', PersonName);
```
# person.getRoleId()
### Получить ID роли персоны
```JavaScript
person.getRoleId()
```
##### Описание:
Возвращает id роли привязанной к персоне лида.
##### Возвращает:
**int** - id роли персоны в формате числа.
##### Пример:
```JavaScript
let RoleId = person.getRoleId();
lead.setAttr('RoleId', RoleId);
```
# person.getRoleName()
### Получить название роли персоны
```JavaScript
person.getRoleName()
```
##### Описание:
Возвращает название роли привязанной к персоне лида.
##### Возвращает:
**string** - название роли персоны.
##### Пример:
```JavaScript
let RoleName = person.getRoleName();
lead.setAttr('RoleName', RoleName);
```
# person.getRoleTitle()
### Получить заголовок роли персоны
```JavaScript
person.getRoleTitle()
```
##### Описание:
Возвращает заголовок роли привязанной к персоне лида.
##### Возвращает:
**string** - заголовок роли персоны.
##### Пример:
```JavaScript
let RoleTitle = person.getRoleTitle();
lead.setAttr('RoleTitle', RoleTitle);
```
# person.getRoleFormattedTitle()
### Получить форматированное название роли персоны
```JavaScript
person.getRoleFormattedTitle()
```
##### Описание:
Возвращает форматированное название роли персоны лида.
Будет возвращено:
- Заголовок роли, если он указан, иначе
- Имя роли, если оно указано, иначе
- ID роли.
##### Возвращает:
**string** - форматированное название роли персоны.
##### Пример:
```JavaScript
let FormattedTitle = person.getRoleFormattedTitle();
lead.setAttr('FormattedTitle', FormattedTitle);
```
# person.getPhone()
### Получить номер телефона персоны
```JavaScript
person.getPhone()
```
##### Описание:
Находит номер телефона персоны лида.
##### Возвращает:
**string** - номер телефона персоны в формате строки.
# person.setPhone()
### Установить номер телефона персоны
```JavaScript
person.setPhone(?string $phone)
```
##### Описание:
Устанавливает значение номера телефона персоны лида.
##### Атрибуты:
Имя | Тип | Описание |
phone
| string | Номер телефона |
##### Возвращает:
**bool** - подтверждение установки значения.
##### Пример:
```JavaScript
person.setPhone('+71234567890');
```
# person.getEmail()
### Получить почту персоны
```JavaScript
person.getEmail()
```
##### Описание:
Находит адрес электронной почты персоны лида.
##### Возвращает:
**string** - адрес электронной почты персоны в формате строки.
# person.addToQueue()
### Добавление персоны в очередь
```JavaScript
person.addToQueue(?int $personQueueId = null, ?string $personQueueTable = null, ?int $ticketTypeId = null, bool $isActive = true, int $rejectsCount = 0)
```
##### Описание:
Добавляет персону в указанную очередь.
##### Атрибуты:
Имя | Тип | Описание |
personQueueId | int | ID вида очереди, в которую будет добавлена персона
|
personQueueTable | string | Наименование кастомной таблицы
|
ticketTypeId | int | ID вида заявки, в очередь которой будет добавлена персона
|
isActive | bool | Активность персоны в очереди
|
rejectsCount | int | Количество отказов от заявки
|
Одновременно в методе может быть указан либо только вид заявки, либо только вид очереди (одна из этих переменных должна содержать значение null). Так же по видам заявок не должна допускаться установка значения кастомной таблицы
##### Возвращает:
**int** - id добавленной персоны.
##### Пример:
```JavaScript
person.addToQueue(null, null, 2541);
```
# person.removeFromQueue()
### Удаление персоны из очереди
```JavaScript
person.removeFromQueue(?int $personQueueId = null, ?string $personQueueTable = null, ?int $ticketTypeId = null)
```
##### Описание:
Удаляет персону из указанной очереди.
##### Атрибуты:
Имя | Тип | Описание |
personQueueId | int | ID вида очереди
|
personQueueTable | string | Наименование кастомной таблицы
|
ticketTypeId | int | ID вида заявки
|
Одновременно в методе может быть указан либо только вид заявки, либо только вид очереди (одна из этих переменных должна содержать значение null)
##### Возвращает:
**bool** - подтверждение удаления персоны.
##### Пример:
```JavaScript
person.removeFromQueue(3527, "table");
```
# person.moveToEndOfQueue()
### Перемещение персоны в конец очереди
```JavaScript
person.moveToEndOfQueue(int $queueMode = 1, ?int $personQueueId = null, ?string $personQueueTable = null, ?int $ticketTypeId = null, bool $isResetRejectsCount = true)
```
##### Описание:
Перемещает персону в конец указанной очереди, либо в конец нескольких очередей.
##### Атрибуты:
Имя | Тип | Описание |
queueMode | int | Режим работы очереди.
Для работы с очередью на основе видов заявок указывать не нужно, будет использовано значение по умолчанию **1**;
Для работы с очередью на основе видов очередей указать **2**
|
personQueueId | ?int | id очереди |
personQueueTable | ?string | Название таблицы-связки для очередей |
ticketTypeIds
| int|array|object|null | **$ticketTypeIds = null**, то персона будет перемещена в конец очереди по всем типам заявок;
**$ticketTypeIds = число**, то персона будет перемещена в конец очереди по указанному типу заявки;
**$ticketTypeIds = строка** **с перечислениями** типов заявок через запятую, то персона будет перемещена в конец очереди по указанным типам заявок (например 1,2,3);
**$ticketTypeIds = строка без перечислений** через запятую, ticketTypeIds будет приведен к типу = число и персона будет перемещена в конец очереди по указанному типу заявки;
**$ticketTypeIds = json массив**, то персона будет перемещена в конец очереди по всем типам заявок (например \[1,2,3\]) |
isResetRejectsCount
| bool | Обнулить количество отказов персоны |
##### Возвращает:
**bool** - подтверждение удачного перемещения персоны.
##### Пример:
```JavaScript
person.moveToEndOfQueue(2, 3352, null, [1013]);
persons.moveToEndOfQueue();
```
# person.setIsActiveInQueue()
### Активация/деактивация персоны в очереди
```JavaScript
person.setIsActiveInQueue(bool $isActive = true)
```
##### Описание:
Включает или выключает параметр **Активна** персоны в очереди.
##### Атрибуты:
Имя | Тип | Описание |
isActive
| bool | Активировать или деактивировать персону в очереди |
##### Возвращает:
**bool** - подтверждение активации или деактивации.
##### Пример:
```
persons.setIsActiveInQueue(true);
```
# person.getLeads()
### Получить лиды персоны
```JavaScript
person.getLeads(bool $isFindInAllBusinessBots = false)
```
##### Описание:
Возвращает лиды персоны.
##### Атрибуты:
Имя | Тип | Описание |
isFindInAllBusinessBots
| bool | Поиск по всем ботам бизнеса |
##### Возвращает:
**array** - массив лидов персоны.
# Методы personQueues
# personQueues.find()
### Найти очередь исполнителей
```JavaScript
personQueues.find($where, bool $isReturnCollection = false)
```
##### Описание:
Находит очередь исполнителей соответствующую указанным значениям.
##### Атрибуты:
Имя | Тип | Описание |
where
| array | Параметр по которому будет проверяться соответствие с найденными очередями |
isReturnCollection
| bool | Параметр позволяющий вернуть значения в виде коллекции |
##### Возвращает:
**ScriptPersonQueue\[\]** - обертка вокруг записи из таблицы person\_queues
или
**Collection** - данные очередей в виде коллекции.
##### Пример:
### Атрибуты и методы ScriptPersonQueue
Описание | Метод | Возвращаемое значение |
Получение id
| - .id
- .getId()
| **int** |
Получение кода | - .code
- .getCode()
| **string** |
Получение активности | - .is\_enabled
- .getIsEnabled()
| **bool** |
Получение заголовка | - .title
- .getTitle()
| **string** |
Получение даты создания | - .created\_at
- .createdAt
- .getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
- .createdAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **string** |
Получение даты обновления | - .updated\_at
- .updatedAt
- .getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
- .updatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **string** |
Обновление | - .reload()
| **bool** |
Приводит $title к нижнему регистру и сравнивает с заголовком очереди | - .isSameTitle($title)
| **bool** |
# personQueues.findById()
### Найти очередь исполнителей по id
```JavaScript
personQueues.findById(string|int|null $id)
```
##### Описание:
Находит очередь исполнителей соответствующую указанному id.
##### Атрибуты:
Имя | Тип | Описание |
id
| string|int|null | ID очереди исполнителей |
##### Возвращает:
**ScriptPersonQueue\[\]** - обертка вокруг записи из таблицы person\_queues.
### Атрибуты и методы ScriptPersonQueue
Описание | Метод | Возвращаемое значение |
Получение id
| - .id
- .getId()
| **int** |
Получение кода | - .code
- .getCode()
| **string** |
Получение активности | - .is\_enabled
- .getIsEnabled()
| **bool** |
Получение заголовка | - .title
- .getTitle()
| **string** |
Получение даты создания | - .created\_at
- .createdAt
- .getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
- .createdAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **string** |
Получение даты обновления | - .updated\_at
- .updatedAt
- .getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
- .updatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **string** |
Обновление | - .reload()
| **bool** |
Приводит $title к нижнему регистру и сравнивает с заголовком очереди | - .isSameTitle($title)
| **bool** |
# personQueues.findAllByTitles()
### Найти очереди исполнителей по заголовку
```JavaScript
personQueues.findAllByTitles(string|array|object|null $titles, bool $isEnabled = null, string $findTitleOperator = 'IN', bool $isReturnCollection = false)
```
##### Описание:
Находит очереди исполнителей соответствующим указанным заголовкам.
##### Атрибуты:
Имя | Тип | Описание |
titles
| string|array|object|null | Заголовки очередей |
isEnabled
| bool | Активность очереди |
findTitleOperator
| string | Оператор заголовка, по умолчанию 'IN' |
isReturnCollection
| bool | Параметр позволяющий вернуть значения в виде коллекции |
##### Возвращает:
**ScriptPersonQueue\[\]** - обертка вокруг записи из таблицы person\_queues
или
**Collection** - данные очередей в виде коллекции.
##### Пример:
### Атрибуты и методы ScriptPersonQueue
Описание | Метод | Возвращаемое значение |
Получение id
| - .id
- .getId()
| **int** |
Получение кода | - .code
- .getCode()
| **string** |
Получение активности | - .is\_enabled
- .getIsEnabled()
| **bool** |
Получение заголовка | - .title
- .getTitle()
| **string** |
Получение даты создания | - .created\_at
- .createdAt
- .getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
- .createdAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **string** |
Получение даты обновления | - .updated\_at
- .updatedAt
- .getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
- .updatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **string** |
Обновление | - .reload()
| **bool** |
Приводит $title к нижнему регистру и сравнивает с заголовком очереди | - .isSameTitle($title)
| **bool** |
# personQueues.findByCode()
### Найти очередь исполнителей по коду
```JavaScript
personQueues.findByCode(string $code, bool $isEnabled = null, string $findCodeOperator = '=')
```
##### Описание:
Находит очередь исполнителей соответствующую указанному коду.
##### Атрибуты:
Имя | Тип | Описание |
code
| string | Код очереди |
isEnabled
| bool | Активность очереди |
findCodeOperator
| string | Оператор кода, по умолчанию '=' |
##### Возвращает:
**ScriptPersonQueue\[\]** - обертка вокруг записи из таблицы person\_queues.
##### Пример:
```JavaScript
let personQueue = personQueues.findByCode('хоккей');
let personQueueId = personQueue.id;
```
### Атрибуты и методы ScriptPersonQueue
Описание | Метод | Возвращаемое значение |
Получение id
| - .id
- .getId()
| **int** |
Получение кода | - .code
- .getCode()
| **string** |
Получение активности | - .is\_enabled
- .getIsEnabled()
| **bool** |
Получение заголовка | - .title
- .getTitle()
| **string** |
Получение даты создания | - .created\_at
- .createdAt
- .getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
- .createdAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **string** |
Получение даты обновления | - .updated\_at
- .updatedAt
- .getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
- .updatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **string** |
Обновление | - .reload()
| **bool** |
Приводит $title к нижнему регистру и сравнивает с заголовком очереди | - .isSameTitle($title)
| **bool** |
# personQueues.findAllByCodes()
### Найти очереди исполнителей по коду
```JavaScript
personQueues.findAllByCodes($codes, bool $isEnabled = null, string $findCodeOperator = 'IN', bool $isReturnCollection = false)
```
##### Описание:
Находит очереди исполнителей соответствующим указанным кодам.
##### Атрибуты:
Имя | Тип | Описание |
codes
| string|array|object|null | Коды очередей |
isEnabled
| bool | Активность очереди |
findCodeOperator
| string | Оператор кода, по умолчанию 'IN' |
isReturnCollection
| bool | Параметр позволяющий вернуть значения в виде коллекции |
##### Возвращает:
**ScriptPersonQueue\[\]** - обертка вокруг записи из таблицы person\_queues
или
**Collection** - данные очередей в виде коллекции.
##### Пример:
### Атрибуты и методы ScriptPersonQueue
Описание | Метод | Возвращаемое значение |
Получение id
| - .id
- .getId()
| **int** |
Получение кода | - .code
- .getCode()
| **string** |
Получение активности | - .is\_enabled
- .getIsEnabled()
| **bool** |
Получение заголовка | - .title
- .getTitle()
| **string** |
Получение даты создания | - .created\_at
- .createdAt
- .getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
- .createdAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **string** |
Получение даты обновления | - .updated\_at
- .updatedAt
- .getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
- .updatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **string** |
Обновление | - .reload()
| **bool** |
Приводит $title к нижнему регистру и сравнивает с заголовком очереди | - .isSameTitle($title)
| **bool** |
# personQueues.reload()
### Обновить очередь исполнителей
```JavaScript
personQueues.reload()
```
##### Описание:
Обновляет данные очередей исполнителей
##### Возвращает:
**bool** - подтверждение обновления очередей.
# personQueues.getCollection()
### Получить коллекцию очередей исполнителей
```JavaScript
personQueues.getCollection()
```
##### Описание:
Возвращает коллекцию очередей исполнителей.
##### Возвращает:
**Collection** - данные очередей в виде коллекции.
# personQueues.findByName()
### Найти очередь исполнителей по наименованию
```JavaScript
personQueues.findByName(string $name, bool $isEnabled = null)
```
##### Описание:
Возвращает очередь исполнителей по наименованию.
##### Атрибуты:
Имя | Тип | Описание |
name
| string | Наименование очереди исполнителей |
isEnabled
| bool | Активна или нет |
##### Возвращает:
**ScriptPersonQueue\[\]** - обертка вокруг записи из таблицы person\_queues.
### Атрибуты и методы ScriptPersonQueue
Описание | Метод | Возвращаемое значение |
Получение id
| - .id
- .getId()
| **int** |
Получение кода | - .code
- .getCode()
| **string** |
Получение активности | - .is\_enabled
- .getIsEnabled()
| **bool** |
Получение заголовка | - .title
- .getTitle()
| **string** |
Получение даты создания | - .created\_at
- .createdAt
- .getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
- .createdAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **string** |
Получение даты обновления | - .updated\_at
- .updatedAt
- .getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
- .updatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **string** |
Обновление | - .reload()
| **bool** |
Приводит $title к нижнему регистру и сравнивает с заголовком очереди | - .isSameTitle($title)
| **bool** |
# personQueues.findAllByNames()
### Найти очереди исполнителей по наименованию
```JavaScript
personQueues.findAllByNames($names, bool $isEnabled = null, string $findNameOperator = 'IN', bool $isReturnCollection = false)
```
##### Описание:
Возвращает очереди исполнителей по наименованию.
##### Атрибуты:
Имя | Тип | Описание |
names
| string | Наименование очереди исполнителей |
isEnabled
| bool | Активна или нет |
findNameOperator
| string | Найти имя оператора |
isReturnCollection
| bool | Вернуть коллекцию |
##### Возвращает:
**ScriptPersonQueue\[\]** - обертка вокруг записи из таблицы person\_queues
или
**Collection** - коллекция записей из таблицы очередей.
### Атрибуты и методы ScriptPersonQueue
Описание | Метод | Возвращаемое значение |
Получение id
| - .id
- .getId()
| **int** |
Получение кода | - .code
- .getCode()
| **string** |
Получение активности | - .is\_enabled
- .getIsEnabled()
| **bool** |
Получение заголовка | - .title
- .getTitle()
| **string** |
Получение даты создания | - .created\_at
- .createdAt
- .getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
- .createdAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **string** |
Получение даты обновления | - .updated\_at
- .updatedAt
- .getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
- .updatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
| **string** |
Обновление | - .reload()
| **bool** |
Приводит $title к нижнему регистру и сравнивает с заголовком очереди | - .isSameTitle($title)
| **bool** |
# Методы table
# table.createItem()
### Создание записи
```JavaScript
table.createItem(string $tableName, array|object $data)
```
##### Описание:
Создает запись в таблице и возвращает значение этой записи, как объект.
##### Атрибуты:
Имя | Тип | Описание |
tableName
| string | Наименование таблицы, в которой будет создана запись |
data | array | object ( json{} ) | Значения | значение записи |
##### Возвращает:
**ScriptCustomTableItem** - все значения полей записи в формате объекта.
##### Пример:
Добавление данных в кастомную таблицу **regions**:
```JavaScript
var region = {
"name": "Юго-Восточный",
"comment": "Cоздано через v8"
};
var newRegion = table.createItem('regions', region);
```
# table.find()
### Поиск записей
```JavaScript
table.find(string $tableName, array|object $columns = [], array|object $where = [], array|object $orderBy = [], ?int $limit = null, ?int $offset = null): array
```
##### Описание:
Ищет записи в таблице и возвращает их в виде массива объектов.
##### Атрибуты:
Имя | Тип | Описание |
tableName | string | Наименование таблицы, в которой будет найдена запись |
columns
| array | object ( json{} ) | Столбцы которые будут возвращены в ответе. При поиске из основной таблицы указывается только наименование поля, при поиске в связанной таблице указывается в формате: **алиас.поле**. Если нужно тянуть несколько полей с одинаковыми именами, то указываем алиас результирующего поля, например: 'products.id as product\_id' |
where
| array | object ( json{} ) | Условие, которое будет проверяться при поиске |
orderBy
| array | object ( json{} ) | Устанавливает в какой последовательности будут возвращены выходные значения |
limit
| int | Устанавливает максимальное количество возвращенных значений |
offset
| int | Устанавливает смещение |
Чтобы обратится к display field который автоматически тянется из RELATION в v8 необходимо указать {алиасТаблицы}\_{имяПоля}.
Например, если в RELATION указан алиас **products** и в display field указано поле **name** то в результирующую выборку это поле попадает под именем **products\_name**.
##### Возвращает:
**array** - массив объектов (найденных записей).
##### Примеры:
Получение **всех** регионов (лимит 100):
```JavaScript
let items = table.find('regions');
let regions = [];
for(let i = 0; i < items.length; i++) { // добавление поочередно всех записей в объект regions
let item = items[i];
regions.push({"id": item.id, "name": item.name, "comment": item.comment});
}
```
Получение **трех** значений поля **region** с **id больше двух**:
```JavaScript
let columns = ['region'];
let where = [["id", ">", 2]];
let orderBy = [];
let limit = 3;
let offset = 0;
let items = table.find('regions', columns, where, orderBy, limit, offset);
```
Получение данных из связанной таблицы **leads**:
```JavaScript
let columns = ['leads.person_id'];
let where = [["leads.id", ">", 2]];
let items = table.find('orders', columns, where);
let items2 = table.find('orders')
debug(items2[0].products_name)
```
# table.count()
### Подсчет количества записей
```JavaScript
table.count(string $tableName, array|object $where = [])
```
##### Описание:
Ищет записи соответствующие условию метода в таблице и возвращает их количество.
##### Атрибуты:
Имя | Тип | Описание |
tableName | string | Наименование таблицы, в которой будет создана запись |
where | array | object ( json{} ) | Условие, которое будет проверяться при поиске |
##### Возвращает:
**int** - количество записей в формате числа.
##### Примеры:
Получение количества **всех** записей в таблице:
```JavaScript
var regionsCount = table.count("regions");
memory.setAttr('regionsCount', regionsCount);
```
Получение количества записей с **id больше 2**:
```JavaScript
var countRegionIdsGreather2 = table.count("regions", [["id", ">", 2]]);
memory.setAttr('countRegionIdsGreather2', countRegionIdsGreather2);
```
# table.sum()
### Подсчет суммы по полю
```JavaScript
table.sum(string $tableName, string $column, array|object $where = [])
```
##### Описание:
Ищет записи соответствующие условию метода в таблице и возвращает сумму их значений.
##### Атрибуты:
Имя | Тип | Описание |
tableName | string | Наименование таблицы, в которой будет создана запись |
column | string | Наименование поля из которого будут браться значения |
where | array | object ( json{} ) | Условие, которое будет проверяться при поиске |
##### Возвращает:
**int** - сумма всех значений поля в виде числа.
##### Примеры:
Подсчет суммы **всех** значений записей поля **id** в таблице **regions:**
```JavaScript
var sumRegionIds = table.sum("regions", 'id');
memory.setAttr('sumRegionIds', sumRegionIds);
```
Подсчет суммы значений записей поля **id** в таблице **regions** с **id больше нуля**:
```JavaScript
var sumRegionIds = table.sum("regions", 'id', [["id", ">", 0]]);
memory.setAttr('sumRegionIds', sumRegionIds);
```
# table.max()
### Поиск максимального значения по полю
```
table.max(string $tableName, string $column, array|object $where = [])
```
##### Описание:
Ищет записи соответствующие условию метода в таблице и возвращает наибольшее по значению из них.
##### Атрибуты:
Имя | Тип | Описание |
tableName | string | Наименование таблицы, в которой будет создана запись |
column | string | Наименование поля из которого будут браться значения |
where | array | object ( json{} ) | Условие, которое будет проверяться при поиске |
##### Возвращает:
**mixed** - максимальное среди всех значений поля в том же типе, что в таблице
или
**null** - если максимальное значение не было найдено.
##### Примеры:
Нахождение максимального значения в поле **id** в таблице **regions:**
```JavaScript
var maxRegionId = table.max("regions", 'id');
memory.setAttr('maxRegionId', maxRegionId);
```
Нахождение максимального значения в поле **id** в таблице **regions** с **id больше нуля**:
```JavaScript
var maxRegionId = table.max("regions", 'id', [["id", ">", 0]]);
memory.setAttr('maxRegionId', maxRegionId);
```
# Методы для строки полученной через метод table
# item.update()
### Обновление записи
```JavaScript
item.update(array|object $data)
```
##### Описание:
Изменяет значение указанной записи item в таблице.
##### Атрибуты:
Имя | Тип | Описание |
data | array | object ( json{} ) | Значения | значение записи |
##### Возвращает:
**bool** - подтверждение удачного изменения записи.
##### Пример:
Обновление записи **item**:
```JavaScript
var items = table.find('regions');
var item = items[0];
item.update({"name": item.name, "num": 77});
```
# item.delete()
### Удаление записи
```
item.delete()
```
##### Описание:
Удаляет указанную запись item в таблице.
##### Возвращает:
**bool** - подтверждение удачного удаления записи.
##### Пример:
Удаление всех записей из таблицы:
```JavaScript
var items = table.find('regions');
for(var i = 0; i < items.length; i++) {
items[i].delete();
}
```
# item.getDateFormatted()
### Получить форматированную дату по названию поля
```JavaScript
item.getDateFormatted(string $fieldName, string $toFormat = 'Y-m-d H:i:s', string|null $toTimeZone = null, string|null $fromTimeZone = null)
```
##### Описание:
Возвращает значение даты измененного формата из запрашиваемого поля.
##### Атрибуты:
Имя | Тип | Описание |
fieldName | string | Наименование поля из которого будет браться значение |
toFormat | string | Формат даты, например: 'Y-m-d H:i:s' (Y - год;
m - месяц;
d - день;
H - часы;
i - минуты;
s - секунды.)
|
toTimeZone | string|null | Часовой пояс в ответе |
fromTimeZone | string|null | Часовой пояс в запросе |
##### Возвращает:
**string** -
или
**null** - если дата не требует форматирования.
##### Пример:
Возвращает значение даты измененного формата из поля **create**:
```JavaScript
var date = item.getDateFormatted('create', 'd-m-Y H:i:s', 'Y-m-d H', 'UTC', '+3');
```
# item.getDateFormattedString()
### Получить форматированную дату из произвольной строки
```JavaScript
item.getDateFormattedString(string $date, string $toFormat = 'Y-m-d H:i:s', string|null $fromFormat = 'Y-m-d H:i:s', string|null $toTimeZone = null, string|null $fromTimeZone = null)
```
##### Описание:
Меняет формат введенной даты.
##### Атрибуты:
Имя | Тип | Описание |
date | string | Дата
|
toFormat | string | Формат даты в ответе, например:
'Y-m-d H:i:s'
(Y - год;
m - месяц;
d - день;
H - часы;
i - минуты;
s - секунды.)
|
fromFormat | string|null | Формат даты в запросе
|
toTimeZone | string|null | Часовой пояс в ответе |
fromTimeZone | string|null | Часовой пояс в запросе |
##### Возвращает:
**string** -
или
**null** - если дата не требует форматирования.
##### Пример:
```JavaScript
var date = item.getDateFormattedString('2022-02-01 12', 'd-m-Y H:i:s', 'Y-m-d H', 'UTC', '+3');
```
Возвращает 01-02-2022 09:00:00
# item.reload()
### Перезагрузить данные записи из бд
```
item.reload()
```
##### Описание:
Перезагружает значение записи из бд в таблицу.
##### Возвращает:
**bool** - подтверждение удачной перезагрузки записи.
##### Пример:
Перезагрузка всех записей таблицы:
```JavaScript
var items = table.find('regions');
for(var i = 0; i < items.length; i++) {
items[i].reload();
}
```
# Методы для строки полученной через getLastRequest
# request.
### Доступ к json параметрам
```
request.json
request.array
request.string
```
или
```
request.asJson()
request.asArray()
request.asString()
```
##### Описание:
Доступ к json параметрам в виде javascript json-обьекта, например для использования как request.json.name или в виде массива request.array\['name'\] или в виде json объекта соответственно. request — нужен чтобы знать точно что именно в текущем запросе прилетели параметры, а не были сохранены в атрибуты лида, например неделю назад.
.json/.array/.string — это синонимы и по факту вызывают функции
request — это параметры текущего request запроса
# last_request.
### Доступ к последнему реквесту
```
last_request.json
last_request.array
last_request.string
```
или
```
last_request.asJson()
last_request.asArray()
last_request.asString()
```
##### Описание:
Доступ к последним json параметрам сохраненным в атрибутах лида в виде javascript json-обьекта, например для использования как request.json.name или в виде массива request.array\['name'\] или в виде json объекта соответственно. В лид параметры будут сохранены в json атрибут лида (sys\_last\_script\_request\_params).
# Методы api
# api.request()
### Выполнить HTTP запрос
```JavaScript
api.request(string $method, string $uri, $requestOptions = [], $httpClientConfig = [], $body = null, $jsonBody = null, $headers = [], bool $isForceAddJsonHeaders = false)
```
##### Описание:
Выполняет HTTP запрос, с помощью Guzzle.
##### Атрибуты:
Имя | Тип | Описание |
method | string | Метод запроса |
uri | string | Url запроса |
requestOptions | array|object | Опции запроса |
httpClientConfig | array|object | Набор параметров для включения или выключения различных возможностей Http Client |
body | array|object|string|null | Тело запроса |
jsonBody | array|object|null | JSON тело запроса |
headers | array|object | Заголовки запроса |
isForceAddJsonHeaders | bool | Добавление заголовков Json |
##### Возвращает:
**mixed** — ответ запроса
или
**ResponseInterface** — объект Response
или
**null** — если таких данных не существует.
# api.post()
### Выполнить HTTP POST запрос
```JavaScript
api.post(string $uri, $body = [], $requestOptions = [], $headers = [], $httpClientConfig = [])
```
##### Описание:
Выполняет HTTP POST запрос, с помощью Guzzle.
##### Атрибуты:
Имя | Тип | Описание |
uri | string | Url запроса |
requestOptions | array|object | Опции запроса |
httpClientConfig | array|object | Набор параметров для включения или выключения различных возможностей Http Client |
body | array|object|null | Тело запроса |
headers | array|object | Заголовки запроса |
##### Возвращает:
**string** — ответ запроса в формате строки
или
**null** — если таких данных не существует.
# api.get()
### Выполнить HTTP GET запрос
```JavaScript
api.get(string $uri, $requestOptions = [], $headers = [], $httpClientConfig = [])
```
##### Описание:
Выполняет HTTP GET запрос, с помощью Guzzle.
##### Атрибуты:
Имя | Тип | Описание |
uri | string | Url запроса |
requestOptions | array|object | Опции запроса |
httpClientConfig | array|object | Набор параметров для включения или выключения различных возможностей Http Client |
headers | array|object | Заголовки запроса |
##### Возвращает:
**string** — ответ запроса в формате строки
или
**null** — если таких данных не существует.
# api.getJson()
### Выполнить HTTP GET запрос
```JavaScript
api.getJson(string $uri, $jsonBody = null, $headers = [], $requestOptions = [], $httpClientConfig = [])
```
##### Описание:
Выполняет HTTP GET запрос с jsonBody, с помощью Guzzle.
##### Атрибуты:
Имя | Тип | Описание |
uri | string | Url запроса |
requestOptions | array|object | Опции запроса |
httpClientConfig | array|object | Набор параметров для включения или выключения различных возможностей Http Client |
jsonBody | array|object|null | Json тело запроса |
headers | array|object | Заголовки запроса |
##### Возвращает:
**array** — ответ запроса в формате массива
или
**null** — если таких данных не существует.
# api.postJson()
### Выполнить HTTP POST запрос
```JavaScript
api.postJson(string $uri, $jsonBody = [], $headers = [], $requestOptions = [], $httpClientConfig = [])
```
##### Описание:
Выполняет HTTP POST запрос с jsonBody, с помощью Guzzle.
##### Атрибуты:
Имя | Тип | Описание |
uri | string | Url запроса |
requestOptions | array|object | Опции запроса |
httpClientConfig | array|object | Набор параметров для включения или выключения различных возможностей Http Client |
jsonBody | array|object | Json тело запроса |
headers | array|object | Заголовки запроса |
##### Возвращает:
**array** — ответ запроса в формате массива
или
**null** — если таких данных не существует.
# api.getHttpConfig()
### Получить HTTP Config
```JavaScript
api.getHttpConfig()
```
##### Описание:
Возвращает HTTP Config.
##### Возвращает:
**array** — HTTP Config в формате массива.
# api.setHttpConfig()
### Установить HTTP Config
```JavaScript
api.setHttpConfig($config)
```
##### Описание:
Устанавливает HTTP Config.
##### Атрибуты:
Имя | Тип | Описание |
config | array|object|string | HTTP Config |
##### Возвращает:
**array** — HTTP Config в формате массива.
# api.getRequestOptions()
### Получить параметры HTTP запроса
```JavaScript
api.getRequestOptions()
```
##### Описание:
Возвращает параметры HTTP запроса.
##### Возвращает:
**array** — параметры HTTP запроса в формате массива.
# api.setRequestOptions()
### Установить параметры HTTP запроса
```JavaScript
api.setRequestOptions($options)
```
##### Описание:
Устанавливает параметры HTTP запроса.
##### Атрибуты:
Имя | Тип | Описание |
options | array|object|string | Параметры HTTP запроса |
##### Возвращает:
**array** — параметры HTTP запроса в формате массива.
# api.getHeaders()
### Получить заголовки HTTP запроса
```JavaScript
api.getHeaders()
```
##### Описание:
Возвращает заголовки HTTP запроса.
##### Возвращает:
**array** — заголовки HTTP запроса в формате массива.
# api.setHeaders()
### Установить заголовки HTTP запроса
```JavaScript
api.setHeaders($headers)
```
##### Описание:
Устанавливает заголовки HTTP запроса.
##### Атрибуты:
Имя | Тип | Описание |
headers | array|object | Заголовки HTTP запроса |
##### Возвращает:
**array** — заголовки HTTP запроса в формате массива.
# api.getProxyUrl()
### Получить Proxy Url HTTP запроса
```JavaScript
api.getProxyUrl()
```
##### Описание:
Возвращает Proxy Url HTTP запроса.
##### Возвращает:
**string** — Proxy Url HTTP запроса в формате строки
или
**null** — если данные не найдены.
# api.setProxyUrl()
### Установить Proxy Url HTTP запроса
```JavaScript
api.setProxyUrl($proxyUrl)
```
##### Описание:
Устанавливает Proxy Url HTTP запроса.
##### Атрибуты:
Имя | Тип | Описание |
proxyUrl | string | Proxy Url HTTP запроса |
##### Возвращает:
**string** — Proxy Url HTTP запроса в формате строки
или
**null** — если данные не найдены.
# api.getLastResponseCode()
### Получить код последнего ответа HTTP запроса
```JavaScript
api.getLastResponseCode()
```
##### Описание:
Возвращает код последнего ответа HTTP запроса.
##### Возвращает:
**int** — код ответа HTTP запроса.
# api.getLastResponseContent()
### Получить содержимое последнего ответа HTTP запроса
```JavaScript
api.getLastResponseContent()
```
##### Описание:
Возвращает содержимое последнего ответа HTTP запроса.
##### Возвращает:
**string** — содержимое ответа HTTP запроса
или
**null** — если данные не найдены.
# api.getLastJsonResponse()
### Получить последний ответ HTTP запроса в формате JSON
```JavaScript
api.getLastJsonResponse()
```
##### Описание:
Возвращает последний ответ HTTP запроса в формате JSON.
##### Возвращает:
**array** — ответ HTTP запроса в формате JSON
или
**null** — если данные не найдены.
# api.getLastResponse()
### Получить последний ответ HTTP запроса
```JavaScript
api.getLastResponse()
```
##### Описание:
Возвращает последний ответ HTTP запроса.
##### Возвращает:
**mixed** — ответ HTTP запроса
или
**ResponseInterface** — ответ HTTP запроса
или
**null** — если данные не найдены.
# api.setTimeout()
### Установить время задержки для HTTP запросов
```JavaScript
api.setTimeout(float $timeout)
```
##### Описание:
Устанавливает время задержки для HTTP запросов.
##### Атрибуты:
Имя | Тип | Описание |
timeout | float | Время задержки |
##### Возвращает:
**float** — время задержки.
# api.getTimeout()
### Получить время задержки для HTTP запросов
```JavaScript
api.getTimeout()
```
##### Описание:
Возвращает время задержки для HTTP запросов.
##### Возвращает:
**float** — время задержки.
# api.isExceptionThrown()
###
```JavaScript
api.isExceptionThrown()
```
##### Описание:
##### Возвращает:
**bool** — .
# api.getLastResponseTime()
### Получить время последнего ответа HTTP запроса
```JavaScript
api.getLastResponseTime()
```
##### Описание:
Возвращает время последнего ответа HTTP запроса.
##### Возвращает:
**float** — время ответа.
# api.getLastErrorBody()
### Получить содержимое ошибки последнего ответа HTTP запроса
```JavaScript
api.getLastErrorBody(bool $isAutoConvertToJson = true)
```
##### Описание:
Возвращает содержимое ошибки последнего ответа HTTP запроса.
##### Атрибуты:
Имя | Тип | Описание |
isAutoConvertToJson | bool | Конвертация в Json |
##### Возвращает:
**string** — содержимое ошибки в формате строки
или
**array** — содержимое ошибки в формате массива
или
**null** — если данные не найдены.
# api.callEndpoint()
### Вызвать внешнее API из чат-бота
```JavaScript
api.callEndpoint(
string $externalApiEndpointCode,
string|null $uri = null,
string|null $method = null,
string|null $format = null,
array|object|string|null $body = null,
array|object|string|null $headers = [],
array|object|string|null $requestOptions = [],
array|object|string|null $httpClientConfig = [],
string|null $proxyUrl = null
)
```
##### Описание:
Вызывает внешнее API из чат-бота.
##### Атрибуты:
Имя | Тип | Описание |
externalApiEndpointCode | string | Внешний код эндпоинта |
uri | string|null | Url запроса |
method | string|null | Метод запроса |
format | string|null | Формат запроса |
body | array|object|string|null | Тело запроса |
headers | array|object|string|null | Заголовки запроса |
requestOptions | array|object|string|null | Параметры запроса |
httpClientConfig | array|object|string|null | Набор параметров для включения или выключения различных возможностей Http Client |
proxyUrl | string|null | Proxy Url HTTP запроса |
##### Возвращает:
**string** — ответ запроса в формате строки
или
**array** — ответ запроса в формате массива
или
**null** — если данные не найдены.
# api.enableExceptions()
### Включить исключения для HTTP запросов
```JavaScript
api.enableExceptions()
```
##### Описание:
Включает исключения для HTTP запросов.
##### Возвращает:
**self** — включение исключений.
# api.disableExceptions()
### Выключить исключения для HTTP запросов
```JavaScript
api.disableExceptions()
```
##### Описание:
Выключает исключения для HTTP запросов.
##### Возвращает:
**self** — выключение исключений.
# api.enableContinueCallEndpointOnJsError()
### Включить вызов эндпоинта при ошибке JS
```JavaScript
api.enableContinueCallEndpointOnJsError()
```
##### Описание:
Включает вызов эндпоинта при ошибке JS.
##### Возвращает:
**self** — включение вызова.
# api.disableContinueCallEndpointOnJsError()
### Выключить вызов эндпоинта при ошибке JS
```JavaScript
api.disableContinueCallEndpointOnJsError()
```
##### Описание:
Выключает вызов эндпоинта при ошибке JS.
##### Возвращает:
**self** — выключение вызова.
# api.getIsContinueCallEndpointOnJsError()
### Получить режим вызова эндпоинта при ошибке JS
```JavaScript
api.getIsContinueCallEndpointOnJsError()
```
##### Описание:
Возвращает режим вызова эндпоинта при ошибке JS.
##### Возвращает:
**bool** — режим вызова.
# Методы memory
# memory.setAttr()
### Установить значение временной переменной
```JavaScript
memory.setAttr(string $key, string $value)
```
##### Описание:
Обновляет значение уже существующей временной переменной или создает новую переменную с указанным значением.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
value | string | Значение переменной |
##### Возвращает:
**self** - объект того же типа, в данном случае переменную, которая была создана.
##### Пример:
```JavaScript
let memory = "Значение переменной лида";
let memory_attribute = memory.setAttr('memory_attribute', memory);
```
# memory.getAttr()
### Получить значение временной переменной
```JavaScript
memory.getAttr(string $key)
```
##### Описание:
Возвращает значение уже существующей временной переменной.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
##### Возвращает:
**string** - значение запрашиваемой переменной в виде строки
или
**null** - если переменная не была найдена.
##### Пример:
```JavaScript
let memory_attribute_value = memory.getAttr('memory_attribute');
```
# memory.getIntAttr()
### Получить значение числовой временной переменной
```JavaScript
memory.getIntAttr(string $key, ?int|null $default = 0)
```
##### Описание:
Возвращает значение уже существующей числовой временной переменной.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
default | int | Дефолтное значение переменной |
##### Возвращает:
**int** - числовое значение запрашиваемой переменной
или
**null** - если переменная не была найдена.
##### Пример:
```JavaScript
let memory_attribute_value = memory.getIntAttr('memory_attribute', 2);
```
# memory.getFloatAttr()
### Получить значение временной float переменной лида
```JavaScript
memory.getFloatAttr(string $key, ?float|null $default = 0.0)
```
##### Описание:
Возвращает значение уже существующей временной float переменной лида.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
default | float | Дефолтное значение |
##### Возвращает:
**float** - значение запрашиваемой float переменной
или
**null** - если переменная не была найдена.
##### Пример:
```JavaScript
let memory_attribute_value = memory.getFloatAttr('memory_attribute', 0.1);
```
# memory.getBoolAttr()
### Получить значение временной bool переменной
```JavaScript
memory.getBoolAttr(string $key, ?bool|null $default = false)
```
##### Описание:
Возвращает значение уже существующей временной bool переменной.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
default | bool | Дефолтное значение |
##### Возвращает:
**bool** - значение запрашиваемой bool переменной
или
**null** - если переменная не была найдена.
##### Пример:
```JavaScript
let memory_attribute_value = memory.getBoolAttr('memory_attribute', true);
```
# memory.issetAttr() и memory.isAttrExist()
### Проверить наличие временной переменной
```JavaScript
memory.issetAttr(string $key)
```
или
```JavaScript
memory.isAttrExist(string $key)
```
##### Описание:
Проверяет существует ли временной переменная.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
Возвращает:
**bool** - подтверждение существования переменной.
##### Пример:
Проверка двумя способами существования переменной лида memory\_attribute:
```JavaScript
let memory_exists = memory.issetAttr('memory_attribute');
let memory_altexists = memory.isAttrExist('memory_attribute');
```
# memory.setAllJsonAttrs()
### Установить значение всех временных JSON переменных
```JavaScript
memory.setAllJsonAttrs(array $data)
```
#### Описание:
Устанавливает значение всех временных JSON переменных.
##### Атрибуты:
Имя | Тип | Описание |
data | array | JSON значение переменной |
##### Возвращает:
**self** - объект того же типа и значения, что задан в методе.
##### Пример:
```JavaScript
let memory_attribute_value = memory.setAllJsonAttrs({
"id": 2415,
"name": "Имя"
});
```
# memory.getAllJsonAttrs()
### Получить значение всех временных JSON переменных
```JavaScript
memory.getAllJsonAttrs()
```
#### Описание:
Возвращает значение всех временных JSON переменных.
##### Возвращает:
**array** - массив JSON переменных.
##### Пример:
```JavaScript
let memory_attribute_value = memory.getAllJsonAttrs();
```
# memory.setJsonAttr()
### Установить значение временной JSON переменной
```JavaScript
memory.setJsonAttr(string $key, $value)
```
#### Описание:
Устанавливает значение временной JSON переменной.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
value | mixed | JSON значение переменной |
##### Возвращает:
**self** - объект того же типа и значения, что задан в методе.
##### Пример:
```JavaScript
let memory_attribute_value = memory.setJsonAttr('memory_attribute', {
"id": 2415,
"name": "Имя"
});
```
# memory.getJsonAttr()
### Получить значение временной JSON переменной
```JavaScript
memory.getJsonAttr(string $key)
```
##### Описание:
Возвращает значение уже существующей временной JSON переменной.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
##### Возвращает:
**mixed** - значение запрашиваемой JSON переменной
или
**null** - если переменная не была найдена.
##### Пример:
```JavaScript
let memory_attribute_value = memory.getJsonAttr('memory_attribute');
```
# memory.issetJsonAttr() и memory.isJsonAttrKeyExist()
### Проверить наличие временной JSON переменной
```JavaScript
memory.issetJsonAttr(string $key)
и
memory.isJsonAttrKeyExist(string $key)
```
#### Описание:
Проверяет наличие временной JSON переменной.
##### Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
##### Возвращает:
**bool** - подтверждение существования переменной.
##### Пример:
```JavaScript
let memory_attribute_value = memory.issetJsonAttr('memory_attribute');
или
let memory_attribute_value = memory.isJsonAttrKeyExist('memory_attribute');
```
# Примеры использования методов
# Использование методов блокировок
Ниже представлен JS скрипт на примере которого будет рассмотрена работа с методами блокировок.
```JavaScript
bot.sendText('Ожидаю получения блокировки')
let lockName = 'my_lock_1'
let lockPrefix = ''
let ttlSec = 5 // время жизни блокировки
let maxWaitSec = 300 // макс время ожидания блокировки
let isLocked = false
// Получаем блокировку по бизнесу (bot.waitForBusinessLock) или боту (bot.waitForBotLock)
isLocked = bot.waitForBusinessLock(lockName, lockPrefix, ttlSec, maxWaitSec)
if (isLocked) {
bot.sendText('Блокировка получена')
} else {
bot.sendText('Время ожидания блокировки истекло')
}
bot.sendText('Ожидаю истечения блокировки и получаю новую')
//bot.releaseAllCurrentLocks()
ttlSec = 20
maxWaitSec = 1 // если раскомментировать то время ожидания будет превышено
// (если проверять превышение то закомментировано выше должно быть maxWaitSec)
// Повторно, получаем новую блокировку по бизнесу с тем же ключем
isLocked = bot.waitForBusinessLock(lockName, lockPrefix, ttlSec, maxWaitSec)
if (isLocked) {
bot.sendText('Повторная блокировка получена')
} else {
bot.sendText('Время ожидания повторной блокировки истекло')
}
// Блокировка получена или время ожидания истекло
bot.sendText('Блокировка получена')
// --------------
bot.sendText('Ищем и удаляем блокировку')
let hasLock = bot.hasLockForBusiness(lockName)
if (hasLock) {
// Удаляем блокировку
// по бизнесу - bot.releaseLockForBusiness / по боту - bot.releaseLockForBot
// на самом деле это не releaseLock а forceReleaseLock (тк можно разрблокировать даже если ее тут не получали)
// но зато это гарантирует удаление блокировки, поэтому префикс force в начале убран
// для удаления же блокировки по тек скрипту можно использовать bot.releaseCurrentLock(lockName) или bot.releaseAllCurrentLocks()
//if (bot.releaseLockForBusiness(lockName)) {
// Вариант чтобы случайно не удалить блокировку, если мы ее не созадли в текущем скрипте
// Например истекло время ожидания получения блокировки (maxWaitSec)
// bot.releaseCurrentLockForBusiness / bot.releaseCurrentLockForBot
if (bot.releaseCurrentLockForBusiness(lockName)) {
bot.sendText('Блокировка удалена')
} else {
bot.sendText('Ошика удаления блокировки')
}
} else {
bot.sendText('Блокировка не найдена')
}
// Удаляем блокировку если она получена именно в данном скрипте (через waitForBusinessLock / waitForBotLock)
// Скрипт сам запоминает какие мы блокировки создавали в данном скрипте и удаляем ее только если создали тут
//bot.releaseCurrentLock(lockName)
// На всякий случай
// Удаляем все блокировки полученные именно в данном скрипте
// Скрипт сам запоминает какие мы блокировки создавали в данном скрипте и удаляем их все, которые мы тут создали
bot.releaseAllCurrentLocks()
bot.sendText('Дополнительно, почистили все блокировки созданные в данном скрипте, на случай, если что-то забыли...')
```
# Использование методов планирования времени
Установить время задержки для выполнения функции можно двумя способами:
- Метод **setTimeout()**;
- Задерживающий декоратор **delay()**.
Они позволяют вызвать функцию один раз через определённый интервал времени.
### setTimeout()
```JavaScript
setTimeout($func, int $delay, $arg1, $arg2, ...)
```
##### Атрибуты:
Имя | Тип | Описание |
func | function | Вызываемая функция |
delay | int | Задержка перед запуском в миллисекундах. Значение по умолчанию – 0 |
arg1, arg2, ... | mixed | Аргументы, передаваемые в функцию |
##### Пример:
```JavaScript
function sayHi(phrase, who) {
lead.setAttr('sayHi', phrase + ', ' + who);
}
setTimeout(sayHi, 1000, "Привет", "Джон");
```
или
```JavaScript
setTimeout("lead.setAttr('sayHi', 'Привет!')", 1000);
```
Отмена таймера:
```JavaScript
let timerId = setTimeout(...);
clearTimeout(timerId);
```
### delay()
```
delay($f, int $ms)
```
##### Aтрибуты:
Имя | Тип | Описание |
f | function | Вызываемая функция |
ms | int | Задержка перед запуском в миллисекундах |
##### Пример:
```JavaScript
function sayHi(text) {
lead.setAttr('sayHi', text);
}
let f1000 = delay(sayHi, 1000);
f1000("Привет!");
```
# Использование методов работы с файлами
Ниже представлен JS скрипт на примере которого будет рассмотрена работа с файлами.
```JavaScript
// ---------------------------------------------------------------------------------------------------
// ПОДГОТОВКА КОМПОНЕНТА, ПЕРЕЧИСЛЕНИЕ ВСЕХ ПАРАМЕТРОВ
let imageUploader = {
"params": {
"max_file_size_mb": null,
"min_image_width": null,
"min_image_height": null,
"promt_message": null,
"promt_keyboard": null,
"btn_cancel_caption": null,
"btn_cancel_no_inline_label_code": null,
"btn_ok_caption": null,
"fallback_message": null,
"success_message": null,
"files_custom_table_name": null,
"api_additional_params": null,
"script_code_for_files_is_not_supported": null,
// Параметры внутренней логики
"is_first_immediate_call": false,
"image_info": null,
"new_image_url": null,
"image_upload_result": null,
"old_image_url": null,
"telegram_file_id": null
}
}
// ---------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------
// ПОДГОТОВКА ЗНАЧЕНИЙ ПО УМОЛЧАНИЮ
// Максимальный размер файла в Мб
imageUploader.params.max_file_size_mb = 2
// Минимальная ширина изображения
// если 0 - то нет ограничения
// если включаем данную опцию то фото принимаем только с включенной галкой телеграмма "Сжать изображением"
imageUploader.params.min_image_width = 0
// Минимальная высота изображения
// если 0 - то нет ограничения
// если включаем данную опцию то фото принимаем только с включенной галкой телеграмма "Сжать изображением"
imageUploader.params.min_image_height = 0
// Сообщение-вопрос
imageUploader.params.promt_message = null // для вычисления используйте функцию this.calcPromtMessage()
imageUploader.params.promt_keyboard = null // для вычисления используйте функцию this.calcPromtKeyboard()
// Заголовки единственного пункта меню
// (одна кнопка но у нее меняется заголовок, в зависимости от того приняли мы хоть одно фото или нет)
imageUploader.params.btn_cancel_caption = "Отмена"
// Код кнопки, если inline режим выключен
imageUploader.params.btn_cancel_no_inline_label_code = "1"
imageUploader.params.btn_ok_caption = "Готово"
// Nекст отправляемый лиду, если входящий вебхук не содержит изображения
// Если нужно сложное вычисление - то модифицировать функцию this.calcFallbackMessage()
imageUploader.params.fallback_message = "Изображение не распознано" +
"\r\n\r\nПовторите попытку..."
// Текст отправляемый в случае успешного сохранения фото
// для вычисления используйте функцию this.calcSuccessMessage()
imageUploader.params.success_message = null
//imageUploader.params.success_message = "Изображение распознано" +
// "\r\n\r\nОжидаем следующий файл" +
// "\r\n\Если надоело, нажмите " + '"' + this.getBtnOkCaption() + '"' + "..."
// Название кастомной таблицы куда сохраняем ссылки на фото
imageUploader.params.files_custom_table_name = "person_files"
// Дополнительные параметры отправляемые в Телеграм (что сдесь укажем то и будет отправлено в POST запросе к Telegram)
imageUploader.params.api_additional_params = {"parse_mode": "HTML", "disable_web_page_preview": true}
imageUploader.params.script_code_for_files_is_not_supported = "files_is_not_supported"
// ---------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------
// ПОДГОТОВКА МЕТОДОВ ДЛЯ ДОСТУПА К ПАРАМЕТРАМ (Getters & Setters)
// Обязательно описываем методы для всех параметров, чтобы их можно было перекрывать извне
imageUploader.getMaxFileSizeMb = function() {
return this.params.max_file_size_mb
}
imageUploader.setMaxFileSizeMb = function(maxFileSizeMb) {
this.params.max_file_size_mb = maxFileSizeMb
return this
}
imageUploader.getMinImageWidth = function() {
return this.params.min_image_width
}
imageUploader.setMinImageWidth = function(minImageWidth) {
this.params.min_image_width = minImageWidth
return this
}
imageUploader.getMinImageHeight = function() {
return this.params.min_image_height
}
imageUploader.setMinImageHeight = function(minImageHeight) {
this.params.min_image_height = minImageHeight
return this
}
imageUploader.getPromtMessage = function() {
return this.params.promt_message
}
imageUploader.setPromtMessage = function(promtMessage) {
this.params.promt_message = promtMessage
return this
}
imageUploader.getPromtKeyboard = function() {
return this.params.promt_keyboard
}
imageUploader.setPromtKeyboard = function(promtKeyboard) {
this.params.promt_keyboard = promtKeyboard
return this
}
imageUploader.getBtnCancelCaption = function() {
return this.params.btn_cancel_caption
}
imageUploader.setBtnCancelCaption = function(btnCancelCaption) {
this.params.btn_cancel_caption = btnCancelCaption
return this
}
imageUploader.getBtnCancelNoInlineLabelCode = function() {
return this.params.btn_cancel_no_inline_label_code
}
imageUploader.setBtnCancelNoInlineLabelCode = function(btnCancelNoInlineLabelCode) {
this.params.btn_cancel_no_inline_label_code = btnCancelNoInlineLabelCode
return this
}
imageUploader.getBtnOkCaption = function() {
return this.params.btn_ok_caption
}
imageUploader.setBtnOkCaption = function(btnOkCaption) {
this.params.btn_ok_caption = btnOkCaption
return this
}
imageUploader.getFallbackMessage = function() {
return this.params.fallback_message
}
imageUploader.setFallbackMessage = function(fallbackMessage) {
this.params.fallback_message = fallbackMessage
return this
}
imageUploader.getSuccessMessage = function() {
return this.params.success_message
}
imageUploader.setSuccessMessage = function(successMessage) {
this.params.success_message = successMessage
return this
}
imageUploader.getFilesCustomTableName = function() {
return this.params.files_custom_table_name
}
imageUploader.setFilesCustomTableName = function(filesCustomTableName) {
this.params.files_custom_table_name = filesCustomTableName
return this
}
imageUploader.getApiAdditionalParams = function() {
return this.params.api_additional_params
}
imageUploader.setApiAdditionalParams = function(apiAdditionalParams) {
this.params.api_additional_params = apiAdditionalParams
return this
}
imageUploader.getScriptCodeForFilesIsNotSupported = function() {
return this.params.script_code_for_files_is_not_supported
}
imageUploader.setScriptCodeForFilesIsNotSupported = function(scriptCodeForFilesIsNotSupported) {
this.params.script_code_for_files_is_not_supported = scriptCodeForFilesIsNotSupported
return this
}
imageUploader.getIsFirstImmediateCall = function() {
this.params.is_first_immediate_call = isFirstImmediateCall // GLOBAL VARIABLE !!!
return this.params.is_first_immediate_call
}
imageUploader.setIsFirstImmediateCall = function(isFirstImmediateCall) {
this.params.is_first_immediate_call = isFirstImmediateCall
return this
}
imageUploader.getImageInfo = function() {
return this.params.image_info
}
imageUploader.setImageInfo = function(imageInfo) {
this.params.image_info = imageInfo
return this
}
imageUploader.getOldImageUrl = function() {
return this.params.old_image_url
}
imageUploader.setOldImageUrl = function(oldImageUrl) {
this.params.old_image_url = oldImageUrl
return this
}
imageUploader.getNewImageUrl = function() {
return this.params.new_image_url
}
imageUploader.setNewImageUrl = function(newImageUrl) {
this.params.new_image_url = newImageUrl
return this
}
imageUploader.getImageUploadResult = function() {
return this.params.image_upload_result
}
imageUploader.setImageUploadResult = function(imageUploadResul) {
this.params.image_upload_result = imageUploadResul
return this
}
imageUploader.getTelegramFileId = function() {
return this.params.telegram_file_id
}
imageUploader.setTelegramFileId = function(telegramFileId) {
this.params.telegram_file_id = telegramFileId
return this
}
// ---------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------
// ПОДГОТОВКА МЕТОДОВ ДЛЯ БИЗНЕС ЛОГИКИ
imageUploader.calcPromtMessage = function() {
// Todo: this.params.promt_message -> можно использовать для задания шаблона сообщения и добавить сюда макроподстановку
let maxFileSizeMb = this.getMaxFileSizeMb()
let minImageWidth = this.getMinImageWidth()
let minImageHeight = this.getMinImageHeight()
let msg = "Отправьте ваше фото"+
(maxFileSizeMb > 0 ? ("\r\n\r\nРазмер фото: не более " + maxFileSizeMb + " Мб") : "") +
(minImageWidth > 0 ? ("\r\nШирина: не менее " + minImageWidth + " px") : "") +
(minImageHeight > 0 ? ("\r\nВысота: не менее " + minImageHeight + " px") : "")
return msg
}
imageUploader.calcSuccessMessage = function() {
return "Изображение распознано" +
"\r\n\r\nОжидаем следующий файл" +
"\r\n\Если надоело, нажмите " + '"' + this.getBtnOkCaption() + '"' + "..."
}
// Вычисление сообщения о невалидных данных
imageUploader.calcFallbackMessage = function() {
return this.getFallbackMessage()
}
// Вычисление заголовка единственного пункта меню
imageUploader.calcBtnCancelCaption = function() {
if (!this.isAnyImagesReceived()) {
return this.getBtnCancelCaption()
} else {
return this.getBtnOkCaption()
}
}
// Вычисление кнопок меню
imageUploader.calcPromtKeyboard = function() {
return [
[
{
"text": this.calcBtnCancelCaption(),
"callback_data": "btn_cancel",
"text_button_label": this.getBtnCancelNoInlineLabelCode()
},
]
]
}
imageUploader.calcInvalidFileSizePromtMessage = function(yourFileSizeMb) {
return "Файл не соответствуют требованию: "+
"\r\nРазмер файла не более " + this.getMaxFileSizeMb() + " Мб." +
"\r\nРазмер вашего файла: " + yourFileSizeMb +
"\r\n\r\n" +
this.calcPromtMessage()
}
imageUploader.calcInvalidWidthOrHeightPromtMessage = function(yourWidth, yourHeight) {
return "Файл не соответствуют требованиям ширины или высоты, или изображение не распознано" +
"\r\nШирина вашего фото: " + yourWidth +
"\r\nВысота вашего фото: " + yourHeight +
"\r\n\r\n" +
'При отправке фото через Telegram включите галку "Сжать изображение"' +
"\r\n\r\n" +
this.calcPromtMessage()
}
// Получить атрибут "ID последнего сообщения отправленного в Telegram"
imageUploader.getLastTelegramMessageId = function() {
return parseInt(lead.getAttr("last_telegram_message_id"))
}
// Есть ли сохраненный атрибут "ID последнего сообщения отправленного в Telegram"
imageUploader.hasLastTelegramMessageId = function() {
let messageId = this.getLastTelegramMessageId()
return (!isNaN(messageId) && messageId > 0)
}
// Сохраненить атрибут "ID последнего сообщения отправленного в Telegram"
imageUploader.saveLastTelegramMessageId = function() {
lead.setAttr("last_telegram_message_id", bot.getTelegramLastMessageId())
}
// Очистить атрибут "ID последнего сообщения отправленного в Telegram"
imageUploader.clearLastTelegramMessageId = function() {
lead.setAttr("last_telegram_message_id", null)
}
// Функция для скрытия кнопок предыдущего меню
imageUploader.removeInlineKeyboard = function() {
if (this.hasLastTelegramMessageId()) {
bot.removeTelegramInlineKeyboard(lead.getData("identification"), this.getLastTelegramMessageId())
}
}
// Функция для удаления предыдущего сообщения
imageUploader.deletePrevMessage = function() {
if (this.hasLastTelegramMessageId()) {
this.removeInlineKeyboard()
// Можно это делать в окне в 24 часа
bot.sendMessage("---", null, null, {"endpoint": "deleteMessage", "message_id": this.getLastTelegramMessageId()})
this.clearLastTelegramMessageId()
}
}
// Функция для определения получили ли мы хоть одно валидное фото в данной команде
imageUploader.isAnyImagesReceived = function() {
let res = parseInt(lead.getAttr("is_any_image_received"))
res = !isNaN(res) && res > 0
return res
}
// Функция для сохранения состояния - получили ли мы хоть одно валидное фото в данной команде
imageUploader.setIsAnyImagesReceived = function(value) {
lead.setAttr("is_any_image_received", value)
}
// Функция для отправки вопроса с меню
imageUploader.sendPromtMessageWithMenu = function(argPromtMessage, argPromtKeyboard, argAttachments){
// Скрываем кнопки предыдущего меню
this.removeInlineKeyboard()
if (typeof argPromtMessage == "undefined") {
argPromtMessage = this.calcPromtMessage()
}
if (typeof argPromtKeyboard == "undefined") {
argPromtKeyboard = this.calcPromtKeyboard()
}
if (typeof argAttachments == "undefined") {
argAttachments = null
}
// Отправляем кнопки с текстом вопроса
//bot.sendButtons(
// argPromtMessage,
// argPromtKeyboard,
// this.getApiAdditionalParams()
//)
// Отправляем сообщение с кнопками
bot.sendMessage(
argPromtMessage,
argPromtKeyboard,
argAttachments,
this.getApiAdditionalParams()
)
// Запоминаем ID последнего сообщения
this.saveLastTelegramMessageId()
}
// Сохранение файла в кастомную таблицу
imageUploader.saveFileToCustomTable = function(data) {
let tableName = this.getFilesCustomTableName()
if (tableName === null || tableName === "") {
return
}
table.createItem(tableName, data)
}
// Создаем персону для лида, если ее еще нет
imageUploader.checkPersonForCurrentLeadAndGetCommandResult = function() {
if (!lead.getPersonId()) {
lead.createPersonForCurrentLead({"comment": null})
}
if (!lead.getPersonId()) {
return {
"break": true,
"run_script_by_code": this.getScriptCodeForFilesIsNotSupported()
}
}
return null
}
// Если канал лида - не телеграм, то перекидываем в другой скрипт, сообщающий о том что команда запроса файла не поддерживается
imageUploader.checkChannelAndGetCommandResult = function() {
if (lead.getChannelCode() !== "telegram") {
return {
"break": true,
"run_script_by_code": this.getScriptCodeForFilesIsNotSupported()
}
}
return null
}
// Для ограничения максимального размера файла
imageUploader.validateFileSizeAndGetCommandResult = function(imagePayload) {
let maxFileSizeMb = this.getMaxFileSizeMb()
let isIncorrectFileSize = false
if (maxFileSizeMb > 0) {
if (!imagePayload["file_size"] || imagePayload["file_size"] > maxFileSizeMb*1024*1024) {
isIncorrectFileSize = true
}
}
if (isIncorrectFileSize) {
// Превышен максимальный размер файла
let yourFileSizeMb = "не определен"
if (imagePayload["file_size"]) {
// Конвертируем байты в Мб
yourFileSizeMb = imagePayload["file_size"] / 1024 / 1024
// Округляем до второго знака
yourFileSizeMb = Math.round(yourFileSizeMb * 100) / 100
yourFileSizeMb = yourFileSizeMb + " Мб"
}
// Повторяем вопрос и меню
this.sendPromtMessageWithMenu(this.calcInvalidFileSizePromtMessage(yourFileSizeMb))
// Выходим из Callback (ждем пока пришлют другой файл)
return {
"result": false,
}
}
return null
}
// Для ограничения ширины и высоты изображения
// рабатает, только если фото отправлено с включенной галкой сжатия
imageUploader.validateFileWidthAndHeightAndGetCommandResult = function(imagePayload) {
let minImageWidth = this.getMinImageWidth()
let minImageHeight = this.getMinImageHeight()
let isIncorrectWidth = (minImageWidth > 0 && (!imagePayload['width'] || imagePayload['width'] < minImageWidth))
let isIncorrectHeight = (minImageHeight > 0 && (!imagePayload['height'] || imagePayload['height'] < minImageHeight))
if (isIncorrectWidth || isIncorrectHeight) {
// Файл не соответствуют требованиям ширины или высоты
let yourWidth = "Не определено"
if (imagePayload['width']) {
yourWidth = imagePayload['width'] * 1
}
let yourHeight = "Не определено"
if (imagePayload['width']) {
yourHeight = imagePayload['height'] * 1
}
// Повторяем вопрос и меню
this.sendPromtMessageWithMenu(this.calcInvalidWidthOrHeightPromtMessage(yourWidth, yourHeight))
// Выходим из Callback (ждем пока пришлют другой файл)
return {
"result": false,
}
}
return null
}
// Загружаем файл на CDN и получаем новый URL, если возникла ошибка, выводим ее, обновляем меню и выходим из Callback
imageUploader.uploadFileToCdnAndGetCommandResult = function(oldImageUrl) {
this.setNewImageUrl(null)
this.setImageUploadResult(null)
let uploadResult = bot.uploadFileToCdnAndGetNewUrl(oldImageUrl)
this.setImageUploadResult(uploadResult)
let newImageUrl = null
if (uploadResult.result && !uploadResult.error) {
newImageUrl = uploadResult.url
this.setNewImageUrl(newImageUrl)
} else {
// Если возникла ошибка, выводим ее и далее по куду - выходим из Callback
if (uploadResult.error_message) {
bot.sendMessage(uploadResult.error_message)
}
// Повторяем вопрос и меню
this.sendPromtMessageWithMenu()
// Выходим из Callback (ждем пока пришлют другой файл)
return {
"result": false,
}
}
return null
}
// Для входящего текста: если написали "отмена"/"пропустить"
// Или для кнопок: нажали на кнопку "отмена" или написали 1, для режима работы без inline кнопок (inline кнопки отключаются в настройках канала)
imageUploader.checkIncomingMessageForNoImagesAndGetResult = function() {
if (["отмена", "пропустить", "btn_cancel", "1"].includes(bot.getIncomingMessage().toLowerCase())) {
// Удаляем предыдущее меню, если оно есть
this.removeInlineKeyboard()
// Для логики с удалением предыдущего сообщения
// для реализации учесть все цепочки, т.е. можно сделать полноценный графический компонент как слайдер, чтобы вся обработка была в одном сообщении
//deletePrevMessage()
// Выходим из команды и прерываем зацикливание
return {
"break": true,
}
}
return null
}
// Сохраняем ссылку на файл в таблицу
// Уведомляем клиента о том что фото загружено
// Пересылаем загруженно фото Лиду
// Повторяем вопрос и меню
// Выходим из callback, но не прерываем команду, ожидаем следующий файл
// ВЫНЕСЕНО В ФУНКЦИЮ - ЧТОБЫ МОЖНО БЫЛО ПЕРЕКРЫВАТЬ ЕЕ ИЗВНЕ
imageUploader.runOnSuccessLogicAndGetResult = function() {
let telegramFileId = this.getTelegramFileId()
let newImageUrl = this.getNewImageUrl()
// Сохраняем ссылку на файл в таблицу
this.saveFileToCustomTable({
"person_id": lead.getPersonId(),
"lead_id": leadId,
"telegram_file_id": telegramFileId,
"type": "image",
"file_name": null,
"url": newImageUrl,
"size": null,
"mime_type": null,
})
// Уведомляем клиента о том что фото загружено
// Пересылаем загруженно фото Лиду
// Todo: Вынести в параметры компонента - но с учетом макроса для newImageUrl
let msg = "Ваше фото успешно загружено\r\nСсылка на загруженное фото"
// Вариант: Для отправки отдельно фото и отдельно сообщения с меню
bot.sendMessage(msg, null, [{"type": "image", "url": newImageUrl}], this.getApiAdditionalParams())
// Повторяем вопрос и меню
this.sendPromtMessageWithMenu(this.calcSuccessMessage())
// Вариант: Для отправки полученного фото и вопроса одним сообщением
// Повторяем вопрос и меню
//sendPromtMessageWithMenu(successMessage + "\r\n\r\n" + msg, null, [{"type": "image", "url": newImageUrl}])
// Выходим из callback, но не прерываем команду, ожидаем следующий файл
return {
"result": false,
}
}
// Повторяем вопрос и меню
// Выходим из JS, но не прерываем замыкание, ожидаем следующий файл
// ВЫНЕСЕНО В ФУНКЦИЮ - ЧТОБЫ МОЖНО БЫЛО ПЕРЕКРЫВАТЬ ЕЕ ИЗВНЕ
imageUploader.runOnNoImagesLogicAndGetResult = function() {
// Повторяем вопрос и меню
this.sendPromtMessageWithMenu(this.calcFallbackMessage())
// Выходим из JS, но не прерываем замыкание, ожидаем следующий файл
return {
"result": false,
}
}
// ---------------------------------------------------------------------------------------------------
// Метод для вычисления результата
// Результат будет передан в команду "Выполнить JavaScript CallBack" с замыканием состояния
imageUploader.getComponentResult = function() {
let checkPersonResult = this.checkPersonForCurrentLeadAndGetCommandResult()
if (checkPersonResult !== null) {
return checkPersonResult
}
let checkChannelResult = this.checkChannelAndGetCommandResult()
if (checkChannelResult !== null) {
return checkChannelResult
}
// ---------------------------------------------------------------------------------------------------
// Инициализация компонента
if (this.getIsFirstImmediateCall()) {
// !!! ИНИЦИАЛИЗАЦИЯ !!!
// Запоминаем что фото еще не получено, чтобы определять, какое меню выводить
this.setIsAnyImagesReceived(0)
// Сбрасываем ID последнего сообщения
this.clearLastTelegramMessageId()
// Отправляем вопрос и меню
this.sendPromtMessageWithMenu()
// Выходим из JS, в параметрах ничего не возвращаем, тк это инициализация
return {}
}
// ---------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------
// Получаем фото из входящего вебхука
let images = bot.getImages()
// ---------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------
// ЛОГИКА КОМПОНЕНТА
if (images.length > 0) {
// Если прислали фото, обрабатываем его, иначе см. блок else
// Получаем инфу о фото
let imageInfo = images[0]
let imagePayload = imageInfo["payload"]
let oldImageUrl = imageInfo["url"]
let telegramFileId = imageInfo["file_id"]
this.setImageInfo(imageInfo)
this.setOldImageUrl(oldImageUrl)
this.setTelegramFileId(telegramFileId)
// Для ограничения максимального размера файла
let validateFileSizeResult = this.validateFileSizeAndGetCommandResult(imagePayload)
if (validateFileSizeResult !== null) {
return validateFileSizeResult
}
// Для ограничения ширины и высоты изображения
// рабатает, только если фото отправлено с включенной галкой сжатия
let validateFileWidthAndHeightResult = (this.validateFileWidthAndHeightAndGetCommandResult(imagePayload))
if (validateFileWidthAndHeightResult !== null) {
return validateFileWidthAndHeightResult
}
// Загружаем файл на CDN и получаем новый URL, если возникла ошибка, выводим ее, обновляем меню и выходим из Callback
let uploadFileToCdnResult = (this.uploadFileToCdnAndGetCommandResult(oldImageUrl))
if (uploadFileToCdnResult !== null) {
return uploadFileToCdnResult
}
// Запоминаем, что корректное фото получено
this.setIsAnyImagesReceived(1)
// Сохраняем ссылку на файл в таблицу
// Уведомляем клиента о том что фото загружено
// Пересылаем загруженно фото Лиду
// Повторяем вопрос и меню
// Выходим из callback, но не прерываем команду, ожидаем следующий файл
// ВЫНЕСЕНО В ФУНКЦИЮ - ЧТОБЫ МОЖНО БЫЛО ПЕРЕКРЫВАТЬ ЕЕ ИЗВНЕ
return this.runOnSuccessLogicAndGetResult()
} else {
// Если прислали НЕ фото
let checkIncomingMessageResult = this.checkIncomingMessageForNoImagesAndGetResult()
if (checkIncomingMessageResult !== null) {
return checkIncomingMessageResult
}
// Повторяем вопрос и меню
// Выходим из JS, но не прерываем замыкание, ожидаем следующий файл
// ВЫНЕСЕНО В ФУНКЦИЮ - ЧТОБЫ МОЖНО БЫЛО ПЕРЕКРЫВАТЬ ЕЕ ИЗВНЕ
return this.runOnNoImagesLogicAndGetResult()
}
}
//Todo: Учесть мультиязычность!
module.exports = {
imageUploader
}
Листинг компонента фото-слайдера для Telegram
const {unset, unsetButton} = require("Common.Utils.Arrays")
// ---------------------------------------------------------------------------------------------------// ПОДГОТОВКА КОМПОНЕНТА, ПЕРЕЧИСЛЕНИЕ ВСЕХ ПАРАМЕТРОВlet imageSlider = {
"params": {
"script_code_for_files_is_not_supported": null,
"script_code_for_person_files_is_empty": null,
"script_code_for_main_menu": null,
"files_custom_table_name": null,
// Параметры внутренней логики
"is_first_immediate_call": false,
}
}
// ---------------------------------------------------------------------------------------------------// ---------------------------------------------------------------------------------------------------// ПОДГОТОВКА ЗНАЧЕНИЙ ПО УМОЛЧАНИЮ
imageSlider.params.script_code_for_files_is_not_supported = "files_is_not_supported"
imageSlider.params.script_code_for_person_files_is_empty = "main_menu"
imageSlider.params.script_code_for_main_menu = "main_menu"// Название кастомной таблицы откуда грузим фото
imageSlider.params.files_custom_table_name = "person_files"// ---------------------------------------------------------------------------------------------------// ---------------------------------------------------------------------------------------------------// ПОДГОТОВКА МЕТОДОВ ДЛЯ ДОСТУПА К ПАРАМЕТРАМ (Getters & Setters)// Обязательно описываем методы для всех параметров, чтобы их можно было перекрывать извне
imageSlider.getScriptCodeForFilesIsNotSupported = function() {
return this.params.script_code_for_files_is_not_supported
}
imageSlider.setScriptCodeForFilesIsNotSupported = function(scriptCodeForFilesIsNotSupported) {
this.params.script_code_for_files_is_not_supported = scriptCodeForFilesIsNotSupported
return this
}
imageSlider.getScriptCodeForPersonFilesIsEmpty = function() {
return this.params.script_code_for_person_files_is_empty
}
imageSlider.setScriptCodeForPersonFilesIsEmpty = function(scriptCodeForPersonFilesIsEmpty) {
this.params.script_code_for_person_files_is_empty = scriptCodeForPersonFilesIsEmpty
return this
}
imageSlider.getScriptCodeForMainMenu = function() {
return this.params.script_code_for_main_menu
}
imageSlider.setScriptCodeForMainMenu = function(scriptCodeForMainMenu) {
this.params.script_code_for_main_menu = scriptCodeForMainMenu
return this
}
imageSlider.getFilesCustomTableName = function() {
return this.params.files_custom_table_name
}
imageSlider.setFilesCustomTableName = function(filesCustomTableName) {
this.params.files_custom_table_name = filesCustomTableName
return this
}
imageSlider.getIsFirstImmediateCall = function() {
this.params.is_first_immediate_call = isFirstImmediateCall // GLOBAL VARIABLE !!!
return this.params.is_first_immediate_call
}
imageSlider.setIsFirstImmediateCall = function(isFirstImmediateCall) {
this.params.is_first_immediate_call = isFirstImmediateCall
return this
}
// ---------------------------------------------------------------------------------------------------// ---------------------------------------------------------------------------------------------------// Методы компонента// Текущая позиция слайдера
imageSlider.getSliderPos = function() {
return lead.getAttr("slider_pos")*1
}
// Установить текущую позицию слайдера
imageSlider.setSliderPos = function(sliderPos) {
lead.setAttr("slider_pos", sliderPos)
}
// Получить атрибут "ID последнего сообщения отправленного в Telegram"
imageSlider.getLastTelegramMessageId = function() {
return parseInt(lead.getAttr("last_telegram_message_id"))
}
// Есть ли сохраненный атрибут "ID последнего сообщения отправленного в Telegram"
imageSlider.hasLastTelegramMessageId = function() {
let messageId = this.getLastTelegramMessageId()
return (!isNaN(messageId) && messageId > 0)
}
// Сохранить атрибут "ID последнего сообщения отправленного в Telegram"
imageSlider.saveLastTelegramMessageId = function() {
lead.setAttr("last_telegram_message_id", bot.getTelegramLastMessageId())
}
// Очистить атрибут "ID последнего сообщения отправленного в Telegram"
imageSlider.clearLastTelegramMessageId = function() {
lead.setAttr("last_telegram_message_id", null)
}
// Функция для скрытия кнопок предыдущего меню
imageSlider.removeInlineKeyboard = function() {
if (this.hasLastTelegramMessageId()) {
bot.removeTelegramInlineKeyboard(lead.getData("identification"), this.getLastTelegramMessageId())
}
}
// Функция для удаления предыдущего сообщения (слайдера)
imageSlider.deletePrevMessage = function() {
if (this.hasLastTelegramMessageId()) {
this.removeInlineKeyboard()
// Можно это делать в окне в 24 часа
bot.sendMessage("---", null, null, {"endpoint": "deleteMessage", "message_id": this.getLastTelegramMessageId()})
this.clearLastTelegramMessageId()
}
}
// Останавливаем анимацию ожидания на кнопке
imageSlider.answerCallbackQuery = function() {
let callbackQueryId = null
let webhookPayload = bot.getWebhookPayload()
if (webhookPayload && webhookPayload['callback_query'] && webhookPayload['callback_query']['id']) {
callbackQueryId = webhookPayload['callback_query']['id']
if (typeof callbackQueryId == "string" && callbackQueryId.length > 0) {
bot.sendPayload('answerCallbackQuery', {
"callback_query_id": callbackQueryId,
})
}
}
}
// Создаем персону для лида, если ее еще нет
imageSlider.checkPersonForCurrentLeadAndGetCommandResult = function() {
if (!lead.getPersonId()) {
lead.createPersonForCurrentLead({"comment": null})
}
if (!lead.getPersonId()) {
return {
"break": true,
"run_script_by_code": this.getScriptCodeForFilesIsNotSupported()
}
}
return null
}
// Если канал лида - не телеграм, то перекидываем в другой скрипт, сообщающий о том что команда запроса файла не поддерживается
imageSlider.checkChannelAndGetCommandResult = function() {
if (lead.getChannelCode() !== "telegram") {
return {
"break": true,
"run_script_by_code": this.getScriptCodeForFilesIsNotSupported()
}
}
return null
}
// ---------------------------------------------------------------------------------------------------// ---------------------------------------------------------------------------------------------------// Метод для вычисления результата// Результат будет передан в команду "Выполнить JavaScript CallBack" с замыканием состояния
imageSlider.getComponentResult = function() {
// Создаем персону для лида, если ее еще нет
let checkPersonResult = this.checkPersonForCurrentLeadAndGetCommandResult()
if (checkPersonResult !== null) {
return checkPersonResult
}
// Если канал лида - не телеграм, то перекидываем в другой скрипт, сообщающий о том что команда запроса файла не поддерживается
let checkChannelResult = this.checkChannelAndGetCommandResult()
if (checkChannelResult !== null) {
return checkChannelResult
}
// ---------------------------------------------------------------------------------------------------
// Инициализация компонента
if (this.getIsFirstImmediateCall()) {
// !!! ИНИЦИАЛИЗАЦИЯ !!!
// Запоминаем что фото еще не получено, чтобы определять, какое меню выводить
this.setSliderPos(0)
// Сбрасываем ID последнего сообщения
this.clearLastTelegramMessageId()
}
// ---------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------
// ЛОГИКА КОМПОНЕНТА
// ---------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------
// Определяем, есть ли фото, если нет, то перекидываем в Главное меню
let wc = [["person_id", lead.getPersonId()], ["type", "image"]]
let imagesCount = table.count(
this.getFilesCustomTableName(), // tableName
wc
)
if (!imagesCount) {
bot.sendText("У вас нет загруженных фото! Сначала загрузите их!")
return {
"break": true,
"run_script_by_code": this.getScriptCodeForPersonFilesIsEmpty()
}
}
// ---------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------
// Подготовка переменных
let isAnyOtherMessageReceived = false
let prevSliderPos = this.getSliderPos()
let hasPrevPhoto = prevSliderPos > 0
let hasNextPhoto = prevSliderPos < (imagesCount-1)
// Для отладки:
//bot.sendText(hasPrevPhoto + ":" + hasNextPhoto)
//bot.sendText(imagesCount + ":" + prevSliderPos)
// ---------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------
// Обработка нажатых кнопок или входящего текста
if (["btn_static_main_menu", "0"].includes(bot.getIncomingMessage().toLowerCase())) {
// Удаляем предыдущее меню, если оно есть
//this.removeInlineKeyboard()
// Удаляем слайден, если он есть
this.deletePrevMessage()
// Выходим из команды
return {
"break": true,
"run_script_by_code": this.getScriptCodeForMainMenu(),
}
} else if (["btn_static_prev_photo", "1"].includes(bot.getIncomingMessage().toLowerCase())) {
// Останавливаем анимацию ожидания на кнопке
this.answerCallbackQuery()
let _sliderPos = this.getSliderPos()
if (hasPrevPhoto) {
_sliderPos--
hasPrevPhoto = _sliderPos > 0
hasNextPhoto = _sliderPos < (imagesCount-1)
} else {
// Фото закончились
}
this.setSliderPos(_sliderPos)
} else if (["btn_static_next_photo", "2"].includes(bot.getIncomingMessage().toLowerCase())) {
// Останавливаем анимацию ожидания на кнопке
this.answerCallbackQuery()
let _sliderPos = this.getSliderPos()
if (hasNextPhoto) {
_sliderPos++
hasPrevPhoto = _sliderPos > 0
hasNextPhoto = _sliderPos < (imagesCount-1)
} else {
// Фото закончились
}
this.setSliderPos(_sliderPos)
} else {
// Если получаем любое текстовое сообщение то лучше посылать фото не в том же сообщении, а в новом,
// чтобы слайдер не уходил вверх в переписке
//if (bot.getIncomingMessage() !== "") {
isAnyOtherMessageReceived = true
//}
}
if (isAnyOtherMessageReceived) {
this.deletePrevMessage()
}
// ---------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------
// Выполнение запросов к кастомной таблице
let sliderPos = this.getSliderPos()
// Для отладки
//bot.sendText(prevSliderPos + ":" + sliderPos)
// Для отладки
//bot.sendText(imagesCount + ":" + sliderPos)
let limit = 1
let offset = sliderPos
let images
let image
//let loadImage = function () {
imagesCount = table.count(
this.getFilesCustomTableName(), // tableName
wc
)
images = table.find(
this.getFilesCustomTableName(), // tableName
null, // columns
wc,
null, // orderBy
limit,
offset
)
image = images[0]
//}
//loadImage()
if (!images.length) {
return {
"break": true,
"run_script_by_code": this.getScriptCodeForPersonFilesIsEmpty()
}
}
// ---------------------------------------------------------------------------------------------------
// ---------------------------------------------------------------------------------------------------
// Отображение слайдера
// ps: "_static_" - вхождение такого текста означает что платформа Метабот
// не будет автоматически удалять inlineKeyboard после приема вебхука с нажатием на кнопку
let inlineKeyboard = [
[
{"text": "<<", "callback_data": "btn_static_prev_photo", "text_button_label": "1"},
{"text": ">>", "callback_data": "btn_static_next_photo", "text_button_label": "2"},
],
[
{"text": "Главное меню", "callback_data": "btn_static_main_menu", "text_button_label": "0"},
]
]
// Удаление кнопок меню, если действие недоступно
if (!hasPrevPhoto) {
unsetButton(inlineKeyboard, "btn_static_prev_photo")
}
if (!hasNextPhoto) {
unsetButton(inlineKeyboard, "btn_static_next_photo")
}
// Для отладки
//bot.sendText(this.hasLastTelegramMessageId() + ":" + this.getLastTelegramMessageId())
if (this.hasLastTelegramMessageId()) {
if (prevSliderPos !== sliderPos) {
newMedia = {"type": "photo", "media": image.url, "caption": "Фото #" + image.id}
bot.sendMessage("---", inlineKeyboard, null, {"endpoint": "editMessageMedia", "message_id": this.getLastTelegramMessageId(), "media": newMedia})
//this.saveLastTelegramMessageId() // Тут этого делать не нужно! Тк тут мы обновляем существующее сообщение !
}
} else {
bot.sendMessage("Фото #" + image.id, inlineKeyboard, [{"type": "image", "url": image.url}])
this.saveLastTelegramMessageId()
}
return {
"result": false,
}
// ---------------------------------------------------------------------------------------------------
}
//Todo: Учесть мультиязычность!module.exports = {
imageSlider
}
```
# Передача JSON параметров через джобы
При вызове джоб из JS можно передавать параметры в обертке **script\_request\_params**. Данные параметры сохраняются в переменную лида **sys\_last\_script\_request\_params** и становятся доступны в вызываемом скрипте или триггере через обращение к **request.json**.
Например, для вызова скрипта была использована команда **bot.runScriptByCodeForPerson()** с параметрами **script\_request\_params**.
```JavaScript
bot.runScriptByCodeForPerson(
'sentTicketNotification',
personId,
null,
false,
{
script_request_params: {
requestId: 86824,
externalId: 12382
},
}
);
```
В вызываемом скрипте данные параметры могут быть использованы следующим образом:
```JavaScript
let Text = "Вам поступила заявка № "+ request.json.requestId +
" от заказчика с ID "+ request.json.externalId;
```
# Методы ScriptTicketLine
# ScriptTicketLine.reload()
### Обновить данные по строке заявки из бд
```JavaScript
ScriptTicketLine.reload()
```
##### Описание:
Обновляет данные по строке заявки из бд.
##### Возвращает:
**bool** - подтверждение обновления данных.
# ScriptTicketLine.getId()
#### Получить id ScriptTicketLine
```JavaScript
ScriptTicketLine.getId()
```
##### Описание:
Возвращает id ScriptTicketLine.
Возвращает:
**int** - если значение найдено
или
**null** - если значение не найдено.
# ScriptTicketLine.getTicketId()
#### Получить id заявки
```JavaScript
ScriptTicketLine.getTicketId()
```
##### Описание:
Возвращает id заявки.
##### Возвращает:
**int** - id заявки
или
**null** - если значение не найдено.
# ScriptTicketLine.getProductId()
#### Получить id продукта заявки
```JavaScript
ScriptTicketLine.getProductId()
```
##### Описание:
Возвращает id продукта заявки.
Возвращает:
**int** - id продукта заявки
или
**null** - если значение не найдено.
# ScriptTicketLine.getProduct()
#### Получить все данные продукта заявки
```JavaScript
ScriptTicketLine.getProduct()
```
##### Описание:
Возвращает все данные продукта заявки.
Возвращает:
**ScriptProduct** - данные продукта заявки
или
**null** - если значение не найдено.
# ScriptTicketLine.getQuantity()
#### Получить количество продукта в заявке
```JavaScript
ScriptTicketLine.getQuantity()
```
##### Описание:
Возвращает количество продукта в заявке.
Возвращает:
**int** - количество продукта в заявке
или
**null** - если значение не найдено.
# ScriptTicketLine.getPrice()
#### Получить цену продукта в заявке
```JavaScript
ScriptTicketLine.getPrice()
```
##### Описание:
Возвращает цену продукта в заявке.
Возвращает:
**float** - цена продукта в заявке.
# ScriptTicketLine.getPriceFormatted()
#### Получить форматированную цену продукта
```JavaScript
ScriptTicketLine.getPriceFormatted()
```
##### Описание:
Возвращает форматированную цену продукта в заявке.
Возвращает:
**string** - форматированная цена продукта.
# ScriptTicketLine.getFee()
#### Получить стоимость заявки
```JavaScript
ScriptTicketLine.getFee()
```
##### Описание:
Возвращает стоимость заявки.
Возвращает:
**float** - стоимость заявки.
# ScriptTicketLine.getFeeFormatted()
#### Получить форматированную стоимость заявки
```JavaScript
ScriptTicketLine.getFeeFormatted()
```
##### Описание:
Возвращает форматированную стоимость заявки.
Возвращает:
**string** - форматированная стоимость заявки.
# ScriptTicketLine.getSubtotal()
#### Получить итоговую стоимость заявки
```JavaScript
ScriptTicketLine.getSubtotal()
```
##### Описание:
Возвращает итоговую стоимость заявки.
Возвращает:
**float** - итоговая стоимость заявки.
# ScriptTicketLine.getSubtotalFormatted()
#### Получить форматированную итоговую стоимость заявки
```JavaScript
ScriptTicketLine.getSubtotalFormatted()
```
##### Описание:
Возвращает форматированную итоговую стоимость заявки.
Возвращает:
**string** - форматированная итоговая стоимость заявки.
# ScriptTicketLine.getPriceDateFormatted() и ScriptTicketLine.priceDateFormatted()
#### Возвратить дату создания заявки указанном форматировании
```JavaScript
ScriptTicketLine.getPriceDateFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
или
ScriptTicketLine.priceDateFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
```
##### Описание:
Возвращает дату создания заявки в указанном форматировании.
##### Атрибуты:
Имя | Тип | Описание |
format | string | Формат даты |
timeZone | string|null | Часовой пояс |
##### Возвращает:
**string** - дата создания заявки
или
**null** - если значение не найдено.
# ScriptTicketLine.getCreatedAtFormatted() и ScriptTicketLine.createdAtFormatted()
#### Возвратить форматированную дату создания заказа
```JavaScript
ScriptTicketLine.getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
или
ScriptTicketLine.createdAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
```
##### Описание:
Возвращает форматированную дату создания заказа.
##### Атрибуты:
Имя | Тип | Описание |
format | string | Формат даты |
timeZone | string|null | Часовой пояс |
##### Возвращает:
**string** - дата создания заявки
или
**null** - если значение не найдено.
# ScriptTicketLine.getUpdatedAtFormatted() и ScriptTicketLine.updatedAtFormatted()
#### Возвратить форматированную дату обновления заказа
```JavaScript
ScriptTicketLine.getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
или
ScriptTicketLine.updatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
```
##### Описание:
Возвращает форматированную дату обновления заказа.
##### Атрибуты:
Имя | Тип | Описание |
format | string | Формат даты |
timeZone | string|null | Часовой пояс |
##### Возвращает:
**string** - дата обновления заявки
или
**null** - если значение не найдено.
# ScriptTicketLine.getDeletedAtFormatted() и ScriptTicketLine.deletedAtFormatted()
#### Возвратить форматированную дату удаления заказа
```JavaScript
ScriptTicketLine.getDeletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
или
ScriptTicketLine.deletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
```
##### Описание:
Возвращает форматированную дату удаления заказа.
##### Атрибуты:
Имя | Тип | Описание |
format | string | Формат даты |
timeZone | string|null | Часовой пояс |
##### Возвращает:
**string** - дата удаления заявки
или
**null** - если значение не найдено.
# Методы ScriptProduct
# ScriptProduct.reload()
#### Обновить данные по продукту из бд
```JavaScript
ScriptProduct.reload()
```
##### Описание:
Обновляет данные по продукту из бд.
Возвращает:
**bool** - если значение найдено.
# ScriptProduct.getId()
#### Получить id продукта
```JavaScript
ScriptProduct.getId()
```
##### Описание:
Возвращает id продукта.
Возвращает:
**int** - id продукта
или
**null** - если значение не найдено.
# ScriptProduct.getTitle()
#### Получить наименование продукта
```JavaScript
ScriptProduct.getTitle()
```
##### Описание:
Возвращает наименование продукта.
Возвращает:
**string** - наименование продукта
или
**null** - если значение не найдено.
# ScriptProduct.getCode()
#### Получить код продукта
```JavaScript
ScriptProduct.getCode()
```
##### Описание:
Возвращает код продукта.
Возвращает:
**string** - код продукта
или
**null** - если значение не найдено.
# ScriptProduct.getPrice()
#### Получить цену продукта
```JavaScript
ScriptProduct.getPrice()
```
##### Описание:
Возвращает цену продукта.
Возвращает:
**float** - цена продукта
или
**null** - если значение не найдено.
# ScriptProduct.getMainCategoryId()
#### Получить id категории продукта
```JavaScript
ScriptProduct.getMainCategoryId()
```
##### Описание:
Возвращает id категории продукта.
Возвращает:
**int** - id категории продукта
или
**null** - если значение не найдено.
# ScriptProduct.getIsEnabled()
#### Проверить активен ли продукт
```JavaScript
ScriptProduct.getIsEnabled()
```
##### Описание:
Проверяет активен ли продукт.
Возвращает:
**bool** - подтверждение активности
или
**null** - если значение не найдено.
# ScriptProduct.getIsAvailableInStock()
#### Проверить есть ли продукт в наличии
```JavaScript
ScriptProduct.getIsAvailableInStock()
```
##### Описание:
Проверяет есть ли продукт в наличии.
Возвращает:
**bool** - подтверждения наличия продукта
или
**null** - если значение не найдено.
# ScriptProduct.getUrl()
#### Получить url продукта
```JavaScript
ScriptProduct.getUrl()
```
##### Описание:
Возвращает url продукта.
Возвращает:
**string** - url продукта
или
**null** - если значение не найдено.
# ScriptProduct.getThumbUrl()
#### Получить thumb url продукта
```JavaScript
ScriptProduct.getThumbUrl()
```
##### Описание:
Возвращает thumb url продукта.
Возвращает:
**string** - thumb url продукта
или
**null** - если значение не найдено.
# ScriptProduct.getPriceFormatted()
#### Получить форматированную цену продукта
```JavaScript
ScriptProduct.getPriceFormatted()
```
##### Описание:
Возвращает форматированную цену продукта.
Возвращает:
**string** - форматированная цена продукта
или
**null** - если значение не найдено.
# ScriptProduct.getCreatedAtFormatted() и ScriptProduct.createdAtFormatted()
### Возвратить форматированную дату создания продукта
```JavaScript
ScriptProduct.getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
или
ScriptProduct.createdAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
```
##### Описание:
Возвращает форматированную дату создания продукта.
##### Атрибуты:
Имя | Тип | Описание |
format | string | Формат даты |
timeZone | string|null | Часовой пояс |
##### Возвращает:
**string** - дата создания продукта
или
**null** - если значение не найдено.
# ScriptProduct.updatedAtFormatted() и ScriptProduct.getUpdatedAtFormatted()
#### Возвратить форматированную дату обновления продукта
```JavaScript
ScriptProduct.updatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
или
ScriptProduct.getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
```
##### Описание:
Возвращает форматированную дату обновления продукта.
##### Атрибуты:
Имя | Тип | Описание |
format | string | Формат даты |
timeZone | string|null | Часовой пояс |
##### Возвращает:
**string** - дата обновления продукта
или
**null** - если значение не найдено.
# ScriptProduct.getDeletedAtFormatted() и ScriptProduct.deletedAtFormatted()
#### Возвратить форматированную дату удаления продукта
```JavaScript
ScriptProduct.getDeletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
или
ScriptProduct.deletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
```
##### Описание:
Возвращает форматированную дату удаления продукта.
##### Атрибуты:
Имя | Тип | Описание |
format | string | Формат даты |
timeZone | string|null | Часовой пояс |
##### Возвращает:
**string** - дата удаления продукта
или
**null** - если значение не найдено.
# Методы ticketStatus
# ticketStatus.reload()
### Перезагрузить статус в БД
```JavaScript
ticketStatus.reload()
```
##### Описание:
Перезагружает статус в БД.
Возвращает:
**bool** - подтверждение перезагрузки
или
**null** - если значение не найдено.
# ticketStatus.getId()
#### Получить id статуса
```JavaScript
ticketStatus.getId()
```
##### Описание:
Возвращает id статуса.
Возвращает:
**int** - id статуса
или
**null** - если значение не найдено.
# ticketStatus.getName()
#### Получить наименование статуса
```JavaScript
ticketStatus.getName()
```
##### Описание:
Возвращает наименование статуса.
Возвращает:
**string** - наименование статуса.
# ticketStatus.getType()
#### Получить тип статуса
```JavaScript
ticketStatus.getType()
```
##### Описание:
Возвращает тип статуса.
Возвращает:
**string** - тип статуса
или
**null** - если значение не найдено.
# ticketStatus.getOrderPos()
#### Получить значение статуса
```JavaScript
ticketStatus.getOrderPos()
```
##### Описание:
Возвращает значение статуса.
Возвращает:
**int** - значение статуса.
# ticketStatus.isSameStatusName()
### Проверить наименование статуса на сходство
```JavaScript
ticketStatus.isSameStatusName($statusName)
```
##### Описание:
Проверяет наименование статуса на сходство.
##### Атрибуты:
Имя | Тип | Описание |
statusName | string | Наименование статуса |
##### Возвращает:
**bool** - подтверждение сходства.
# ticketStatus.getCreatedAtFormatted() и ticketStatus.createdAtFormatted()
#### Возвратить форматированную дату создания статуса
```JavaScript
ticketStatus.getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
или
ticketStatus.createdAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
```
##### Описание:
Возвращает форматированную дату создания статуса.
##### Атрибуты:
Имя | Тип | Описание |
format | string | Формат даты |
timeZone | string|null | Часовой пояс |
##### Возвращает:
**string** - форматированная дата создания статуса
или
**null** - если значение не найдено.
# ticketStatus.getUpdatedAtFormatted() и ticketStatus.getUpdatedAtFormatted()
#### Возвратить форматированную дату обновления статуса
```JavaScript
ticketStatus.getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
или
ticketStatus.updatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
```
##### Описание:
Возвращает форматированную дату обновления статуса.
##### Атрибуты:
Имя | Тип | Описание |
format | string | Формат даты |
timeZone | string|null | Часовой пояс |
##### Возвращает:
**string** - форматированная дата обновления статуса
или
**null** - если значение не найдено.
# ticketStatus.getDeletedAtFormatted() и ticketStatus.deletedAtFormatted()
#### Возвратить форматированную дату удаления статуса
```JavaScript
ticketStatus.getDeletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
или
ticketStatus.deletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
```
##### Описание:
Возвращает форматированную дату удаления статуса.
##### Атрибуты:
Имя | Тип | Описание |
format | string | Формат даты |
timeZone | string|null | Часовой пояс |
##### Возвращает:
**string** - форматированная дата удаления статуса
или
**null** - если значение не найдено.
# Методы personQueue
# personQueue.getId()
#### Получить id очереди персон
```JavaScript
personQueue.getId()
```
##### Описание:
Возвращает id очереди персон.
Возвращает:
**int** - id очереди персон.
# personQueue.getCode()
#### Получить код очереди персон
```JavaScript
personQueue.getCode()
```
##### Описание:
Возвращает код очереди персон.
Возвращает:
**string** - код очереди персон.
# personQueue.getIsEnabled()
#### Проверить активна ли очередь персон
```JavaScript
personQueue.getIsEnabled()
```
##### Описание:
Проверяет активна ли очередь персон.
Возвращает:
**bool** - подтверждение активности.
# personQueue.getName()
#### Получить наименование очереди персон
```JavaScript
personQueue.getName()
```
##### Описание:
Возвращает наименование очереди персон.
Возвращает:
**string** - id статуса.
# personQueue.isSameName()
#### Проверить наименование очереди персон на сходство
```JavaScript
personQueue.isSameName($name)
```
##### Описание:
Проверяет наименование очереди персон на сходство.
##### Атрибуты:
Имя | Тип | Описание |
name | string | Наименование очереди персон |
##### Возвращает:
**bool** - подтверждение сходства.
# personQueue.getCreatedAtFormatted() и personQueue.createdAtFormatted()
#### Возвратить форматированную дату создания очереди персон
```JavaScript
personQueue.createdAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
или
personQueue.getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
```
##### Описание:
Возвращает форматированную дату создания очереди персон.
##### Атрибуты:
Имя | Тип | Описание |
format | string | Формат даты |
timeZone | string|null | Часовой пояс |
##### Возвращает:
**string** - дата создания очереди
или
**null** - если значение не найдено.
# personQueue.getUpdatedAtFormatted() и personQueue.updatedAtFormatted()
#### Возвратить форматированную дату обновления очереди персон
```JavaScript
personQueue.getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
или
personQueue.updatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
```
##### Описание:
Возвращает форматированную дату обновления очереди персон.
##### Атрибуты:
Имя | Тип | Описание |
format | string | Формат даты |
timeZone | string|null | Часовой пояс |
##### Возвращает:
**string** - дата обновления очереди персон
или
**null** - если значение не найдено.