# 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). #### Поля лидов Это основные поля, доступные для каждого лида.
ПолеОписание
idID лида
nameИмя лида
identificationID в мессенджере (например, Telegram ID)
person\_idID персоны
manager\_idID менеджера
bot\_idID бота
channel\_idID канала
lang\_codeКод языка
status\_idID статуса
is\_muteВключен ли бот для лида (0 или 1)
is\_forwardedПередан ли оператору (0 или 1)
last\_activityДата последней активности
last\_responseTimestamp последнего ответа
messengerID мессенджера
bot\_debug\_levelУровень отладки бота (0 - обычный, 11 - админ)
created\_atДата создания
updated\_atДата обновления
dialog\_idID диалога
unread\_countКоличество непрочитанных сообщений
forwarded\_atДата передачи оператору
Пример использования: ```JavaScript where = [ ['id', 145492], ['name', 'like', '%Иван%'], ['created_at', '>=', '2023-01-01'] ] ``` #### Каналы (channels) Для поиска по каналам используются поля **channels.code** и **channels.id**.
КодIDОписание
unknown0Неизвестный канал
avito1Avito
facebook2Facebook
instagram3Instagram
livechatWidget4LiveChat Widget
skype5Skype
telegram6Telegram
twitter7Twitter
viber8Viber
vk9VKontakte
whatsapp10WhatsApp
youla11Youla
wechat12WeChat
metabotWidget13MetaBot Widget
webim14Webim
jivoWidget15Jivo Widget
odnoklassniki16Odnoklassniki
apple\_business\_chat17Apple 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) ``` ##### Описание: Возвращает значение данных бота по ключу. ##### Атрибуты:
ИмяТипОписание
keystringКлюч данных бота
В качестве ключа можно указать: - leadsCount - количество лидов бота. ##### Возвращает: **mixed** - значение данных бота в формате, в котором они находятся в сущности или **null** - если таких данных не существует. ##### Пример: ```JavaScript let data = bot.getData('leadsCount'); ``` # bot.findLeads() ### Получить лиды по атрибутам ```JavaScript bot.findLeads($columns = [], $where = [], $orderBy = [], ?int $limit = null, ?int $offset = null) ``` ##### Описание: Находит лида по указанным атрибутам и другим данным. ##### Атрибуты:
ИмяТипОписание
columnsarrayВозвращаемые поля лидов, по умолчанию все поля. Вы можете вывести дополнительные поля: **status\_name**, **channel\_name**, **channel\_code**
[where](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/where-dlya-botfindleads)arrayМассив для поиска лидов по атрибутам, статусам и каналам. Подробнее читайте [здесь.](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/where-dlya-botfindleads)
[orderBy](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/orderby-dlya-botfindleads)arrayМассив сортировки возвращаемых значений. Подробнее читайте [здесь](https://docs.metabot24.ru/books/07-spravocnik-po-funkciyam-js/page/orderby-dlya-botfindleads).
limitintМаксимальное число возвращаемых лидов. Можно вернуть диапазон от 1 до 100
offsetintЧисловое значение, указывающее количество записей, которые необходимо пропустить от начала результата выборки перед возвратом данных. Этот параметр используется для пагинации. Например, если `limit` установлен на 100, а `offset` равен 100, то будут возвращены записи, начиная со 101-го лида.
##### Возвращает: **array** - массив полей лидов. В массиве следующие поля:
- **id** - id лида - **identification** - внешний id лида - **manager\_id** - id менеджера привязанного к лиду - **bot\_id** - id бота лида - **channel\_id** - id канала лида - **status\_id** - id статуса лида - **is\_mute** - включен ли бот для лида ##### Пример: ```JavaScript let leads = bot.findLeads( [], [ ['lead_attributes.attribute_type', 'variable'], ['lead_attributes.attribute_key', 'nlpLastIntentName'], ['lead_attributes.attribute_value', 'позвать_человека'], ], [['updated_at']] ); if (leads.length) { let statusName = leads[0].getData('id'); } ``` или получаем поля для первого найденного лида (без условий): ```JavaScript let leads = bot.findLeads(['status_name', 'channel_name', 'channel_code']); if (leads.length) { let statusName = leads[0].getData('status_name'); let channelName = leads[0].getData('channel_name'); let channelCode = leads[0].getData('channel_code'); } ``` # bot.scheduleScript() ### Планирование скрипта ```JavaScript bot.scheduleScript(?int $scriptId, ?int $leadId, ?int $ticketId = null, $jobParams = []) ``` ##### Описание: Запускает скрипт в соответствии с указанными параметрами. ##### Атрибуты:
ИмяТипОписание
scriptIdintID скрипта, который будет запущен
leadIdintID лида, для которого будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
jobParamsjsonПередача в планируемую задачу входящих json параметров. Указывать через script\_request\_params
Возможные параметры в 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 скрипта по его наименованию. ##### Атрибуты:
ИмяТипОписание
scriptNamestringНаименование скрипта
##### Возвращает: **int** - id скрипта в формате числа. ##### Пример: ```JavaScript let ScriptId = bot.getScriptIdByName('Меню'); ``` # bot.getScriptIdByCode() ### Получить ID скрипта по коду ```JavaScript bot.getScriptIdByCode(?string $scriptCode) ``` ##### Описание: Возвращает id скрипта по его дополнительному идентификатору. ##### Атрибуты:
ИмяТипОписание
scriptCodestringКод скрипта
##### Возвращает: **int** - id скрипта в формате числа. ##### Пример: ```JavaScript let ScriptId = bot.getScriptIdByCode('menu'); ``` # bot.runScriptForLead() ### Запустить скрипт для лида по ID ```JavaScript bot.runScriptForLead(?int $scriptId, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = []) ``` ##### Описание: Запускает скрипт бота для лида по указанному id скрипта. ##### Атрибуты:
ИмяТипОписание
scriptIdintID скрипта, который будет запущен
leadIdintID лида, для которого будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих json параметров. Указывать через script\_request\_params
Возможные параметры в 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 = []) ``` ##### Описание: Запускает скрипт бота для лида по указанному имени скрипта. ##### Атрибуты:
ИмяТипОписание
scriptNamestringНаименование скрипта, который будет запущен
leadIdintID лида, для которого будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих 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 скрипта. ##### Атрибуты:
ИмяТипОписание
scriptIdintID скрипта, который будет запущен
personIdintID персоны, для которой будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих 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 = []) ``` ##### Описание: Запускает скрипт бота для персоны по указанному имени скрипта. ##### Атрибуты:
ИмяТипОписание
scriptNamestringНаименование скрипта, который будет запущен
personIdintID персоны, для которой будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих 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 = []) ``` ##### Описание: Запускает скрипт бота для лида по указанному коду скрипта. ##### Атрибуты:
ИмяТипОписание
scriptCodestringКод скрипта, который будет запущен
leadIdintID лида, для которого будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих 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 = []) ``` ##### Описание: Запускает скрипт бота для персоны по указанному коду скрипта. ##### Атрибуты:
ИмяТипОписание
scriptCodestringКод скрипта, который будет запущен
personIdintID персоны, для которой будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих 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 скрипта. ##### Атрибуты:
ИмяТипОписание
scriptIdintID серипта
leadIdintID лида
##### Возвращает: **bool** - подтверждение очистки джоб. ##### Пример: ```JavaScript bot.clearJobsByScriptId(1342, 187); ``` # bot.clearJobsByScriptName() ### Очистить джобы по наименованию скрипта ```JavaScript bot.clearJobsByScriptName(?string $scriptName, ?int $leadId = null) ``` ##### Описание: Выполняется поиск и очистка джоб по наименованию скрипта. ##### Атрибуты:
ИмяТипОписание
scriptNamestringНаименование скрипта
leadIdintID лида
##### Возвращает: **bool** - подтверждение очистки джоб. ##### Пример: ```JavaScript bot.clearJobsByScriptName("skript", 187); ``` # bot.clearJobsByScriptCode() ### Очистить джобы по коду скрипта ```JavaScript bot.clearJobsByScriptCode(?string $scriptCode, ?int $leadId = null) ``` ##### Описание: Выполняется поиск и очистка джоб по коду скрипта. ##### Атрибуты:
ИмяТипОписание
scriptCodestringКод скрипта
leadIdintID лида
##### Возвращает: **bool** - подтверждение очистки джоб. ##### Пример: ```JavaScript bot.clearJobsByScriptCode("SEND_TOKEN", 187); ``` # bot.setAttr() ### Установить значение переменной бота ```JavaScript bot.setAttr(string $key, string $value) ``` ##### Описание: Обновляет значение уже существующей глобальной переменной или создает новую переменную с указанным значением. Данные будут сохранены в БД. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
valuestringЗначение переменной
Не возвращает значений, так как выполняет только установку переменной. ##### Пример: Создание глобальной переменной бота bot\_attribute: ```JavaScript bot.setAttr('bot_attribute', 'Значение глобальной переменной') ``` # bot.getAttr() ### Получить значение переменной бота ```JavaScript bot.getAttr(string $key) ``` #### Описание: Возвращает значение уже существующей глобальной переменной. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **mixed** - объект того же типа и значения, что у запрашиваемой переменной. ##### Пример: Получение значения глобальной переменной бота bot\_attribute: ```JavaScript let bot_attribute_value = bot.getAttr('bot_attribute'); ``` # bot.getAllAttr() ### Получить все переменные бота ```JavaScript bot.getAllAttr() ``` ##### Описание: Возвращает значение всех глобальных переменных. Возвращает: **array** - массив значений всех переменных. ##### Пример: Получение значений всех глобальных переменных бота и сложение их значений: ```JavaScript let bot_attribute = null; let all_bot_attributes = bot.getAllAttr(); for(let i = 0; i < all_bot_attributes.length; i++) { bot_attribute = bot_attribute + all_bot_attributes[i]; } ``` # bot.issetAttr() и bot.isAttrExist() ### Проверить наличие переменной бота ```JavaScript bot.issetAttr(string $key) ``` или ```JavaScript bot.isAttrExist(string $key) ``` ##### Описание: Проверяет существует ли глобальная переменная в боте. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
Возвращает: **bool** - подтверждение существования переменной. ##### Пример: Проверка двумя способами существования глобальной переменной бота bot\_attribute: ```JavaScript let bot_exists = bot.issetAttr('bot_attribute'); let bot_altexists = bot.isAttrExist('bot_attribute'); ``` # bot.scheduleTrigger() ### Планирование триггера ```JavaScript bot.scheduleTrigger(?int $triggerId, ?int $leadId, ?int $ticketId = null, $jobParams = []) ``` ##### Описание: Запускает триггер в соответствии с указанными параметрами. ##### Атрибуты:
ИмяТипОписание
triggerIdintID триггера, который будет запущен
leadIdintID лида, для которого будет запущен триггер
ticketIdintID заявки, для которой будет запущен триггер
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params
Возможные параметры в 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 = []) ``` ##### Описание: Запускает триггер в соответствии с указанными параметрами по коду. ##### Атрибуты:
ИмяТипОписание
triggerCodestringID триггера, который будет запущен
leadIdintID лида, для которого будет запущен триггер
ticketIdintID заявки, для которой будет запущен триггер
addToQueueboolДобавление в очередь триггеров
jobParamsjsonПередача в планируемую задачу входящих 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 = []) ``` ##### Описание: Запускает триггер в соответствии с указанными параметрами по коду для последнего лида указанной персоны. ##### Атрибуты:
ИмяТипОписание
triggerCodestringID триггера, который будет запущен
personIdintID персоны, для которой будет найден последний лид
ticketIdintID заявки, для которой будет запущен триггер
addToQueueboolДобавление в очередь триггеров
jobParamsjsonПередача в планируемую задачу входящих 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) ``` ##### Описание: Удаляет все триггеры из очереди для лида. ##### Атрибуты:
ИмяТипОписание
leadIdintID лида, триггеры которого будут удалены
ticketIdintID заявки, триггеры которого будут удалены
##### Возвращает: **bool** - подтверждение удаления триггеров. ##### Пример: ```JavaScript bot.clearTriggerJobsForLead(236178, 229715); ``` # bot.clearTriggerJobsForAllPersonLeads() ### Удалить триггеры для всех лидов персоны ```JavaScript bot.clearTriggerJobsForAllPersonLeads(?int $personId, ?int $ticketId = null) ``` ##### Описание: Удаляет все триггеры из очереди для всех лидов персоны. ##### Атрибуты:
ИмяТипОписание
personIdintID персоны, триггеры которой будут удалены
ticketIdintID заявки, триггеры которого будут удалены
##### Возвращает: **bool** - подтверждение удаления триггеров. ##### Пример: ```JavaScript bot.clearTriggerJobsForAllPersonLeads(36178); ``` # bot.getTriggerIdByName() ### Получить ID триггера по наименованию ```JavaScript bot.getTriggerIdByName(?string $triggerName) ``` ##### Описание: Возвращает id триггера по указанному наименованию. ##### Атрибуты:
ИмяТипОписание
triggerNamestringНаименование триггера
##### Возвращает: **int** - id триггера в формате числа. ##### Пример: ``` let TriggerId = bot.getTriggerIdByName('Триггер'); ``` # bot.getTriggerIdByCode() ### Получить ID Триггера по Коду ``` bot.getTriggerIdByCode(?string $triggerCode) ``` ##### Описание: Возвращает id триггера по указанному коду. ##### Атрибуты:
ИмяТипОписание
triggerCodestringКод триггера
##### Возвращает: **int** - id триггера в формате числа. # bot.runTriggerForLead() ### Запустить триггер для лида по ID триггера ```JavaScript bot.runTriggerForLead(?int $triggerId, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = []) ``` ##### Описание: Запускает триггер для лида по указанному id триггера. ##### Атрибуты:
ИмяТипОписание
triggerIdintID триггера, который будет запущен
leadIdintID лида, для которого будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params
Возможные параметры в 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 = []) ``` ##### Описание: Запускает триггер для лида по указанному имени триггера. ##### Атрибуты:
ИмяТипОписание
triggerNamestringНаименование триггера, который будет запущен
leadIdintID лида, для которого будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих 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 триггера. ##### Атрибуты:
ИмяТипОписание
triggerIdintID триггера, который будет запущен
personIdintID персоны, для которой будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих 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 = []) ``` ##### Описание: Запускает триггер для персоны по указанному имени триггера. ##### Атрибуты:
ИмяТипОписание
triggerNamestringНаименование триггера, который будет запущен
personIdintID персоны, для которой будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
addToQueueboolДобавление в очередь скриптов
jobParamsjsonПередача в планируемую задачу входящих 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 триггера. ##### Атрибуты:
ИмяТипОписание
triggerIdintID триггера
leadIdintID лида
##### Возвращает: **bool** - подтверждение очистки джоб. ##### Пример: ```JavaScript let TriggerId = bot.getTriggerIdByName('Триггер'); bot.clearTriggerJobsById(TriggerId); ``` # bot.clearTriggerJobsByName() ### Очистить джобы по наименованию триггера ```JavaScript bot.clearTriggerJobsByName(?string $triggerName, ?int $leadId = null) ``` ##### Описание: Выполняется поиск и очистка джоб по наименованию триггера. ##### Атрибуты:
ИмяТипОписание
triggerNamestringНаименование триггера
leadIdintID лида
##### Возвращает: **bool** - подтверждение очистки джоб. ##### Пример: ```JavaScript bot.clearTriggerJobsByName('Триггер'); ``` # bot.clearTriggerJobsByScriptCode() ### Очистить джобы по коду скрипта ``` bot.clearTriggerJobsByScriptCode(?string $scriptCode, ?int $leadId = null, ?int $ticketId = null) ``` ##### Описание: Выполняется поиск и очистка джоб триггеров по коду скрипта. ##### Атрибуты:
ИмяТипОписание
scriptCodestringКод скрипта
leadIdintID лида
ticketIdintID заявки
##### Возвращает: **bool** - подтверждение очистки джоб. # bot.clearTriggerJobsByIdForTicket() ### Очистить джобы по id триггера и ID заявки ```JavaScript bot.clearTriggerJobsByIdForTicket(?int $triggerId, ?int $ticketId) ``` ##### Описание: Выполняется поиск и очистка джоб по id триггера и ID заявки. ##### Атрибуты:
ИмяТипОписание
triggerIdintID триггера
ticketIdintID заявки, джобы которой будут очищены
##### Возвращает: **bool** - подтверждение очистки джоб. ##### Пример: ```JavaScript let TriggerId = bot.getTriggerIdByName('Триггер'); bot.clearTriggerJobsByIdForTicket(TriggerId, 17256); ``` # bot.clearTriggerJobsByNameForTicket() ### Очистить джобы по наименованию триггера и ID заявки ```JavaScript bot.clearTriggerJobsByNameForTicket(?string $triggerName, ?int $ticketId) ``` ##### Описание: Выполняется поиск и очистка джоб по наименованию триггера и ID заявки. ##### Атрибуты:
ИмяТипОписание
triggerNamestringНаименование триггера
ticketIdintID заявки, джобы которой будут очищены
##### Возвращает: **bool** - подтверждение очистки джоб. ##### Пример: ```JavaScript bot.clearTriggerJobsByNameForTicket('Триггер', 17256); ``` # bot.scheduleBroadcast() ### Планирование рассылки ```JavaScript bot.scheduleBroadcast(?int $broadcastId, ?int $ticketId = null, $jobParams = []) ``` ##### Описание: Запускает рассылку в соответствии с указанными параметрами. ##### Атрибуты:
ИмяТипОписание
broadcastIdintID рассылки, которая будет запущена
ticketIdintID заявки, для которой будет запущена рассылка
jobParamsjsonПередача в планируемую задачу входящих json параметров. Можно указать script\_request\_params (для скрипта/триггера/рассылки) condition\_script\_code (для перекрытия условия триггера/рассылки). Для установки времени запуска: **run\_at** - точное время запуска (по часовому поясу сервера) или **run\_after\_sec** - для запуска через указанное кол-во секунд

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

##### Атрибуты:
ИмяТипОписание
fileUrlstringURL файла
##### Возвращает: **array** - скачанный файлы или **string** - скачанный файл. # bot.removeFile() ### Удалить файл по URL ```JavaScript bot.removeFile(string $fileUrl) ``` ##### Описание: Удаляет файл по URL из хранилища файлов Метабот для вашего бизнеса. ##### Атрибуты:
ИмяТипОписание
fileUrlstringURL файла
##### Возвращает: **string** - URL файла. # bot.removeTmpFile() ### Удалить файл по URL из временного хранилища ``` bot.removeTmpFile(string $fileUrl) ``` ##### Описание: Удаляет файл по URL из временного хранилища файлов Метабот для вашего бизнеса. ##### Атрибуты:
ИмяТипОписание
fileUrlstringURL файла
##### Возвращает: **string** - URL файла. # bot.uploadFileToCdnAndGetNewUrl() ### Залить файл на CDN и получить новую ссылку ```JavaScript bot.uploadFileToCdnAndGetNewUrl(string $fileUrl, array|object|null $cdnConfig = null) ``` ##### Описание: Заливает файл на CDN и возвращает новую ссылку, а также доп. параметры с описанием файла. ##### Атрибуты:
ИмяТипОписание
fileUrlstringURL файла
cdnConfig array|object|null Конфиг
##### Возвращает: **array** - данные файла. В случае успеха возвращает массив вида: ```JavaScript [ 'result' => true, 'type' => (string) $type, 'url' => (string) $newUrl, 'name' => (string) $fileName, 'size_kb' => (float) $fileSizeKb, 'max_size_by_type_kb' => (float) $maxFileSize, ] ``` Где $**type** – тип файла; $**newUrl** – ссылка на файла в CDN; $**fileName** – имя загруженного файла; $**fileSizeKb** – размер загруженного файла в Кб; $**maxFileSize** - максимальное ограничение размера файла в зависимости от типа файла. В случае провала возвращает массив вида: ```JavaScript [ 'result' => false, 'error' => true, 'error_code' => (string) ‘вид ошибки’, // например 'error_when_upload' или ‘file_size_exceeded’ 'error_message' => (string) описание ошибки, ] ``` # bot.removeFileFromCdn() ### Удалить файл из CDN ```JavaScript bot.removeFileFromCdn(string $fileUrl, $cdnConfig = null) ``` ##### Описание: Удаляет файл из CDN. ##### Атрибуты:
ИмяТипОписание
fileUrlstringURL файла
cdnConfig array|object|nullКонфиг
##### Возвращает: **array** - данные файла. # bot.randomStr() ### Получить случайную буквенно-цифровую строку ```JavaScript bot.randomStr(int $length = 16) ``` ##### Описание: Генерирует случайную буквенно-цифровую строку. При вызове внешнего API эндпоинта через асинхронную команду, можно генерировать guid или случайную строку, сохранять и передавать во внешнюю систему, при приеме ответа на асинхронный запрос можно валидировать пришедший код. Таким образом можно идентифицировать вызовы между двумя системами, или гарантировать то что ответ из внешней системы пришел именно на данный запрос а не на предыдущий. ##### Атрибуты:
ИмяТипОписание
lengthintДлина строки, по умолчанию 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). ##### Атрибуты:
ИмяТипОписание
datamixedИнформация
isSendMessageToLead boolОтправлять или нет сообщение в мессенджер
##### Возвращает: **bool** - успешное срабатывание метода. # bot.sysLogError() ### Вывести информацию об ошибке в лог ```JavaScript bot.sysLogError($data, bool $isSendMessageToLead = false) ``` ##### Описание: Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит обычный лид, но только если у него включена отладка уровня только V8 (editor). ##### Атрибуты:
ИмяТипОписание
datamixedИнформация об ошибке
isSendMessageToLead boolОтправлять или нет сообщение в мессенджер
##### Возвращает: **bool** - успешное срабатывание метода. # bot.sysLogInfoToAdmin() ### Вывести информацию в лог для админа ```JavaScript bot.sysLogInfoToAdmin($data) ``` ##### Описание: Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит только лид-админ, т.е. если у него включен уровень отладки V8 и Exceptions (admin) ##### Атрибуты:
ИмяТипОписание
datamixedИнформация
##### Возвращает: **bool** - успешное срабатывание метода. # bot.sysLogErrorToAdmin() ### Вывести информацию об ошибке в лог для админа ```JavaScript bot.sysLogErrorToAdmin($data) ``` ##### Описание: Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит только лид-админ, т.е. если у него включен уровень отладки V8 и Exceptions (admin). ##### Атрибуты:
ИмяТипОписание
datamixedИнформация об ошибке
##### Возвращает: **bool** - успешное срабатывание метода. # bot.debug() ### Вывести информацию в мессенджер ```JavaScript bot.debug($data, bool $isStopBot = false) ``` ##### Описание: Добавляет в сообщения мессенджера информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Функция идентична функции из глобального пространства имен debug(), по умолчанию не останавливает выполнение скрипта. ##### Атрибуты:
ИмяТипОписание
datamixedИнформация
isStopBotboolПрерывать или нет выполнение скрипта
##### Возвращает: **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) ``` ##### Описание: Устанавливает значение данных текущего бота по ключу. ##### Атрибуты:
ИмяТипОписание
keystringКлюч данных бота
valuemixedЗначение данных бота
В качестве ключа можно указать: - leadsCount - количество лидов бота. ##### Возвращает: **self** - значение данных бота в формате, в котором они находятся в сущности. ##### Пример: ```JavaScript let data = bot.setData('leadsCount', 4); ``` # bot.scheduleScriptByCode() ### Планирование скрипта по коду ```JavaScript bot.scheduleScriptByCode(string $scriptCode, int|null $leadId, int|null $ticketId = null, $jobParams = []) ``` ##### Описание: Планирует вызов скрипта по коду. ##### Атрибуты:
ИмяТипОписание
scriptCodestringКод скрипта, который будет запущен
leadIdintID лида, для которого будет запущен скрипт
ticketIdintID заявки, для которой будет запущен скрипт
jobParamsjsonПередача в планируемую задачу входящих 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 скрипта по его дополнительному идентификатору. ##### Атрибуты:
ИмяТипОписание
scriptIdintId скрипта
##### Возвращает: **int** - id скрипта в формате числа или **null** - если таких данных не существует. ##### Пример: ```JavaScript let ScriptId = bot.getScriptCodeById(23121); ``` # bot.getIntAttr() ### Получить значение переменной бота в int формате ```JavaScript bot.getIntAttr(string $key, ?int|null $default = 0) ``` ### Описание: Возвращает значение int переменной бота. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
defaultint
##### Возвращает: **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 переменной бота. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
defaultfloat
##### Возвращает: **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 переменной бота. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
defaultboolЕсли переменная пуста, то вернуть данное значение
##### Возвращает: **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 переменной бота. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
valuemixedJSON значение переменной
##### Возвращает: **self** - объект того же типа и значения, что задан в методе. ##### Пример: ```JavaScript let bot_attribute_value = bot.setJsonAttr('bot_attribute', { "id": 2415, "name": "Имя" }); ``` # bot.getJsonAttr() ### Получить значение JSON переменной бота ```JavaScript bot.getJsonAttr(string $key) ``` #### Описание: Возвращает значение JSON переменной бота. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **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 переменной бота. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **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 = []) ``` ##### Описание: Запускает триггер по коду в соответствии с указанными параметрами. ##### Атрибуты:
ИмяТипОписание
triggerCodestringКод триггера, который будет запущен
leadIdintID лида, для которого будет запущен триггер
ticketIdintID заявки, для которой будет запущен триггер
jobParamsjsonПередача в планируемую задачу входящих 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 скрипта. ##### Атрибуты:
ИмяТипОписание
leadIdintID лида, триггеры которого будут удалены
scriptIdintID скрипта, триггеры которого будут удалены
##### Возвращает: **bool** - подтверждение удаления триггеров. ##### Пример: ```JavaScript bot.clearTriggerJobsByScriptId(236178, 36462); ``` # bot.clearTriggerJobsByScriptName() ### Удалить триггеры для лида ```JavaScript bot.clearTriggerJobsByScriptName(string|null $scriptName, int|null $leadId = null) ``` ##### Описание: Удаляет все триггеры из очереди для лида. ##### Атрибуты:
ИмяТипОписание
leadIdintID лида, триггеры которого будут удалены
scriptNamestringНаименование скрипта, триггеры которого будут удалены
##### Возвращает: **bool** - подтверждение удаления триггеров. ##### Пример: ```JavaScript bot.clearTriggerJobsByScriptName("skript_name", 236178); ``` # bot.clearTriggerJobsByCode() ### Удалить джобы по коду триггера ```JavaScript bot.clearTriggerJobsByCode(string|null $triggerCode, int|null $leadId = null, int $ticketId = null) ``` ##### Описание: Очищает джобы по коду триггера. ##### Атрибуты:
ИмяТипОписание
triggerCodestringКод триггера
leadIdintID лида, триггеры которого будут удалены
ticketIdintID заявки, триггеры которого будут удалены
##### Возвращает: **bool** - подтверждение удаления триггеров. ##### Пример: ```JavaScript bot.clearTriggerJobsByCode("trigger_code" , 236178, 229715); ``` # bot.clearTriggerJobsByCodeForAllPersonLeads() ### Удалить триггеры для всех лидов персоны по коду ```JavaScript bot.clearTriggerJobsByCodeForAllPersonLeads(string|null $triggerCode, int|null $personId, int $ticketId = null) ``` ##### Описание: Удаляет триггеры для всех лидов персоны по коду. ##### Атрибуты:
ИмяТипОписание
triggerCodestringКод триггера
personIdintID персоны, триггеры которой будут удалены
ticketIdintID заявки, триггеры которого будут удалены
##### Возвращает: **bool** - подтверждение удаления триггеров. ##### Пример: ```JavaScript bot.clearTriggerJobsByCodeForAllPersonLeads("trigger_code", 236, 229715); ``` # bot.clearTriggerJobsByCodeForTicket() ### Удалить джобы по коду триггера и ID заявки ```JavaScript bot.clearTriggerJobsByCodeForTicket(string|null $triggerCode, int|null $ticketId) ``` ##### Описание: Очищает джобы по коду триггера и ID заявки. ##### Атрибуты:
ИмяТипОписание
triggerCodestringКод триггера
ticketIdintID заявки, триггеры которого будут удалены
##### Возвращает: **bool** - подтверждение удаления триггеров. ##### Пример: ```JavaScript bot.clearTriggerJobsByCodeForTicket("trigger_code", 229715); ``` # bot.getTicketTypeNameById() ### Получить наименование заявки по id вида заявки ```JavaScript bot.getTicketTypeNameById(int|null $ticketTypeId) ``` ##### Описание: Возвращает наименование заявки по id вида заявки. ##### Атрибуты:
ИмяТипОписание
ticketTypeIdintНаименование тэга
##### Возвращает: **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 триггера, маршрута, в внутреннего эндпоинта и т.д. ##### Атрибуты:
ИмяТипОписание
jobParamsjsonПередача в планируемую задачу входящих 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) ``` ##### Описание: Возвращает значение данных сущности лида по ключу. ##### Атрибуты:
ИмяТипОписание
keystringКлюч данных лида
В качестве ключа можно указать: - **id** - id лида; - **name** - имя лида; - **identification** - внешний id лида; - **identification\_entity** - внешний id сущности; - **person\_id** - id персоны лида; - **manager\_id** - id менеджера привязанного к лиду; - **bot\_id** - id бота лида; - **channel\_id** - id канала лида; - **lang\_code** - код языка; - **status\_id** - id статуса лида; - **extra** - last\_message\_payload - **identification** - id последнего сообщения; - **event\_name** - код события, например, user\_uttered, когда последнее сообщение - ответ пользователя; - **text** - текст последнего сообщения; - **payload** - данные последнего сообщения; - **timestamp** - время отправки; - **session\_id** - id сессии; - **socket\_id** - id сокета; - **is\_mute** - включен ли бот для лида; - **last\_message\_date** - дата последнего сообщения; - **active\_nlp\_integration\_id** - id активной NLP интеграции; - **last\_activity** - время последней активности; - **last\_response** - код последнего ответа; - **messenger** - id мессенджера; - **bot\_debug\_level** - уровень отладки бота; - **created\_at** - время создания; - **updated\_at** - время обновления; - **dialog\_id** - id диалога; - **unread\_count** - количество непрочитанных оператором сообщений; - **last\_message** - последнее сообщение; - **last\_message\_botlog\_id** - id последнего сообщения в логе. ##### Возвращает: **mixed** - значение данных лида в формате, в котором они находятся в сущности или **null** - если таких данных не существует. ##### Пример: ```JavaScript let extra = lead.getData('extra'); ``` # lead.issetData() и lead.isDataExist() ### Проверить наличие данных ```JavaScript lead.issetData(string $key) ``` или ``` lead.isDataExist(string $key) ``` ##### Описание: Проверяет существуют ли данные по ключу. ##### Атрибуты:
ИмяТипОписание
keystringКлюч данных лида
В качестве ключа можно указать: - **id** - id лида; - **name** - имя лида; - **identification** - внешний id лида; - **identification\_entity** - внешний id сущности; - **person\_id** - id персоны лида; - **manager\_id** - id менеджера привязанного к лиду; - **bot\_id** - id бота лида; - **channel\_id** - id канала лида; - **lang\_code** - код языка; - **status\_id** - id статуса лида; - **extra** - last\_message\_payload - **identification** - id последнего сообщения; - **event\_name** - код события, например, user\_uttered, когда последнее сообщение - ответ пользователя; - **text** - текст последнего сообщения; - **payload** - данные последнего сообщения; - **timestamp** - время отправки; - **session\_id** - id сессии; - **socket\_id** - id сокета; - **is\_mute** - включен ли бот для лида; - **last\_message\_date** - дата последнего сообщения; - **active\_nlp\_integration\_id** - id активной NLP интеграции; - **last\_activity** - время последней активности; - **last\_response** - код последнего ответа; - **messenger** - id мессенджера; - **bot\_debug\_level** - уровень отладки бота; - **created\_at** - время создания; - **updated\_at** - время обновления; - **dialog\_id** - id диалога; - **unread\_count** - количество непрочитанных оператором сообщений; - **last\_message** - последнее сообщение; - **last\_message\_botlog\_id** - id последнего сообщения в логе. ##### Возвращает: **bool** - подтверждение существования данных. ##### Пример: ```JavaScript let data = lead.issetData('manager_id'); let altdata = lead.isDataExist('status_id'); ``` # lead.getSerialNumber() ### Порядковый номер лида ```JavaScript lead.getSerialNumber() ``` ##### Описание: Возвращает порядковый номер лида в боте начиная с первого созданного. Возвращает: **int** - порядковый номер лида или **null** - если лид не найден. ##### Пример: ```JavaScript let num = lead.getSerialNumber(); ``` # lead.getChannelCode() ### Код канала лида ```JavaScript lead.getChannelCode() ``` ##### Описание: Возвращает код канала лида (telegram, umnico, bitrix, и пр.) ##### Возвращает: **string** - код канала лида в формате строки. Коды которые может возвращать данная функция: - 'unknown' - 'avito' - 'apple\_business\_chat' - 'facebook' - 'instagram' - 'jivoWidget' - 'livechatWidget' - 'odnoklassniki' - 'skype' - 'telegram' - 'twitter' - 'viber' - 'vk' - 'wechat' - 'whatsapp' - 'youla' - 'metabotWidget' - 'webim' # lead.setAttr() ### Установить значение переменной лида ```JavaScript lead.setAttr(string $key, string $value) ``` ##### Описание: Обновляет значение уже существующей переменной лида или создает новую переменную с указанным значением. Данные будут сохранены в БД. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
valuestringЗначение переменной
##### Возвращает: **self** - объект того же типа, в данном случае переменную, которая была создана. ##### Пример: Создание переменной лида lead\_attribute: ```JavaScript let lead = "Значение переменной лида"; let lead_attribute = lead.setAttr('lead_attribute', lead); ```
# lead.getAttr() ### Получить значение переменной лида ```JavaScript lead.getAttr(string $key) ``` ##### Описание: Возвращает значение уже существующей переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **string** - значение запрашиваемой переменной в виде строки или **null** - если переменная не была найдена. ##### Пример: Получение значения переменной лида lead\_attribute: ```JavaScript let lead_attribute_value = lead.getAttr('lead_attribute'); ```
# lead.getAllAttr() ### Получить все переменные лида ```JavaScript lead.getAllAttr() ``` ##### Описание: Возвращает значение всех переменных лида. Возвращает: **array** - массив значений всех переменных. ##### Пример: Получение значения всех переменных лида и вынесение из массива одного из значений: ```JavaScript let all_lead_attributes = lead.getAllAttr(); let lead_attribute = all_lead_attributes[3]; ```
# lead.issetAttr() и lead.isAttrExist() ### Проверить наличие переменной лида ```JavaScript lead.issetAttr(string $key) ``` или ```JavaScript lead.isAttrExist(string $key) ``` ##### Описание: Проверяет существует ли переменная лида в боте. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
Возвращает: **bool** - подтверждение существования переменной. ##### Пример: Проверка двумя способами существования переменной лида lead\_attribute: ```JavaScript let lead_exists = lead.issetAttr('lead_attribute'); let lead_altexists = lead.isAttrExist('lead_attribute'); ``` # lead.deleteAttrs() и lead.deleteAttr() ### Удаление переменных лида ```JavaScript lead.deleteAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false) ``` или ```JavaScript lead.deleteAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false) ``` ##### Описание: Удаляет переменную из бота. ##### Атрибуты:
ИмяТипОписание
attrsstring|object|array|nullСтрока, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId ?intПередает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной
scriptRequestParams objectПередает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной
isForceDelete bool Подавить запуск триггеров или нет, т.е. если передать true, и есть триггер подписанный на событие изменения/удаления переменной то он не будет запущен.
isSuppressTriggers bool Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается
Возвращает: **self** - подтверждение удаления переменной. ##### Пример: ```JavaScript lead.deleteAttrs('var1, var2, var3', null, null, true); ``` # lead.forceDeleteAttrs() и lead.forceDeleteAttr() ### Принудительное удаление переменных лида из БД ```JavaScript lead.forceDeleteJsonAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` или ```JavaScript lead.forceDeleteJsonAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` ##### Описание: Удаляет переменную из бота и БД. ##### Атрибуты:
ИмяТипОписание
attrsstring|object|array|nullСтрока, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId ?intПередает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной
scriptRequestParams objectПередает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной
isSuppressTriggers bool Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается
Возвращает: **self** - подтверждение удаления переменной. ##### Пример: ```JavaScript lead.forceDeleteAttrs('var1, var2, var3'); ``` # lead.deleteJsonAttrs() и lead.deleteJsonAttr() ### Удаление json-переменных лида ```JavaScript lead.deleteJsonAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false) ``` или ```JavaScript lead.deleteJsonAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false) ``` ##### Описание: Удаляет json переменную из бота. ##### Атрибуты:
ИмяТипОписание
attrsstring|object|array|nullСтрока, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId ?intПередает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной
scriptRequestParams objectПередает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной
isForceDelete bool Подавить запуск триггеров или нет, т.е. если передать true, и есть триггер подписанный на событие изменения/удаления переменной то он не будет запущен.
isSuppressTriggers bool Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается
Возвращает: **self** - подтверждение удаления переменной. ##### Пример: ```JavaScript lead.deleteJsonAttrs('json_var1, json_var2, json_var3', null, null, true); ``` # lead.forceDeleteJsonAttrs() и lead.forceDeleteJsonAttr() ### Принудительное удаление json-переменных лида из БД ```JavaScript lead.forceDeleteJsonAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` или ```JavaScript lead.forceDeleteJsonAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` ##### Описание: Удаляет json переменную из бота и БД. ##### Атрибуты:
ИмяТипОписание
attrsstring|object|array|nullСтрока, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId ?intПередает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной
scriptRequestParams objectПередает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной
isSuppressTriggers bool Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается
Возвращает: **self** - подтверждение удаления переменной. ##### Пример: ```JavaScript lead.forceDeleteJsonAttrs('json_var1, json_var2, json_var3'); ``` # lead.isInStatus() ### Проверка существования статуса у лида ```JavaScript lead.isInStatus(string $statusName) ``` ##### Описание: Проверить, что лид находится в статусе с указанным в методе именем. ##### Атрибуты:
ИмяТипОписание
statusNamestringНаименование статуса
##### Возвращает: **bool** — подтверждение существования статуса. # lead.getStatusId() ### Узнать id статуса лида ```JavaScript lead.getStatusId() ``` ##### Описание: Возвращает значение поля status\_id лида. ##### Возвращает: **int** — id статуса лида в форме числа или **null** — если у лида нет статуса. # lead.isTagExist() и lead.issetTag() ### Проверить наличие тэга лида ```JavaScript lead.isTagExist($some_tag) ``` или ```JavaScript lead.issetTag($some_tag) ``` ##### Описание: Проверяет существование тега у лида. ##### Атрибуты:
ИмяТипОписание
some\_tagstringНаименование тэга
##### Возвращает: **bool** - подтверждение существования тега. ##### Пример: ```JavaScript let TagExist = lead.isTagExist('тэг'); ``` или ```JavaScript let TagExist = lead.issetTag('тэг'); ``` # lead.getTag() ### Получить значение тэга лида ```JavaScript lead.getTag(string $key) ``` ##### Описание: Возвращает значение тэга лида по наименованию. ##### Атрибуты:
ИмяТипОписание
keystringНаименование тэга
##### Возвращает: **string** - если тэг активен или **null** - если тэг неактивен. ##### Пример: ```JavaScript let Tag = lead.getTag('тэг'); ``` # lead.getAllTags() ### Получить массив всех тэгов лида ```JavaScript lead.getAllTags() ``` ##### Описание: Возвращает массив всех тэгов лида. ##### Возвращает: **array** - массив наименований тэгов лида. ##### Пример: ```JavaScript let AllTags = lead.getAllTags(); let Tag2 = AllTags[1]; ``` # lead.addTags() и lead.addTag() ### Добавление тэгов лида ``` lead.addTags(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` или ``` lead.addTag(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` ##### Описание: Добавляет тэг в бот. ##### Атрибуты:
ИмяТипОписание
tagsstring|object|array|nullСтрока, представляющая собой список названий тэгов(разделитель запятая). Можно указать вместо списка json объект или массив
ticketId ?intПередает ticket в запускаемый триггер, который подписан на событие изменения/удаления тэга
scriptRequestParams objectПередает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления тэга
isSuppressTriggers bool Не мягкое удаление. Если передано true, то тэг будет удален из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается
Возвращает: **self** - наименование созданного тэга. ##### Пример: ```JavaScript lead.addTags('new_tag', null, {"some_key": "some_value"}); ``` # lead.deleteTags() и lead.deleteTag() ### Удаление тэгов лида ``` lead.deleteTags(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false) ``` или ``` lead.deleteTag(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false) ``` ##### Описание: Удаляет тэг из бота. ##### Атрибуты:
ИмяТипОписание
tagsstring|object|array|nullСтрока, представляющая собой список названий тэгов (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId ?intПередает ticket в запускаемый триггер, который подписан на событие изменения/удаления тэга
scriptRequestParams objectПередает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления тэга
isForceDelete bool Подавить запуск триггеров или нет, т.е. если передать true, и есть триггер подписанный на событие изменения/удаления тэга то он не будет запущен.
isSuppressTriggers bool Не мягкое удаление. Если передано true, то тэг будет удален из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается
Возвращает: **self** - подтверждение удаления тэга. ##### Пример: ```JavaScript lead.deleteTags('TAG_111, tag_222 , tag_333', null, null, true); ``` # lead.forceDeleteTags() и lead.forceDeleteTag() ### Принудительное удаление тэгов лидаиз БД ```JavaScript lead.forceDeleteTags(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` или ```JavaScript lead.forceDeleteTag(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false) ``` ##### Описание: Удаляет тэг из бота и БД. ##### Атрибуты:
ИмяТипОписание
attrsstring|object|array|nullСтрока, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId ?intПередает ticket в запускаемый триггер, который подписан на событие изменения/удаления тэга
scriptRequestParams objectПередает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления тэга
isSuppressTriggers bool Не мягкое удаление. Если передано true, то тэг будет удален из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается
Возвращает: **self** - подтверждение удаления тэга. ##### Пример: ```JavaScript lead.forceDeleteTags('TAG_111, tag_222 , tag_333'); ``` # lead.setForwarded() ### Переключить на оператора ```JavaScript lead.setForwarded(bool|int $state) ``` ##### Описание: Установка ($state == true) или сброс ($state == false) у лида признака “Переведён на оператора”. ##### Атрибуты:
ИмяТипОписание
state bool|intПри $state = true установка и при $state = false сброс признака “Переведён на оператора”
##### Возвращает: **self** - подтверждение установки или сброса в формате используемом при вызове метода. # lead.getPersonId() ### Получить id персоны ```JavaScript lead.getPersonId() ``` ##### Описание: Возвращает id персоны лида. Возвращает: **int** - id персоны в формате числа или **null** - если персоны нет. ##### Пример: ```JavaScript let PersonId = lead.getPersonId(); lead.setAttr('PersonId', PersonId); ``` # lead.setPersonId() ### Привязать персону к лиду ```JavaScript lead.setPersonId(?int $personId) ``` ##### Описание: Привязывает к лиду персону с соответствующим id. ##### Атрибуты:
ИмяТипОписание
personId intId персоны
##### Возвращает: **bool** - подтверждение успешной привязки персоны к лиду. ##### Пример: ```JavaScript lead.setPersonId(167435); ``` # lead.createPersonForCurrentLead() ### Создать персону для лида ```JavaScript lead.createPersonForCurrentLead($data) ``` ##### Описание: Создает персону для текущего лида в контексте которого запущен v8-скрипт. ##### Атрибуты:
ИмяТипОписание
data jsonДанные о персоне в формате json. Возможные поля расписаны ниже
person\_role\_id integerId роли
is\_external boolЕсли не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом. А 0 означает что персона является работником бизнеса
user\_id integerId пользователя, привязываемого к персоне
firstname string|nullИмя персоны
lastname string|nullФамилия персоны
middlename string|nullОтчество персоны
email string|nullАдрес электронной почты персоны
phone string|nullНомер телефона персоны
organization\_name string|nullНазвание организации
organization\_address string|nullАдрес организации
comment string|nullКомментарий к персоне
##### Возвращает: **int** - id созданной персоны в формате числа. ##### Пример: ```JavaScript let newPersonId = lead.createPersonForCurrentLead({ 'is_external': 1, 'firstname': 'Иван', 'lastname': 'Иванов' }) ``` # lead.isContextExist() и lead.issetContext() ### Проверить наличие контекста лида ``` lead.isContextExist(string $key) ``` или ``` lead.issetContext(string $key) ``` ##### Описание: Проверяет существование контекста у лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование контекста
##### Возвращает: **bool** - подтверждение существования контекста. ##### Пример: ``` let ContextExist = lead.isContextExist('контекст'); ``` или ``` let ContextExist = lead.issetContext('контекст'); ``` # lead.getContext() ### Получить значение контекста лида ``` lead.getContext(string $key) ``` ##### Описание: Возвращает значение контекста лида по наименованию. ##### Атрибуты:
ИмяТипОписание
keystringНаименование контекста
##### Возвращает: **string** - если контекст активен или **null** - если контекст неактивен. ##### Пример: ``` let Context = lead.getContext('контекст'); ``` # lead.getAllContexts() ### Получить массив всех контекстов лида ``` lead.getAllContexts() ``` ##### Описание: Возвращает массив всех контекстов лида. ##### Возвращает: **array** - массив наименований контекстов лида. ##### Пример: ```JavaScript let AllContexts = lead.getAllContexts(); let Context2 = AllContexts[1]; ``` # lead.setActiveNlpIntegrationByCode() ### Присвоить интеграцию лиду по коду ```JavaScript lead.setActiveNlpIntegrationByCode(?string $integrationCode) ``` ##### Описание: Присваивает интеграцию лиду в соответствии с кодом интеграции. ##### Атрибуты:
ИмяТипОписание
integrationCodestringКод интеграции
##### Возвращает: **bool** - подтверждение присвоения интеграции. # lead.canAutoForward() ### Узнать доступно ли авто-назначение оператора в данном скрипте ``` lead.canAutoForward() ``` ##### Описание: Функция необходима для исключения рекурсивного вызова назначения диалога на оператора, а также для исключения выполнения авто-назначения диалога на оператора, если оператор сам подключается к диалога из контакт-центра. Результат выполнения данной функции аналогичен результату выполнения функции **bot.canAutoForward()**, функция в bot первична, в лиде функция добавлена для удобства. Если оператор сам выполняет подключение к диалогу из контакт-центра, то результат функции аналогичен проверке: ```JavaScript return bot.getForwardEventType() !== 'forwarded_by_operator'; ``` Но при этом **lead.canAutoForward(): bool** гарантирует что назначение заявки на оператора не вызвано рекурсивно. ##### Возвращает: **bool** - подтверждение доступа к авто-назначению. # lead.getNextOperators() ### Вернуть список следующих операторов ```JavaScript lead.getNextOperators(string $departmentCode = null, bool $isOnline = true, int|null $limit = 1, bool $useLocks = true) ``` ##### Описание: Возвращает список следующих операторов. Полученный список будет отсортирован, по:
\- Кол-ву диалогов на операторе; \- Дате последнего назначения/принятия диалога; \- ID оператора. ##### Атрибуты:
ИмяТипОписание
departmentCode stringКод отдела
isOnline bool Должны ли операторы быть онлайн
limit int|nullЛимит возвращенных операторов. Чтобы получить всех операторов, указываем $limit=null
useLocks bool Использовать ли блокировки
##### Возвращает: **int** - список операторов или **null** - если нет операторов. # lead.assignDialogToNextOperator() ### Назначить диалог на следующего оператора ```JavaScript lead.assignDialogToNextOperator(string|null $departmentCode = null, bool $isOnline = true, bool $isForwardIfOperatorNotFound = true, bool $useLocks = true) ``` ##### Описание: Назначает диалог на следующего оператора полученного с помощью **getNextOperators**. Варианты откуда может запускаться: \- оператор сам подключился к КЦ и в системном скрипте есть вызов данной функции - игнорируем ее вызов; \- функцию вызвали в другом скрипте и она также есть в системном скрипте - игнорируем ее вызов только из системного скрипта; \- функцию вызвали в системном скрипте - не игнорируем ее вызов. Если вызываем функцию из системного скрипта перевода на оператора, то данная функция не выполняет перевод (так как он уже выполнен на момент запуска функции) и также не запускает системный скрипт (так как он уже запущен на момент запуска функции) - для этого есть внутренние механизмы отслеживания, откуда запущена функция, и по сути это исключает рекурсивный запуск функций, для этого и введена новая функция bot / lead.canAutoForward на самом деле выполнять данную проверку canAutoForward смысла нет, так как она выполняется автоматически внутри функций назначения оператора и автоматом отсечет рекурсивный вызов, но где может понадобиться использование canAutoForward - это для написания JavaScript условия - нужно ли отсылать уведомление лиду, о том что скрипт перевод на оператора: пример вызываем назначение на оператора в обычном скрипте, и в этом же скрипте уведомляем о то, что мы перевели на оператора, тогда при запуске системного скрипта Перевод на оператора вывод такого же сообщения нужно исключить. ##### Атрибуты:
ИмяТипОписание
departmentCode stringКод отдела
isOnline bool Должны ли операторы быть онлайн
isForwardIfOperatorNotFoundboolПродолжить если оператор не найден
useLocks bool Использовать ли блокировки
##### Возвращает: **int** - оператора или **null** - если не удалось назначить. # lead.assignDialogToOperator() ### Назначить диалог на указанного оператора ```JavaScript lead.assignDialogToOperator(int|null $operatorId, bool $isForwardIfOperatorNotFound = true, bool $useLocks = true) ``` ##### Описание: Назначает диалог на указанного в методе оператора. Если вызываем функцию из системного скрипта перевода на оператора, то данная функция не выполняет перевод (так как он уже выполнен на момент запуска функции) и также не запускает системный скрипт (так как он уже запущен на момент запуска функции). Если вызываем функцию из обычного скрипта, то в данной точке сразу будет вызван системный скрипт (если он есть). Системный скрипт можно не создавать и обрабатывать все в точке вызова (можно через v8 плагина) или в отдельном обычном скрипте. Если в системном скрипте и скрипте в котором вызывает данную функцию есть отправка сообщений то необходимо вызывать **bot.disableBuffer()**, чтобы не нарушать последовательность сообщений. Но лучше отправлять сообщения только в одном из скриптов. ##### Атрибуты:
ИмяТипОписание
operatorIdstringID оператора
limit int|nullЛимит возвращенных операторов. Чтобы получить всех операторов, указываем $limit=null
useLocks bool Использовать ли блокировки
##### Возвращает: **int** - оператора или **null** - если не удалось назначить оператора. # lead.getLastRequest() ### Получить объект с параметрами последнего реквеста ```JavaScript lead.getLastRequest() ``` ##### Описание: Находит последний реквест и возвращает объект с его параметрами. ##### Возвращает: **ScriptRequest** — последний реквест. # lead.getMessengerCode() ### Получить буквенное обозначение текущего мессенджера канала ``` lead.getMessengerCode() ``` ##### Описание: Возвращает буквенное обозначение текущего мессенджера канала. ##### Возвращает: **string** - буквенное обозначение текущего мессенджера канала. Коды которые может возвращать данная функция: - 'unknown' - 'avito' - 'apple\_business\_chat' - 'facebook' - 'instagram' - 'jivoWidget' - 'livechatWidget' - 'odnoklassniki' - 'skype' - 'telegram' - 'twitter' - 'viber' - 'vk' - 'wechat' - 'whatsapp' - 'youla' - 'metabotWidget' - 'webim' # lead.getIdentification() ### Получить идентификатор лида во внешней системе ``` lead.getIdentification() ``` ##### Описание: Возвращает идентификатор лида во внешней системе, т.е. в мессенджере, например для Telegram - это id чата клиента. ##### Возвращает: **string** - идентификатор лида во внешней системе в формате строки или **null** - если идентификатор не найден. # lead.getIdentificationEntity() ### Получить дополнительный идентификатор лида во внешней системе ``` lead.getIdentificationEntity() ``` ##### Описание: Возвращает дополнительный идентификатор лида во внешней системе, например используется для Bitrix24 – и возвращает ‘LEAD’ / ‘DEAL’. ##### Возвращает: **string** - дополнительный идентификатор лида во внешней системе в формате строки или **null** - если нет составного идентификатора лида. # lead.getMessenger() ### Получить текущий мессенджер ``` lead.getMessenger() ``` ##### Описание: Метод для получения обозначения текущего мессенджера канала. Коды которые может возвращать данная функция: - Unknown - 0 - Avito - 1 - Apple business chat - 17 - Facebook - 2 - Instagram - 3 - JivoWidget - 15 - LivechatWidget - 4 - Jdnoklassniki - 16 - Skype - 5 - Telegram - 6 - Twitter - 7 - Viber - 8 - VK - 9 - Wechat - 12 - Whatsapp - 10 - Юла - 11 - MetabotWidget - 13 - Webim - 14 ##### Возвращает: **int** - код канала. # lead.getAllData() ### Получить все данные лида ```JavaScript lead.getAllData() ``` ##### Описание: Возвращает все данные лида. ##### Возвращает: **array** - значение данных лида в формате массива: - **id** - id лида; - **name** - имя лида; - **identification** - внешний id лида; - **identification\_entity** - внешний id сущности; - **person\_id** - id персоны лида; - **manager\_id** - id менеджера привязанного к лиду; - **bot\_id** - id бота лида; - **channel\_id** - id канала лида; - **lang\_code** - код языка; - **status\_id** - id статуса лида; - **extra** - last\_message\_payload - **identification** - id последнего сообщения; - **event\_name** - код события, например, user\_uttered, когда последнее сообщение - ответ пользователя; - **text** - текст последнего сообщения; - **payload** - данные последнего сообщения; - **timestamp** - время отправки; - **session\_id** - id сессии; - **socket\_id** - id сокета; - **is\_mute** - включен ли бот для лида; - **last\_message\_date** - дата последнего сообщения; - **active\_nlp\_integration\_id** - id активной NLP интеграции; - **last\_activity** - время последней активности; - **last\_response** - код последнего ответа; - **messenger** - id мессенджера; - **bot\_debug\_level** - уровень отладки бота; - **created\_at** - время создания; - **updated\_at** - время обновления; - **dialog\_id** - id диалога; - **unread\_count** - количество непрочитанных оператором сообщений; - **last\_message** - последнее сообщение; - **last\_message\_botlog\_id** - id последнего сообщения в логе. ##### Пример: ```JavaScript let extra = lead.getAllData(); ``` # lead.setData() ### Установить значение данных лида ```JavaScript lead.setData(string $key, $value) ``` ##### Описание: Устанавливает значение данных лида по ключу. ##### Атрибуты:
ИмяТипОписание
keystringКлюч данных лида
valuemixedЗначение данных
В качестве ключа можно указать: - **id** - id лида; - **name** - имя лида; - **identification** - внешний id лида; - **identification\_entity** - внешний id сущности; - **person\_id** - id персоны лида; - **manager\_id** - id менеджера привязанного к лиду; - **bot\_id** - id бота лида; - **channel\_id** - id канала лида; - **lang\_code** - код языка; - **status\_id** - id статуса лида; - **extra** - last\_message\_payload - **identification** - id последнего сообщения; - **event\_name** - код события, например, user\_uttered, когда последнее сообщение - ответ пользователя; - **text** - текст последнего сообщения; - **payload** - данные последнего сообщения; - **timestamp** - время отправки; - **session\_id** - id сессии; - **socket\_id** - id сокета; - **is\_mute** - включен ли бот для лида; - **last\_message\_date** - дата последнего сообщения; - **active\_nlp\_integration\_id** - id активной NLP интеграции; - **last\_activity** - время последней активности; - **last\_response** - код последнего ответа; - **messenger** - id мессенджера; - **bot\_debug\_level** - уровень отладки бота; - **created\_at** - время создания; - **updated\_at** - время обновления; - **dialog\_id** - id диалога; - **unread\_count** - количество непрочитанных оператором сообщений; - **last\_message** - последнее сообщение; - **last\_message\_botlog\_id** - id последнего сообщения в логе. ##### Возвращает: **self** - значение данных лида в формате, в котором они находятся в сущности. ##### Пример: ```JavaScript let person_id = lead.setData('person_id', 34); ``` # lead.isInlineButtonsAvailable() ### Проверка включения инлайн кнопок ```JavaScript lead.isInlineButtonsAvailable() ``` ##### Описание: Проверяет включены ли инлайн кнопки. ##### Возвращает: **bool** - 0, если не включены, 1, если включены или **null** - если таких данных не существует. ##### Пример: ```JavaScript let inlineButtons = lead.isInlineButtonsAvailable(); ``` # lead.isInlineButtonsAvailableGeneralChannelSetting() ### Получить настройки кнопок канала ```JavaScript lead.isInlineButtonsAvailableGeneralChannelSetting() ``` ##### Описание: Возвращает настройки кнопок текущего канала лида. ##### Возвращает: **bool** - 0, если не включены, 1, если включены или **null** - если таких данных не существует. ##### Пример: ```JavaScript let inlineButtons = lead.isInlineButtonsAvailableGeneralChannelSetting(); ``` # lead.getIntAttr() ### Получить значение числовой переменной лида ```JavaScript lead.getIntAttr(string $key, ?int|null $default = 0) ``` ##### Описание: Возвращает значение уже существующей числовой переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
defaultintДефолтное значение переменной
##### Возвращает: **int** - числовое значение запрашиваемой переменной или **null** - если переменная не была найдена. ##### Пример: ```JavaScript let lead_attribute_value = lead.getIntAttr('lead_attribute', 2); ``` # lead.getFloatAttr() ### Получить значение float переменной лида ```JavaScript lead.getFloatAttr(string $key, ?float|null $default = 0.0) ``` ##### Описание: Возвращает значение уже существующей float переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
defaultfloat Дефолтное значение
##### Возвращает: **float** - значение запрашиваемой float переменной или **null** - если переменная не была найдена. ##### Пример: ```JavaScript let lead_attribute_value = lead.getFloatAttr('lead_attribute', 0.1); ``` # lead.getBoolAttr() ### Получить значение bool переменной лида ```JavaScript lead.getBoolAttr(string $key, ?bool|null $default = false) ``` ##### Описание: Возвращает значение уже существующей bool переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
defaultboolДефолтное значение
##### Возвращает: **bool** - значение запрашиваемой bool переменной или **null** - если переменная не была найдена. ##### Пример: ```JavaScript let lead_attribute_value = lead.getBoolAttr('lead_attribute', true); ``` # lead.getJsonAttr() ### Получить значение JSON переменной лида ```JavaScript lead.getJsonAttr(string $key) ``` ##### Описание: Возвращает значение уже существующей JSON переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **mixed** - значение запрашиваемой JSON переменной или **null** - если переменная не была найдена. ##### Пример: ```JavaScript let lead_attribute_value = lead.getJsonAttr('lead_attribute'); ``` # lead.getAllJsonAttrs() ### Получить значение всех JSON переменных лида ```JavaScript lead.getAllJsonAttrs() ``` #### Описание: Возвращает значение всех JSON переменных лида. ##### Возвращает: **array** - массив JSON переменных лида. ##### Пример: ```JavaScript let lead_attribute_value = lead.getAllJsonAttrs(); ``` # lead.setJsonAttr() ### Установить значение JSON переменной лида ```JavaScript lead.setJsonAttr(string $key, $value) ``` #### Описание: Устанавливает значение JSON переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
valuemixedJSON значение переменной
##### Возвращает: **self** - объект того же типа и значения, что задан в методе. ##### Пример: ```JavaScript let lead_attribute_value = lead.setJsonAttr('lead_attribute', { "id": 2415, "name": "Имя" }); ``` # lead.issetJsonAttr() и lead.isJsonAttrKeyExist() ### Проверить наличие JSON переменной лида ```JavaScript lead.issetJsonAttr(string $key) и lead.isJsonAttrKeyExist(string $key) ``` #### Описание: Проверяет наличие JSON переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **bool** - подтверждение существования переменной. ##### Пример: ```JavaScript let lead_attribute_value = lead.issetJsonAttr('lead_attribute'); или let lead_attribute_value = lead.isJsonAttrKeyExist('lead_attribute'); ``` # lead.setAllLiveTexAttrs() ### Установить значение всех LiveTex переменных лида ```JavaScript lead.setAllLiveTexAttrs(string $value) ``` #### Описание: Устанавливает значение всех LiveTex переменных лида. ##### Атрибуты:
ИмяТипОписание
valuestringЗначение переменной
##### Возвращает: **self** - объект того же типа и значения, что задан в методе. ##### Пример: ```JavaScript let lead_attribute_value = lead.setAllLiveTexAttrs('lead_value'); ``` # lead.setLiveTexAttr() ### Установить значение LiveTex переменной лида ```JavaScript lead.setLiveTexAttr(string $key,string $value) ``` #### Описание:с Устанавливает значение LiveTex переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
valuestringЗначение переменной
##### Возвращает: **self** - объект того же типа и значения, что задан в методе. ##### Пример: ```JavaScript let lead_attribute_value = lead.setLiveTexAttr('lead_attribute', "lead_value"); ``` # lead.getLiveTexAttr() ### Получить значение LiveTex переменной лида ```JavaScript lead.getLiveTexAttr(string $key) ``` ##### Описание: Возвращает значение уже существующей LiveTex переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **mixed** - значение запрашиваемой переменной или **null** - если переменная не была найдена. ##### Пример: ```JavaScript let lead_attribute_value = lead.getLiveTexAttr('lead_attribute'); ``` # lead.getAllLiveTexAttrs() ### Получить значение всех LiveTex переменных лида ```JavaScript lead.getAllLiveTexAttrs() ``` #### Описание: Возвращает значение всех LiveTex переменных лида. ##### Возвращает: **array** - массив LiveTex переменных лида. ##### Пример: ```JavaScript let lead_attribute_value = lead.getAllLiveTexAttrs(); ``` # lead.setTag() ### Установить значение тэга лида ```JavaScript lead.setTag(string $key, $value) ``` ##### Описание: Устанавливает значение тэга лида по наименованию. ##### Атрибуты:
ИмяТипОписание
keystringНаименование тэга
valuemixedЗначение тэга
##### Возвращает: **self** - значение, указанное в методе. ##### Пример: ```JavaScript let Tag = lead.setTag('тэг', "регистрация"); ``` # lead.setContext() ### Установить значение контекста лида ```JavaScript lead.setContext(string $key, $value) ``` ##### Описание: Устанавливает значение контекста лида по наименованию. ##### Атрибуты:
ИмяТипОписание
keystringНаименование контекста
valuemixedЗначение контекста
##### Возвращает: **self** - значение, указанное в методе. ##### Пример: ```JavaScript let Con = lead.setContext('контекст', "регистрация"); ``` # lead.getAllStatuses() ### Узнать все статусы лида ```JavaScript lead.getAllStatuses() ``` ##### Описание: Возвращает все статусы лида. ##### Возвращает: **array** — id статусов лида в формате массива. # lead.getAllStatusesIndexedByName() ### Узнать все наименования статусов лида ```JavaScript lead.getAllStatusesIndexedByName() ``` ##### Описание: Возвращает все наименования статусов лида. ##### Возвращает: **array** — массив наименований статусов лида. # lead.setStatusId() ### Установить id статуса лида ```JavaScript lead.setStatusId(int $statusId, string $name) ``` ##### Описание: Устанавливает id статуса лида. ##### Атрибуты:
ИмяТипОписание
statusIdint Id статуса
namestringНаименование статуса
##### Возвращает: **self** — id статуса лида. # lead.setStatusName() ### Установить наименование статуса лида ```JavaScript lead.setStatusName(string $name) ``` ##### Описание: Устанавливает наименование статуса лида. ##### Атрибуты:
ИмяТипОписание
namestringНаименование статуса
##### Возвращает: **self** — наименование статуса лида. # lead.getStatusName() ### Узнать наименование статуса лида ```JavaScript lead.getStatusName() ``` ##### Описание: Возвращает наименование статуса лида. ##### Возвращает: **string** — наименование статуса лида в формате строки. # lead.setStatus() ### Установить статус лида ```JavaScript lead.setStatus(int $statusId, string $name) ``` ##### Описание: Устанавливает статус лида. ##### Атрибуты:
ИмяТипОписание
statusIdintId статуса
namestringНаименование статуса
##### Возвращает: **self** — id статуса лида. # lead.setStatusById() ### Установить статус лида по id ```JavaScript lead.setStatusById(int $statusId) ``` ##### Описание: Устанавливает статус лида по id. ##### Атрибуты:
ИмяТипОписание
statusIdintId статуса
##### Возвращает: **self** — id статуса. # lead.issetStatusById() ### Проверить существует ли статус у лида по id ```JavaScript lead.issetStatusById(string $id) ``` ##### Описание: Проверяет существует ли статус у лида по id. ##### Атрибуты:
ИмяТипОписание
idstringId статуса
##### Возвращает: **bool** — подтверждение существования статуса. # lead.issetStatusByName() ### Проверить существует ли статуса у лида по наименованию ```JavaScript lead.issetStatusByName(string $name) ``` ##### Описание: Проверяет существует ли статуса у лида по наименованию. ##### Атрибуты:
ИмяТипОписание
namestringНаименование статуса
##### Возвращает: **bool** — подтверждение существования статуса. # lead.getStatusIdByName() ### Узнать id статуса лида по наименованию ```JavaScript lead.getStatusIdByName(string $statusName) ``` ##### Описание: Возвращает id статуса лида по наименованию. ##### Атрибуты:
ИмяТипОписание
statusNamestringНаименование статуса
##### Возвращает: **int** — id статуса. # lead.setStatusByName() ### Установить статус лида по наименованию ```JavaScript lead.setStatusByName(string $statusName) ``` ##### Описание: Устанавливает статус лида по наименованию. ##### Атрибуты:
ИмяТипОписание
statusNamestringНаименование статуса
##### Возвращает: **self** — наименование статуса лида. # lead.setActiveNlpIntegrationById() ### Присвоить интеграцию лиду по id ```JavaScript lead.setActiveNlpIntegrationById(int|null $nlpIntegrationId) ``` ##### Описание: Присваивает интеграцию лиду по id. ##### Атрибуты:
ИмяТипОписание
nlpIntegrationIdintId интеграции
##### Возвращает: **bool** - подтверждение присвоения интеграции. # lead.hasActiveNlpIntegration() ### Проверить активна ли интеграция ```JavaScript lead.hasActiveNlpIntegration() ``` ##### Описание: Проверяет активна ли интеграция. ##### Возвращает: **bool** - подтверждение активности интеграции. # lead.getActiveNlpIntegrationId() ### Получить интеграцию по id ```JavaScript lead.getActiveNlpIntegrationId(int|null $nlpIntegrationId) ``` ##### Описание: Возвращает интеграцию по id. ##### Атрибуты:
ИмяТипОписание
nlpIntegrationIdintId интеграции
##### Возвращает: **int** - id интеграции или **null** - если таких данных нет. # lead.getActiveNlpIntegrationCode() ### Получить интеграцию по коду ```JavaScript lead.getActiveNlpIntegrationCode(string|null $integrationCode) ``` ##### Описание: Возвращает интеграцию по коду. ##### Атрибуты:
ИмяТипОписание
integrationCodestringКод интеграции
##### Возвращает: **string** - код интеграции или **null** - если таких данных нет. # lead.getActiveOrFirstNlpIntegrationCode() ### Получить активную или первую интеграцию по коду ```JavaScript lead.getActiveOrFirstNlpIntegrationCode(string|null $integrationCode) ``` ##### Описание: Возвращает активную или первую интеграцию по коду. ##### Атрибуты:
ИмяТипОписание
integrationCodestringКод интеграции
##### Возвращает: **string** - код интеграции или **null** - если таких данных нет. # lead.getActiveOrFirstNlpIntegrationId() ### Получить активную или первую интеграцию по id ```JavaScript lead.getActiveOrFirstNlpIntegrationId(int|null $nlpIntegrationId) ``` ##### Описание: Возвращает активную или первую интеграцию по id. ##### Атрибуты:
ИмяТипОписание
nlpIntegrationIdintId интеграции
##### Возвращает: **int** - id интеграции или **null** - если данные не найдены. # lead.getForwardEventTypeForFB() ### Получить тип события для ФБ ```JavaScript lead.getForwardEventTypeForFB() ``` ##### Описание: Возвращает тип события для ФБ. ##### Возвращает: **string** - тип события интеграции или **null** - если таких данных нет. # lead.getLang() ### Получить язык установленный в бизнесе ```JavaScript lead.getLang() ``` ##### Описание: Возвращает язык установленный в бизнесе. ##### Возвращает: **string** - код языка или **null** - если таких данных нет. # lead.setLang() ### Установить язык в бизнесе ```JavaScript lead.setLang(string|null $langCode) ``` ##### Описание: Устанавливает язык в бизнесе. ##### Атрибуты:
ИмяТипОписание
langCodestringКод языка
##### Возвращает: **string** - код языка или **null** - если таких данных не существует. # lead.isLangExist() ### Проверить существует ли язык ```JavaScript lead.isLangExist(string $langCode, bool|null $isEnabled = true) ``` ##### Описание: Проверяет существует ли язык. ##### Атрибуты:
ИмяТипОписание
langCodestring Код языка
isEnabledboolАктивность языка
##### Возвращает: **bool** - подтверждения существования языка. # Методы ticket # ticket.update() #### Обновление заявки, через объект заявки ```JavaScript ticket.update($data) ``` ##### Описание: Обновляет заявку соответствующую указанным данным. ##### Атрибуты:
ИмяТипОписание
datajsonДанные о заявке в формате json. Возможные поля расписаны ниже
titlestringЗаголовок заявки
ticket\_type\_idintId типа заявки
status\_idintId статуса заявки
author\_person\_id intId автора заявки
client\_person\_id intId клиента заявки
assigned\_person\_id intId исполнителя заявки
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) ``` ##### Описание: Получить значение данных заявки по ключу или названию поля БД. ##### Атрибуты:
ИмяТипОписание
keystringКлюч наименование поля
В качестве ключа можно указать: - **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) ``` ##### Описание: Находит значение указанного типа произвольного поля заявки. ##### Атрибуты:
ИмяТипОписание
keystringКлюч наименование поля
В качестве ключа можно указать: - **названия всех произвольных полей заявки**; - **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) ``` ##### Описание: Проверяет существуют ли данные заявки по заданному ключу. ##### Атрибуты:
ИмяТипОписание
keystringКлюч наименование поля
В качестве ключа можно указать: - **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) ``` ##### Описание: Перезагружает кастомные поля заявки. ##### Атрибуты:
ИмяТипОписание
isReloadModelboolПерезагружает и системные поля заявки, вызывая ticket.reloadTicket()
##### Возвращает: **bool** — подтверждение успешной перезагрузки. # ticket.setAllCustomData() ### Переопределить список кастомных полей ```JavaScript ticket.setAllCustomData(array $customData) ``` ##### Описание: Не переносится в БД. Будет переопределен массив кастомных полей в памяти, используется для внутренних целей задания значений полей. ##### Атрибуты:
ИмяТипОписание
customDataarrayМассив кастомных полей
##### Возвращает: **self** - тип указанный при вызове метода. ##### Пример: ```JavaScript ticket.setAllCustomData([{ "место": "Место 01", "время": "12:30" }]); ``` # ticket.getAllCustomData() ### Получить список кастомных полей ```JavaScript ticket.getAllCustomData() ``` ##### Описание: Возвращает значения всех кастомных полей. ##### Возвращает: **array** - массив значений кастмных полей. # ticket.setCustomData() ### Установить значение кастомного поля ```JavaScript ticket.setCustomData(string $key, $value) ``` ##### Описание: Устанавливает значение кастомного поля. Не сохраняется в БД. ##### Атрибуты:
ИмяТипОписание
keystringКлюч наименование поля
valueselfЗначение поля
В качестве ключа можно указать: - **названия всех произвольных полей заявки**; - **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. ##### Атрибуты:
ИмяТипОписание
keystringКлюч наименование поля
В качестве ключа можно указать: - **названия всех произвольных полей заявки**; - **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) ``` ##### Описание: Проверяет существует ли такой ключ в списке кастомных полей. ##### Атрибуты:
ИмяТипОписание
keystringКлюч наименование поля
В качестве ключа можно указать: - **названия всех произвольных полей заявки**; - **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\_idstringКлюч id статуса заявки
##### Возвращает: **int** — id статуса заявки или **null** — если у заявки нет статуса. # ticket.getStatusName() #### Получить название статуса заявки ``` ticket.getStatusName() ``` ##### Описание: Находит название статуса заявки. ##### Возвращает: **string** — название статуса заявки или **null** — если у заявки нет статуса. # ticket.getStatusType() #### Получить тип статуса заявки ```JavaScript ticket.getStatusType() ``` ##### Описание: Находит тип статуса заявки. ##### Возвращает: **string** — тип статуса заявки или **null** — если у заявки нет статуса или у статуса нет типа. # ticket._sanitizeString() #### Приведение названия статуса к стандартному виду ```JavaScript ticket._sanitizeString($string) ``` ##### Описание: Вспомогательная функция используемая для приведения названия статуса к нижнему регистру и удаления лишних символов из названия. ##### Атрибуты:
ИмяТипОписание
statusNmestringНаименование статуса заявки
##### Возвращает: **string** - обновленное наименование статуса заявки.

В v8 скриптах не используется.

# ticket.isInStatus() ### Проверить статус заявки ```JavaScript ticket.isInStatus($statusName) ``` ##### Описание: Проверить, что заявка находится в статусе с именем $statusName. ##### Атрибуты:
ИмяТипОписание
statusNamestringНаименование статуса заявки
##### Возвращает: **bool** — подтверждение, что заявка находится в указанном статусе. # ticket.setStatusId() #### Установить статус заявки по id ```JavaScript ticket.setStatusId(int|null $statusId, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null) ``` ##### Описание: Устанавливает указанный статус для заявки по id. ##### Атрибуты:
ИмяТипОписание
statusIdint|nullid статуса заявки
personQueueIdForLogint|nullid очереди записываемый в лог
personQueueTableForLog string|nullНазвание таблицы-связки для очередей записываемое в лог
##### Возвращает: **bool** — подтверждение установки нового статуса. # ticket.setStatusByName() #### Установить статус заявки по имени ```JavaScript ticket.setStatusByName(string $statusName, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null) ``` ##### Описание: Устанавливает указанный статус для заявки по имени. ##### Атрибуты:
ИмяТипОписание
statusNamestringНаименование статуса заявки
personQueueIdForLogint|nullid очереди записываемый в лог
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 первой дополнительной персоны заявки. ##### Атрибуты:
ИмяТипОписание
personIdint|nullID персоны
##### Возвращает: **bool** — подтверждение установки значения. # ticket.setPerson2Id() ### Установка id второй дополнительной персоны ```JavaScript ticket.setPerson2Id(int|null $personId) ``` ##### Описание: Устанавливает id второй дополнительной персоны заявки. ##### Атрибуты:
ИмяТипОписание
personIdint|nullID персоны
##### Возвращает: **bool** — подтверждение установки значения. # ticket.setPerson3Id() ### Установка id третьей дополнительной персоны ```JavaScript ticket.setPerson3Id(int|null $personId) ``` ##### Описание: Устанавливает id третьей дополнительной персоны заявки. ##### Атрибуты:
ИмяТипОписание
personIdint|nullID персоны
##### Возвращает: **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|nullid очереди
personQueueTable string|nullНазвание таблицы-связки для очередей
currentAssignAttempt int|nullНомер попытки прогона одного и того же тикета по той же очереди
isIncRejectsCountboolУвеличивать или нет счетчик попыток у персоны (в очереди исполнителей)
isMoveToEndIfRejectsExceedboolПереносить или нет персону в конец очереди и сбрасывать счетчик попыток, если кол-во попыток превышено (превышает число указанное в настройках бота)
##### Возвращает: **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|nullid очереди
personQueueTable string|nullНазвание таблицы-связки для очередей
isResetRejectsCountboolОбновить или нет счетчик попыток у персоны (в очереди исполнителей)
##### Возвращает: **bool** — подтверждение переноса исполнителя. # ticket.assignToPersonById() #### Назначить исполнителя заявки ```JavaScript ticket.assignToPersonById(int|null $personId, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null, int|null $assignAttemptForLog = null) ``` ##### Описание: Назначает указанного исполнителя для заявки. Для сброса персоны необходимо указать null в аргументах функции. ##### Атрибуты:
ИмяТипОписание
personIdint|nullid персоны-исполнителя
personQueueIdForLogint|nullid очереди записываемый в лог
personQueueTableForLog string|nullНазвание таблицы-связки для очередей записываемое в лог
assignAttemptForLog int|nullНомер попытки прогона одного и того же тикета по той же очереди записываемый в лог
##### Возвращает: **bool** — подтверждение назначения исполнителя. # ticket.getAssignedPersonRejectsCount() #### Получить количество отказов от заявок ```JavaScript ticket.getAssignedPersonRejectsCount(int|null $personQueueId = null, string|null $personQueueTable = null): ?int ``` ##### Описание: Возвращает количество отказов от заявок для текущего исполнителя. ##### Атрибуты:
ИмяТипОписание
personQueueId int|nullid очереди
personQueueTable string|nullНазвание таблицы-связки для очередей
##### Возвращает: **int** — количество отказов от заявок в формате числа. # ticket.setAssignedPersonRejectsCount() #### Установить количество отказов от заявок ```JavaScript ticket.setAssignedPersonRejectsCount(int $rejectsCount, int|null $personQueueId = null, string|null $personQueueTable = null) ``` ##### Описание: Установить количество отказов от заявок для текущего исполнителя. ##### Атрибуты:
ИмяТипОписание
rejectsCountintКоличество отказов
personQueueId int|nullid очереди
personQueueTable string|nullНазвание таблицы-связки для очередей
##### Возвращает: **bool** — подтверждение успешной установки отказов. # ticket.incAssignedPersonRejectsCount() #### Увеличить количество отказов от заявок ```JavaScript ticket.incAssignedPersonRejectsCount(int|null $personQueueId = null, string|null $personQueueTable = null) ``` ##### Описание: Увеличить количество отказов от заявок для текущего исполнителя на 1. Метод не сбрасывает кол-во попыток, если значение будет больше чем указанное в боте максимальное количество отказов. ##### Атрибуты:
ИмяТипОписание
personQueueId int|nullid очереди
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) ``` ##### Описание: Устанавливает значение данных заявки по ключу. ##### Атрибуты:
ИмяТипОписание
keystringКлюч наименование поля
valuemixedЗначение данных
В качестве ключа можно указать: - **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) ``` ##### Описание: Загружает кастомные данные, если они не загружены. ##### Атрибуты:
ИмяТипОписание
isReloadModelbool
##### Возвращает: **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) ``` ##### Описание: Находит статусы соответствующие указанным данным. ##### Атрибуты:
ИмяТипОписание
wherearray|object|nullПараметр по которому будет проверяться соответствие с найденными статусами
isReturnCollectionbool Параметр позволяющий вернуть значения в виде коллекции
##### Возвращает: **?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. ##### Атрибуты:
ИмяТипОписание
idstring|int|nullID статуса заявки
##### Возвращает: **?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) ``` ##### Описание: Находит статус соответствующий указанному имени. ##### Атрибуты:
ИмяТипОписание
namestringИмя статуса заявки
##### Возвращает: **?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) ``` ##### Описание: Находит статусы соответствующие указанным именам. ##### Атрибуты:
ИмяТипОписание
namesstring|array|object|nullИмя статуса
operatorstringОператор
isReturnCollectionboolПараметр позволяющий вернуть значения в виде коллекции
##### Возвращает: **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) ``` ##### Описание: Находит статусы соответствующие указанным типам. ##### Атрибуты:
ИмяТипОписание
typesstring|array|object|nullТип статуса
operatorstringОператор
isReturnCollectionboolПараметр позволяющий вернуть значения в виде коллекции
На данный момент поддерживаются следующие типы статусов: - 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 integerId персоны
is\_external boolЕсли не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом. А 0 означает что персона является работником бизнеса
user\_id integerId пользователя, привязываемого к персоне
firstname string|nullИмя персоны
lastname string|nullФамилия персоны
middlename string|nullОтчество персоны
email string|nullАдрес электронной почты персоны
phone string|nullНомер телефона персоны
organization\_name string|nullНазвание организации
organization\_address string|nullАдрес организации
comment string|nullКомментарий к персоне
##### Возвращает: **bool** - подтверждение обновления данных. ##### Пример: ```JavaScript 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) ``` ##### Описание: Добавляет персону в указанную очередь. ##### Атрибуты:
ИмяТипОписание
personQueueIdintID вида очереди, в которую будет добавлена персона
personQueueTablestringНаименование кастомной таблицы
ticketTypeIdintID вида заявки, в очередь которой будет добавлена персона
isActiveboolАктивность персоны в очереди
rejectsCountintКоличество отказов от заявки

Одновременно в методе может быть указан либо только вид заявки, либо только вид очереди (одна из этих переменных должна содержать значение null). Так же по видам заявок не должна допускаться установка значения кастомной таблицы

##### Возвращает: **int** - id добавленной персоны. ##### Пример: ```JavaScript person.addToQueue(null, null, 2541); ``` # person.removeFromQueue() ### Удаление персоны из очереди ```JavaScript person.removeFromQueue(?int $personQueueId = null, ?string $personQueueTable = null, ?int $ticketTypeId = null) ``` ##### Описание: Удаляет персону из указанной очереди. ##### Атрибуты:
ИмяТипОписание
personQueueIdintID вида очереди
personQueueTablestringНаименование кастомной таблицы
ticketTypeIdintID вида заявки

Одновременно в методе может быть указан либо только вид заявки, либо только вид очереди (одна из этих переменных должна содержать значение 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 ?intid очереди
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|nullID очереди исполнителей
##### Возвращает: **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Наименование таблицы, в которой будет создана запись
dataarray | 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 ``` ##### Описание: Ищет записи в таблице и возвращает их в виде массива объектов. ##### Атрибуты:
ИмяТипОписание
tableNamestringНаименование таблицы, в которой будет найдена запись
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 = []) ``` ##### Описание: Ищет записи соответствующие условию метода в таблице и возвращает их количество. ##### Атрибуты:
ИмяТипОписание
tableNamestringНаименование таблицы, в которой будет создана запись
wherearray | 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 = []) ``` ##### Описание: Ищет записи соответствующие условию метода в таблице и возвращает сумму их значений. ##### Атрибуты:
ИмяТипОписание
tableNamestringНаименование таблицы, в которой будет создана запись
columnstringНаименование поля из которого будут браться значения
wherearray | 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 = []) ``` ##### Описание: Ищет записи соответствующие условию метода в таблице и возвращает наибольшее по значению из них. ##### Атрибуты:
ИмяТипОписание
tableNamestringНаименование таблицы, в которой будет создана запись
columnstringНаименование поля из которого будут браться значения
wherearray | 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 в таблице. ##### Атрибуты:
ИмяТипОписание
dataarray | 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) ``` ##### Описание: Возвращает значение даты измененного формата из запрашиваемого поля. ##### Атрибуты:
ИмяТипОписание
fieldNamestringНаименование поля из которого будет браться значение
toFormatstringФормат даты, например: 'Y-m-d H:i:s' (Y - год; m - месяц; d - день; H - часы; i - минуты; s - секунды.)
toTimeZonestring|nullЧасовой пояс в ответе
fromTimeZonestring|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) ``` ##### Описание: Меняет формат введенной даты. ##### Атрибуты:
ИмяТипОписание
datestringДата
toFormatstringФормат даты в ответе, например: 'Y-m-d H:i:s' (Y - год; m - месяц; d - день; H - часы; i - минуты; s - секунды.)
fromFormatstring|nullФормат даты в запросе
toTimeZonestring|nullЧасовой пояс в ответе
fromTimeZonestring|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. ##### Атрибуты:
ИмяТипОписание
methodstringМетод запроса
uristringUrl запроса
requestOptionsarray|objectОпции запроса
httpClientConfigarray|objectНабор параметров для включения или выключения различных возможностей Http Client
bodyarray|object|string|nullТело запроса
jsonBodyarray|object|nullJSON тело запроса
headersarray|objectЗаголовки запроса
isForceAddJsonHeadersbool Добавление заголовков Json
##### Возвращает: **mixed** — ответ запроса или **ResponseInterface** — объект Response или **null** — если таких данных не существует. # api.post() ### Выполнить HTTP POST запрос ```JavaScript api.post(string $uri, $body = [], $requestOptions = [], $headers = [], $httpClientConfig = []) ``` ##### Описание: Выполняет HTTP POST запрос, с помощью Guzzle. ##### Атрибуты:
ИмяТипОписание
uristringUrl запроса
requestOptionsarray|objectОпции запроса
httpClientConfigarray|objectНабор параметров для включения или выключения различных возможностей Http Client
bodyarray|object|nullТело запроса
headersarray|objectЗаголовки запроса
##### Возвращает: **string** — ответ запроса в формате строки или **null** — если таких данных не существует. # api.get() ### Выполнить HTTP GET запрос ```JavaScript api.get(string $uri, $requestOptions = [], $headers = [], $httpClientConfig = []) ``` ##### Описание: Выполняет HTTP GET запрос, с помощью Guzzle. ##### Атрибуты:
ИмяТипОписание
uristringUrl запроса
requestOptionsarray|objectОпции запроса
httpClientConfigarray|objectНабор параметров для включения или выключения различных возможностей Http Client
headersarray|objectЗаголовки запроса
##### Возвращает: **string** — ответ запроса в формате строки или **null** — если таких данных не существует. # api.getJson() ### Выполнить HTTP GET запрос ```JavaScript api.getJson(string $uri, $jsonBody = null, $headers = [], $requestOptions = [], $httpClientConfig = []) ``` ##### Описание: Выполняет HTTP GET запрос с jsonBody, с помощью Guzzle. ##### Атрибуты:
ИмяТипОписание
uristringUrl запроса
requestOptionsarray|objectОпции запроса
httpClientConfigarray|objectНабор параметров для включения или выключения различных возможностей Http Client
jsonBodyarray|object|nullJson тело запроса
headersarray|objectЗаголовки запроса
##### Возвращает: **array** — ответ запроса в формате массива или **null** — если таких данных не существует. # api.postJson() ### Выполнить HTTP POST запрос ```JavaScript api.postJson(string $uri, $jsonBody = [], $headers = [], $requestOptions = [], $httpClientConfig = []) ``` ##### Описание: Выполняет HTTP POST запрос с jsonBody, с помощью Guzzle. ##### Атрибуты:
ИмяТипОписание
uristringUrl запроса
requestOptionsarray|objectОпции запроса
httpClientConfigarray|objectНабор параметров для включения или выключения различных возможностей Http Client
jsonBodyarray|objectJson тело запроса
headersarray|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. ##### Атрибуты:
ИмяТипОписание
configarray|object|stringHTTP Config
##### Возвращает: **array** — HTTP Config в формате массива. # api.getRequestOptions() ### Получить параметры HTTP запроса ```JavaScript api.getRequestOptions() ``` ##### Описание: Возвращает параметры HTTP запроса. ##### Возвращает: **array** — параметры HTTP запроса в формате массива. # api.setRequestOptions() ### Установить параметры HTTP запроса ```JavaScript api.setRequestOptions($options) ``` ##### Описание: Устанавливает параметры HTTP запроса. ##### Атрибуты:
ИмяТипОписание
optionsarray|object|stringПараметры HTTP запроса
##### Возвращает: **array** — параметры HTTP запроса в формате массива. # api.getHeaders() ### Получить заголовки HTTP запроса ```JavaScript api.getHeaders() ``` ##### Описание: Возвращает заголовки HTTP запроса. ##### Возвращает: **array** — заголовки HTTP запроса в формате массива. # api.setHeaders() ### Установить заголовки HTTP запроса ```JavaScript api.setHeaders($headers) ``` ##### Описание: Устанавливает заголовки HTTP запроса. ##### Атрибуты:
ИмяТипОписание
headersarray|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 запроса. ##### Атрибуты:
ИмяТипОписание
proxyUrlstringProxy 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 запросов. ##### Атрибуты:
ИмяТипОписание
timeoutfloatВремя задержки
##### Возвращает: **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 запроса. ##### Атрибуты:
ИмяТипОписание
isAutoConvertToJsonboolКонвертация в 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 из чат-бота. ##### Атрибуты:
ИмяТипОписание
externalApiEndpointCodestringВнешний код эндпоинта
uristring|nullUrl запроса
methodstring|nullМетод запроса
formatstring|nullФормат запроса
bodyarray|object|string|nullТело запроса
headersarray|object|string|nullЗаголовки запроса
requestOptionsarray|object|string|nullПараметры запроса
httpClientConfigarray|object|string|nullНабор параметров для включения или выключения различных возможностей Http Client
proxyUrlstring|nullProxy 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) ``` ##### Описание: Обновляет значение уже существующей временной переменной или создает новую переменную с указанным значением. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
valuestringЗначение переменной
##### Возвращает: **self** - объект того же типа, в данном случае переменную, которая была создана. ##### Пример: ```JavaScript let memory = "Значение переменной лида"; let memory_attribute = memory.setAttr('memory_attribute', memory); ``` # memory.getAttr() ### Получить значение временной переменной ```JavaScript memory.getAttr(string $key) ``` ##### Описание: Возвращает значение уже существующей временной переменной. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **string** - значение запрашиваемой переменной в виде строки или **null** - если переменная не была найдена. ##### Пример: ```JavaScript let memory_attribute_value = memory.getAttr('memory_attribute'); ``` # memory.getIntAttr() ### Получить значение числовой временной переменной ```JavaScript memory.getIntAttr(string $key, ?int|null $default = 0) ``` ##### Описание: Возвращает значение уже существующей числовой временной переменной. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
defaultintДефолтное значение переменной
##### Возвращает: **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 переменной лида. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
defaultfloat Дефолтное значение
##### Возвращает: **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 переменной. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
defaultboolДефолтное значение
##### Возвращает: **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) ``` ##### Описание: Проверяет существует ли временной переменная. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
Возвращает: **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 переменных. ##### Атрибуты:
ИмяТипОписание
dataarrayJSON значение переменной
##### Возвращает: **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 переменной. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
valuemixedJSON значение переменной
##### Возвращает: **self** - объект того же типа и значения, что задан в методе. ##### Пример: ```JavaScript let memory_attribute_value = memory.setJsonAttr('memory_attribute', { "id": 2415, "name": "Имя" }); ``` # memory.getJsonAttr() ### Получить значение временной JSON переменной ```JavaScript memory.getJsonAttr(string $key) ``` ##### Описание: Возвращает значение уже существующей временной JSON переменной. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **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 переменной. ##### Атрибуты:
ИмяТипОписание
keystringНаименование переменной
##### Возвращает: **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, ...) ``` ##### Атрибуты:
ИмяТипОписание
funcfunctionВызываемая функция
delayintЗадержка перед запуском в миллисекундах. Значение по умолчанию – 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трибуты:
ИмяТипОписание
ffunctionВызываемая функция
msintЗадержка перед запуском в миллисекундах
##### Пример: ```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) ``` ##### Описание: Возвращает дату создания заявки в указанном форматировании. ##### Атрибуты:
ИмяТипОписание
formatstringФормат даты
timeZonestring|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) ``` ##### Описание: Возвращает форматированную дату создания заказа. ##### Атрибуты:
ИмяТипОписание
formatstringФормат даты
timeZonestring|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) ``` ##### Описание: Возвращает форматированную дату обновления заказа. ##### Атрибуты:
ИмяТипОписание
formatstringФормат даты
timeZonestring|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) ``` ##### Описание: Возвращает форматированную дату удаления заказа. ##### Атрибуты:
ИмяТипОписание
formatstringФормат даты
timeZonestring|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) ``` ##### Описание: Возвращает форматированную дату создания продукта. ##### Атрибуты:
ИмяТипОписание
formatstringФормат даты
timeZonestring|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) ``` ##### Описание: Возвращает форматированную дату обновления продукта. ##### Атрибуты:
ИмяТипОписание
formatstringФормат даты
timeZonestring|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) ``` ##### Описание: Возвращает форматированную дату удаления продукта. ##### Атрибуты:
ИмяТипОписание
formatstringФормат даты
timeZonestring|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) ``` ##### Описание: Проверяет наименование статуса на сходство. ##### Атрибуты:
ИмяТипОписание
statusNamestringНаименование статуса
##### Возвращает: **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) ``` ##### Описание: Возвращает форматированную дату создания статуса. ##### Атрибуты:
ИмяТипОписание
formatstringФормат даты
timeZonestring|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) ``` ##### Описание: Возвращает форматированную дату обновления статуса. ##### Атрибуты:
ИмяТипОписание
formatstringФормат даты
timeZonestring|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) ``` ##### Описание: Возвращает форматированную дату удаления статуса. ##### Атрибуты:
ИмяТипОписание
formatstringФормат даты
timeZonestring|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) ``` ##### Описание: Проверяет наименование очереди персон на сходство. ##### Атрибуты:
ИмяТипОписание
namestringНаименование очереди персон
##### Возвращает: **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) ``` ##### Описание: Возвращает форматированную дату создания очереди персон. ##### Атрибуты:
ИмяТипОписание
formatstringФормат даты
timeZonestring|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) ``` ##### Описание: Возвращает форматированную дату обновления очереди персон. ##### Атрибуты:
ИмяТипОписание
formatstringФормат даты
timeZonestring|nullЧасовой пояс
##### Возвращает: **string** - дата обновления очереди персон или
**null** - если значение не найдено.