07. Справочник по функциям JS

Руководство по функциям JavaScript для Metabot

Справочник всех функций

Получение данных бота

Метод Описание

bot.getAllData(): array

Возвращает все данные текущего бота

bot.setData(string $key, $value): self

Устанавливает значение данных текущего бота по ключу

bot.getData(string $key): mixed|null

Возвращает данные текущего бота по ключу

Работа с лидами

Методы bot

Метод Описание
bot.findLeads(array|object $columns = [], array|object $where = [], array|object $orderBy = [], int|null $limit = null, int|null $offset = null): array Находит лиды по указанным атрибутам
bot.getGeoLocation(): array|null Возвращает геолокацию лида

Методы lead

Метод Описание

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 статуса лида;
  • is_mute - включен ли бот для лида;
  • все системные поля лида (по английски).
lead.setData(string $key, $value): self

Устанавливает значение данных лида по ключу

Возможные ключи: 

  • 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

Возвращает значение данных лида по ключу

Возможные ключи: 

  • 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

Проверяет наличие данных лида по ключу

Возможные ключи: 

  • 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

lead.getSerialNumber(): int|null Возвращает порядковый номер лида в текущем боте
lead.getChannelCode(): string Возвращает код канала лида
lead.isInlineButtonsAvailable(): bool|null Проверяет включены ли инлайн кнопки
lead.isInlineButtonsAvailableGeneralChannelSetting(): bool|null Возвращает настройки кнопок канала

Работа со скриптами

 Метод  Описание
bot.scheduleScript(int|null $scriptId, int|null $leadId, int|null $ticketId = null, $jobParams = []): bool Планирует вызов скрипта
bot.scheduleScriptByCode(string $scriptCode, int|null $leadId, int|null $ticketId = null, $jobParams = []): bool Планирует вызов скрипта по коду
bot.getScriptIdByName(string|null $scriptName): int|null Возвращает ID скрипта по наименованию
bot.getScriptIdByCode(string|null $scriptCode): int|null Возвращает ID скрипта по коду
bot.getScriptCodeById(int|null $scriptId): int|null Возвращает код скрипта по ID
bot.runScriptForLead(?int $scriptId, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = []): bool Запускает скрипт для лида по ID скрипта
bot.runScriptByNameForLead(string|null $scriptName, int|null $leadId, int|null $ticketId = null, $addToQueue = true, $jobParams = []): bool Запускает скрипт для лида по наименованию скрипта
bot.runScriptForPerson(int|null $scriptId, int|null $personId, int|null $ticketId = null, $addToQueue = true, $jobParams = []): bool

Запускает скрипт для персоны по ID скрипта
bot.runScriptByNameForPerson(string|null $scriptName, int|null $personId, int|null $ticketId = null, $addToQueue = true, $jobParams = []): bool Запускает скрипт для персоны по наименованию скрипта
bot.runScriptByCodeForLead(string|null $scriptCode, int|null $leadId, int |null$ticketId = null, $addToQueue = true, $jobParams = []): bool Запускает скрипт для лида по коду
bot.runScriptByCodeForPerson(string|null $scriptCode, int|null $personId, int|null $ticketId = null, $addToQueue = true, $jobParams = []): bool Запускает скрипт для персоны по коду
bot.clearJobsByScriptId(int|null $scriptId, int|null $leadId = null): bool   Очищает джобы по id скрипта
bot.clearJobsByScriptName(string|null $scriptName, int|null $leadId = null): bool Очищает джобы по наименованию скрипта
bot.clearJobsByScriptCode(string|null $scriptCode, int|null $leadId = null): bool Очищает джобы по коду скрипта

Работа с атрибутами

Методы bot

Метод Описание
bot.setAttr(string $key, string $value): self Устанавливает значение переменной бота
bot.getAttr(string $key): mixed|null Возвращает значение переменной бота
bot.getAllAttr(): array Возвращает массив всех переменных бота
bot.getIntAttr(string $key, int|null $default = 0): int|null Возвращает значение int переменной бота
bot.getFloatAttr(string $key, float|null $default = 0.0): float|null Возвращает значение float переменной бота
bot.getBoolAttr(string $key, bool|null $default = false): bool|null Возвращает значение bool переменной бота
bot.issetAttr(string $key): bool Проверяет наличие переменной бота
bot.isAttrExist(string $key): bool
bot.getAllJsonAttrs(): array Возвращает значение всех JSON переменных бота
bot.setJsonAttr(string $key, $value): self Устанавливает значение JSON переменной бота
bot.getJsonAttr(string $key): mixed|null Возвращает значение JSON переменной бота

bot.issetJsonAttr(string $key): bool

Проверяет наличие JSON переменной бота

bot.isJsonAttrKeyExist(string $key): bool

Методы lead

Метод Описание
lead.setAttr(string $key, string $value): self Устанавливает значение переменной лида
lead.getAttr(string $key): string|null Возвращает значение переменной лида
lead.getAllAttr(): array Возвращает все переменные лида
lead.getIntAttr(string $key, ?int|null $default = 0): int|null Возвращает значение int переменной лида
lead.getFloatAttr(string $key, ?float|null $default = 0.0): float|null Возвращает значение float переменной лида
lead.getBoolAttr(string $key, ?bool|null $default = false): bool|null Возвращает значение bool переменной лида
lead.issetAttr(string $key): bool Проверяет наличие переменной лида
lead.isAttrExist(string $key): bool
lead.deleteAttrs(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false): self Удаляет переменную/переменные лида
lead.deleteAttr(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false): self
lead.forceDeleteAttrs(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false): self Принудительно удаляет переменную/переменные лида из БД
lead.forceDeleteAttr(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false): self
lead.getAllJsonAttrs(): array Возвращает значение всех JSON переменных лида
lead.setJsonAttr(string $key, $value): self Устанавливает значение JSON переменной лида
lead.getJsonAttr(string $key): mixed|null Возвращает значение JSON переменной лида
lead.issetJsonAttr(string $key): bool Проверяет наличие JSON переменной лида
lead.isJsonAttrKeyExist(string $key): bool
lead.deleteJsonAttrs(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false): self Удаляет json-переменную/json-переменные лида

lead.deleteJsonAttr(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false): self
lead.forceDeleteJsonAttrs(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false): self Принудительно удаляет json-переменную/json-переменные лида из БД

lead.forceDeleteJsonAttr(string|object|array|null $attrs, int|null $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false): self

lead.setAllLiveTexAttrs(string $value): self

Устанавливает значение всех LiveTex переменных лида

lead.setLiveTexAttr(string $key,string $value): self

Устанавливает значение LiveTex переменной лида

lead.getAllLiveTexAttrs(): array

Возвращает значение всех LiveTex переменных лида

lead.getLiveTexAttr(string $key): mixed|null

Возвращает значение LiveTex переменной лида

Методы memory

Метод Описание
memory.setAttr(string $key, string $value): self Устанавливает значение временной переменной
memory.getAttr(string $key): string|null Возвращает значение временной переменной
memory.getIntAttr(string $key, ?int|null $default = 0): int|null Возвращает значение int временной переменной
memory.getFloatAttr(string $key, ?float|null $default = 0.0): float|null Возвращает значение float временной переменной
memory.getBoolAttr(string $key, ?bool|null $default = false): bool|null Возвращает значение bool временной переменной
memory.issetAttr(string $key): bool Проверяет наличие временной переменной
memory.isAttrExist(string $key): bool
memory.setAllJsonAttrs(array $data): self Устанавливает значение всех временных JSON переменных
memory.getAllJsonAttrs(): array Возвращает значение всех временных JSON переменных
memory.setJsonAttr(string $key, $value): self Устанавливает значение временной JSON переменной
memory.getJsonAttr(string $key): mixed|null Возвращает значение временной JSON переменной
memory.issetJsonAttr(string $key): bool Проверяет наличие временной JSON переменной
memory.isJsonAttrKeyExist(string $key): bool

Работа с триггерами

Метод Описание
bot.scheduleTrigger(int|null $triggerId, int|null $leadId, int|null $ticketId = null, $jobParams = []): bool Планирует запуск триггера
bot.scheduleTriggerByCode(string $triggerCode, int|null $leadId, int|null $ticketId = null, $jobParams = []): bool

Планирует запуск триггера по коду

bot.runTriggerForLead(?int $triggerId, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = []): bool

Запускает триггер для лида по ID триггера
bot.runTriggerByCodeForLead(string|null $triggerCode, int|null $leadId, int|null $ticketId = null, $addToQueue = true, $jobParams = []): bool Планирует запуск триггера по коду
bot.runTriggerByCodeForPerson(string|null $triggerCode, int|null $personId, int|null $ticketId = null, $addToQueue = true, $jobParams = []): bool Планирует запуск триггера по коду для последнего лида персоны
bot.clearTriggerJobsForLead(int|null $leadId, int|null $ticketId = null): bool Удаляет триггеры для лида

bot.clearTriggerJobsForAllPersonLeads(int|null $personId, int|null $ticketId = null): bool

Удаляет триггеры для всех лидов персоны

bot.getTriggerIdByName(string|null $triggerName): int|null

Возвращает ID триггера по наименованию

bot.getTriggerIdByCode(string|null $triggerCode): int|null

Возвращает ID Триггера по Коду

bot.runTriggerByNameForLead(string|null $triggerName, int|null $leadId, int|null $ticketId = null, $addToQueue = true, $jobParams = []): bool

Запускает триггер для лида по наименованию

bot.runTriggerForPerson(int|null $triggerId, int|null $personId, int|null $ticketId = null, $addToQueue = true, $jobParams = []): bool

Запускает триггер для персоны по ID

bot.runTriggerByNameForPerson(string|null $triggerName, int|null $personId, int|null $ticketId = null, $addToQueue = true, $jobParams = []): bool

Запускает триггер для персоны по наименованию

bot.clearTriggerJobsByScriptId(int|null $scriptId, int|null $leadId = null): bool

Очищает джобы триггера по id скрипта

bot.clearTriggerJobsByScriptName(string|null $scriptName, int|null $leadId = null): bool

Очищает джобы триггера по наименованию скрипта

bot.clearTriggerJobsById(int|null $triggerId, int|null $leadId = null): bool

Очищает джобы по id триггера

bot.clearTriggerJobsByCode(string|null $triggerCode, int|null $leadId = null, int $ticketId = null): bool

Очищает джобы по коду триггера

bot.clearTriggerJobsByCodeForAllPersonLeads(string|null $triggerCode, int|null $personId, int $ticketId = null): bool

Удаляет триггеры для всех лидов персоны по коду

bot.clearTriggerJobsByName(string|null $triggerName, int|null $leadId = null): bool

Очищает джобы по наименованию триггера

bot.clearTriggerJobsByScriptCode(string|null $scriptCode, int|null $leadId = null, int|null $ticketId = null): bool

Очищает джобы по коду скрипта

bot.clearTriggerJobsByIdForTicket(int|null $triggerId, int|null $ticketId): bool

Очищает джобы по id триггера и ID заявки

bot.clearTriggerJobsByNameForTicket(string|null $triggerName, int|null $ticketId): bool

Очищает джобы по наименованию триггера и ID заявки

bot.clearTriggerJobsByCodeForTicket(string|null $triggerCode, int|null $ticketId): bool

Очищает джобы по коду триггера и ID заявки

Работа со статусами

Метод Описание
lead.isInStatus(string $statusName): bool Проверяет существует ли статуса у лида
lead.getStatusId(): int|null Возвращает id статуса лида
lead.getAllStatuses(): array Возвращает все статусы лида
lead.getAllStatusesIndexedByName(): array Возвращает все наименования статусов лида
lead.setStatusId(int $statusId, string $name): self Устанавливает id статуса лида
lead.setStatusName(string $name): self Устанавливает наименование статуса лида
lead.getStatusName(): string Возвращает наименование статуса лида
lead.setStatus(int $statusId, string $name): self Устанавливает статус лида
lead.setStatusById(int $statusId): self Устанавливает статус лида по id
lead.issetStatusById(string $id): bool Проверяет существует ли статус у лида по id
lead.issetStatusByName(string $name): bool Проверяет существует ли статуса у лида по наименованию
lead.getStatusIdByName(string $statusName): int Возвращает id статуса лида по наименованию
lead.setStatusByName(string $statusName): self Устанавливает статус лида по наименованию

Работа с рассылками

Метод Описание
bot.scheduleBroadcast(int|null $broadcastId, int|null $ticketId = null, $jobParams = []): bool Планирует запуск рассылки
bot.scheduleBroadcastByCode(string|null $broadcastCode, int|null $ticketId = null, $jobParams = []): bool Планирует запуск рассылки по коду
bot.getBroadcastIdByCode(string|null $broadcastCode): int|null Возвращает ID рассылки по коду

Работа с тэгами

Метод Описание
lead.isTagExist('some_tag'): bool Проверяет наличие тэга лида

lead.issetTag('some_tag'): bool
lead.setTag(string $key, $value): self Устанавливает значение тэга лида
lead.getTag(string $key): string|null Возвращает значение тэга лида
lead.getAllTags(): array Возвращает массив всех тэгов лида
lead.addTags(string|object|array|null $tags, int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false): self Добавляет тэги лиду
lead.addTag(string|object|array|null $tags, int|null $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false): self
lead.deleteTags(string|object|array|null $tags, int|null $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false): self Удаляет тэги лида
lead.deleteTag(string|object|array|null $tags, int|null $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false): self
lead.forceDeleteTags(string|object|array|null $tags, int|null $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false): self Принудительно удаляет тэги лида из БД

lead.forceDeleteTag(string|object|array|null $tags, int|null $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false): self

Работа с контекстами

Метод Описание
lead.setContext(string $key, $value): self Устанавливает значение контекста лида
lead.isContextExist('some_tag'): bool Проверяет наличие контекста лида

lead.issetContext('some_tag'): bool
lead.getContext(string $key): string|null Возвращает значение контекста лида
lead.getAllContexts(): array Возвращает массив всех контекстов лида

Работа с переключением на оператора

Методы bot

Метод Описание
bot.getForwardEventType(): bool

Проверяет кто переключил на оператора

bot.isForwardedToOperator(): bool

Проверяет переключения на оператора

Методы lead

Метод Описание
lead.setForwarded(bool|int $state): self

Переключает бот на оператора

Работа с заявками

Методы bot

Метод Описание
bot.createTicket($data): int|null Создает заявку
bot.updateTicketById(int $ticketId, $data): bool Обновляет заявку
bot.getMaxRejectsTicketCount(): int|null Возвращает максимальное количество отказов
bot.findTickets($where = [], bool $findInAllBusinessBots = false, $orderBy = [], int|null $limit = null, int|null $offset = null): array Находит заявку по заданным атрибутам
bot.findTicketIdByCustomField(string $fieldName, $value): int|null

Возвращает id заявки по значению поля

bot.getTicketTypeIdByName(string $typeName): int|null Возвращает id заявки по наименованию вида заявки
bot.getTicketTypeNameById(int|null $ticketTypeId): string|null Возвращает наименование заявки по id вида заявки
bot.getTicketStatusIdByName(string $statusName): int|null Возвращает id заявки по наименованию статуса заявки
bot.setCurrentTicketById(int|null $ticketId): bool Устанавливает указанную заявку как текущую
bot.clearTicketAssignedPersonsLog(): bool Очищает лог назначения тикета персонам

Методы ticket

Метод Описание

ticket.update($data): bool

Обновляет заявку, через объект заявки

ticket.getAllData(): array

Возвращает значение всех данных заявки

ticket.setData(string $key, $value): self

Устанавливает значение данных заявки по ключу

В качестве ключа можно указать:

 
  • id - id заявки;
  • business_id - id бизнеса;
  • bot_id - id бота;
  • author_person_id - id автора заявки;
  • client_person_id - id клиента заявки;
  • assigned_person_id - id исполнителя заявки;
  • ticket_type_id - id вида заявки, виды заявки создаются вручную;
  • payment_type_id - id способа оплаты. Доступные значения:
    • - PAYMENT_TYPE_NONE;
    • - PAYMENT_TYPE_ROBOKASSA;
    • - PAYMENT_TYPE_YANDEXKASSA;
    • - PAYMENT_TYPE_CASH;
  • status_id - id статуса заявки;
  • title - заголовок заявки;
  • description - описание заявки;
  • created_at - время создания заявки;
  • updated_at - время обновления заявки;
  • deleted_at - время удаления заявки;
  • все системные поля заявки (по английски).

ticket.getData(string $key): mixed|null

Возвращает значение данных заявки по ключу

В качестве ключа можно указать:

 
  • 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 способа оплаты. Доступные значения:
    • - PAYMENT_TYPE_NONE;
    • - PAYMENT_TYPE_ROBOKASSA;
    • - PAYMENT_TYPE_YANDEXKASSA;
    • - PAYMENT_TYPE_CASH;
  • status_id - id статуса заявки;
  • title - заголовок заявки;
  • description - описание заявки;
  • created_at - время создания заявки;
  • updated_at - время обновления заявки;
  • deleted_at - время удаления заявки;
  • все системные поля заявки (по английски).

ticket.getCustomData(string $key): mixed|null

Считывает произвольные поля заявки по ключу

В качестве ключа можно указать:

 
  • названия всех произвольных полей заявки;
  • 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 способа оплаты. Доступные значения:
    • - PAYMENT_TYPE_NONE;
    • - PAYMENT_TYPE_ROBOKASSA;
    • - PAYMENT_TYPE_YANDEXKASSA;
    • - PAYMENT_TYPE_CASH;
  • status_id - id статуса заявки;
  • title - заголовок заявки;
  • description - описание заявки;
  • created_at - время создания заявки;
  • updated_at - время обновления заявки;
  • deleted_at - время удаления заявки;
  • все системные поля заявки (по английски).

ticket.issetData(string $key): bool

Проверяет наличие данных по заявке по ключу

В качестве ключа можно указать:

 
  • 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 способа оплаты. Доступные значения:
    • - PAYMENT_TYPE_NONE;
    • - PAYMENT_TYPE_ROBOKASSA;
    • - PAYMENT_TYPE_YANDEXKASSA;
    • - PAYMENT_TYPE_CASH;
  • status_id - id статуса заявки;
  • title - заголовок заявки;
  • description - описание заявки;
  • created_at - время создания заявки;
  • updated_at - время обновления заявки;
  • deleted_at - время удаления заявки;
  • все системные поля заявки (по английски).

ticket.isDataExist(string $key): bool

ticket.reloadCustomData(bool $isReloadModel = false): bool

Перезагружает кастомные данные

ticket.loadCustomDataIfNotLoaded(bool $isReloadModel = false): bool

Загружает кастомные данные, если они не загружены

ticket.setAllCustomData(array $customData): self

Переопределяет список кастомных полей

ticket.getAllCustomData(): array

Возвращает список кастомных полей

ticket.setCustomData(string $key, $value): self

Устанавливает значение кастомного поля

В качестве ключа можно указать:

 
  • названия всех произвольных полей заявки;
  • id - id заявки;
  • business_id - id бизнеса;
  • bot_id - id бота;
  • author_person_id - id автора заявки;
  • client_person_id - id клиента заявки;
  • assigned_person_id - id исполнителя заявки;
  • ticket_type_id - id вида заявки, виды заявки создаются вручную;
  • payment_type_id - id способа оплаты. Доступные значения:
    • - PAYMENT_TYPE_NONE;
    • - PAYMENT_TYPE_ROBOKASSA;
    • - PAYMENT_TYPE_YANDEXKASSA;
    • - PAYMENT_TYPE_CASH;
  • status_id - id статуса заявки;
  • title - заголовок заявки;
  • description - описание заявки;
  • created_at - время создания заявки;
  • updated_at - время обновления заявки;
  • deleted_at - время удаления заявки;
  • все системные поля заявки (по английски).

ticket.issetCustomData(string $key): bool

Проверяет имеет ли значение кастомное поле

В качестве ключа можно указать:

 
  • названия всех произвольных полей заявки;
  • 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 способа оплаты. Доступные значения:
    • - PAYMENT_TYPE_NONE;
    • - PAYMENT_TYPE_ROBOKASSA;
    • - PAYMENT_TYPE_YANDEXKASSA;
    • - PAYMENT_TYPE_CASH;
  • status_id - id статуса заявки;
  • title - заголовок заявки;
  • description - описание заявки;
  • created_at - время создания заявки;
  • updated_at - время обновления заявки;
  • deleted_at - время удаления заявки;
  • все системные поля заявки (по английски).

ticket.isCustomDataExist(string $key): bool

Проверяет существует ли кастомное поле

В качестве ключа можно указать:

 
  • названия всех произвольных полей заявки;
  • 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 способа оплаты. Доступные значения:
    • - PAYMENT_TYPE_NONE;
    • - PAYMENT_TYPE_ROBOKASSA;
    • - PAYMENT_TYPE_YANDEXKASSA;
    • - PAYMENT_TYPE_CASH;
  • status_id - id статуса заявки;
  • title - заголовок заявки;
  • description - описание заявки;
  • created_at - время создания заявки;
  • updated_at - время обновления заявки;
  • deleted_at - время удаления заявки;
  • все системные поля заявки (по английски).

ticket.getTicketTypeName(): string|null

Возвращает название типа заявки

ticket.getStatusId(): int|null

Возвращает ID статуса заявки


ticket.getAttr('status_id'): int|null

ticket.getStatusName(): string|null

Возвращает название статуса заявки

ticket.getStatusType(): string|null

Возвращает тип статуса заявки

ticket.isInStatus($statusName): bool

Проверяет статус заявки

ticket.setStatusId(int|null $statusId, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null): bool

Устанавливает статус заявки по id

ticket.setStatusByName(string $statusName, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null): bool

Устанавливает статус заявки по имени

ticket.reloadTicket(): bool

Загружает заявку повторно

ticket.getAuthorPersonId(): int|null

Возвращает ID автора заявки

ticket.getAssignedPersonId(): int|null

Возвращает ID исполнителя заявки

ticket.getClientPersonId(): int|null

Возвращает ID клиента заявки

ticket.getAuthorPersonFullName(): string

Возвращает ФИО автора заявки

ticket.getAssignedPersonFullName(): string

Возвращает ФИО исполнителя заявки

ticket.getClientPersonFullName(): string

Возвращает ФИО клиента заявки

ticket.getAuthorPersonRoleId(): int|null

Возвращает ID роли автора заявки

ticket.getAssignedPersonRoleId(): int|null

Возвращает ID роли исполнителя заявки

ticket.getClientPersonRoleId(): int|null

Возвращает ID роли клиента заявки

ticket.getAuthorPersonRoleName(): string

Возвращает имя роли автора заявки

ticket.getAssignedPersonRoleName(): string

Возвращает имя роли исполнителя заявки

ticket.getClientPersonRoleName(): string

Возвращает имя роли клиента заявки

ticket.getAuthorPersonRoleTitle(): string

Возвращает заголовок роли автора заявки

ticket.getAssignedPersonRoleTitle(): string

Возвращает заголовок роли исполнителя заявки

ticket.getClientPersonRoleTitle(): string

Возвращает заголовок роли клиента заявки

ticket.getAuthorPersonRoleFormattedTitle(): string

Возвращает форматированное название роли автора заявки

ticket.getAssignedPersonRoleFormattedTitle(): string

Возвращает форматированное название роли исполнителя заявки

ticket.getClientPersonRoleFormattedTitle(): string

Возвращает форматированное название роли клиента заявки

ticket.getPerson1Id(): int|null

Возвращает id первой дополнительной персоны

ticket.getPerson2Id(): int|null

Возвращает id второй дополнительной персоны

ticket.getPerson3Id(): int|null

Возвращает id третьей дополнительной персоны

ticket.setPerson1Id(int|null $personId): bool

Устанавливает id первой дополнительной персоны

ticket.setPerson2Id(int|null $personId): bool

Устанавливает id второй дополнительной персоны

ticket.setPerson3Id(int|null $personId): bool

Устанавливает id третьей дополнительной персоны

ticket.getTotalFormatted(): string

Возвращает форматированную итоговую стоимость заказа

ticket.getSubtotalFormatted(): string

Возвращает форматированную промежуточную стоимость заказа

ticket.getTotalFeeFormatted(): string

Возвращает форматированную стоимость заказа

ticket.getDeliveryFeeFormatted(): string

Возвращает форматированную стоимость доставки

ticket.getTicketLines(): ScriptTicketLine

Возвращает массив объектов ScriptTicketLine

Методы ScriptTicketLine

Метод Описание
ScriptTicketLine.reload(): bool Обновляет данные по строке заявки из бд
ScriptTicketLine.getId(): int|null Возвращает id ScriptTicketLine
ScriptTicketLine.getTicketId(): int|null Возвращает id заявки
ScriptTicketLine.getProductId(): int|null Возвращает id продукта заявки
ScriptTicketLine.getProduct(): ScriptProduct|null Возвращает все данные продукта заявки
ScriptTicketLine.getQuantity(): int|null Возвращает количество продукта в заявке
ScriptTicketLine.getPrice(): float Возвращает цену продукта в заявке
ScriptTicketLine.getPriceFormatted(): string Возвращает форматированную цену продукта в заявке

ScriptTicketLine.getPriceDateFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Возвращает цену продукта в заявке в указанном форматировании

ScriptTicketLine.priceDateFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

ScriptTicketLine.getFee(): float Возвращает стоимость заявки
ScriptTicketLine.getFeeFormatted(): string Возвращает форматированную стоимость заявки
ScriptTicketLine.getSubtotal(): float Возвращает итоговую стоимость заявки
ScriptTicketLine.getSubtotalFormatted(): string Возвращает форматированную итоговую стоимость заявки

ScriptTicketLine.getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Возвращает форматированную дату создания заказа

ScriptTicketLine.createdAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

ScriptTicketLine.getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Возвращает форматированную дату обновления заказа

ScriptTicketLine.updatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

ScriptTicketLine.getDeletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Возвращает форматированную дату удаления заказа

ScriptTicketLine.deletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Методы ScriptProduct

Метод Описание
ScriptProduct.reload(): bool Обновить данные по продукту из бд
ScriptProduct.getId(): int|null Возвращает id продукта
ScriptProduct.getTitle(): string|null Возвращает наименование продукта
ScriptProduct.getCode(): string|null Возвращает код продукта
ScriptProduct.getPrice(): float|null Возвращает цену продукта
ScriptProduct.getMainCategoryId(): int|null Возвращает id категории продукта
ScriptProduct.getIsEnabled(): bool|null Проверяет активен ли продукт
ScriptProduct.getIsAvailableInStock(): bool|null Проверяет есть ли продукт в наличии
ScriptProduct.getUrl(): string|null Возвращает url продукта
ScriptProduct.getThumbUrl(): string|null Возвращает thumb url продукта
ScriptProduct.getPriceFormatted(): string|null Возвращает форматированную цену продукта

ScriptProduct.getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Возвращает форматированную дату создания продукта

ScriptProduct.createdAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

ScriptProduct.getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Возвращает форматированную дату обновления продукта

ScriptProduct.updatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

ScriptProduct.getDeletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Возвращает форматированную дату удаления продукта

ScriptProduct.deletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Работа со статусами заявок

Методы ticketStatus

Метод Описание
ticketStatus.reload(): bool Перезагружает статус в БД
ticketStatus.getId(): int Возвращает id статуса
ticketStatus.getName(): string Возвращает наименование статуса
ticketStatus.getType(): string|null Возвращает тип статуса
ticketStatus.getOrderPos(): int Возвращает значение статуса
ticketStatus.isSameStatusName($statusName): bool Проверяет наименование статуса на сходство

ticketStatus.getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Возвращает форматированную дату создания статуса

ticketStatus.createdAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

ticketStatus.getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Возвращает форматированную дату обновления статуса

ticketStatus.updatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

ticketStatus.getDeletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Возвращает форматированную дату удаления статуса

ticketStatus.deletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Методы ticketStatuses

Метод Описание
ticketStatuses.reload(): bool Перезагружает все статусы из БД
ticketStatuses.getCollection(): Collection|null Возвращает Laravel Collection
ticketStatuses.find(array|object|null $where, bool $isReturnCollection = false): ScriptTicketStatus|null Возвращает статусы заявок
ticketStatuses.findById(string|int|null $id): ScriptTicketStatus|null Возвращает статус по ID
ticketStatuses.findByName(string $name): ScriptTicketStatus|null Возвращает статус по имени
ticketStatuses.findAllByNames(string|array|object|null $names, string $operator = '=', bool $isReturnCollection = false): Collection|null Возвращает статусы по имени
ticketStatuses.findAllByTypes(string|array|object|null $types, string $operator = '=', bool $isReturnCollection = false): Collection|null Возвращает статусы по типу статуса

Работа с персонами

Методы bot

Метод Описание
bot.createPerson($data): int|null Создает персону
bot.findPersons($where = [], $orderBy = [], int|null $limit = null, int|null $offset = null, bool $isLogErrorIfManyPersonsFound = false): array Возвращает данные персон соответствующих атрибутам
bot.updatePersonById(int $personId, $data): bool

Обновляет персону по id

bot.deletePersonById(int $personId): bool

Удаляет персону по id

bot.getDefaultPersonRoleId(): int|null

Возвращает id роли персоны по умолчанию

Методы lead

Метод Описание
lead.getPersonId(): int|null Возвращает id персоны
lead.setPersonId(int|null $personId): bool Привязывает персону к лиду
lead.createPersonForCurrentLead($data): int|null

Создает персону для лида

Методы person

Метод Описание
person.update($data): bool

Обновляет данные персоны

person.delete(): bool

Удаляет персону

person.getAllData(): array

Возвращает все поля персоны

person.setData(string $key, $value): self

Устанавливает поле персоны по ключу

В качестве ключа можно указать:

 
  • 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)

Возвращает значение данных персоны

В качестве ключа можно указать:

 
  • 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

Проверяет наличие данных по персоне

В качестве ключа можно указать:

 
  • 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
person.getLeads(bool $isFindInAllBusinessBots = false): array

Возвращает лиды персоны

person.getId(): int|null

Возвращает ID персоны

person.getFullName(): string

Возвращает полное имя персоны



person.getFIO(): string

person.getRoleId(): int|null

Возвращает ID роли персоны

person.getRoleName(): string

Возвращает название роли персоны

person.getRoleTitle(): string

Возвращает заголовок роли персоны

person.getRoleFormattedTitle(): string

Возвращает форматированное название роли персоны.

person.getPhone(): string|null

Возвращает номер телефона персоны

person.setPhone(string|null $phone): bool

Устанавливает номер телефона персоны

person.getEmail(): string|null

Возвращает почту персоны

Работа с очередями исполнителей

Методы 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 Назначает заявку следующему исполнителю
ticket.moveAssignedPersonToEndOfQueue(int $queueMode = 1, int|null $personQueueId = null, string|null $personQueueTable = null, bool $isResetRejectsCount = true): bool Переносит исполнителя в конец очереди

ticket.assignToPersonById(int|null $personId, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null, int|null $assignAttemptForLog = null): bool

Назначает исполнителя заявки

ticket.assignToNextPersonAndMoveToEnd(): bool

Назначает заявку следующему исполнителю и переносит его в конец очереди

ticket.getAssignedPersonRejectsCount(int $personQueueId = null, string|null $personQueueTable = null): int|null

Возвращает количество отказов от заявок

ticket.setAssignedPersonRejectsCount(int $rejectsCount, int|null $personQueueId = null, string|null $personQueueTable = null): bool

Устанавливает количество отказов от заявок

ticket.incAssignedPersonRejectsCount(int|null $personQueueId = null, string|null $personQueueTable = null): bool

Увеличивает количество отказов от заявок

Методы person

Метод Описание
person.addToQueue(int|null $personQueueId = null, string|null $personQueueTable = null, int|null $ticketTypeId = null, bool $isActive = true, int $rejectsCount = 0): int|null Добавляет персону в очередь
person.removeFromQueue(int|null $personQueueId = null, string|null $personQueueTable = null, int|null $ticketTypeId = null): bool Удаляет персону из очереди
person.moveToEndOfQueue(int $queueMode = 1, int|null $personQueueId = null, string|null $personQueueTable = null, int|null $ticketTypeId = null, bool $isResetRejectsCount = true): bool Перемещает персону в конец очереди
person.setIsActiveInQueue(bool $isActive = true): bool Активирует/деактивирует персону в очереди

Методы personQueue

Метод Описание
personQueue.getId(): int Возвращает id очереди персон
personQueue.getCode(): string Возвращает код очереди персон
personQueue.getIsEnabled(): bool Проверяет активна ли очередь персон
personQueue.getName(): string Возвращает наименование очереди персон
personQueue.isSameName($name): bool Проверяет наименование очереди персон на сходство
personQueue.getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null
Возвращает форматированную дату создания очереди персон
personQueue.createdAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null
personQueue.getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null
Возвращает форматированную дату обновления очереди персон
personQueue.updatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Методы personQueues

Метод Описание
personQueues.find($where, bool $isReturnCollection = false): ScriptPersonQueue[]|Collection Возвращает очередь исполнителей
personQueues.findById(string|int|null $id): ScriptPersonQueue|null
Возвращает очередь исполнителей по id
personQueues.findByName(string $name, bool $isEnabled = null): ScriptPersonQueue|null
Возвращает очередь исполнителей по наименованию
personQueues.findAllByNames($names, bool $isEnabled = null, string $findNameOperator = 'IN', bool $isReturnCollection = false): ScriptPersonQueue[]|Collection
Возвращает очереди исполнителей по наименованию
personQueues.findByCode(string $code, bool $isEnabled = null, string $findCodeOperator = '='): ScriptPersonQueue|null
Возвращает очередь исполнителей по коду
personQueues.findAllByCodes($codes, bool $isEnabled = null, string $findCodeOperator = 'IN', bool $isReturnCollection = false): ScriptPersonQueue[]|Collection
Возвращает очереди исполнителей по коду
personQueues.reload(): bool Обновляет очередь исполнителей
personQueues.getCollection(): Collection|null Возвращает коллекцию очередей

Работа с интеграциями NLP

Методы bot

Метод Описание
bot.getIntegrationIdByCode(string|null $integrationCode): int|null
Возвращает id интеграции бота по коду
bot.getEnabledIntegrationIdByCode(string|null $integrationCode): int|null Возвращает id включенной интеграции бота по коду
bot.isEnabledIntegrationById(int|null $integrationId): bool
Проверяет активность интеграции по id
bot.isEnabledIntegrationByCode(string|null $integrationCode): bool
Проверяет активность интеграции по коду

Методы lead

Метод Описание
lead.setActiveNlpIntegrationByCode(string|null $integrationCode): bool Присваивает интеграцию лиду по коду
lead.setActiveNlpIntegrationById(int|null $nlpIntegrationId): bool Присваивает интеграцию лиду по id
lead.hasActiveNlpIntegration(): bool Проверяет активна ли интеграция
lead.getActiveNlpIntegrationId(int|null $nlpIntegrationId): int|null Возвращает интеграцию по id
lead.getActiveNlpIntegrationCode(string|null $integrationCode): string|null Возвращает интеграцию по коду
lead.getActiveOrFirstNlpIntegrationId(int|null $nlpIntegrationId): int|null Возвращает активную или первую интеграцию по id
lead.getActiveOrFirstNlpIntegrationCode(string|null $integrationCode): string|null Возвращает активную или первую интеграцию по коду

Работа с интеграциями

Методы lead

Метод Описание
lead.getForwardEventTypeForFB(): string|null
Возвращает тип события для ФБ

Работа с кастомными таблицами

Методы table

Метод Описание
table.createItem(string $tableName, array|object $data): ScriptCustomTableItem Создает запись в таблице

table.find(string $tableName, array|object $columns = [], array|object $where = [], array|object $orderBy = [], int|null $limit = null, int|null $offset = null): array

Ищет запись в таблице

table.count(string $tableName, array|object $where = []): int 

Подсчитывает количество записей
table.sum(string $tableName, string $column, array|object $where = []): int

Подсчитывает сумму значений по полю

table.max(string $tableName, string $column, array|object $where = []): mixed|null

Ищет максимальное значение по полю

Методы item

За объект item принимаем запись кастомной таблицы полученную с помощью table.createItem или table.find.

Метод Описание
item.update(array|object $data): bool

Обновляет записи в таблице

item.delete(): bool

Удаляет записи из таблицы

item.getDateFormatted(string $fieldName, string $format = 'Y-m-d H:i:s', string|null $timeZone = null): string|null

Возвращает форматированную дату по названию поля

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

Возвращает форматированную дату из произвольной строки

item.reload(): bool

Перезагружает данные записи из БД

Работа с блокировками

Метод Описание
bot.getLockNameForBot(string $lockName, string $lockPrefix = ''): string Генерирует имя блокировки по боту
bot.getLockNameForBusiness(string $lockName, string $lockPrefix = ''): string Генерирует имя блокировки по бизнесу
bot.waitForBusinessLock(string $lockName, string $lockPrefix = '', int|null $ttlSec = null, $maxWaitSec = 300): bool Захватывает блокировку по бизнесу
bot.waitForBotLock(string $lockName, string $lockPrefix = '', int|null $ttlSec = null, $maxWaitSec = 300): bool Захватывает блокировку по боту
bot.releaseAllCurrentLocks(): bool Освобождает все блокировки захваченные в текущем скрипте
bot.releaseCurrentLockForBusiness(string $lockName, string $lockPrefix = ''): bool Освобождает блокировку захваченную текущем скрипте по бизнесу
bot.releaseCurrentLockForBot(string $lockName, string $lockPrefix = ''): bool Освобождает блокировку захваченную в текущем скрипте по боту
bot.releaseLockForBusiness(string $lockName, string $lockPrefix = ''): bool Освобождает блокировку по бизнесу
bot.releaseLockForBot(string $lockName, string $lockPrefix = ''): bool Освобождает блокировку по боту
bot.hasLockForBusiness(string $lockName, string $lockPrefix = '', $checkValue = null): bool Проверяет существование блокировки по бизнесу
bot.hasLockForBot(string $lockName, string $lockPrefix = '', $checkValue = null): bool Проверяет существование блокировки по боту

Работа с контакт-центром

Методы bot

Метод Описание
bot.canAutoForward(): bool

Узнает доступно ли авто-назначение оператора в данном скрипте

Методы lead

Метод Описание
lead.canAutoForward(): bool

Узнает доступно ли авто-назначение оператора в данном скрипте

lead.getNextOperators(string $departmentCode = null, bool $isOnline = true, int|null $limit = 1, bool $useLocks = true): int|null

Возвращает список следующих операторов

lead.assignDialogToNextOperator(string|null $departmentCode = null, bool $isOnline = true, bool $isForwardIfOperatorNotFound = true, bool $useLocks = true): int|null

Назначает диалог на следующего оператора полученного с помощью getNextOperators

lead.assignDialogToOperator(int|null $operatorId, bool $isForwardIfOperatorNotFound = true, bool $useLocks = true): int|null

Назначает диалог на указанного в методе оператора

Работа с API

Методы bot

Метод Описание
bot.scheduleJob($jobParams = []): bool

Планирует любую задачу

bot.randomStr(int $length = 16): string

Генерирует случайную буквенно-цифровую строку

bot.newGuid(): string

Генерирует случайный уникальный guid

bot.newOrderedGuid(): string

Генерирует случайный уникальный guid упорядоченный по времени

Методы lead

Метод Описание
lead.getLastRequest(): ScriptRequest|null

Возвращает объект с параметрами последнего реквеста

lead.getLang(): string|null

Возвращает язык установленный в бизнесе

lead.setLang(string|null $langCode): string|null

Устанавливает язык в бизнесе

lead.isLangExist(string $langCode, bool|null $isEnabled = true): bool

Проверяет существует ли язык

Методы request

За объект request принимаем объект с параметрами последнего реквеста полученный с помощью lead.getLastRequest.

Метод Описание
request.json

Доступ к json параметрам в виде javascript json-обьекта

request.asJson(): ScriptRequest|null
request.array Доступ к json параметрам в виде javascript json-обьекта
request.asArray(): array
request.string Входящие параметры в виде json обьекта
request.asString(): string

Методы last_request

За объект last_request принимаем объект с параметрами последнего реквеста полученный с помощью lead.getLastRequest.

Метод Описание
last_request.json

Доступ к последнему реквесту в виде javascript json-обьекта

last_request.asJson(): ScriptRequest|null
last_request.array Доступ к последнему реквесту в виде массива
last_request.asArray(): array
last_request.string Доступ к последнему реквесту в виде json обьекта
last_request.asString(): string

Методы 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

Выполняет HTTP запрос, с помощью Guzzle

api.post(string $uri, $body = [], $requestOptions = [], $headers = [], $httpClientConfig = []): string|null

Выполняет 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

Возвращает текст входящего сообщения или текст подписи к вложению

bot.getWebhookJobId(): int|null

Возвращает id вебхука зарегистрированного в очереди Метабот

bot.getWebhookJobRecord(): BotWebhookQueueRecord|null

Возвращает запись вебхука зарегистрированного в очереди Метабот

bot.getWebhookJob(): array

Возвращает информацию о вебхуке

bot.getWebhookPayload(): array

Возвращает payload входящего вебхука в виде массива

bot.getLastResultPayload(): array|null

Возвращает payload c данными о последнем ответе мессенджера в ввиде массива

bot.getChannelData(string|null $key = null): array|null|mixed

Возвращает настройки канала лида 

bot.disableBuffer()

Принудительное отключение буффера исходящих сообщений

bot.enableBuffer()

Принудительное включение буффера исходящих сообщений

bot.flushBuffer()

Принудительное освобождение буффера исходящих сообщений

bot.getAllAttachments(string|null $filesMimeExcludeFilter = 'image|video'): array

Возвращает вложения всех видов

bot.getFiles(string|null $mimeIncludeFilter = null, string|null $mimeExcludeFilter = 'image|video'): array

Возвращает все вложения, которые распознаны как файл

bot.getImages(string|null $mimeIncludeFilter = 'image'): array

Возвращает все изображения, а также файлы, которые распознаны как изображение

bot.getVideos(string|null $mimeIncludeFilter = 'video'): array

Возвращает все видео, а также файлы, которые распознаны как видео

bot.sendPayload(string|null $endpoint, array|object $payload): array|string|mixed

Отправляет payload в мессенджер

bot.sendText(string|null|mixed $messageText, array|object|null $apiAdditionalParams = null, bool $isDisableBuffer = true): bool

Отправляет текст в мессенджер

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

Отправляет сообщение в мессенджер, сообщение может содержать текст, кнопки меню и вложения

bot.sendButtons(string|null|mixed $messageText, array|object $buttons, array|object|null $apiAdditionalParams = null, bool $isDisableBuffer = true, bool $isUpdateMessageButtons = false): bool

Отправляет кнопки с сообщением в мессенджер

bot.getTelegramFileInfoById(string|null $fileId, bool $isShowOriginalInfo = false): array|null

Возвращает информацию о файле в Telegram по его id

bot.sendTelegramAttachmentAndGetFileId(string|null $messageText, array|object|null $attachment, array|object|null $buttons = null, array|object|null $apiAdditionalParams = null): string|null

Отправляет файл в телеграм и возвращает его id

bot.editTelegramInlineKeyboard(int|string $chatId, int|string $messageId, string|null string $inlineMessageId, array|object|null $inlineKeyboardMarkup): array|null

Редактирует кнопки меню уже отправленного в Telegram сообщения


bot.removeTelegramInlineKeyboard(int|string $chatId, int|string $messageId, string|null $inlineMessageId = null): array|null

bot.getTelegramLastMessageId(): int|null

Возвращает ID последнего сообщения, отправленного в Telegram

bot.setCdnConfig(array|object|null $cdnConfig = null): bool

Устанавливает конфиг для доступа к CDN

bot.getCdnConfig(): array|null

Возвращает текущий конфиг CDN

bot.getFileInfoByUrl(string $fileUrl): array

Возвращает информацию о файле по URL

bot.downloadFileFromUrl(string $fileUrl): string|array

Скачивает файл с URL и загружает в хранилище файлов Метабот для вашего бизнеса

bot.downloadTmpFileFromUrl(string $fileUrl): string|array

Скачивает файл с URL и загружает во временное хранилище файлов Метабот для вашего бизнеса

bot.removeFile(string $fileUrl): string|null

Удаляет файл по URL из хранилища файлов Метабот для вашего бизнеса

bot.removeTmpFile(string $fileUrl): string|null

Удаляет файл по URL из временного хранилища файлов Метабот для вашего бизнеса

bot.uploadFileToCdnAndGetNewUrl(string $fileUrl, array|object|null $cdnConfig = null): array

Заливает файл на CDN и возвращает новую ссылку

bot.removeFileFromCdn(string $fileUrl, $cdnConfig = null)

Удаляет файл из CDN

Методы lead

Метод Описание

lead.getMessenger(): int

Возвращает обозначение текущего мессенджера канала

lead.getMessengerCode(): string

Возвращает буквенное обозначение текущего мессенджера канала

lead.getIdentification(): string|null

Возвращает идентификатор лида во внешней системе

lead.getIdentificationEntity(): string|null

Возвращает дополнительный идентификатор лида во внешней системе

Работа с GPT

Методы bot

Метод Описание
bot.run(array|object|null $jobParams = []): bool Запускает скрипт в рамках текущего потока бота
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 Добавляет в лог системы информацию 
bot.sysLogError($data, bool $isSendMessageToLead = false): bool Добавляет в лог системы информацию об ошибке
bot.sysLogInfoToAdmin($data): bool Добавляет в лог системы информацию для админа
bot.sysLogErrorToAdmin($data): bool Добавляет в лог системы информацию об ошибке для админа
bot.debug($data, bool $isStopBot = false): bool Выводит информацию в мессенджер

Подробное описание сложных методов

Некоторые методы обладают сложной структурой и требуют более детального объяснения. В этом разделе вы найдете отдельные страницы, посвященные подробному описанию параметров и особенностей работы таких методов.

Подробное описание сложных методов

Операторы условий в методах

В условиях можно использовать различные операторы:

Оператор Описание Тип переменной Пример
= Равно 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]']

Примечание! Некоторые операторы могут быть недоступны или работать иначе.

Пример использования операторов:

let where = [
  ['id', '>', 1000],
  ['name', 'like', '%Иван%'],
  ['channels.code', 'IN', ['telegram', 'whatsapp']]
]

Подробное описание сложных методов

where для bot.findLeads()

Базовая структура

Каждое условие внутри массива where имеет следующую структуру:

let where = [
  ['поле', 'значение'],
  ['поле', 'оператор', 'значение']
]

bot.findLeads([], where, [])

Доступные категории полей

Поля лидов

Это основные поля, доступные для каждого лида.

Поле Описание
id ID лида
name Имя лида
identification ID в мессенджере (например, Telegram ID)
person_id ID персоны
manager_id ID менеджера
bot_id ID бота
channel_id ID канала
lang_code Код языка
status_id ID статуса
is_mute Включен ли бот для лида (0 или 1)
is_forwarded Передан ли оператору (0 или 1)
last_activity Дата последней активности
last_response Timestamp последнего ответа
messenger ID мессенджера
bot_debug_level Уровень отладки бота (0 - обычный, 11 - админ)
created_at Дата создания
updated_at Дата обновления
dialog_id ID диалога
unread_count Количество непрочитанных сообщений
forwarded_at Дата передачи оператору

Пример использования:

where = [
  ['id', 145492],
  ['name', 'like', '%Иван%'],
  ['created_at', '>=', '2023-01-01']
]

Каналы (channels)

Для поиска по каналам используются поля channels.code и channels.id.

Код ID Описание
unknown 0 Неизвестный канал
avito 1 Avito
facebook 2 Facebook
instagram 3 Instagram
livechatWidget 4 LiveChat Widget
skype 5 Skype
telegram 6 Telegram
twitter 7 Twitter
viber 8 Viber
vk 9 VKontakte
whatsapp 10 WhatsApp
youla 11 Youla
wechat 12 WeChat
metabotWidget 13 MetaBot Widget
webim 14 Webim
jivoWidget 15 Jivo Widget
odnoklassniki 16 Odnoklassniki
apple_business_chat 17 Apple Business Chat

Канал текущего лида можно получить с помощью метода lead.getMessengerCode().

Пример использования:

// Ищет только telegram
let where = [
  ['channels.code', 'telegram']
]

// Ищет telegram и whatsapp
let where = [
  ['channels.id', 'IN', [6, 10]]
]

Статусы лидов (leadstatuses)

Для поиска по статусам используются поля leadstatuses.name и leadstatuses.id.

Пример использования:

let where = [
  ['leadstatuses.name', 'Новый'],
  ['leadstatuses.id', 1]
]

Используйте вместо leadstatuses.idstatus_id, а вместо channels.idchannel_id. Если вы выполняете большие операции это сократит время вычисления.

Атрибуты лидов (lead_attributes)

Для поиска по атрибутам используются следующие поля:

Поле Описание
lead_attributes.attribute_type Тип атрибута (tag, variable, system, json, context)
lead_attributes.attribute_key Ключ атрибута
lead_attributes.attribute_value Значение атрибута. Если type = tag, то можно не использовать

Пример использования:

let where = [
  ['lead_attributes.attribute_type', 'variable'],
  ['lead_attributes.attribute_key', 'is_pay'],
  ['lead_attributes.attribute_value', '1']
]

Полный пример использования

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 имеет следующую структуру:

let orderBy = [
  ['поле', 'порядок']
]

bot.findLeads([], [], orderBy)

Доступные категории полей:

Примеры использования

Сортировка по одному полю

let orderBy = [
  ['created_at', 'ASC']
]

let leads = bot.findLeads([], [], orderBy)

Этот пример сортирует лидов по дате создания в порядке возрастания (от самого раннего к самому позднему).

Сортировка по нескольким полям

let orderBy = [
  ['updated_at', 'DESC'],
  ['id', 'ASC']
]

let leads = bot.findLeads([], [], orderBy)

Этот пример сначала сортирует лидов по дате обновления в порядке убывания (от самого последнего к самому раннему), а затем — по id в порядке возрастания.

Пример с where и orderBy

let where = [
  ['name', 'like', '%Иван%'],
  ['channels.code', 'telegram']
]

let orderBy = [
  ['created_at', 'DESC']
]

let leads = bot.findLeads([], where, orderBy)

Методы bot

Методы bot

bot.getData()

Получить значение данных бота

bot.getData(string $key)
Описание:

Возвращает значение данных бота по ключу.

Атрибуты:
Имя Тип Описание
key string Ключ данных бота

В качестве ключа можно указать:

Возвращает:

mixed - значение данных бота в формате, в котором они находятся в сущности

или

null - если таких данных не существует.

Пример:
let data = bot.getData('leadsCount');

Методы bot

bot.findLeads()

Получить лиды по атрибутам

bot.findLeads($columns = [], $where = [], $orderBy = [], ?int $limit = null, ?int $offset = null)
Описание:

Находит лида по указанным атрибутам и другим данным.

Атрибуты:
Имя Тип Описание
columns array Возвращаемые поля лидов, по умолчанию все поля. Вы можете вывести дополнительные поля: status_name, channel_name, channel_code
where array

Массив для поиска лидов по атрибутам, статусам и каналам. Подробнее читайте здесь.

orderBy array Массив сортировки возвращаемых значений. Подробнее читайте здесь.
limit int Максимальное число возвращаемых лидов. Можно вернуть диапазон от 1 до 100
offset int Числовое значение, указывающее количество записей, которые необходимо пропустить от начала результата выборки перед возвратом данных. Этот параметр используется для пагинации. Например, если limit установлен на 100, а offset равен 100, то будут возвращены записи, начиная со 101-го лида.
Возвращает:

array - массив полей лидов.

В массиве следующие поля:

 
Пример:
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');
}

или получаем поля для первого найденного лида (без условий):

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

bot.scheduleScript()

Планирование скрипта

bot.scheduleScript(?int $scriptId, ?int $leadId, ?int $ticketId = null, $jobParams = [])
Описание:

Запускает скрипт в соответствии с указанными параметрами.

Атрибуты:
Имя Тип Описание
scriptId int ID скрипта, который будет запущен
leadId int ID лида, для которого будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
jobParams json

Передача в планируемую задачу входящих json параметров. Указывать через script_request_params

Возможные параметры в jobParams:

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение планирования скрипта.

Пример:
var result = bot.scheduleScript(1426, 6473, null, {
  "script_request_params": {
        "name": "Alex" 
  }
});
Методы bot

bot.getScriptIdByName()

Получить ID скрипта по наименованию

bot.getScriptIdByName(?string $scriptName)
Описание:

Возвращает id скрипта по его наименованию.

Атрибуты:
Имя Тип Описание
scriptName string Наименование скрипта
Возвращает:

int - id скрипта в формате числа.

Пример:
let ScriptId = bot.getScriptIdByName('Меню');

Методы bot

bot.getScriptIdByCode()

Получить ID скрипта по коду

bot.getScriptIdByCode(?string $scriptCode)
Описание:

Возвращает id скрипта по его дополнительному идентификатору.

Атрибуты:
Имя Тип Описание
scriptCode string Код скрипта
Возвращает:

int - id скрипта в формате числа.

Пример:
let ScriptId = bot.getScriptIdByCode('menu');

Методы bot

bot.runScriptForLead()

Запустить скрипт для лида по ID

bot.runScriptForLead(?int $scriptId, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:

Запускает скрипт бота для лида по указанному id скрипта.

Атрибуты:
Имя Тип Описание
scriptId int ID скрипта, который будет запущен
leadId int ID лида, для которого будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
addToQueue bool Добавление в очередь скриптов
jobParams json

Передача в планируемую задачу входящих json параметров. Указывать через script_request_params

Возможные параметры в jobParams:

 

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение запуска скрипта.

Пример:
let ScriptId = bot.getScriptIdByName('Меню');

bot.runScriptForLead(ScriptId, 165784, null, true);

Методы bot

bot.runScriptByNameForLead()

Запустить скрипт для лида по наименованию

bot.runScriptByNameForLead(?string $scriptName, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:

Запускает скрипт бота для лида по указанному имени скрипта.

Атрибуты:
Имя Тип Описание
scriptName string Наименование скрипта, который будет запущен
leadId int ID лида, для которого будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
addToQueue bool Добавление в очередь скриптов
jobParams json

Передача в планируемую задачу входящих json параметров. Указывать через script_request_params

Возможные параметры в jobParams:

 

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение запуска скрипта.

Пример:
bot.runScriptByNameForLead('Меню', 165784, null, true);

Методы bot

bot.runScriptForPerson()

Запустить скрипт для персоны по ID

bot.runScriptForPerson(?int $scriptId, ?int $personId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:

Запускает скрипт бота для персоны по указанному id скрипта.

Атрибуты:
Имя Тип Описание
scriptId int ID скрипта, который будет запущен
personId int ID персоны, для которой будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
addToQueue bool Добавление в очередь скриптов
jobParams json

Передача в планируемую задачу входящих json параметров. Указывать через script_request_params

Возможные параметры в jobParams:

 

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение запуска скрипта.

Пример:
let ScriptId = bot.getScriptIdByCode('menu');

bot.runScriptForPerson(ScriptId, 24178, null, true);

Методы bot

bot.runScriptByNameForPerson()

Запустить скрипт для персоны по наименованию

bot.runScriptByNameForPerson(?string $scriptName, ?int $personId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:

Запускает скрипт бота для персоны по указанному имени скрипта.

Атрибуты:
Имя Тип Описание
scriptName string Наименование скрипта, который будет запущен
personId int ID персоны, для которой будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
addToQueue bool Добавление в очередь скриптов
jobParams json

Передача в планируемую задачу входящих json параметров. Указывать через script_request_params

Возможные параметры в jobParams:

 

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение запуска скрипта.

Пример:
bot.runScriptByNameForPerson('Меню', 24178, null, false);

Методы bot

bot.runScriptByCodeForLead()

Запустить скрипт для лида по коду

bot.runScriptByCodeForLead(?string $scriptCode, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:

Запускает скрипт бота для лида по указанному коду скрипта.

Атрибуты:
Имя Тип Описание
scriptCode string Код скрипта, который будет запущен
leadId int ID лида, для которого будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
addToQueue bool Добавление в очередь скриптов
jobParams json

Передача в планируемую задачу входящих json параметров. Указывать через script_request_params

Возможные параметры в jobParams:

 

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение запуска скрипта.

Пример:
bot.runScriptByCodeForLead("SEND_TOKEN", 135, null, false, {
  "run_at": "2021-03-23 19:05:30", 
});

Методы bot

bot.runScriptByCodeForPerson()

Запустить скрипт для персоны по коду

bot.runScriptByCodeForPerson(?string $scriptCode, ?int $personId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:

Запускает скрипт бота для персоны по указанному коду скрипта.

Атрибуты:
Имя Тип Описание
scriptCode string Код скрипта, который будет запущен
personId int ID персоны, для которой будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
addToQueue bool Добавление в очередь скриптов
jobParams json

Передача в планируемую задачу входящих json параметров. Указывать через script_request_params

Возможные параметры в jobParams:

 

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение запуска скрипта.

Пример:
bot.runScriptByCodeForPerson("SEND_TOKEN", 135, null, false, {
  "run_after_sec": 5, 
});

Методы bot

bot.clearJobsByScriptId()

Очистить джобы по id скрипта

bot.clearJobsByScriptId(?int $scriptId, ?int $leadId = null)
Описание:

Выполняется поиск и очистка джоб по id скрипта.

Атрибуты:
Имя Тип Описание
scriptId int ID серипта
leadId int ID лида
Возвращает:

bool - подтверждение очистки джоб.

Пример:
bot.clearJobsByScriptId(1342, 187);

Методы bot

bot.clearJobsByScriptName()

Очистить джобы по наименованию скрипта

bot.clearJobsByScriptName(?string $scriptName, ?int $leadId = null)
Описание:

Выполняется поиск и очистка джоб по наименованию скрипта.

Атрибуты:
Имя Тип Описание
scriptName string Наименование скрипта
leadId int ID лида
Возвращает:

bool - подтверждение очистки джоб.

Пример:
bot.clearJobsByScriptName("skript", 187);

Методы bot

bot.clearJobsByScriptCode()

Очистить джобы по коду скрипта

bot.clearJobsByScriptCode(?string $scriptCode, ?int $leadId = null)
Описание:

Выполняется поиск и очистка джоб по коду скрипта.

Атрибуты:
Имя Тип Описание
scriptCode string Код скрипта
leadId int ID лида
Возвращает:

bool - подтверждение очистки джоб.

Пример:
bot.clearJobsByScriptCode("SEND_TOKEN", 187);
Методы bot

bot.setAttr()

Установить значение переменной бота

bot.setAttr(string $key, string $value)
Описание:

Обновляет значение уже существующей глобальной переменной или создает новую переменную с указанным значением. Данные будут сохранены в БД.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
value string Значение переменной

Не возвращает значений, так как выполняет только установку переменной.

Пример:

Создание глобальной переменной бота bot_attribute:

bot.setAttr('bot_attribute', 'Значение глобальной переменной')
Методы bot

bot.getAttr()

Получить значение переменной бота

bot.getAttr(string $key)

Описание:

Возвращает значение уже существующей глобальной переменной.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
Возвращает:

mixed - объект того же типа и значения, что у запрашиваемой переменной.

Пример:

Получение значения глобальной переменной бота bot_attribute:

let bot_attribute_value = bot.getAttr('bot_attribute');
Методы bot

bot.getAllAttr()

Получить все переменные бота

bot.getAllAttr()
Описание:

Возвращает значение всех глобальных переменных.

Возвращает:

array - массив значений всех переменных.

Пример:

Получение значений всех глобальных переменных бота и сложение их значений:

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

bot.issetAttr() и bot.isAttrExist()

Проверить наличие переменной бота

bot.issetAttr(string $key)

или

bot.isAttrExist(string $key)
Описание:

Проверяет существует ли глобальная переменная в боте.

Атрибуты:
Имя Тип Описание
key string Наименование переменной

Возвращает:

bool - подтверждение существования переменной.

Пример:

Проверка двумя способами существования глобальной переменной бота bot_attribute:

let bot_exists = bot.issetAttr('bot_attribute');
let bot_altexists = bot.isAttrExist('bot_attribute');

Методы bot

bot.scheduleTrigger()

Планирование триггера

bot.scheduleTrigger(?int $triggerId, ?int $leadId, ?int $ticketId = null, $jobParams = [])
Описание:

Запускает триггер в соответствии с указанными параметрами.

Атрибуты:
Имя Тип Описание
triggerId int ID триггера, который будет запущен
leadId int ID лида, для которого будет запущен триггер
ticketId int ID заявки, для которой будет запущен триггер
jobParams json

Передача в планируемую задачу входящих json параметров. Можно указать script_request_params

Возможные параметры в jobParams:

 

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение планирования триггера.

Пример:
var result = bot.scheduleTrigger(4213, 1426, null, {
  "is_periodic": true,
  "repeat_interval_sec": 10,
  "script_request_params": {
        "name": "Alex" 
  }
});

Методы bot

bot.runTriggerByCodeForLead()

Планирование триггера по коду

bot.runTriggerByCodeForLead(?string $triggerCode, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:

Запускает триггер в соответствии с указанными параметрами по коду.

Атрибуты:
Имя Тип Описание
triggerCode string ID триггера, который будет запущен
leadId int ID лида, для которого будет запущен триггер
ticketId int ID заявки, для которой будет запущен триггер
addToQueue bool Добавление в очередь триггеров
jobParams json

Передача в планируемую задачу входящих json параметров. Можно указать script_request_params

Возможные параметры в jobParams:

 

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение планирования триггера.

Пример:
var result = bot.runTriggerByCodeForLead('test', 1426, null, true, {
  "is_periodic": true,
  "repeat_interval_sec": 10,
  "script_request_params": {
        "name": "Alex" 
  }
});

Методы bot

bot.runTriggerByCodeForPerson()

Планирование триггера по коду для последнего лида персоны

bot.runTriggerByCodeForPerson(?string $triggerCode, ?int $personId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:

Запускает триггер в соответствии с указанными параметрами по коду для последнего лида указанной персоны.

Атрибуты:
Имя Тип Описание
triggerCode string ID триггера, который будет запущен
personId int ID персоны, для которой будет найден последний лид
ticketId int ID заявки, для которой будет запущен триггер
addToQueue bool Добавление в очередь триггеров
jobParams json

Передача в планируемую задачу входящих json параметров. Можно указать script_request_params

Возможные параметры в jobParams:

 

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение планирования триггера.

Пример:
var result = bot.runTriggerByCodeForPerson('test', 1426, null, true, {
  "is_periodic": true,
  "repeat_interval_sec": 10,
  "script_request_params": {
        "name": "Alex" 
  }
});

Методы bot

bot.clearTriggerJobsForLead()

Удалить триггеры для лида

bot.clearTriggerJobsForLead(?int $leadId, ?int $ticketId = null)
Описание:

Удаляет все триггеры из очереди для лида.

Атрибуты:
Имя Тип Описание
leadId int ID лида, триггеры которого будут удалены
ticketId int ID заявки, триггеры которого будут удалены
Возвращает:

bool - подтверждение удаления триггеров.

Пример:
bot.clearTriggerJobsForLead(236178, 229715);

Методы bot

bot.clearTriggerJobsForAllPersonLeads()

Удалить триггеры для всех лидов персоны

bot.clearTriggerJobsForAllPersonLeads(?int $personId, ?int $ticketId = null)
Описание:

Удаляет все триггеры из очереди для всех лидов персоны.

Атрибуты:
Имя Тип Описание
personId int ID персоны, триггеры которой будут удалены
ticketId int ID заявки, триггеры которого будут удалены
Возвращает:

bool - подтверждение удаления триггеров.

Пример:
bot.clearTriggerJobsForAllPersonLeads(36178);

Методы bot

bot.getTriggerIdByName()

Получить ID триггера по наименованию

bot.getTriggerIdByName(?string $triggerName)
Описание:

Возвращает id триггера по указанному наименованию.

Атрибуты:
Имя Тип Описание
triggerName string Наименование триггера
Возвращает:

int - id триггера в формате числа.

Пример:
let TriggerId = bot.getTriggerIdByName('Триггер');

Методы bot

bot.getTriggerIdByCode()

Получить ID Триггера по Коду

bot.getTriggerIdByCode(?string $triggerCode)
Описание:

Возвращает id триггера по указанному коду.

Атрибуты:
Имя Тип Описание
triggerCode string Код триггера
Возвращает:

int - id триггера в формате числа.

Методы bot

bot.runTriggerForLead()

Запустить триггер для лида по ID триггера

bot.runTriggerForLead(?int $triggerId, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:

Запускает триггер для лида по указанному id триггера.

Атрибуты:
Имя Тип Описание
triggerId int ID триггера, который будет запущен
leadId int ID лида, для которого будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
addToQueue bool Добавление в очередь скриптов
jobParams json

Передача в планируемую задачу входящих json параметров. Можно указать script_request_params

Возможные параметры в jobParams:

 

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение запуска триггера.

Пример:
let TriggerId = bot.getTriggerIdByName('Триггер');
bot.runTriggerForLead(TriggerId, 236178, null, true, {
  "run_at": "2021-03-23 19:01:00", 
});

Методы bot

bot.runTriggerByNameForLead()

Запустить триггер для лида по наименованию

bot.runTriggerByNameForLead(?string $triggerName, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:

Запускает триггер для лида по указанному имени триггера.

Атрибуты:
Имя Тип Описание
triggerName string Наименование триггера, который будет запущен
leadId int ID лида, для которого будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
addToQueue bool Добавление в очередь скриптов
jobParams json

Передача в планируемую задачу входящих json параметров. Можно указать script_request_params

Возможные параметры в jobParams:

 

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение запуска триггера.

Пример:
bot.runTriggerByNameForLead('Триггер', 236178, null, true{
  "run_after_sec": 5, 
});

Методы bot

bot.runTriggerForPerson()

Запустить триггер для персоны по ID

bot.runTriggerForPerson(?int $triggerId, ?int $personId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:

Запускает триггер для персоны по указанному id триггера.

Атрибуты:
Имя Тип Описание
triggerId int ID триггера, который будет запущен
personId int ID персоны, для которой будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
addToQueue bool Добавление в очередь скриптов
jobParams json

Передача в планируемую задачу входящих json параметров. Можно указать script_request_params

Возможные параметры в jobParams:

 

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение запуска триггера.

Пример:
let TriggerId = bot.getTriggerIdByName('Триггер');
bot.runTriggerForPerson(TriggerId, 36178, null, true);

Методы bot

bot.runTriggerByNameForPerson()

Запустить триггер для персоны по наименованию

bot.runTriggerByNameForPerson(?string $triggerName, ?int $personId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:

Запускает триггер для персоны по указанному имени триггера.

Атрибуты:
Имя Тип Описание
triggerName string Наименование триггера, который будет запущен
personId int ID персоны, для которой будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
addToQueue bool Добавление в очередь скриптов
jobParams json

Передача в планируемую задачу входящих json параметров. Можно указать script_request_params

Возможные параметры в jobParams:

 

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение запуска триггера.

Пример:
bot.runTriggerByNameForPerson('Триггер', 36178, null, true);

Методы bot

bot.clearTriggerJobsById()

Очистить джобы по id триггера

bot.clearTriggerJobsById(?int $triggerId, ?int $leadId = null)
Описание:

Выполняется поиск и очистка джоб по id триггера.

Атрибуты:
Имя Тип Описание
triggerId int ID триггера
leadId int ID лида
Возвращает:

bool - подтверждение очистки джоб.

Пример:
let TriggerId = bot.getTriggerIdByName('Триггер');
bot.clearTriggerJobsById(TriggerId);
Методы bot

bot.clearTriggerJobsByName()

Очистить джобы по наименованию триггера

bot.clearTriggerJobsByName(?string $triggerName, ?int $leadId = null)
Описание:

Выполняется поиск и очистка джоб по наименованию триггера.

Атрибуты:
Имя Тип Описание
triggerName string Наименование триггера
leadId int ID лида
Возвращает:

bool - подтверждение очистки джоб.

Пример:
bot.clearTriggerJobsByName('Триггер');

Методы bot

bot.clearTriggerJobsByScriptCode()

Очистить джобы по коду скрипта

bot.clearTriggerJobsByScriptCode(?string $scriptCode, ?int $leadId = null, ?int $ticketId = null)
Описание:

Выполняется поиск и очистка джоб триггеров по коду скрипта.

Атрибуты:
Имя Тип Описание
scriptCode string Код скрипта
leadId int ID лида
ticketId int ID заявки
Возвращает:

bool - подтверждение очистки джоб.

Методы bot

bot.clearTriggerJobsByIdForTicket()

Очистить джобы по id триггера и ID заявки

bot.clearTriggerJobsByIdForTicket(?int $triggerId, ?int $ticketId)
Описание:

Выполняется поиск и очистка джоб по id триггера и ID заявки.

Атрибуты:
Имя Тип Описание
triggerId int ID триггера
ticketId int ID заявки, джобы которой будут очищены
Возвращает:

bool - подтверждение очистки джоб.

Пример:
let TriggerId = bot.getTriggerIdByName('Триггер');
bot.clearTriggerJobsByIdForTicket(TriggerId, 17256);

Методы bot

bot.clearTriggerJobsByNameForTicket()

Очистить джобы по наименованию триггера и ID заявки

bot.clearTriggerJobsByNameForTicket(?string $triggerName, ?int $ticketId)
Описание:

Выполняется поиск и очистка джоб по наименованию триггера и ID заявки.

Атрибуты:
Имя Тип Описание
triggerName string Наименование триггера
ticketId int ID заявки, джобы которой будут очищены
Возвращает:

bool - подтверждение очистки джоб.

Пример:
bot.clearTriggerJobsByNameForTicket('Триггер', 17256);
Методы bot

bot.scheduleBroadcast()

Планирование рассылки

bot.scheduleBroadcast(?int $broadcastId, ?int $ticketId = null, $jobParams = [])
Описание:

Запускает рассылку в соответствии с указанными параметрами.

Атрибуты:
Имя Тип Описание
broadcastId int ID рассылки, которая будет запущена
ticketId int ID заявки, для которой будет запущена рассылка
jobParams json

Передача в планируемую задачу входящих json параметров. Можно указать script_request_params (для скрипта/триггера/рассылки)
condition_script_code (для перекрытия условия триггера/рассылки).

Для установки времени запуска:

run_at - точное время запуска (по часовому поясу сервера)
или
run_after_sec - для запуска через указанное кол-во секунд

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение планирования рассылки.

Пример:
var result = bot.scheduleBroadcast(1426, null, {
  "is_periodic": true,
  "repeat_interval_sec": 10,
  "script_request_params": {
        "name": "Alex" 
  }
});

Методы bot

bot.scheduleBroadcastByCode()

Планирование рассылки по коду

bot.scheduleBroadcastByCode(?string $broadcastCode, ?int $ticketId = null, $jobParams = [])
Описание:

Запускает рассылку в соответствии с указанными параметрами по коду.

Атрибуты:
Имя Тип Описание
broadcastCode string Код рассылки, которая будет запущена
ticketId int ID заявки, для которой будет запущена рассылка
jobParams json

Передача в планируемую задачу входящих json параметров. Можно указать script_request_params (для скрипта/триггера/рассылки)
condition_script_code (для перекрытия условия триггера/рассылки).

Для установки времени запуска:

run_at - точное время запуска (по часовому поясу сервера)
или
run_after_sec - для запуска через указанное кол-во секунд

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение планирования рассылки.

Пример:
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

bot.getBroadcastIdByCode()

Получить ID Рассылки по Коду

bot.getBroadcastIdByCode(?string $broadcastCode)
Описание:

Находит id рассылки по ее коду.

Атрибуты:
Имя Тип Описание
broadcastCode string Код рассылки
Возвращает:

int - id рассылки.

Методы bot

bot.getForwardEventType()

Проверка кто переключил на оператора

bot.getForwardEventType()
Описание:

Эта функция необходимо для того чтобы отличать событие Переключения на оператора обычным способом (через маршруты/скрипты бота) или при перехвате управления оператором.

Возвращает:

bool - "forwarded_by_operator" если контроль за диалогом забран оператором (по его инициативе).

Методы bot

bot.isForwardedToOperator()

Проверка переключения на оператора

bot.isForwardedToOperator()
Описание:

Проверяет переключен ли лид на оператора.

Возвращает:

bool - подтверждение того, что лид переключен на оператора.

Методы bot

bot.createTicket()

Создание заявки

bot.createTicket($data)
Описание:

Создает в боте заявку с указанными полями.

Атрибуты:
Имя Тип Описание
data json Данные о заявке в формате json. Возможные поля расписаны ниже
title string Заголовок заявки
ticket_type_id int Id типа заявки
status_id int Id статуса заявки

author_person_id

int Id автора заявки

client_person_id

int Id клиента заявки

assigned_person_id

int Id исполнителя заявки

description

string Описание заявки

Для избежания пересечения с полями заявки дополнительные поля по имени передаются отдельным блоком 'custom'.

Возвращает:

int - id созданной заявки в формате числа.

Пример:
let ticketData = {
  'title': 'Создано в боте',
  'ticket_type_id': 1006,
  'status_id': 1017
  'description': lead.getAttr('проблема')  
};

ticketData.custom = {
  'возраст': 99,
  'рост': 199
};

let newTicketId = bot.createTicket(ticketData);

Пример создания заявки с кастомным полем space типа выпадающий список: 

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

bot.updateTicketById()

Обновление заявки

bot.updateTicketById(int $ticketId, $data)
Описание:

Обновляет заявку по id.

Атрибуты:
Имя Тип Описание
ticketId int ID заявки
data json Данные о заявке в формате json. Возможные поля расписаны ниже
title string Заголовок заявки
ticket_type_id int Id типа заявки
status_id int Id статуса заявки

author_person_id

int Id автора заявки

client_person_id

int Id клиента заявки

assigned_person_id

int Id исполнителя заявки

description

string Описание заявки
Возвращает:

bool - подтверждение обновления заявки.

Пример:
bot.updateTicketById(4527, {
  'title': 'Создано в боте',
  'ticket_type_id': 1013,
  'status_id': 1096
})

Методы bot

bot.getMaxRejectsTicketCount()

Получить максимальное количество отказов

bot.getMaxRejectsTicketCount()
Описание:

Возвращает максимальное количество отказов от заявки.

Возвращает:

int - количество отказов в формате числа.

Пример:
let MaxRejects = bot.getMaxRejectsTicketCount();

Методы bot

bot.findTickets()

Поиск заявок

bot.findTickets($where = [], bool $findInAllBusinessBots = false, $orderBy = [], ?int $limit = null, ?int $offset = null)
Описание:

Находит заявки в соответствии с указанными параметрами и возвращает их массив.

Атрибуты:
Имя Тип Описание
where array Параметр по которому будет проверяться соответствие с найденными заявками
findInAllBusinessBots bool Параметр, показывающий нужно ли искать заявки во всех ботах бизнеса
orderBy array Параметр сортирующий найденные заявки
limit ?int Максимальное количество заявок, которое будет возвращено
offset ?int Параметр показывающий с какой по счету найденной заявки начать возвращать значения
Возвращает:

array - массив с id всех найденных заявок.

Пример:
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

bot.findTicketIdByCustomField()

Найти id заявки по значению поля

bot.findTicketIdByCustomField(string $fieldName, $value)
Описание:

Находит Id первой заявки, у которой поле $fieldName имеет значение $value.

Атрибуты:
Имя Тип Описание
fieldName string Наименование поля заявки
value mixed Значение поля заявки
Возвращает:

int - id найденной заявки в формате числа.

Пример:
let TicketId = bot.findTicketIdByCustomField('title', 'Заявка');

Методы bot

bot.getTicketTypeIdByName()

Найти id вида заявки по наименованию

bot.getTicketTypeIdByName(string $typeName)
Описание:

Находит id вида заявки по наименованию вида заявки.

Атрибуты:
Имя Тип Описание
typeName string Наименование вида заявки
Возвращает:

int - id вида заявки в формате числа.

Пример:
let TicketId = bot.findTicketIdByCustomField('Заявка');

Методы bot

bot.getTicketStatusIdByName()

Найти id статуса заявки по наименованию

bot.getTicketStatusIdByName(string $statusName)
Описание:

Находит id статуса заявки по наименованию статуса заявки.

Атрибуты:
Имя Тип Описание
statusName string Наименование статуса заявки
Возвращает:

int - id статуса заявки в формате числа.

Пример:
let StatusId = bot.getTicketStatusIdByName('Статус');

Методы bot

bot.setCurrentTicketById()

Установить текущую заявку

bot.setCurrentTicketById(?int $ticketId)
Описание:

Устанавливает текущую заявку по id. Переменные с новым значением начинают работать со следующей команды после команды с вызовом bot.setCurrentTicketById. 

Атрибуты:
Имя Тип Описание
ticketId ?int ID заявки
Возвращает:

bool - подтверждение установки текущей заявки.

Пример:
bot.setCurrentTicketById(1432);

Методы bot

bot.clearTicketAssignedPersonsLog()

Очистить лог назначения тикета персонам

bot.clearTicketAssignedPersonsLog()
Описание:

Очищает лог назначения тикета персонам, чтобы можно было запустить один тикет повторно по той же очереди исполнителей.

Возвращает:

bool — подтверждение очистки лога.

Методы bot

bot.createPerson()

Создание персоны

bot.createPerson($data)
Описание:

Создает в боте персону с указанными полями.

Атрибуты:
Имя Тип Описание

data

json Данные о персоне в формате json. Возможные поля расписаны ниже

lead_id

integer|null Id лида, к которому будет привязана персона

person_role_id

integer Id персоны

is_external

bool

Если не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом.

А 0 означает что персона является работником бизнеса

user_id 

integer Id пользователя, привязываемого к персоне

firstname 

string|null Имя персоны

lastname 

string|null Фамилия персоны

middlename 

string|null Отчество персоны

email 

string|null Адрес электронной почты персоны

phone 

string|null Номер телефона персоны

organization_name

string|null Название организации

organization_address

string|null Адрес организации

comment 

string|null Комментарий к персоне
Возвращает:

int - id персоны в формате числа.

Пример:
let newPersonId = bot.createPerson({
  'lead_id': 2356,
  'is_external': 1,
  'lastname': 'Иванов'
});

Методы bot

bot.findPersons()

Поиск персоны

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 всех найденных персон.

Пример:
//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

bot.updatePersonById()

Обновить персону по id

bot.updatePersonById(int $personId, $data)
Описание:

Обновляет поля персоны в соответствии с БД. 

Атрибуты:
Имя Тип Описание

personId

int ID персоны

data

json Данные о персоне в формате json. Возможные поля расписаны ниже

person_role_id

integer Id персоны

is_external

bool

Если не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом.

А 0 означает что персона является работником бизнеса

user_id 

integer Id пользователя, привязываемого к персоне

firstname 

string|null Имя персоны

lastname 

string|null Фамилия персоны

middlename 

string|null Отчество персоны

email 

string|null Адрес электронной почты персоны

phone 

string|null Номер телефона персоны

organization_name

string|null Название организации

organization_address

string|null Адрес организации

comment 

string|null Комментарий к персоне

Возвращает:

bool - подтверждение обновления данных.

Пример:
bot.updatePersonById(15624, {
  'is_external': 1,
  'firstname': 'Иван',
  'lastname': 'Иванов'
});

Методы bot

bot.deletePersonById()

Удалить персону по id

bot.deletePersonById(int $personId)
Описание:

Удаляет персону по id. 

Атрибуты:
Имя Тип Описание

personId

int ID персоны

Возвращает:

bool - подтверждение удаления персоны.

Пример:
bot.deletePersonById(24376);

Методы bot

bot.getIntegrationIdByCode()

Получить id интеграции бота по коду

bot.getIntegrationIdByCode(?string $integrationCode)
Описание:

Находит id интеграции по ее коду.

Атрибуты:
Имя Тип Описание
integrationCode string Код интеграции
Возвращает:

int - id интеграции, если она принадлежит боту

или

null - если интеграция не найдена.

Методы bot

bot.getEnabledIntegrationIdByCode()

Получить id включенной интеграции бота по коду

bot.getEnabledIntegrationIdByCode(?string $integrationCode)
Описание:

Находит id интеграции по ее коду, если интеграция активна.

Атрибуты:
Имя Тип Описание
integrationCode string Код интеграции
Возвращает:

int - id интеграции, если она принадлежит боту и активна

или

null - если интеграция не найдена или не активна.

Методы bot

bot.isEnabledIntegrationById()

Проверить активность интеграции по id

bot.isEnabledIntegrationById(?int $integrationId)
Описание:

Проверяет есть ли такая интеграция по id и включена ли она.

Атрибуты:
Имя Тип Описание
integrationId int ID интеграции
Возвращает:

bool - подтверждение активности интеграции.

Методы bot

bot.isEnabledIntegrationByCode()

Проверить активность интеграции по коду

bot.isEnabledIntegrationByCode(?string $integrationCode)
Описание:

Проверяет есть ли такая интеграция по коду и включена ли она.

Атрибуты:
Имя Тип Описание
integrationId int ID интеграции
Возвращает:

bool - подтверждение активности интеграции.

Методы bot

bot.getLockNameForBot()

Сгенерировать имя блокировки по боту

bot.getLockNameForBot(string $lockName, string $lockPrefix = ''): string
Описание:

Генерирует имя блокировки по боту. 

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

Атрибуты:
Имя Тип Описание
lockName string Имя блокировки
lockPrefix  string Префикс, который будет добавлен к имени блокировки
Возвращает:

string - имя блокировки в формате строки.

Пример:
let lockName = bot.getLockNameForBot('lock', 'first');
Методы bot

bot.getLockNameForBusiness()

Сгенерировать имя блокировки по бизнесу

bot.getLockNameForBusiness(string $lockName, string $lockPrefix = ''): string
Описание:

Генерирует имя блокировки по бизнесу. 

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

Атрибуты:
Имя Тип Описание
lockName string Имя блокировки
lockPrefix  string Префикс, который будет добавлен к имени блокировки
Возвращает:

string - имя блокировки в формате строки.

Пример:
let lockName = bot.getLockNameForBusiness('lock', 'first');
Методы bot

bot.waitForBusinessLock()

Захватить блокировку по бизнесу

Описание:

Дожидается, когда блокировка будет освобождена, и затем захватывает ее.

Атрибуты:
Имя Тип Описание
lockName string Имя блокировки
lockPrefix  string Префикс, который будет добавлен к имени блокировки
ttlSec  ?int Время жизни блокировки
maxWaitSec  int Максимальное время ожидания блокировки
Возвращает:

bool - подтверждение захвата блокировки.

Пример:
let lockName = 'my_lock_1';
let lockPrefix = '';
let ttlSec = 5;
let maxWaitSec = 300;

let isLocked = false;
isLocked = bot.waitForBusinessLock(lockName, lockPrefix, ttlSec, maxWaitSec);


Методы bot

bot.waitForBotLock()

Захватить блокировку по боту

Описание:

Дожидается, когда блокировка будет освобождена, и затем захватывает ее.

Атрибуты:
Имя Тип Описание
lockName string Имя блокировки
lockPrefix  string Префикс, который будет добавлен к имени блокировки
ttlSec  ?int Время жизни блокировки
maxWaitSec  int Максимальное время ожидания блокировки
Возвращает:

bool - подтверждение захвата блокировки.

Пример:
let lockName = 'my_lock_1';
let lockPrefix = '';
let ttlSec = 5;
let maxWaitSec = 300;

let isLocked = false;
isLocked = bot.waitForBotLock(lockName, lockPrefix, ttlSec, maxWaitSec);


Методы bot

bot.releaseAllCurrentLocks()

Освободить все блокировки

Описание:

Освобождает все блокировки захваченные в текущем скрипте

Возвращает:

bool - подтверждение освобождения блокировки.

Методы bot

bot.releaseCurrentLockForBusiness()

Освободить блокировку скрипта по бизнесу

Описание:

Освобождает блокировку захваченную текущем скрипте по бизнесу.

Атрибуты:
Имя Тип Описание
lockName string Имя блокировки
lockPrefix  string Префикс, который будет добавлен к имени блокировки
Возвращает:

bool - подтверждение освобождения блокировки.

Пример:
if (bot.releaseCurrentLockForBusiness('lockName')) {
    bot.sendText('Блокировка удалена')
} else {
    bot.sendText('Ошика удаления блокировки')
}


Методы bot

bot.releaseCurrentLockForBot()

Освободить блокировку скрипта по боту

Описание:

Освобождает блокировку захваченную текущем скрипте по боту.

Атрибуты:
Имя Тип Описание
lockName string Имя блокировки
lockPrefix  string Префикс, который будет добавлен к имени блокировки
Возвращает:

bool - подтверждение освобождения блокировки.

Пример:
if (bot.releaseCurrentLockForBot('lockName')) {
    bot.sendText('Блокировка удалена')
} else {
    bot.sendText('Ошика удаления блокировки')
}


Методы bot

bot.releaseLockForBusiness()

Освободить блокировку по бизнесу

Описание:

Освобождает блокировку по бизнесу.

Атрибуты:
Имя Тип Описание
lockName string Имя блокировки
lockPrefix  string Префикс, который будет добавлен к имени блокировки
Возвращает:

bool - подтверждение освобождения блокировки.

Пример:
if (bot.releaseLockForBusiness('lockName')) {
    bot.sendText('Блокировка удалена')
} else {
    bot.sendText('Ошика удаления блокировки')
}


Методы bot

bot.releaseLockForBot()

Освободить блокировку по боту

Описание:

Освобождает блокировку по боту.

Атрибуты:
Имя Тип Описание
lockName string Имя блокировки
lockPrefix  string Префикс, который будет добавлен к имени блокировки
Возвращает:

bool - подтверждение освобождения блокировки.

Пример:
if (bot.releaseLockForBot('lockName')) {
    bot.sendText('Блокировка удалена')
} else {
    bot.sendText('Ошика удаления блокировки')
}

Методы bot

bot.hasLockForBot()

Проверка существования блокировки по боту

Описание:

Проверяет существование блокировки по боту.

Атрибуты:
Имя Тип Описание
lockName string Имя блокировки
lockPrefix  string Префикс, который будет добавлен к имени блокировки
checkValue int Количество проверок
Возвращает:

bool - подтверждение существования блокировки.

Пример:
let hasLock = bot.hasLockLockForBot('lockName');

Методы bot

bot.hasLockForBusiness()

Проверка существования блокировки по бизнесу

Описание:

Проверяет существование блокировки по бизнесу.

Атрибуты:
Имя Тип Описание
lockName string Имя блокировки
lockPrefix  string Префикс, который будет добавлен к имени блокировки
checkValue int Количество проверок
Возвращает:

bool - подтверждение существования блокировки.

Пример:
let hasLock = bot.hasLockForBusiness('lockName');

Методы bot

bot.getForwardEventType()

Получить название события

bot.getForwardEventType()
Описание:

Возвращает строку "forwarded_by_operator" если действие выполнено оператором или null для контакт-центра. Ранее она использовалась только для интеграции с контакт-центром Facebook. Для Facebook аналогично, но в дополнение к  "forwarded_by_operator" может возвращать и другие строки, например "message_from_operator" или "operator_joined_dialog".

Возвращает:

string - строка "forwarded_by_operator", если действие выполнено оператором

или

null - если действие не выполнено оператором.

Методы bot

bot.canAutoForward()

Узнать доступно ли авто-назначение оператора в данном скрипте

Описание:

Функция необходима для исключения рекурсивного вызова назначения диалога на оператора, а также для исключения выполнения авто-назначения диалога на оператора, если оператор сам подключается к диалога из контакт-центра.

Возвращает:

bool - подтверждение доступа к авто-назначению.


Методы bot

bot.scheduleJob()

Планирование любой задачи

bot.scheduleJob($jobParams = [])

Описание:

Запускает задачу в соответствии с указанными параметрами.

Атрибуты:
Имя Тип Описание
jobParams json

Передача в планируемую задачу входящих json параметров. Можно указать script_request_params (для скрипта/триггера/рассылки)
condition_script_code (для перекрытия условия триггера/рассылки).

Возможные параметры в jobParams:

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool — подтверждение планирования задачи.

 
Пример:
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

bot.getIncomingMessage()

Получить текст входящего сообщения

bot.getIncomingMessage(bool $useOutputFilter = false)
Описание:

Возвращает текст входящего сообщения или текст подписи к вложению.

Атрибуты:
Имя Тип Описание
useOutputFilter  bool Используется для включения фильтра входящего сообщения, чтобы исключить не поддерживаемые системой символы
Возвращает:

string - текст входящего сообщения в формате строки.

Методы bot

bot.getWebhookJobId()

Получить id вебхука зарегистрированного в очереди Метабот

bot.getWebhookJobId()
Описание:

Возвращает id вебхука зарегистрированного в очереди Метабот.

Возвращает:

int - id вебхука

или

null - если таких данных не существует.

Методы bot

bot.getWebhookJob()

Получить информацию о вебхуке

bot.getWebhookJob()
Описание:

Возвращает информацию о вебхуке, т.е. запись из очереди Метабот. Данная запись также содержит поле payload, удобство использования данной функции в отличии от обработки «сырого» payload в том, что данные возвращаемые функцией уже обработаны и представлены в едином формате для любого мессенджера.

Возвращает:

array - массив индексов.

Параметры (индексы массива) которые возвращает данная функция:

Методы bot

bot.getWebhookPayload()

Получить payload входящего вебхука

bot.getWebhookPayload()
Описание:

Возвращает payload входящего вебхука в виде массива.

Возвращает:

array - массив payload входящего вебхука.

Методы bot

bot.getLastResultPayload()

Получить payload c данными о последнем ответе мессенджера

bot.getLastResultPayload()
Описание:

Возвращает payload c данными о последнем ответе мессенджера в виде массива.

Возвращает:

array - массив payload c данными о последнем ответе мессенджера

или

null - если таких данных не существует.

Пример:
  1. Мы отправили в мессенджер сообщения используя REST API.
  2. Мессенджер вернул ответ, этот ответ будет доступен с помощью функции getLastResultPayload().
  3. Например, таким способом можно получить file_id, который вернул Telegram после отправки файла или id сообщения который вернул Telegram, для того чтобы в дальнейшем отредактировать это сообщение или удалить.
Методы bot

bot.getChannelData()

Получить настройки канала лида

bot.getChannelData(string|null $key = null)
Описание:

Получить настройки канала лида, задаваемые при привязки нового канала.

Атрибуты:
Имя Тип Описание
key string|null Ключ настройки канала лида
Возвращает:

array - массив настроек канала

mixed - настройка канала в формате, в котором она находится в сущности

или

null - если таких данных не существует.

Методы bot

bot.disableBuffer()

Принудительное отключение буфера исходящих сообщений

bot.disableBuffer()
Описание:

Принудительное отключение буфера исходящих сообщений.

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

Методы bot

bot.enableBuffer()

Принудительное включение буфера исходящих сообщений 

bot.enableBuffer()
Описание:

Принудительное включение буфера исходящих сообщений.

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

Методы bot

bot.flushBuffer()

Принудительное освобождение буфера исходящих сообщений

bot.flushBuffer()
Описание:

Принудительное освобождение буфера исходящих сообщений. Отправка всех накопленных сообщений клиенту.

Методы bot

bot.getAllAttachments()

Получить вложения всех видов

bot.getAllAttachments(string|null $filesMimeExcludeFilter = 'image|video')
Описание:

Получить вложения всех видов, в т.ч. фото, видео, аудио, файлы и т.д., т.е. все вложения которые поддерживаем Метабот и данный канал.

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

Атрибуты:
Имя Тип Описание
filesMimeExcludeFilter  'image|video' | null Тип исключаемых файлов
Возвращает:

array - массив вложений.

Методы bot

bot.getFiles()

Получить все вложения, которые распознаны как файл

bot.getFiles(string|null $mimeIncludeFilter = null, string|null $mimeExcludeFilter = 'image|video')
Описание:

Получить все вложения, которые распознаны как файл.

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

Атрибуты:
Имя Тип Описание
mimeIncludeFilter  string|null | null Тип добавляемых файлов
mimeExcludeFilter  'image|video' | null Тип исключаемых файлов
Возвращает:

array - массив вложений.

Методы bot

bot.getImages()

Получить все изображения

bot.getImages(string|null $mimeIncludeFilter = 'image')
Описание:

Получить все изображения, а также файлы, которые распознаны как изображение.

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

Атрибуты:
Имя Тип Описание
mimeIncludeFilter   string|null Тип включаемых файлов
Возвращает:

array - массив вложений.

Методы bot

bot.getVideos()

Получить все видео

bot.getVideos(string|null $mimeIncludeFilter = 'video')
Описание:

Получить все видео, а также файлы, которые распознаны как видео.

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

Атрибуты:
Имя Тип Описание
mimeIncludeFilter  string | null Тип включаемых файлов
Возвращает:

array - массив вложений.

Методы bot

bot.sendPayload()

Отправить payload в мессенджер

bot.sendPayload(string|null $endpoint, array|object $payload)
Описание:

Отправить payload в мессенджер. Удобство использования данной функции в отличии от нативной передачи с помощью api.callEndpoint или api.postJson в том, что не нужно подставлять дополнительные параметры типа токена мессенджера.

Атрибуты:
Имя Тип Описание
endpoint string|null Ключ данных бота
payload array|object 
Возвращает:

mixed - payload в формате, в котором они находятся в сущности

или

array - массив payload 

или

string - payload в формате строки.

Методы bot

bot.sendText()

Отправить текст в мессенджер

bot.sendText(string|null|mixed $messageText, array|object|null $apiAdditionalParams = null, bool $isDisableBuffer = true)
Описание:

Отправляет текст пользователю в мессенджер.

Атрибуты:
Имя Тип Описание
messageText string|null|mixed Текст сообщения
apiAdditionalParams  array|object|null  Дополнительные параметры API
isDisableBuffer  bool  Отключение буфера
Возвращает:

bool - подтверждение успешной отправки сообщения.

Методы bot

bot.sendMessage()

Отправить сообщение в мессенджер

bot.sendMessage(string|null|mixed $messageText, array|object|null $buttons = null, array|object|null $attachments = null, array|object|null $apiAdditionalParams = null, bool $isDisableBuffer = true, bool $isUpdateMessageButtons = false)

Описание:

Отправить сообщение в мессенджер, сообщение может содержать текст, кнопки меню и вложения. Если мессенджер поддерживает, то все это будет отправлено в едином сообщении, иначе по отдельности, в порядке: сначала вложение, затем текст и кнопки меню.

Атрибуты:

Имя Тип Описание
messageText string|null|mixed Текст сообщения
buttons  array|object|null  Кнопки
attachments  array|object|null  Вложения
apiAdditionalParams  array|object|null  Дополнительные параметры, которые будут отправлены по REST API в мессенджер. Работают только для Telegram
isDisableBuffer  bool  Принудительное отключение буффера исходящих сообщений
isUpdateMessageButtons bool  true, для обновления последнего отправленного сообщения в логе,
чтобы не писать в лог повторы сообщений от GPT при апдейте

Возвращает:

bool - подтверждение успешной отправки сообщения.

Пример для Telegram:

Кнопки:

Пример Array of Array of Button без параметра line_num:

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:

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 кнопки после принятия входящего вебхука.

Вложения:
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.

Дополнительные параметры:
let apiAdditionalParams = {
  							"endpoint": "deleteMessage",
  							"message_id": bot.getTelegramLastMessageId(),
        					"parse_mode": 'HTML',
  							"item": "параметр"
      			  		  }
Общий пример:
//Сообщение отправляемое методом--------------------------------
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.

// Функции для работы с 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. Даже если указать номера строк, кнопки будут отправлены по порядку их определения в массиве.

//Сообщение отправляемое методом--------------------------------
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

bot.sendButtons()

Отправить кнопки с сообщением в мессенджер

bot.sendButtons(string|null|mixed $messageText, array|object $buttons, array|object|null $apiAdditionalParams = null, bool $isDisableBuffer = true, bool $isUpdateMessageButtons = false)
Описание:

Отправить кнопки с сообщением в мессенджер.

Атрибуты:
Имя Тип Описание
messageText string|null|mixed Текст сообщения
buttons  array|object|null  Кнопки
apiAdditionalParams  array|object|null  Дополнительные параметры, которые будут отправлены по REST API в мессенджер
isDisableBuffer  bool  Принудительное отключение буффера исходящих сообщений
isUpdateMessageButtons bool  Чтобы не логировать сообщение "Выберите вариант с помощью кнопок ниже" для кнопок GPT, которые отправляются в Telegram для обновления сообщений
Возвращает:

bool - подтверждение успешной отправки сообщения.

Методы bot

bot.getTelegramFileInfoById()

Получить информацию о файле в Telegram

bot.getTelegramFileInfoById(string|null $fileId, bool $isShowOriginalInfo = false)
Описание:

Возвращает информацию о файле в Telegram по file ID.

Атрибуты:
Имя Тип Описание
fileId string|null|mixed ID файла
isShowOriginalInfo  array|object|null  Показать оригинальную информацию
Возвращает:

array - информация о файле в форме массива

или

null - если таких файлов нет.

Методы bot

bot.sendTelegramAttachmentAndGetFileId()

Отправить файл в Телеграм и получить file ID

bot.sendTelegramAttachmentAndGetFileId(string|null $messageText, array|object|null $attachment, array|object|null $buttons = null, array|object|null $apiAdditionalParams = null)
Описание:

Отправляет файл в Телеграм и возвращает file ID. При запуске данной функции буфер исходящих сообщений освобождается (высылаются накопленные сообщения), отключается буфер, после выполнения функции, включается назад.  Если включить буфер для выполнения данной функции, вы не сможете получить результат выполнения данной функции, тк отправка накопленного текста будет выполнена позже.

По этой же причине, чтобы было меньше проблем в работе с sendText / sendMessage / sendButtons буфер для них отключен по умолчанию. Логика работы отключения буфера для этих функций аналогична. Если же передаем параметр $isDisableBuffer = false, то ничего не происходит, т.е. текущее состояние буфера не изменяется, если необходимо, вы можете принудительно выключить буфер, передать аргумент $isDisableBuffer = false, сообщения отправятся с использованием буфера.

Атрибуты:
Имя Тип Описание
messageText string|null|mixed Текст сообщения
buttons  array|object|null  Кнопки
attachments  array|object|null  Вложения
apiAdditionalParams  array|object|null  Дополнительные параметры, которые будут отправлены по REST API в мессенджер
Возвращает:

array - ID файлов

или

null - если файл не был создан.

Методы bot

bot.editTelegramInlineKeyboard()

Отредактировать кнопки меню 

bot.editTelegramInlineKeyboard(int|string $chatId, int|string $messageId, string|null string $inlineMessageId, array|object|null $inlineKeyboardMarkup)
Описание:

Редактирует кнопки меню уже отправленного в Telegram сообщения. Выполняет API запрос «editMessageReplyMarkup» к Telegram Bots API.

Описание данного метода можно посмотреть в документации Telegram: https://core.telegram.org/bots/api#editmessagereplymarkup

Атрибуты:
Имя Тип Описание
chatId string|null  Обязателен, если не указан inline_message_id. Уникальный идентификатор целевого чата или имя пользователя целевого канала
messageId array|object|null  Обязателен, если не указан inline_message_id. Идентификатор сообщения для редактирования
inlineMessageId array|object|null  Обязателен, если не указаны Chat_id и message_id. Идентификатор встроенного сообщения
inlineKeyboardMarkup array|object|null 

В формате JSON объект для кнопок.

Возвращает:

string - информация о кнопках

или

null - если кнопки не были созданы.

Методы bot

bot.removeTelegramInlineKeyboard()

Удалить кнопки

bot.removeTelegramInlineKeyboard(int|string $chatId, int|string $messageId, string|null $inlineMessageId = null)
Описание:

Удаляет кнопки меню уже отправленного в Telegram сообщения. Выполняет API запрос «editMessageReplyMarkup» к Telegram Bots API, но кнопки (параметр «reply_markup») не передается в Telegram Bots API.

Описание данного метода можно посмотреть в документации Telegram: https://core.telegram.org/bots/api#editmessagereplymarkup

Атрибуты:
Имя Тип Описание
chatId string|null  Обязателен, если не указан inline_message_id. Уникальный идентификатор целевого чата или имя пользователя целевого канала
messageId array|object|null  Обязателен, если не указан inline_message_id. Идентификатор сообщения для редактирования
inlineMessageId array|object|null  Обязателен, если не указаны Chat_id и message_id. Идентификатор встроенного сообщения
Возвращает:

array - информация о кнопках

или

null - если кнопки не были созданы.

Методы bot

bot.getTelegramLastMessageId()

Получить ID последнего сообщения

bot.getTelegramLastMessageId()
Описание:

Возвращает ID последнего сообщения, отправленного в Telegram. Доступно только в текущем вебхуке, сразу после отправки сообщения. Функция считывает последний payload ответа API мессенджера и извлекает ID сообщения.

Возвращает:

int - ID сообщения

или

null - если сообщение не найдено.

Методы bot

bot.setCdnConfig()

Установить конфиг для доступа к CDN

bot.setCdnConfig(array|object|null $cdnConfig = null)
Описание:

Устанавливает конфиг для доступа к CDN.

Атрибуты:
Имя Тип Описание
cdnConfig  array|object|null  Конфиг
Возвращает:

bool - подтверждение успешной работы метода.

Пример:
let cdnConfig = {"ftp_host": "user115.upload.clients-cdnnow.ru", "ftp_login": "mylogin", "ftp_pass": "mypassword", "public_url": "https://user115.clients-cdnnow.ru"}
Методы bot

bot.setCdnConfig()

Передача конфига коннекта к CDN

bot.setCdnConfig(array|object|null $cdnConfig = null)
Описание:

Передача конфига коннекта к CDN в JS коде может быть не приемлема с точки зрения безопасности.

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

Атрибуты:
Имя Тип Описание
cdnConfig  array|object|null  Конфиг
Возвращает:

bool - подтверждение успешной работы метода.

Методы bot

bot.getCdnConfig()

Получить текущий конфиг CDN

bot.getCdnConfig()
Описание:

Возвращает текущий конфиг CDN.

Возвращает:

array - текущий конфиг

или

null - если данные не найдены.

Методы bot

bot.getFileInfoByUrl()

Получить информацию о файле по URL

bot.getFileInfoByUrl(string $fileUrl)
Описание:

Возвращает информацию о файле по URL.

Атрибуты:
Имя Тип Описание
fileUrl string URL файла
Возвращает:

array - возвращает массив вида:

[
	'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

bot.downloadFileFromUrl()

Скачать файла с URL

bot.downloadFileFromUrl(string $fileUrl)
Описание:

Скачивает файл с URL и загрузить в хранилище файлов Метабот для вашего бизнеса. Желательно использовать своё CDN хранилище или самим загружать файлы с помощью своего, стороннего микросервиса.

Атрибуты:
Имя Тип Описание
fileUrl string URL файла
Возвращает:

array - скачанный файлы

или

string - скачанный файл.

Методы bot

bot.downloadTmpFileFromUrl()

Скачать файла с URL и загрузить во временное хранилище

bot.downloadTmpFileFromUrl(string $fileUrl)
Описание:

Скачивает файл с URL и загрузить во временное хранилище файлов Метабот для вашего бизнеса. Желательно использовать своё CDN хранилище или самим загружать файлы с помощью своего, стороннего микросервиса.

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

Атрибуты:
Имя Тип Описание
fileUrl string URL файла
Возвращает:

array - скачанный файлы

или

string - скачанный файл.

Методы bot

bot.removeFile()

Удалить файл по URL 

bot.removeFile(string $fileUrl)
Описание:

Удаляет файл по URL из хранилища файлов Метабот для вашего бизнеса.

Атрибуты:
Имя Тип Описание
fileUrl string URL файла
Возвращает:

string - URL файла.

Методы bot

bot.removeTmpFile()

Удалить файл по URL из временного хранилища

bot.removeTmpFile(string $fileUrl)
Описание:

Удаляет файл по URL из временного хранилища файлов Метабот для вашего бизнеса.

Атрибуты:
Имя Тип Описание
fileUrl string URL файла
Возвращает:

string - URL файла.

Методы bot

bot.uploadFileToCdnAndGetNewUrl()

Залить файл на CDN и получить новую ссылку

bot.uploadFileToCdnAndGetNewUrl(string $fileUrl, array|object|null $cdnConfig = null)
Описание:

Заливает файл на CDN и возвращает новую ссылку, а также доп. параметры с описанием файла.

Атрибуты:
Имя Тип Описание
fileUrl string URL файла
cdnConfig  array|object|null  Конфиг
Возвращает:

array - данные файла.

В случае успеха возвращает массив вида:

[
	'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 - максимальное ограничение размера файла в зависимости от типа файла.

 В случае провала возвращает массив вида:

[
	'result' => false,
	'error' => true,
	'error_code' => (string) ‘вид ошибки’, // например 'error_when_upload' или ‘file_size_exceeded’
	'error_message' => (string) описание ошибки,
]
Методы bot

bot.removeFileFromCdn()

Удалить файл из CDN

bot.removeFileFromCdn(string $fileUrl, $cdnConfig = null)
Описание:

Удаляет файл из CDN.

Атрибуты:
Имя Тип Описание
fileUrl string URL файла
cdnConfig  array|object|null Конфиг
Возвращает:

array - данные файла.

Методы bot

bot.randomStr()

Получить случайную буквенно-цифровую строку

bot.randomStr(int $length = 16)
Описание:

Генерирует случайную буквенно-цифровую строку.

При вызове внешнего API эндпоинта через асинхронную команду, можно генерировать guid или случайную строку, сохранять и передавать во внешнюю систему, при приеме ответа на асинхронный запрос можно валидировать пришедший код.

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

Атрибуты:
Имя Тип Описание
length int Длина строки, по умолчанию 16
Возвращает:

string - строка.

Методы bot

bot.newGuid()

Получить случайный уникальный guid

bot.newGuid()
Описание:

Генерирует случайный уникальный guid (UUID версии 4).

При вызове внешнего API эндпоинта через асинхронную команду, можно генерировать guid или случайную строку, сохранять и передавать во внешнюю систему, при приеме ответа на асинхронный запрос можно валидировать пришедший код.

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

Возвращает:

string - случайный уникальный guid.

Методы bot

bot.newOrderedGuid()

Получить случайный уникальный guid упорядоченный по времени

bot.newOrderedGuid()
Описание:

Генерирует случайный уникальный guid (UUID версии 4) упорядоченный по времени.

При вызове внешнего API эндпоинта через асинхронную команду, можно генерировать guid или случайную строку, сохранять и передавать во внешнюю систему, при приеме ответа на асинхронный запрос можно валидировать пришедший код.

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

Возвращает:

string - случайный уникальный guid.

Методы bot

bot.sysLogInfo()

Вывести информацию в лог

bot.sysLogInfo($data, bool $isSendMessageToLead = false)
Описание:

Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит обычный лид, но только если у него включена отладка уровня только V8 (editor).

Атрибуты:
Имя Тип Описание
data mixed Информация
isSendMessageToLead  bool Отправлять или нет сообщение в мессенджер
Возвращает:

bool - успешное срабатывание метода.

Методы bot

bot.sysLogError()

Вывести информацию об ошибке в лог

bot.sysLogError($data, bool $isSendMessageToLead = false)
Описание:

Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит обычный лид, но только если у него включена отладка уровня только V8 (editor).

Атрибуты:
Имя Тип Описание
data mixed Информация об ошибке
isSendMessageToLead  bool Отправлять или нет сообщение в мессенджер
Возвращает:

bool - успешное срабатывание метода.

Методы bot

bot.sysLogInfoToAdmin()

Вывести информацию в лог для админа

bot.sysLogInfoToAdmin($data)
Описание:

Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит только лид-админ, т.е. если у него включен уровень отладки V8 и Exceptions (admin)

Атрибуты:
Имя Тип Описание
data mixed Информация
Возвращает:

bool - успешное срабатывание метода.

Методы bot

bot.sysLogErrorToAdmin()

Вывести информацию об ошибке в лог для админа

bot.sysLogErrorToAdmin($data)
Описание:

Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит только лид-админ, т.е. если у него включен уровень отладки V8 и Exceptions (admin).

Атрибуты:
Имя Тип Описание
data mixed Информация об ошибке
Возвращает:

bool - успешное срабатывание метода.

Методы bot

bot.debug()

Вывести информацию в мессенджер

bot.debug($data, bool $isStopBot = false)
Описание:

Добавляет в сообщения мессенджера информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Функция идентична функции из глобального пространства имен debug(), 
по умолчанию не останавливает выполнение скрипта.

Атрибуты:
Имя Тип Описание
data mixed Информация
isStopBot bool Прерывать или нет выполнение скрипта
Возвращает:

bool - успешное срабатывание метода.

Методы bot

bot.getGeoLocation()

Геолокация лида

bot.getGeoLocation()
Описание:

Для Telegram вернет массив {latitude: n, longitute: m}, если в вебхуке пришла локация, иначе null. Для мессенджера отличного от Telegram вернет null.

Возвращает:

array - массив {latitude: n, longitute: m}

или

 

null - если локация не найдена.

Методы bot

bot.getAllData()

Получить все данные текущего бота

bot.getAllData()
Описание:

Возвращает все данные текущего бота.

Возвращает:

array - значение данных бота в формате массива: 

Пример:
let data = bot.getAllData();
Методы bot

bot.setData()

Установить значение данных бота по ключу

bot.setData(string $key, $value)
Описание:

Устанавливает значение данных текущего бота по ключу.

Атрибуты:
Имя Тип Описание
key string Ключ данных бота
value mixed Значение данных бота

В качестве ключа можно указать:

Возвращает:

self - значение данных бота в формате, в котором они находятся в сущности.

Пример:
let data = bot.setData('leadsCount', 4);
Методы bot

bot.scheduleScriptByCode()

Планирование скрипта по коду

bot.scheduleScriptByCode(string $scriptCode, int|null $leadId, int|null $ticketId = null, $jobParams = [])
Описание:

Планирует вызов скрипта по коду.

Атрибуты:
Имя Тип Описание
scriptCode string Код скрипта, который будет запущен
leadId int ID лида, для которого будет запущен скрипт
ticketId int ID заявки, для которой будет запущен скрипт
jobParams json

Передача в планируемую задачу входящих json параметров. Указывать через script_request_params

Возможные параметры в jobParams:

Если указать run_at и run_after_sec то будет использован только параметр run_at.

 
Возвращает:

bool - подтверждение планирования скрипта.

Пример:
var result = bot.scheduleScriptByCode('trigger', 6473, null, {
  "script_request_params": {
        "name": "Alex" 
  }
});
Методы bot

bot.getScriptCodeById()

Получить ID скрипта по коду

bot.getScriptCodeById(int|null $scriptId)
Описание:

Возвращает id скрипта по его дополнительному идентификатору.

Атрибуты:
Имя Тип Описание
scriptId int Id скрипта
Возвращает:

int - id скрипта в формате числа

или

null - если таких данных не существует.

Пример:
let ScriptId = bot.getScriptCodeById(23121);
Методы bot

bot.getIntAttr()

Получить значение переменной бота в int формате

bot.getIntAttr(string $key, ?int|null $default = 0)

Описание:

Возвращает значение int переменной бота.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
default int
Возвращает:

int - объект int

или

null - если таких данных не существует.

Пример:

Получение значения глобальной переменной бота bot_attribute:

let bot_attribute_value = bot.getIntAttr('bot_attribute');
Методы bot

bot.getFloatAttr()

Получить значение переменной бота в формате float

bot.getFloatAttr(string $key, float|null $default = 0.0)

Описание:

Возвращает значение float переменной бота.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
default float
Возвращает:

float - объект формата float

или

null - если таких данных не существует.

Пример:

Получение значения глобальной переменной бота bot_attribute:

let bot_attribute_value = bot.getFloatAttr('bot_attribute');
Методы bot

bot.getBoolAttr()

Получить значение bool переменной бота

bot.getBoolAttr(string $key, bool|null $default = false)

Описание:

Возвращает значение bool переменной бота.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
default bool Если переменная пуста, то вернуть данное значение
Возвращает:

bool - значение bool переменной

или

null - если такой переменной нет.

Пример:
let bot_attribute_value = bot.getBoolAttr('bot_attribute');
Методы bot

bot.getAllJsonAttrs()

Получить значение всех JSON переменных бота

bot.getAllJsonAttrs()

Описание:

Возвращает значение всех JSON переменных бота.

Возвращает:

array - массив JSON переменных бота.

Пример:
let bot_attribute_value = bot.getAllJsonAttrs();
Методы bot

bot.setJsonAttr()

Установить значение JSON переменной бота

bot.setJsonAttr(string $key, $value)

Описание:

Устанавливает значение JSON переменной бота.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
value mixed JSON значение переменной
Возвращает:

self - объект того же типа и значения, что задан в методе.

Пример:
let bot_attribute_value = bot.setJsonAttr('bot_attribute', {
  															"id": 2415,
  															"name": "Имя"
															});
Методы bot

bot.getJsonAttr()

Получить значение JSON переменной бота

bot.getJsonAttr(string $key)

Описание:

Возвращает значение JSON переменной бота.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
Возвращает:

mixed - объект того же типа и значения, что у запрашиваемой переменной.

Пример:
let bot_attribute_value = bot.getJsonAttr('bot_attribute');
Методы bot

bot.issetJsonAttr() и bot.isJsonAttrKeyExist()

Проверить наличие JSON переменной бота

bot.issetJsonAttr(string $key)

и

bot.isJsonAttrKeyExist(string $key)

Описание:

Проверяет наличие JSON переменной бота.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
Возвращает:

bool - подтверждение существования переменной.

Пример:
let bot_attribute_value = bot.issetJsonAttr('bot_attribute');

или

let bot_attribute_value = bot.isJsonAttrKeyExist('bot_attribute');
Методы bot

bot.scheduleTriggerByCode()

Планирование триггера по коду

bot.scheduleTriggerByCode(string $triggerCode, int|null $leadId, int|null $ticketId = null, $jobParams = [])
Описание:

Запускает триггер по коду в соответствии с указанными параметрами.

Атрибуты:
Имя Тип Описание
triggerCode string Код триггера, который будет запущен
leadId int ID лида, для которого будет запущен триггер
ticketId int ID заявки, для которой будет запущен триггер
jobParams json

Передача в планируемую задачу входящих json параметров. Можно указать script_request_params

Возможные параметры в jobParams:

 

Если указать run_at и run_after_sec то будет использован только параметр run_at.

Возвращает:

bool - подтверждение планирования триггера.

Пример:
var result = bot.scheduleTriggerByCode("trigger_code", 1426, null, {
  "is_periodic": true,
  "repeat_interval_sec": 10,
  "script_request_params": {
        "name": "Alex" 
  }
});
Методы bot

bot.clearTriggerJobsByScriptId()

Удалить джобы триггера по id скрипта

bot.clearTriggerJobsByScriptId(int|null $scriptId, int|null $leadId = null)
Описание:

Очищает джобы триггера по id скрипта.

Атрибуты:
Имя Тип Описание
leadId int ID лида, триггеры которого будут удалены
scriptId int ID скрипта, триггеры которого будут удалены
Возвращает:

bool - подтверждение удаления триггеров.

Пример:
bot.clearTriggerJobsByScriptId(236178, 36462);
Методы bot

bot.clearTriggerJobsByScriptName()

Удалить триггеры для лида

bot.clearTriggerJobsByScriptName(string|null $scriptName, int|null $leadId = null)
Описание:

Удаляет все триггеры из очереди для лида.

Атрибуты:
Имя Тип Описание
leadId int ID лида, триггеры которого будут удалены
scriptName string Наименование скрипта, триггеры которого будут удалены
Возвращает:

bool - подтверждение удаления триггеров.

Пример:
bot.clearTriggerJobsByScriptName("skript_name", 236178);
Методы bot

bot.clearTriggerJobsByCode()

Удалить джобы по коду триггера

bot.clearTriggerJobsByCode(string|null $triggerCode, int|null $leadId = null, int $ticketId = null)
Описание:

Очищает джобы по коду триггера.

Атрибуты:
Имя Тип Описание
triggerCode string Код триггера
leadId int ID лида, триггеры которого будут удалены
ticketId int ID заявки, триггеры которого будут удалены
Возвращает:

bool - подтверждение удаления триггеров.

Пример:
bot.clearTriggerJobsByCode("trigger_code" , 236178, 229715);
Методы bot

bot.clearTriggerJobsByCodeForAllPersonLeads()

Удалить триггеры для всех лидов персоны по коду

bot.clearTriggerJobsByCodeForAllPersonLeads(string|null $triggerCode, int|null $personId, int $ticketId = null)
Описание:

Удаляет триггеры для всех лидов персоны по коду.

Атрибуты:
Имя Тип Описание
triggerCode string Код триггера
personId int ID персоны, триггеры которой будут удалены
ticketId int ID заявки, триггеры которого будут удалены
Возвращает:

bool - подтверждение удаления триггеров.

Пример:
bot.clearTriggerJobsByCodeForAllPersonLeads("trigger_code", 236, 229715);
Методы bot

bot.clearTriggerJobsByCodeForTicket()

Удалить джобы по коду триггера и ID заявки

bot.clearTriggerJobsByCodeForTicket(string|null $triggerCode, int|null $ticketId)
Описание:

Очищает джобы по коду триггера и ID заявки.

Атрибуты:
Имя Тип Описание
triggerCode string Код триггера
ticketId int ID заявки, триггеры которого будут удалены
Возвращает:

bool - подтверждение удаления триггеров.

Пример:
bot.clearTriggerJobsByCodeForTicket("trigger_code", 229715);
Методы bot

bot.getTicketTypeNameById()

Получить наименование заявки по id вида заявки

bot.getTicketTypeNameById(int|null $ticketTypeId)
Описание:

Возвращает наименование заявки по id вида заявки.

Атрибуты:
Имя Тип Описание
ticketTypeId int Наименование тэга
Возвращает:

string - наименование заявки в формате строки.

Пример:
let TicketType = bot.getTicketTypeNameById(14);
Методы bot

bot.getDefaultPersonRoleId()

Получить id роли персоны по умолчанию

bot.getDefaultPersonRoleId()
Описание:

Возвращает id роли персоны по умолчанию.

Возвращает:

int - id роли

или

null - если таких данных нет.

Пример:
let RoleId = bot.getDefaultPersonRoleId();
Методы bot

bot.getWebhookJobRecord()

Получить запись вебхука зарегистрированного в очереди Метабот

bot.getWebhookJobRecord()
Описание:

Возвращает запись вебхука зарегистрированного в очереди Метабот.

Возвращает:

BotWebhookQueueRecord - запись в очереди

или

null - если таких данных не существует.

Методы bot

bot.run()

Запустить скрипт в рамках текущего потока бота

bot.run(array|object|null $jobParams = [])
Описание:

Запускает скрипт в рамках текущего потока бота. Можно использовать только в V8 команде/условии команды размещенной в скрипте конструктора, т.е. не применимо для запуска в JS триггера, маршрута, в внутреннего эндпоинта и т.д.

Атрибуты:
Имя Тип Описание
jobParams json

Передача в планируемую задачу входящих json параметров

Возможные параметры в jobParams:

 
Возвращает:

bool - подтверждение запуска скрипта.

Пример:
bot.run({
  "script_id": 111,
  "skip_till_command_id": 123, 
  "stop_current_flow": false,
})

Методы lead

Методы lead

lead.getData()

Получить значение данных лида

lead.getData(string $key)
Описание:

Возвращает значение данных сущности лида по ключу.

Атрибуты:
Имя Тип Описание
key string Ключ данных лида

В качестве ключа можно указать:

Возвращает:

mixed - значение данных лида в формате, в котором они находятся в сущности

или

null - если таких данных не существует.

Пример:
let extra = lead.getData('extra');

Методы lead

lead.issetData() и lead.isDataExist()

Проверить наличие данных

lead.issetData(string $key)

или

lead.isDataExist(string $key)
Описание:

Проверяет существуют ли данные по ключу.

Атрибуты:
Имя Тип Описание
key string Ключ данных лида

В качестве ключа можно указать:

Возвращает:

bool - подтверждение существования данных.

Пример:
let data = lead.issetData('manager_id');
let altdata = lead.isDataExist('status_id');

Методы lead

lead.getSerialNumber()

Порядковый номер лида

lead.getSerialNumber()
Описание:

Возвращает порядковый номер лида в боте начиная с первого созданного.

Возвращает:

int - порядковый номер лида

или

null - если лид не найден.

Пример:
let num = lead.getSerialNumber();

Методы lead

lead.getChannelCode()

Код канала лида

lead.getChannelCode()
Описание:

Возвращает код канала лида (telegram, umnico, bitrix, и пр.)

Возвращает:

string - код канала лида в формате строки.

Коды которые может возвращать данная функция:

Методы lead

lead.setAttr()

Установить значение переменной лида

lead.setAttr(string $key, string $value)
Описание:

Обновляет значение уже существующей переменной лида или создает новую переменную с указанным значением. Данные будут сохранены в БД.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
value string Значение переменной
Возвращает:

self - объект того же типа, в данном случае переменную, которая была создана.

Пример:

Создание переменной лида lead_attribute:

let lead = "Значение переменной лида";
let lead_attribute = lead.setAttr('lead_attribute', lead);
 

Методы lead

lead.getAttr()

Получить значение переменной лида

lead.getAttr(string $key)
Описание:

Возвращает значение уже существующей переменной лида.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
Возвращает:

stringзначение запрашиваемой переменной в виде строки

или

null - если переменная не была найдена.

Пример:

Получение значения переменной лида lead_attribute:

let lead_attribute_value = lead.getAttr('lead_attribute');
 

Методы lead

lead.getAllAttr()

Получить все переменные лида

lead.getAllAttr()
Описание:

Возвращает значение всех переменных лида.

Возвращает:

array - массив значений всех переменных.

Пример:

Получение значения всех переменных лида и вынесение из массива одного из значений:

let all_lead_attributes = lead.getAllAttr();
let lead_attribute = all_lead_attributes[3];
 

Методы lead

lead.issetAttr() и lead.isAttrExist()

Проверить наличие переменной лида

lead.issetAttr(string $key)

или

lead.isAttrExist(string $key)
Описание:

Проверяет существует ли переменная лида в боте.

Атрибуты:
Имя Тип Описание
key string Наименование переменной

Возвращает:

bool - подтверждение существования переменной.

Пример:

Проверка двумя способами существования переменной лида lead_attribute:

let lead_exists = lead.issetAttr('lead_attribute');
let lead_altexists = lead.isAttrExist('lead_attribute');

Методы lead

lead.deleteAttrs() и lead.deleteAttr()

Удаление переменных лида

lead.deleteAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false)

или

lead.deleteAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false)
Описание:

Удаляет переменную из бота.

Атрибуты:
Имя Тип Описание
attrs string|object|array|null Строка, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId  ?int Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной
scriptRequestParams  object Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной
isForceDelete  bool  Подавить запуск триггеров или нет, т.е. если передать true, 
и есть триггер подписанный на событие изменения/удаления переменной то он не будет запущен.
isSuppressTriggers  bool  Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается

Возвращает:

self - подтверждение удаления переменной.

Пример:
lead.deleteAttrs('var1, var2, var3', null, null, true);

Методы lead

lead.forceDeleteAttrs() и lead.forceDeleteAttr()

Принудительное удаление переменных лида из БД

lead.forceDeleteJsonAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)

или

lead.forceDeleteJsonAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)
Описание:

Удаляет переменную из бота и БД.

Атрибуты:
Имя Тип Описание
attrs string|object|array|null Строка, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId  ?int Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной
scriptRequestParams  object Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной
isSuppressTriggers  bool  Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается

Возвращает:

self - подтверждение удаления переменной.

Пример:
lead.forceDeleteAttrs('var1, var2, var3');

Методы lead

lead.deleteJsonAttrs() и lead.deleteJsonAttr()

Удаление json-переменных лида

lead.deleteJsonAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false)

или

lead.deleteJsonAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false)
Описание:

Удаляет json переменную из бота.

Атрибуты:
Имя Тип Описание
attrs string|object|array|null Строка, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId  ?int Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной
scriptRequestParams  object Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной
isForceDelete  bool  Подавить запуск триггеров или нет, т.е. если передать true, 
и есть триггер подписанный на событие изменения/удаления переменной то он не будет запущен.
isSuppressTriggers  bool  Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается

Возвращает:

self - подтверждение удаления переменной.

Пример:
lead.deleteJsonAttrs('json_var1, json_var2, json_var3', null, null, true);

Методы lead

lead.forceDeleteJsonAttrs() и lead.forceDeleteJsonAttr()

Принудительное удаление json-переменных лида из БД

lead.forceDeleteJsonAttrs(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)

или

lead.forceDeleteJsonAttr(string|object|array|null $attrs, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)
Описание:

Удаляет json переменную из бота и БД.

Атрибуты:
Имя Тип Описание
attrs string|object|array|null Строка, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId  ?int Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления переменной
scriptRequestParams  object Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления переменной
isSuppressTriggers  bool  Не мягкое удаление. Если передано true, то переменная будет удалена из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается

Возвращает:

self - подтверждение удаления переменной.

Пример:
lead.forceDeleteJsonAttrs('json_var1, json_var2, json_var3');
Методы lead

lead.isInStatus()

Проверка существования статуса у лида

lead.isInStatus(string $statusName)
Описание:

Проверить, что лид находится в статусе с указанным в методе именем.

Атрибуты:
Имя Тип Описание
statusName string Наименование статуса
Возвращает:

bool — подтверждение существования статуса.

Методы lead

lead.getStatusId()

Узнать id статуса лида

lead.getStatusId()
Описание:

Возвращает значение поля status_id лида.

Возвращает:

int — id статуса лида в форме числа

или

null — если у лида нет статуса.

Методы lead

lead.isTagExist() и lead.issetTag()

Проверить наличие тэга лида

lead.isTagExist($some_tag)

или

lead.issetTag($some_tag)
Описание:

Проверяет существование тега у лида.

Атрибуты:
Имя Тип Описание
some_tag string Наименование тэга
Возвращает:

bool - подтверждение существования тега.

Пример:
let TagExist = lead.isTagExist('тэг');

или

let TagExist = lead.issetTag('тэг');

Методы lead

lead.getTag()

Получить значение тэга лида

lead.getTag(string $key)
Описание:

Возвращает значение тэга лида по наименованию.

Атрибуты:
Имя Тип Описание
key string Наименование тэга
Возвращает:

string - если тэг активен

или

null - если тэг неактивен.

Пример:
let Tag = lead.getTag('тэг');

Методы lead

lead.getAllTags()

Получить массив всех тэгов лида

lead.getAllTags()
Описание:

Возвращает массив всех тэгов лида.

Возвращает:

array - массив наименований тэгов лида.

Пример:
let AllTags = lead.getAllTags();
let Tag2 = AllTags[1];

Методы lead

lead.addTags() и lead.addTag()

Добавление тэгов лида

или

Описание:

Добавляет тэг в бот.

Атрибуты:
Имя Тип Описание
tags string|object|array|null Строка, представляющая собой список названий тэгов(разделитель запятая). Можно указать вместо списка json объект или массив
ticketId  ?int Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления тэга
scriptRequestParams  object Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления тэга
isSuppressTriggers  bool  Не мягкое удаление. Если передано true, то тэг будет удален из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается

Возвращает:

self - наименование созданного тэга.

Пример:
lead.addTags('new_tag', null, {"some_key": "some_value"});

Методы lead

lead.deleteTags() и lead.deleteTag()

Удаление тэгов лида

или

Описание:

Удаляет тэг из бота.

Атрибуты:
Имя Тип Описание
tags string|object|array|null Строка, представляющая собой список названий тэгов (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId  ?int Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления тэга
scriptRequestParams  object Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления тэга
isForceDelete  bool  Подавить запуск триггеров или нет, т.е. если передать true, 
и есть триггер подписанный на событие изменения/удаления тэга то он не будет запущен.
isSuppressTriggers  bool  Не мягкое удаление. Если передано true, то тэг будет удален из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается

Возвращает:

self - подтверждение удаления тэга.

Пример:
lead.deleteTags('TAG_111, tag_222 , tag_333', null, null, true);

Методы lead

lead.forceDeleteTags() и lead.forceDeleteTag()

Принудительное удаление тэгов лидаиз БД

lead.forceDeleteTags(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)

или

lead.forceDeleteTag(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)
Описание:

Удаляет тэг из бота и БД.

Атрибуты:
Имя Тип Описание
attrs string|object|array|null Строка, представляющая собой список названий переменных (разделитель запятая). Можно указать вместо списка json объект или массив
ticketId  ?int Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления тэга
scriptRequestParams  object Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления тэга
isSuppressTriggers  bool  Не мягкое удаление. Если передано true, то тэг будет удален из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается

Возвращает:

self - подтверждение удаления тэга.

Пример:
lead.forceDeleteTags('TAG_111, tag_222 , tag_333');
Методы lead

lead.setForwarded()

Переключить на оператора

lead.setForwarded(bool|int $state)
Описание:

Установка ($state == true) или сброс ($state == false) у лида признака “Переведён на оператора”.

Атрибуты:
Имя Тип Описание
state bool|int При $state = true установка и при $state = false сброс признака “Переведён на оператора”
Возвращает:

self - подтверждение установки или сброса в формате используемом при вызове метода.

Методы lead

lead.getPersonId()

Получить id персоны

lead.getPersonId()
Описание:

Возвращает id персоны лида.

Возвращает:

int - id персоны в формате числа

или

null - если персоны нет.

Пример:
let PersonId = lead.getPersonId();
lead.setAttr('PersonId', PersonId);

Методы lead

lead.setPersonId()

Привязать персону к лиду

lead.setPersonId(?int $personId)
Описание:

Привязывает к лиду персону с соответствующим id.

Атрибуты:
Имя Тип Описание

personId

int Id персоны
Возвращает:

bool - подтверждение успешной привязки персоны к лиду.

Пример:
lead.setPersonId(167435);

Методы lead

lead.createPersonForCurrentLead()

Создать персону для лида

lead.createPersonForCurrentLead($data)
Описание:

Создает персону для текущего лида в контексте которого запущен v8-скрипт.

Атрибуты:
Имя Тип Описание

data

json Данные о персоне в формате json. Возможные поля расписаны ниже

person_role_id

integer Id роли

is_external

bool

Если не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом.

А 0 означает что персона является работником бизнеса

user_id 

integer Id пользователя, привязываемого к персоне

firstname 

string|null Имя персоны

lastname 

string|null Фамилия персоны

middlename 

string|null Отчество персоны

email 

string|null Адрес электронной почты персоны

phone 

string|null Номер телефона персоны

organization_name

string|null Название организации

organization_address

string|null Адрес организации

comment 

string|null Комментарий к персоне
Возвращает:

int - id созданной персоны в формате числа.

Пример:
let newPersonId = lead.createPersonForCurrentLead({
  'is_external': 1,
  'firstname': 'Иван',
  'lastname': 'Иванов'
})

Методы lead

lead.isContextExist() и lead.issetContext()

Проверить наличие контекста лида

или

Описание:

Проверяет существование контекста у лида.

Атрибуты:
Имя Тип Описание
key string Наименование контекста
Возвращает:

bool - подтверждение существования контекста.

Пример:

или

Методы lead

lead.getContext()

Получить значение контекста лида

Описание:

Возвращает значение контекста лида по наименованию.

Атрибуты:
Имя Тип Описание
key string Наименование контекста
Возвращает:

string - если контекст активен

или

null - если контекст неактивен.

Пример:

Методы lead

lead.getAllContexts()

Получить массив всех контекстов лида

Описание:

Возвращает массив всех контекстов лида.

Возвращает:

array - массив наименований контекстов лида.

Пример:
let AllContexts = lead.getAllContexts();
let Context2 = AllContexts[1];

Методы lead

lead.setActiveNlpIntegrationByCode()

Присвоить интеграцию лиду по коду

lead.setActiveNlpIntegrationByCode(?string $integrationCode)
Описание:

Присваивает интеграцию лиду в соответствии с кодом интеграции.

Атрибуты:
Имя Тип Описание
integrationCode string Код интеграции
Возвращает:

bool - подтверждение присвоения интеграции.

Методы lead

lead.canAutoForward()

Узнать доступно ли авто-назначение оператора в данном скрипте

Описание:

Функция необходима для исключения рекурсивного вызова назначения диалога на оператора, а также для исключения выполнения авто-назначения диалога на оператора, если оператор сам подключается к диалога из контакт-центра.

Результат выполнения данной функции аналогичен результату выполнения функции bot.canAutoForward(), функция в bot первична, в лиде функция добавлена для удобства.

Если оператор сам выполняет подключение к диалогу из контакт-центра, то результат функции аналогичен проверке:

return bot.getForwardEventType() !== 'forwarded_by_operator';

Но при этом lead.canAutoForward(): bool гарантирует что назначение заявки на оператора не вызвано рекурсивно.

Возвращает:

bool - подтверждение доступа к авто-назначению.


Методы lead

lead.getNextOperators()

Вернуть список следующих операторов

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

lead.assignDialogToNextOperator()

Назначить диалог на следующего оператора

lead.assignDialogToNextOperator(string|null $departmentCode = null, bool $isOnline = true, bool $isForwardIfOperatorNotFound = true, bool $useLocks = true)
Описание:

Назначает диалог на следующего оператора полученного с помощью getNextOperators.

Варианты откуда может запускаться:
        - оператор сам подключился к КЦ и в системном скрипте есть вызов данной функции - игнорируем ее вызов;
        - функцию вызвали в другом скрипте и она также есть в системном скрипте - игнорируем ее вызов только из системного скрипта;
        - функцию вызвали в системном скрипте - не игнорируем ее вызов.

Если вызываем функцию из системного скрипта перевода на оператора, то данная функция не выполняет перевод (так как он уже выполнен на момент запуска функции) и также не запускает системный скрипт (так как он уже запущен на момент запуска функции) - для этого есть внутренние механизмы отслеживания, откуда запущена функция, и по сути это исключает рекурсивный запуск функций, для этого и введена новая функция bot / lead.canAutoForward на самом деле выполнять данную проверку canAutoForward смысла нет, так как она выполняется автоматически внутри функций назначения оператора и автоматом отсечет рекурсивный вызов, но где может понадобиться использование canAutoForward - это для написания JavaScript условия - нужно ли отсылать уведомление лиду, о том что скрипт перевод на оператора: пример вызываем назначение на оператора в обычном скрипте, и в этом же скрипте уведомляем о то, что мы перевели на оператора, тогда при запуске системного скрипта Перевод на оператора вывод такого же сообщения нужно исключить.

Атрибуты:
Имя Тип Описание
departmentCode  string Код отдела
isOnline  bool  Должны ли операторы быть онлайн
isForwardIfOperatorNotFound bool Продолжить если оператор не найден
useLocks  bool  Использовать ли блокировки
Возвращает:

int - оператора

или

null - если не удалось назначить.

Методы lead

lead.assignDialogToOperator()

Назначить диалог на указанного оператора

lead.assignDialogToOperator(int|null $operatorId, bool $isForwardIfOperatorNotFound = true, bool $useLocks = true)
Описание:

Назначает диалог на указанного в методе оператора. 

 Если вызываем функцию из системного скрипта перевода на оператора, то данная функция не выполняет перевод (так как он уже выполнен на момент запуска функции) и также не запускает системный скрипт (так как он уже запущен на момент запуска функции).

Если вызываем функцию из обычного скрипта, то в данной точке сразу будет вызван системный скрипт (если он есть). Системный скрипт можно не создавать и обрабатывать все в точке вызова (можно через v8 плагина) или в отдельном обычном скрипте. Если в системном скрипте и скрипте в котором вызывает данную функцию есть отправка сообщений то необходимо вызывать bot.disableBuffer(), чтобы не нарушать последовательность сообщений. Но лучше отправлять сообщения только в одном из скриптов.

Атрибуты:
Имя Тип Описание
operatorId string ID оператора
limit  int|null Лимит возвращенных операторов. Чтобы получить всех операторов, указываем $limit=null
useLocks  bool  Использовать ли блокировки
Возвращает:

int - оператора

или

null - если не удалось назначить оператора.

Методы lead

lead.getLastRequest()

Получить объект с параметрами последнего реквеста

lead.getLastRequest()
Описание:

Находит последний реквест и возвращает объект с его параметрами.

Возвращает:

ScriptRequest — последний реквест.

Методы lead

lead.getMessengerCode()

Получить буквенное обозначение текущего мессенджера канала

Описание:

Возвращает буквенное обозначение текущего мессенджера канала.

Возвращает:

string - буквенное обозначение текущего мессенджера канала.

Коды которые может возвращать данная функция:


Методы lead

lead.getIdentification()

Получить идентификатор лида во внешней системе

lead.getIdentification()
Описание:

Возвращает идентификатор лида во внешней системе, т.е. в мессенджере, например для Telegram - это id чата клиента.

Возвращает:

string - идентификатор лида во внешней системе в формате строки

или

null - если идентификатор не найден.

Методы lead

lead.getIdentificationEntity()

Получить дополнительный идентификатор лида во внешней системе

lead.getIdentificationEntity()
Описание:

Возвращает дополнительный идентификатор лида во внешней системе, например используется для Bitrix24 – и возвращает ‘LEAD’ / ‘DEAL’.

Возвращает:

string - дополнительный идентификатор лида во внешней системе в формате строки

или

null - если нет составного идентификатора лида.

Методы lead

lead.getMessenger()

Получить текущий мессенджер

lead.getMessenger()
Описание:

Метод для получения обозначения текущего мессенджера канала.

Коды которые может возвращать данная функция:

Возвращает:

int - код канала.

Методы lead

lead.getAllData()

Получить все данные лида

lead.getAllData()
Описание:

Возвращает все данные лида.

Возвращает:

array - значение данных лида в формате массива:

Пример:
let extra = lead.getAllData();
Методы lead

lead.setData()

Установить значение данных лида

lead.setData(string $key, $value)
Описание:

Устанавливает значение данных лида по ключу.

Атрибуты:
Имя Тип Описание
key string Ключ данных лида
value mixed Значение данных

В качестве ключа можно указать:

Возвращает:

self - значение данных лида в формате, в котором они находятся в сущности.

Пример:
let person_id = lead.setData('person_id', 34);
Методы lead

lead.isInlineButtonsAvailable()

Проверка включения инлайн кнопок

lead.isInlineButtonsAvailable()
Описание:

Проверяет включены ли инлайн кнопки.

Возвращает:

bool - 0, если не включены, 1, если включены

или

null - если таких данных не существует.

Пример:
let inlineButtons = lead.isInlineButtonsAvailable();

 

Методы lead

lead.isInlineButtonsAvailableGeneralChannelSetting()

Получить настройки кнопок канала

lead.isInlineButtonsAvailableGeneralChannelSetting()
Описание:

Возвращает настройки кнопок текущего канала лида.

Возвращает:

bool - 0, если не включены, 1, если включены

или

null - если таких данных не существует.

Пример:
let inlineButtons = lead.isInlineButtonsAvailableGeneralChannelSetting();
Методы lead

lead.getIntAttr()

Получить значение числовой переменной лида

lead.getIntAttr(string $key, ?int|null $default = 0)
Описание:

Возвращает значение уже существующей числовой переменной лида.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
default int Дефолтное значение переменной
Возвращает:

int числовое значение запрашиваемой переменной

или

null - если переменная не была найдена.

Пример:
let lead_attribute_value = lead.getIntAttr('lead_attribute', 2);
Методы lead

lead.getFloatAttr()

Получить значение float переменной лида

lead.getFloatAttr(string $key, ?float|null $default = 0.0)
Описание:

Возвращает значение уже существующей float переменной лида.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
default float Дефолтное значение
Возвращает:

float - значение запрашиваемой float переменной

или

null - если переменная не была найдена.

Пример:
let lead_attribute_value = lead.getFloatAttr('lead_attribute', 0.1);
Методы lead

lead.getBoolAttr()

Получить значение bool переменной лида

lead.getBoolAttr(string $key, ?bool|null $default = false)
Описание:

Возвращает значение уже существующей bool переменной лида.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
default bool Дефолтное значение
Возвращает:

bool - значение запрашиваемой bool переменной

или

null - если переменная не была найдена.

Пример:
let lead_attribute_value = lead.getBoolAttr('lead_attribute', true);
Методы lead

lead.getJsonAttr()

Получить значение JSON переменной лида

lead.getJsonAttr(string $key)
Описание:

Возвращает значение уже существующей JSON переменной лида.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
Возвращает:

mixed - значение запрашиваемой JSON переменной

или

null - если переменная не была найдена.

Пример:
let lead_attribute_value = lead.getJsonAttr('lead_attribute');
Методы lead

lead.getAllJsonAttrs()

Получить значение всех JSON переменных лида

lead.getAllJsonAttrs()

Описание:

Возвращает значение всех JSON переменных лида.

Возвращает:

array - массив JSON переменных лида.

Пример:
let lead_attribute_value = lead.getAllJsonAttrs();
Методы lead

lead.setJsonAttr()

Установить значение JSON переменной лида

lead.setJsonAttr(string $key, $value)

Описание:

Устанавливает значение JSON переменной лида.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
value mixed JSON значение переменной
Возвращает:

self - объект того же типа и значения, что задан в методе.

Пример:
let lead_attribute_value = lead.setJsonAttr('lead_attribute', {
  															"id": 2415,
  															"name": "Имя"
															});
Методы lead

lead.issetJsonAttr() и lead.isJsonAttrKeyExist()

Проверить наличие JSON переменной лида

lead.issetJsonAttr(string $key)

и

lead.isJsonAttrKeyExist(string $key)

Описание:

Проверяет наличие JSON переменной лида.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
Возвращает:

bool - подтверждение существования переменной.

Пример:
let lead_attribute_value = lead.issetJsonAttr('lead_attribute');

или

let lead_attribute_value = lead.isJsonAttrKeyExist('lead_attribute');
Методы lead

lead.setAllLiveTexAttrs()

Установить значение всех LiveTex переменных лида

lead.setAllLiveTexAttrs(string $value)

Описание:

Устанавливает значение всех LiveTex переменных лида.

Атрибуты:
Имя Тип Описание
value string Значение переменной
Возвращает:

self - объект того же типа и значения, что задан в методе.

Пример:
let lead_attribute_value = lead.setAllLiveTexAttrs('lead_value');
Методы lead

lead.setLiveTexAttr()

Установить значение LiveTex переменной лида

lead.setLiveTexAttr(string $key,string $value)

Описание:с

Устанавливает значение LiveTex переменной лида.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
value string Значение переменной
Возвращает:

self - объект того же типа и значения, что задан в методе.

Пример:
let lead_attribute_value = lead.setLiveTexAttr('lead_attribute', "lead_value");
Методы lead

lead.getLiveTexAttr()

Получить значение LiveTex переменной лида

lead.getLiveTexAttr(string $key)
Описание:

Возвращает значение уже существующей LiveTex переменной лида.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
Возвращает:

mixed - значение запрашиваемой переменной

или

null - если переменная не была найдена.

Пример:
let lead_attribute_value = lead.getLiveTexAttr('lead_attribute');
Методы lead

lead.getAllLiveTexAttrs()

Получить значение всех LiveTex переменных лида

lead.getAllLiveTexAttrs()

Описание:

Возвращает значение всех LiveTex переменных лида.

Возвращает:

array - массив LiveTex переменных лида.

Пример:
let lead_attribute_value = lead.getAllLiveTexAttrs();
Методы lead

lead.setTag()

Установить значение тэга лида

lead.setTag(string $key, $value)
Описание:

Устанавливает значение тэга лида по наименованию.

Атрибуты:
Имя Тип Описание
key string Наименование тэга
value mixed Значение тэга
Возвращает:

self - значение, указанное в методе.

Пример:
let Tag = lead.setTag('тэг', "регистрация");
Методы lead

lead.setContext()

Установить значение контекста лида

lead.setContext(string $key, $value)
Описание:

Устанавливает значение контекста лида по наименованию.

Атрибуты:
Имя Тип Описание
key string Наименование контекста
value mixed Значение контекста
Возвращает:

self - значение, указанное в методе.

Пример:
let Con = lead.setContext('контекст', "регистрация");
Методы lead

lead.getAllStatuses()

Узнать все статусы лида

lead.getAllStatuses()
Описание:

Возвращает все статусы лида.

Возвращает:

array — id статусов лида в формате массива.

Методы lead

lead.getAllStatusesIndexedByName()

Узнать все наименования статусов лида

lead.getAllStatusesIndexedByName()
Описание:

Возвращает все наименования статусов лида.

Возвращает:

array — массив наименований статусов лида.

Методы lead

lead.setStatusId()

Установить id статуса лида

lead.setStatusId(int $statusId, string $name)
Описание:

Устанавливает id статуса лида.

Атрибуты:
Имя Тип Описание
statusId int  Id статуса
name string Наименование статуса
Возвращает:

self — id статуса лида.

Методы lead

lead.setStatusName()

Установить наименование статуса лида

lead.setStatusName(string $name)
Описание:

Устанавливает наименование статуса лида.

Атрибуты:
Имя Тип Описание
name string Наименование статуса
Возвращает:

self — наименование статуса лида.

Методы lead

lead.getStatusName()

Узнать наименование статуса лида

lead.getStatusName()
Описание:

Возвращает наименование статуса лида.

Возвращает:

string — наименование статуса лида в формате строки.

Методы lead

lead.setStatus()

Установить статус лида

lead.setStatus(int $statusId, string $name)
Описание:

Устанавливает статус лида.

Атрибуты:
Имя Тип Описание
statusId int Id статуса
name string Наименование статуса
Возвращает:

self — id статуса лида.

Методы lead

lead.setStatusById()

Установить статус лида по id

lead.setStatusById(int $statusId)
Описание:

Устанавливает статус лида по id.

Атрибуты:
Имя Тип Описание
statusId int Id статуса
Возвращает:

self — id статуса.

Методы lead

lead.issetStatusById()

Проверить существует ли статус у лида по id

lead.issetStatusById(string $id)
Описание:

Проверяет существует ли статус у лида по id.

Атрибуты:
Имя Тип Описание
id string Id статуса
Возвращает:

bool — подтверждение существования статуса.

Методы lead

lead.issetStatusByName()

Проверить существует ли статуса у лида по наименованию

lead.issetStatusByName(string $name)
Описание:

Проверяет существует ли статуса у лида по наименованию.

Атрибуты:
Имя Тип Описание
name string Наименование статуса
Возвращает:

bool — подтверждение существования статуса.

Методы lead

lead.getStatusIdByName()

Узнать id статуса лида по наименованию

lead.getStatusIdByName(string $statusName)
Описание:

Возвращает id статуса лида по наименованию.

Атрибуты:
Имя Тип Описание
statusName string Наименование статуса
Возвращает:

int — id статуса.

Методы lead

lead.setStatusByName()

Установить статус лида по наименованию

lead.setStatusByName(string $statusName)
Описание:

Устанавливает статус лида по наименованию.

Атрибуты:
Имя Тип Описание
statusName string Наименование статуса
Возвращает:

self — наименование статуса лида.

Методы lead

lead.setActiveNlpIntegrationById()

Присвоить интеграцию лиду по id

lead.setActiveNlpIntegrationById(int|null $nlpIntegrationId)
Описание:

Присваивает интеграцию лиду по id.

Атрибуты:
Имя Тип Описание
nlpIntegrationId int Id интеграции
Возвращает:

bool - подтверждение присвоения интеграции.

Методы lead

lead.hasActiveNlpIntegration()

Проверить активна ли интеграция

lead.hasActiveNlpIntegration()
Описание:

Проверяет активна ли интеграция.

Возвращает:

bool - подтверждение активности интеграции.

Методы lead

lead.getActiveNlpIntegrationId()

Получить интеграцию по id

lead.getActiveNlpIntegrationId(int|null $nlpIntegrationId)
Описание:

Возвращает интеграцию по id.

Атрибуты:
Имя Тип Описание
nlpIntegrationId int Id интеграции
Возвращает:

int - id интеграции

или

null - если таких данных нет.

Методы lead

lead.getActiveNlpIntegrationCode()

Получить интеграцию по коду

lead.getActiveNlpIntegrationCode(string|null $integrationCode)
Описание:

Возвращает интеграцию по коду.

Атрибуты:
Имя Тип Описание
integrationCode string Код интеграции
Возвращает:

string - код интеграции

или

null - если таких данных нет.

Методы lead

lead.getActiveOrFirstNlpIntegrationCode()

Получить активную или первую интеграцию по коду

lead.getActiveOrFirstNlpIntegrationCode(string|null $integrationCode)
Описание:

Возвращает активную или первую интеграцию по коду.

Атрибуты:
Имя Тип Описание
integrationCode string Код интеграции
Возвращает:

string - код интеграции

или

null - если таких данных нет.

Методы lead

lead.getActiveOrFirstNlpIntegrationId()

Получить активную или первую интеграцию по id

lead.getActiveOrFirstNlpIntegrationId(int|null $nlpIntegrationId)
Описание:

Возвращает активную или первую интеграцию по id.

Атрибуты:
Имя Тип Описание
nlpIntegrationId int Id интеграции
Возвращает:

int - id интеграции

или

null - если данные не найдены.

Методы lead

lead.getForwardEventTypeForFB()

Получить тип события для ФБ

lead.getForwardEventTypeForFB()
Описание:

Возвращает тип события для ФБ.

Возвращает:

string - тип события интеграции

или

null - если таких данных нет.

Методы lead

lead.getLang()

Получить язык установленный в бизнесе

lead.getLang()
Описание:

Возвращает язык установленный в бизнесе.

Возвращает:

string - код языка

или

null - если таких данных нет.

Методы lead

lead.setLang()

Установить язык в бизнесе

lead.setLang(string|null $langCode)
Описание:

Устанавливает язык в бизнесе.

Атрибуты:
Имя Тип Описание
langCode string Код языка
Возвращает:

string - код языка

или

null - если таких данных не существует.

Методы lead

lead.isLangExist()

Проверить существует ли язык

lead.isLangExist(string $langCode, bool|null $isEnabled = true)
Описание:

Проверяет существует ли язык.

Атрибуты:
Имя Тип Описание
langCode string  Код языка
isEnabled bool Активность языка
Возвращает:

bool - подтверждения существования языка.

Методы ticket

Методы ticket

ticket.update()

Обновление заявки, через объект заявки

ticket.update($data)
Описание:

Обновляет заявку соответствующую указанным данным.

Атрибуты:
Имя Тип Описание
data json Данные о заявке в формате json. Возможные поля расписаны ниже
title string Заголовок заявки
ticket_type_id int Id типа заявки
status_id int Id статуса заявки

author_person_id

int Id автора заявки

client_person_id

int Id клиента заявки

assigned_person_id

int Id исполнителя заявки

description

string Описание заявки
Возвращает:

bool - подтверждение обновления заявки.

Пример:
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);

Пример обновления одного поля заявки:

let ticket = bot.findTickets([['id', ticketId]])[0];
let ticketData = {
  'client_comment': lead.getAttr('Отзыв')
};

ticket.update(ticketData);

Методы ticket

ticket.getData()

Получить значение данных заявки

ticket.getData(string $key)
Описание:

Получить значение данных заявки по ключу или названию поля БД.

Атрибуты:
Имя Тип Описание
key string Ключ наименование поля

В качестве ключа можно указать:

Возвращает:

mixed - если значение найдено

или

null - если значение не найдено.

Пример:
let Data = ticket.getData('title');

Методы ticket

ticket.getCustomData()

Считывание произвольных полей заявки

ticket.getCustomData(string $key)
Описание:

Находит значение указанного типа произвольного поля заявки.

Атрибуты:
Имя Тип Описание
key string Ключ наименование поля

В качестве ключа можно указать:

Можно получить код значения, используя суффикс ".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 - если значение не найдено.

Пример:
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

ticket.issetData() и ticket.isDataExist()

Проверить наличие данных по заявке

ticket.issetData(string $key)

или

ticket.isDataExist(string $key)
Описание:

Проверяет существуют ли данные заявки по заданному ключу.

Атрибуты:
Имя Тип Описание
key string Ключ наименование поля

В качестве ключа можно указать:

Возвращает:

bool - подтверждение существования данных.

Пример:
let Data = ticket.issetData('title');

или

let Data = ticket.isDataExist('title');

Методы ticket

ticket.reloadCustomData()

Перезагрузка кастомных данных

ticket.reloadCustomData(bool $isReloadModel = false)
Описание:

Перезагружает кастомные поля заявки.

Атрибуты:
Имя Тип Описание
isReloadModel bool Перезагружает и системные поля заявки, вызывая ticket.reloadTicket()
Возвращает:

bool — подтверждение успешной перезагрузки.

Методы ticket

ticket.setAllCustomData()

Переопределить список кастомных полей

ticket.setAllCustomData(array $customData)
Описание:

Не переносится в БД. Будет переопределен массив кастомных полей в памяти, используется для внутренних целей задания значений полей.

Атрибуты:
Имя Тип Описание
customData array Массив кастомных полей
Возвращает:

self - тип указанный при вызове метода.

Пример:
ticket.setAllCustomData([{
"место": "Место 01",
"время": "12:30"
}]);

Методы ticket

ticket.getAllCustomData()

Получить список кастомных полей

ticket.getAllCustomData()
Описание:

Возвращает значения всех кастомных полей.

Возвращает:

array - массив значений кастмных полей.

Методы ticket

ticket.setCustomData()

Установить значение кастомного поля

ticket.setCustomData(string $key, $value)
Описание:

Устанавливает значение кастомного поля. Не сохраняется в БД.

Атрибуты:
Имя Тип Описание
key string Ключ наименование поля
value self Значение поля

В качестве ключа можно указать:

Возвращает:

self - тип указанный при вызове метода.

Пример:
ticket.setCustomData("место", "Место1");

Методы ticket

ticket.issetCustomData()

Имеет ли значение кастомное поле

ticket.issetCustomData(string $key)
Описание:

Проверяет существует ли ключ и не имеет ли он значение null.

Атрибуты:
Имя Тип Описание
key string Ключ наименование поля

В качестве ключа можно указать:

Возвращает:

bool - подтверждение существования ключа.

Пример:
ticket.issetCustomData("время");

Методы ticket

ticket.isCustomDataExist()

Существует ли кастомное поле

ticket.isCustomDataExist(string $key)
Описание:

Проверяет существует ли такой ключ в списке кастомных полей.

Атрибуты:
Имя Тип Описание
key string Ключ наименование поля

В качестве ключа можно указать:

Возвращает:

bool - подтверждение существования ключа.

Пример:
ticket.isCustomDataExist("место");

Методы ticket

ticket.getTicketTypeName()

Получить название типа заявки

ticket.getTicketTypeName()
Описание:

Находит название типа заявки.

Возвращает:

string — название типа заявки

или

null — если у заявки нет типа.

Методы ticket

ticket.getStatusId() и ticket.getAttr('status_id')

Получить ID статуса заявки

ticket.getStatusId()

или

ticket.getAttr('status_id')
Описание:

Находит id статуса заявки.

Атрибуты:
Имя Тип Описание
status_id string Ключ id статуса заявки
Возвращает:

int — id статуса заявки

или

null — если у заявки нет статуса.

Методы ticket

ticket.getStatusName()

Получить название статуса заявки

ticket.getStatusName()
Описание:

Находит название статуса заявки.

Возвращает:

string — название статуса заявки

или

null — если у заявки нет статуса.

Методы ticket

ticket.getStatusType()

Получить тип статуса заявки

ticket.getStatusType()
Описание:

Находит тип статуса заявки.

Возвращает:

string — тип статуса заявки

или

null — если у заявки нет статуса или у статуса нет типа.

Методы ticket

ticket._sanitizeString()

Приведение названия статуса к стандартному виду

ticket._sanitizeString($string)
Описание:

Вспомогательная функция используемая для приведения названия статуса к нижнему регистру и удаления лишних символов из названия.

Атрибуты:
Имя Тип Описание
statusNme string Наименование статуса заявки
Возвращает:

string - обновленное наименование статуса заявки.

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

Методы ticket

ticket.isInStatus()

Проверить статус заявки

ticket.isInStatus($statusName)
Описание:

Проверить, что заявка находится в статусе с именем $statusName.

Атрибуты:
Имя Тип Описание
statusName string Наименование статуса заявки
Возвращает:

bool — подтверждение, что заявка находится в указанном статусе.

Методы ticket

ticket.setStatusId()

Установить статус заявки по id

ticket.setStatusId(int|null $statusId, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null)
Описание:

Устанавливает указанный статус для заявки по id.

Атрибуты:
Имя Тип Описание
statusId int|null id статуса заявки
personQueueIdForLog int|null id очереди записываемый в лог
personQueueTableForLog  string|null Название таблицы-связки для очередей записываемое в лог
Возвращает:

bool — подтверждение установки нового статуса.

Методы ticket

ticket.setStatusByName()

Установить статус заявки по имени

ticket.setStatusByName(string $statusName, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null)
Описание:

Устанавливает указанный статус для заявки по имени.

Атрибуты:
Имя Тип Описание
statusName string Наименование статуса заявки
personQueueIdForLog int|null id очереди записываемый в лог
personQueueTableForLog  string|null Название таблицы-связки для очередей записываемое в лог
Возвращает:

bool — подтверждение установки нового статуса.

Методы ticket

ticket.reloadTicket()

Загрузить заявку повторно

ticket.reloadTicket()
Описание:

Загрузить заявку повторно из БД. Автоматически выполняется, например, в случае изменения статуса заявки, назначении другого исполнителя и т.п.

Возвращает:

bool — подтверждение повторной загрузки заявки.

Методы ticket

ticket.getAuthorPersonId()

Получить ID автора заявки

ticket.getAuthorPersonId()
Описание:

Возвращает id автора заявки.

Возвращает:

int — id автора заявки в формате числа

или

null — если автор не найден.

Методы ticket

ticket.getAssignedPersonId()

Получить ID исполнителя заявки

ticket.getAssignedPersonId()
Описание:

Возвращает id исполнителя заявки.

Возвращает:

int — id исполнителя заявки в формате числа

или

null — если исполнитель не найден.

Методы ticket

ticket.getClientPersonId()

Получить ID клиента заявки

ticket.getClientPersonId()
Описание:

Возвращает id клиента заявки.

Возвращает:

int — id клиента заявки в формате числа

или

null — если клиент не найден.

Методы ticket

ticket.getAuthorPersonFullName()

Получить ФИО автора заявки

ticket.getAuthorPersonFullName()
Описание:

Возвращает ФИО автора заявки.

Возвращает:

string — ФИО автора заявки.

Методы ticket

ticket.getAssignedPersonFullName()

Получить ФИО исполнителя заявки

ticket.getAssignedPersonFullName()
Описание:

Возвращает ФИО исполнителя заявки.

Возвращает:

string — ФИО исполнителя заявки.

Методы ticket

ticket.getClientPersonFullName()

Получить ФИО клиента заявки

ticket.getClientPersonFullName()
Описание:

Возвращает ФИО клиента заявки.

Возвращает:

string — ФИО клиента заявки.

Методы ticket

ticket.getAuthorPersonRoleId()

Получить ID роли автора заявки

ticket.getAuthorPersonRoleId()
Описание:

Возвращает ID роли автора заявки.

Возвращает:

int — ID роли автора заявки

или

null — если клиент или роль не найдены.

Методы ticket

ticket.getAssignedPersonRoleId()

Получить ID роли исполнителя заявки

ticket.getAssignedPersonRoleId()
Описание:

Возвращает ID роли исполнителя заявки.

Возвращает:

int — ID роли исполнителя заявки

или

null — если клиент или роль не найдены.

Методы ticket

ticket.getClientPersonRoleId()

Получить ID роли клиента заявки

ticket.getClientPersonRoleId()
Описание:

Возвращает ID роли клиента заявки.

Возвращает:

int — ID роли клиента заявки

или

null — если клиент или роль не найдены.

Методы ticket

ticket.getAuthorPersonRoleName()

Получить имя роли автора заявки

ticket.getAuthorPersonRoleName()
Описание:

Возвращает имя роли автора заявки.

Возвращает:

string — имя роли автора заявки.

Методы ticket

ticket.getAssignedPersonRoleName()

Получить имя роли исполнителя заявки

ticket.getAssignedPersonRoleName()
Описание:

Возвращает имя роли исполнителя заявки.

Возвращает:

string — имя роли исполнителя заявки.

Методы ticket

ticket.getClientPersonRoleName()

Получить имя роли клиента заявки

ticket.getClientPersonRoleName()
Описание:

Возвращает имя роли клиента заявки.

Возвращает:

string — имя роли клиента заявки.

Методы ticket

ticket.getAuthorPersonRoleTitle()

Получить заголовок роли автора заявки

ticket.getAuthorPersonRoleTitle()
Описание:

Возвращает заголовок роли автора заявки.

Возвращает:

string — заголовок роли автора заявки.

Методы ticket

ticket.getAssignedPersonRoleTitle()

Получить заголовок роли исполнителя заявки

ticket.getAssignedPersonRoleTitle()
Описание:

Возвращает заголовок роли исполнителя заявки.

Возвращает:

string — заголовок роли исполнителя заявки.

Методы ticket

ticket.getClientPersonRoleTitle()

Получить заголовок роли клиента заявки

ticket.getClientPersonRoleTitle()
Описание:

Возвращает заголовок роли клиента заявки.

Возвращает:

string — заголовок роли клиента заявки.

Методы ticket

ticket.getAuthorPersonRoleFormattedTitle()

Получить форматированное название роли автора заявки

ticket.getAuthorPersonRoleFormattedTitle()
Описание:

Возвращает форматированное название роли автора заявки.

Возвращает:

string — форматированное название роли автора заявки.

Методы ticket

ticket.getAssignedPersonRoleFormattedTitle()

Получить форматированное название роли исполнителя заявки

ticket.getAssignedPersonRoleFormattedTitle()
Описание:

Возвращает форматированное название роли исполнителя заявки.

Возвращает:

string — форматированное название роли исполнителя заявки.

Методы ticket

ticket.getClientPersonRoleFormattedTitle()

Получить форматированное название роли клиента заявки

ticket.getClientPersonRoleFormattedTitle()
Описание:

Возвращает форматированное название роли клиента заявки.

Возвращает:

string — форматированное название роли клиента заявки.

Методы ticket

ticket.getPerson1Id()

Получение id первой дополнительной персоны

ticket.getPerson1Id()
Описание:

Возвращает id первой дополнительной персоны заявки.

Возвращает:

int — id персоны в формате числа

или

null — если персона не найдена.

Методы ticket

ticket.getPerson2Id()

Получение id второй дополнительной персоны

ticket.getPerson2Id()
Описание:

Возвращает id второй дополнительной персоны заявки.

Возвращает:

int — id персоны в формате числа

или

null — если персона не найдена.

Методы ticket

ticket.getPerson3Id()

Получение id третьей дополнительной персоны

ticket.getPerson3Id()
Описание:

Возвращает id третьей дополнительной персоны заявки.

Возвращает:

int — id персоны в формате числа

или

null — если персона не найдена.

Методы ticket

ticket.setPerson1Id()

Установка id первой дополнительной персоны

ticket.setPerson1Id(int|null $personId)
Описание:

Устанавливает id первой дополнительной персоны заявки.

Атрибуты:
Имя Тип Описание
personId int|null ID персоны
Возвращает:

bool — подтверждение установки значения.

Методы ticket

ticket.setPerson2Id()

Установка id второй дополнительной персоны

ticket.setPerson2Id(int|null $personId)
Описание:

Устанавливает id второй дополнительной персоны заявки.

Атрибуты:
Имя Тип Описание
personId int|null ID персоны
Возвращает:

bool — подтверждение установки значения.

Методы ticket

ticket.setPerson3Id()

Установка id третьей дополнительной персоны

ticket.setPerson3Id(int|null $personId)
Описание:

Устанавливает id третьей дополнительной персоны заявки.

Атрибуты:
Имя Тип Описание
personId int|null ID персоны
Возвращает:

bool — подтверждение установки значения.

Методы ticket

ticket.assignToNextQueuePerson()

Назначить заявку следующему исполнителю

ticket.assignToNextQueuePerson(int $queueMode = 1, int|null $personQueueId = null, string|null $personQueueTable = null, int|null $currentAssignAttempt = null, bool $isIncRejectsCount = true, bool $isMoveToEndIfRejectsExceed = true)
Описание:

Назначить заявку следующему исполнителю. Исполнитель будет определен, как первый в очереди распределения по типу заявки.

Логика работы функции:

  1. Ищет первую персону из очереди распределения, которой еще не назначали тикет (заявку).
  2. Если персоны нет, то возвращаем false (чтобы остановить триггер распределения очереди).
  3. Увеличивает счетчик отказов у найденной персоны.
  4. Увеличивается счетчик отказов по найденному исполнителю.
  5. Если кол-во отказов >= $maxRejects, то исполнитель переносится в конец очереди (исполнитель текущий, которого нашли, а не первый в очереди).
  6. Назначает заявку найденной персоне.

Поиск исполнителя выполняется по следующим критериям:

Условие (количество отказов по исполнителю rejects_count < $maxRejects+1) НЕ НУЖНО, т.к.:
1. Как только лимит превышен персона сразу будет перемещена в конец очереди, а счетчик сброшен.
2. Может возникнуть баг, если лимит превышен, персона никогда не попадет в выборку и ее счетчик не будет сброшен.

Атрибуты:
Имя Тип Описание
queueMode  int

Режим работы очереди.

Для работы с очередью на основе видов заявок указывать не нужно, будет использовано значение по умолчанию 1;
Для работы с очередью на основе видов очередей указать 2.

personQueueId  int|null id очереди
personQueueTable  string|null Название таблицы-связки для очередей
currentAssignAttempt  int|null

Номер попытки прогона одного и того же тикета по той же очереди

isIncRejectsCount bool Увеличивать или нет счетчик попыток у персоны (в очереди исполнителей)
isMoveToEndIfRejectsExceed bool Переносить или нет персону в конец очереди и сбрасывать счетчик попыток, если кол-во попыток превышено (превышает число указанное в настройках бота)
Возвращает:

bool — подтверждение назначения заявки следующему исполнителю.

Методы ticket

ticket.moveAssignedPersonToEndOfQueue()

Перенести исполнителя в конец очереди

ticket.moveAssignedPersonToEndOfQueue(int $queueMode = 1, int|null $personQueueId = null, string|null $personQueueTable = null, bool $isResetRejectsCount = true)
Описание:

Используется для скрипта "Приема заявки" в боте, чтобы переместить исполнителя в конец очереди, после того как он принял заявку.

Переносит персону, которой в данный момент назначен тикет, в конец очереди, при этом исполнитель заявки не меняется.

Атрибуты:
Имя Тип Описание
queueMode  int

Режим работы очереди.

Для работы с очередью на основе видов заявок указывать не нужно, будет использовано значение по умолчанию 1;
Для работы с очередью на основе видов очередей указать 2.

personQueueId  int|null id очереди
personQueueTable  string|null Название таблицы-связки для очередей
isResetRejectsCount bool Обновить или нет счетчик попыток у персоны (в очереди исполнителей)
Возвращает:

bool — подтверждение переноса исполнителя.

Методы ticket

ticket.assignToPersonById()

Назначить исполнителя заявки

ticket.assignToPersonById(int|null $personId, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null, int|null $assignAttemptForLog = null)
Описание:

Назначает указанного исполнителя для заявки. Для сброса персоны необходимо указать null в аргументах функции.

Атрибуты:
Имя Тип Описание
personId int|null id персоны-исполнителя
personQueueIdForLog int|null id очереди записываемый в лог
personQueueTableForLog  string|null Название таблицы-связки для очередей записываемое в лог
assignAttemptForLog  int|null Номер попытки прогона одного и того же тикета по той же очереди записываемый в лог
Возвращает:

bool — подтверждение назначения исполнителя.

Методы ticket

ticket.getAssignedPersonRejectsCount()

Получить количество отказов от заявок

ticket.getAssignedPersonRejectsCount(int|null $personQueueId = null, string|null $personQueueTable = null): ?int
Описание:

Возвращает количество отказов от заявок для текущего исполнителя.

Атрибуты:
Имя Тип Описание
personQueueId  int|null id очереди
personQueueTable  string|null Название таблицы-связки для очередей
Возвращает:

int — количество отказов от заявок в формате числа.

Методы ticket

ticket.setAssignedPersonRejectsCount()

Установить количество отказов от заявок

ticket.setAssignedPersonRejectsCount(int $rejectsCount, int|null $personQueueId = null, string|null $personQueueTable = null)
Описание:

Установить количество отказов от заявок для текущего исполнителя.

Атрибуты:
Имя Тип Описание
rejectsCount int Количество отказов
personQueueId  int|null id очереди
personQueueTable  string|null Название таблицы-связки для очередей
Возвращает:

bool — подтверждение успешной установки отказов.

Методы ticket

ticket.incAssignedPersonRejectsCount()

Увеличить количество отказов от заявок

ticket.incAssignedPersonRejectsCount(int|null $personQueueId = null, string|null $personQueueTable = null)
Описание:

Увеличить количество отказов от заявок для текущего исполнителя на 1. Метод не сбрасывает кол-во попыток, если значение будет больше чем указанное в боте максимальное количество отказов.

Атрибуты:
Имя Тип Описание
personQueueId  int|null id очереди
personQueueTable  string|null Название таблицы-связки для очередей
Возвращает:

bool — подтверждение успешного увеличения отказов.

Методы ticket

ticket.assignToNextPersonAndMoveToEnd()

Назначить заявку следующему исполнителю и перенести в конец очереди

ticket.assignToNextPersonAndMoveToEnd()
Описание:

Назначает заявку следующему исполнителю и переносит его в конец очереди.

Возвращает:

bool — подтверждение назначения заявки.

Методы ticket

ticket.getAllData()

Получить значение всех данных заявки

ticket.getAllData()
Описание:

Возвращает значение всех данных заявки.

Возвращает:

array - массив данных заявки:

Методы ticket

ticket.setData()

Установить значение данных заявки по ключу

ticket.setData(string $key, $value)
Описание:

Устанавливает значение данных заявки по ключу.

Атрибуты:
Имя Тип Описание
key string Ключ наименование поля
value mixed Значение данных

В качестве ключа можно указать:

Возвращает:

self - установленные данные.

Методы ticket

ticket.loadCustomDataIfNotLoaded()

Загрузить кастомные данные

ticket.loadCustomDataIfNotLoaded(bool $isReloadModel = false)
Описание:

Загружает кастомные данные, если они не загружены.

Атрибуты:
Имя Тип Описание
isReloadModel bool
Возвращает:

bool - подтверждение загрузки.

Методы ticket

ticket.getSubtotalFormatted()

Узнать форматированную промежуточную стоимость заказа

ticket.getSubtotalFormatted()
Описание:

Возвращает форматированную промежуточную стоимость заказа.

Возвращает:

string - промежуточная стоимость заказа.

Методы ticket

ticket.getTotalFeeFormatted()

Узнать форматированную стоимость заказа

ticket.getTotalFeeFormatted()
Описание:

Возвращает форматированную стоимость заказа.

Возвращает:

string - стоимость заказа.

Методы ticket

ticket.getDeliveryFeeFormatted()

Узнать форматированную стоимость доставки

ticket.getDeliveryFeeFormatted()
Описание:

Возвращает форматированную стоимость доставки.

Возвращает:

string - стоимость доставки.

Методы ticket

ticket.getTotalFormatted()

Узнать форматированную итоговую стоимость заказа

ticket.getTotalFormatted()
Описание:

Возвращает форматированную итоговую стоимость заказа.

Возвращает:

string - итоговая стоимость заказа.

Методы ticket

ticket.getTicketLines()

Получить массив объектов ScriptTicketLine

ticket.getTicketLines()
Описание:

Возвращает массив объектов ScriptTicketLine.

Возвращает:

ScriptTicketLine - массив объектов.

Методы ticketStatuses

Методы ticketStatuses

ticketStatuses.reload()

Перезагрузить все статусы из БД

ticketStatuses.reload()
Описание:

Перезагружает все статусы из БД.

Возвращает:

bool - подтверждение перезагрузки.

Методы ticketStatuses

ticketStatuses.getCollection()

Получить Laravel Collection

ticketStatuses.getCollection()
Описание:

Возвращает коллекцию статусов заявок.

Возвращает:

?Collection - данные статусов в виде коллекции.

Пример:
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

ticketStatuses.find()

Поиск статусов

ticketStatuses.find(array|object|null $where, bool $isReturnCollection = false)
Описание:

Находит статусы соответствующие указанным данным.

Атрибуты:
Имя Тип Описание
where array|object|null Параметр по которому будет проверяться соответствие с найденными статусами
isReturnCollection bool  Параметр позволяющий вернуть значения в виде коллекции
Возвращает:

?ScriptTicketStatus - v8 обертка над моделью

или

Collection - данные статусов в виде коллекции.

Пример:
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

ticketStatuses.findById()

Поиск статуса по ID

ticketStatuses.findById(string|int|null $id)
Описание:

Находит статус соответствующий указанному id.

Атрибуты:
Имя Тип Описание
id string|int|null ID статуса заявки
Возвращает:

?ScriptTicketStatus - v8 обертка над моделью

Пример:
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

ticketStatuses.findByName()

Поиск статуса по имени

ticketStatuses.findByName(string $name)
Описание:

Находит статус соответствующий указанному имени.

Атрибуты:
Имя Тип Описание
name string Имя статуса заявки
Возвращает:

?ScriptTicketStatus - v8 обертка над моделью.

Пример:
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

ticketStatuses.findAllByNames()

Поиск статусов по имени

ticketStatuses.findAllByNames(string|array|object|null $names, string $operator = '=', bool $isReturnCollection = false)
Описание:

Находит статусы соответствующие указанным именам.

Атрибуты:
Имя Тип Описание
names string|array|object|null Имя статуса
operator string Оператор
isReturnCollection bool Параметр позволяющий вернуть значения в виде коллекции
Возвращает:

Collection - данные статусов в виде коллекции.

Пример:
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

ticketStatuses.findAllByTypes()

Поиск статусов по типу статуса

ticketStatuses.findAllByTypes(string|array|object|null $types, string $operator = '=', bool $isReturnCollection = false)
Описание:

Находит статусы соответствующие указанным типам.

Атрибуты:
Имя Тип Описание
types string|array|object|null Тип статуса
operator string Оператор
isReturnCollection bool Параметр позволяющий вернуть значения в виде коллекции

На данный момент поддерживаются следующие типы статусов:

Возвращает:

Collection - данные статусов в виде коллекции.

Пример:
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

person.update()

Обновить персону

person.update($data)
Описание:

Обновляет данные персоны в соответствии с БД.

Атрибуты:
Имя Тип Описание

data

json Данные о персоне в формате json. Возможные поля расписаны ниже

person_role_id

integer Id персоны

is_external

bool

Если не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом.

А 0 означает что персона является работником бизнеса

user_id 

integer Id пользователя, привязываемого к персоне

firstname 

string|null Имя персоны

lastname 

string|null Фамилия персоны

middlename 

string|null Отчество персоны

email 

string|null Адрес электронной почты персоны

phone 

string|null Номер телефона персоны

organization_name

string|null Название организации

organization_address

string|null Адрес организации

comment 

string|null Комментарий к персоне
Возвращает:

bool - подтверждение обновления данных.

Пример:
person.update({
  'is_external': 1,
  'firstname': 'Иван',
  'lastname': 'Иванов'
});

Методы person

person.delete()

Удалить персону

person.delete()
Описание:

Удаляет персону лида.

Возвращает:

bool - подтверждение удаления персоны.

Методы person

person.getAllData()

Получить все поля персоны

person.getAllData()
Описание:

Возвращает значения всех полей персоны лида в виде массива.

Возвращает:

array - массив всех значений полей персоны:

 
Пример:
let AllData = person.getAllData();
let Data2 = AllData[1];

Методы person

person.setData()

Установить поле персоны

person.setData(string $key, $value)
Описание:

Заполняет указанное поле персоны лида указанным значением.

Атрибуты:
Имя Тип Описание

key

string Ключ наименование поля

value

mixed Значение вводимое в поле

В качестве ключа можно указать:

Возвращает:

self - значение отредактированного поля в соответствующем формате.

Пример:
person.setData('email', 'user@mail.ru');

Методы person

person.getData()

Получить значение данных персоны

person.getData(string $key)
Описание:

Возвращает значение данных персоны по ключу или названию поля БД.

Атрибуты:
Имя Тип Описание

key

string Ключ наименование поля

В качестве ключа можно указать:

Возвращает:

self - значение запрашиваемого поля в соответствующем формате.

Пример:
let createdAt = person.getData('created_at');

Методы person

person.issetData() и person.isDataExist()

Проверить наличие данных по персоне

person.issetData(string $key)

или

person.isDataExist(string $key)
Описание:

Проверяет существование данных персоны лида.

Атрибуты:
Имя Тип Описание

key

string Ключ наименование поля

В качестве ключа можно указать:

Возвращает:

bool - подтверждение существования данных.

Пример:
let DataExist = person.issetData('phone');

или

let DataExist = person.isDataExist('phone');

Методы person

person.getId()

Получить ID персоны

person.getId()
Описание:

Возвращает id персоны привязанной к лиду.

Возвращает:

int - id персоны в формате числа.

Пример:
let PersonId = person.getId();
lead.setAttr('PersonId', PersonId);

Методы person

person.getFullName() и person.getFIO()

Получить полное имя персоны

person.getFullName()

person.getFIO()
Описание:

Возвращает полное имя персоны лида в виде Фамилия + Имя + Отчество.

Возвращает:

string - полное имя персоны.

Пример:
let PersonName = person.getFullName();
lead.setAttr('PersonName', PersonName);

Методы person

person.getRoleId()

Получить ID роли персоны

person.getRoleId()
Описание:

Возвращает id роли привязанной к персоне лида.

Возвращает:

int - id роли персоны в формате числа.

Пример:
let RoleId = person.getRoleId();
lead.setAttr('RoleId', RoleId);

Методы person

person.getRoleName()

Получить название роли персоны

person.getRoleName()
Описание:

Возвращает название роли привязанной к персоне лида.

Возвращает:

string - название роли персоны.

Пример:
let RoleName = person.getRoleName();
lead.setAttr('RoleName', RoleName);

Методы person

person.getRoleTitle()

Получить заголовок роли персоны

person.getRoleTitle()
Описание:

Возвращает заголовок роли привязанной к персоне лида.

Возвращает:

string - заголовок роли персоны.

Пример:
let RoleTitle = person.getRoleTitle();
lead.setAttr('RoleTitle', RoleTitle);

Методы person

person.getRoleFormattedTitle()

Получить форматированное название роли персоны

person.getRoleFormattedTitle()
Описание:

Возвращает форматированное название роли персоны лида.

Будет возвращено: 

Возвращает:

string - форматированное название роли персоны.

Пример:
let FormattedTitle = person.getRoleFormattedTitle();
lead.setAttr('FormattedTitle', FormattedTitle);

Методы person

person.getPhone()

Получить номер телефона персоны

person.getPhone()
Описание:

Находит номер телефона персоны лида.

Возвращает:

string - номер телефона персоны в формате строки.

Методы person

person.setPhone()

Установить номер телефона персоны

person.setPhone(?string $phone)
Описание:

Устанавливает значение номера телефона персоны лида.

Атрибуты:
Имя Тип Описание

phone

string Номер телефона
Возвращает:

bool - подтверждение установки значения.

Пример:
person.setPhone('+71234567890');

Методы person

person.getEmail()

Получить почту персоны

person.getEmail()
Описание:

Находит адрес электронной почты персоны лида.

Возвращает:

string - адрес электронной почты персоны в формате строки.

Методы person

person.addToQueue()

Добавление персоны в очередь

person.addToQueue(?int $personQueueId = null, ?string $personQueueTable = null, ?int $ticketTypeId = null, bool $isActive = true, int $rejectsCount = 0)
Описание:

Добавляет персону в указанную очередь.

Атрибуты:
Имя Тип Описание
personQueueId int

ID вида очереди, в которую будет добавлена персона

personQueueTable string

Наименование кастомной таблицы

ticketTypeId int

ID вида заявки, в очередь которой будет добавлена персона

isActive bool

Активность персоны в очереди

rejectsCount int

Количество отказов от заявки

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

Возвращает:

int - id добавленной персоны.

Пример:
person.addToQueue(null, null, 2541);

Методы person

person.removeFromQueue()

Удаление персоны из очереди

person.removeFromQueue(?int $personQueueId = null, ?string $personQueueTable = null, ?int $ticketTypeId = null)
Описание:

Удаляет персону из указанной очереди.

Атрибуты:
Имя Тип Описание
personQueueId int

ID вида очереди

personQueueTable string

Наименование кастомной таблицы

ticketTypeId int

ID вида заявки

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

Возвращает:

bool - подтверждение удаления персоны.

Пример:
person.removeFromQueue(3527, "table");

Методы person

person.moveToEndOfQueue()

Перемещение персоны в конец очереди

person.moveToEndOfQueue(int $queueMode = 1, ?int $personQueueId = null, ?string $personQueueTable = null, ?int $ticketTypeId = null, bool $isResetRejectsCount = true)
Описание:

Перемещает персону в конец указанной очереди, либо в конец нескольких очередей.

Атрибуты:
Имя Тип Описание
queueMode  int

Режим работы очереди.

Для работы с очередью на основе видов заявок указывать не нужно, будет использовано значение по умолчанию 1;
Для работы с очередью на основе видов очередей указать 2

personQueueId  ?int id очереди
personQueueTable  ?string Название таблицы-связки для очередей

ticketTypeIds

int|array|object|null $ticketTypeIds = null, то персона будет перемещена в конец очереди по всем типам заявок;
$ticketTypeIds = число, то персона будет перемещена в конец очереди по указанному типу заявки;
$ticketTypeIds = строка с перечислениями типов заявок через запятую, то персона будет перемещена в конец очереди по указанным типам заявок (например 1,2,3);
$ticketTypeIds = строка без перечислений через запятую, ticketTypeIds будет приведен к типу = число и персона будет перемещена в конец очереди по указанному типу заявки;
$ticketTypeIds = json массив, то персона будет перемещена в конец очереди по всем типам заявок (например [1,2,3])

isResetRejectsCount

bool Обнулить количество отказов персоны
Возвращает:

bool - подтверждение удачного перемещения персоны.

Пример:
person.moveToEndOfQueue(2, 3352, null, [1013]);
persons.moveToEndOfQueue();

Методы person

person.setIsActiveInQueue()

Активация/деактивация персоны в очереди

person.setIsActiveInQueue(bool $isActive = true)
Описание:

Включает или выключает параметр Активна персоны в очереди.

Атрибуты:
Имя Тип Описание

isActive

bool Активировать или деактивировать персону в очереди
Возвращает:

bool - подтверждение активации или деактивации.

Пример:
persons.setIsActiveInQueue(true);

Методы person

person.getLeads()

Получить лиды персоны

person.getLeads(bool $isFindInAllBusinessBots = false)
Описание:

Возвращает лиды персоны.

Атрибуты:
Имя Тип Описание

isFindInAllBusinessBots

bool Поиск по всем ботам бизнеса
Возвращает:

array - массив лидов персоны.

Методы personQueues

Методы personQueues

personQueues.find()

Найти очередь исполнителей

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

personQueues.findById()

Найти очередь исполнителей по id

personQueues.findById(string|int|null $id)
Описание:

Находит очередь исполнителей соответствующую указанному id.

Атрибуты:
Имя Тип Описание

id

string|int|null ID очереди исполнителей
Возвращает:

ScriptPersonQueue[] - обертка вокруг записи из таблицы person_queues.

Атрибуты и методы ScriptPersonQueue

Описание Метод Возвращаемое значение

Получение id

  • .id

  • .getId()

int
Получение кода
  • .code 

  • .getCode()

string
Получение активности
  • .is_enabled

  • .getIsEnabled()

bool
Получение заголовка
  • .title 

  • .getTitle()

string
Получение даты создания
  • .created_at

  • .createdAt

  • .getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)

  • .createdAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)

 string
Получение даты обновления
  • .updated_at

  • .updatedAt

  • .getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)

  • .updatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)

string
Обновление
  • .reload()
bool
Приводит $title к нижнему регистру и сравнивает с заголовком очереди
  • .isSameTitle($title)
bool

Методы personQueues

personQueues.findAllByTitles()

Найти очереди исполнителей по заголовку

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

personQueues.findByCode()

Найти очередь исполнителей по коду

personQueues.findByCode(string $code, bool $isEnabled = null, string $findCodeOperator = '=')
Описание:

Находит очередь исполнителей соответствующую указанному коду.

Атрибуты:
Имя Тип Описание

code

string Код очереди

isEnabled

bool  Активность очереди

findCodeOperator

string  Оператор кода, по умолчанию '='
Возвращает:

ScriptPersonQueue[] - обертка вокруг записи из таблицы person_queues.

Пример:
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

personQueues.findAllByCodes()

Найти очереди исполнителей по коду

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

personQueues.reload()

Обновить очередь исполнителей

personQueues.reload()
Описание:

Обновляет данные очередей исполнителей

Возвращает:

bool - подтверждение обновления очередей.

Методы personQueues

personQueues.getCollection()

Получить коллекцию очередей исполнителей

personQueues.getCollection()
Описание:

Возвращает коллекцию очередей исполнителей.

Возвращает:

Collection - данные очередей в виде коллекции.

Методы personQueues

personQueues.findByName()

Найти очередь исполнителей по наименованию

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

personQueues.findAllByNames()

Найти очереди исполнителей по наименованию

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

table.createItem()

Создание записи

table.createItem(string $tableName, array|object $data)
Описание:

Создает запись в таблице и возвращает значение этой записи, как объект.

Атрибуты:
Имя Тип Описание

tableName

string Наименование таблицы, в которой будет создана запись
data array | object ( json{} ) Значения | значение записи
Возвращает:

ScriptCustomTableItem - все значения полей записи в формате объекта.

Пример:

Добавление данных в кастомную таблицу regions:

var region = {
  "name": "Юго-Восточный",
  "comment": "Cоздано через v8"
};
var newRegion = table.createItem('regions', region);

Методы table

table.find()

Поиск записей

table.find(string $tableName, array|object $columns = [], array|object $where = [], array|object $orderBy = [], ?int $limit = null, ?int $offset = null): array
Описание:

Ищет записи в таблице и возвращает их в виде массива объектов.

Атрибуты:
Имя Тип Описание
tableName string Наименование таблицы, в которой будет найдена запись

columns

array | object ( json{} ) Столбцы которые будут возвращены в ответе. При поиске из основной таблицы указывается только наименование поля, при поиске в связанной таблице указывается в формате: алиас.поле. Если нужно тянуть несколько полей с одинаковыми именами, то указываем алиас результирующего поля, например: 'products.id as product_id'

where

array | object ( json{} ) Условие, которое будет проверяться при поиске

orderBy

array | object ( json{} ) Устанавливает в какой последовательности будут возвращены выходные значения

limit

int Устанавливает максимальное количество возвращенных значений

offset

int Устанавливает смещение

Чтобы обратится к display field который автоматически тянется из RELATION в v8 необходимо указать {алиасТаблицы}_{имяПоля}.
Например, если в RELATION указан алиас products и в display field указано поле name то в результирующую выборку это поле попадает под именем products_name.

Возвращает:

array - массив объектов (найденных записей).

Примеры:

Получение всех регионов (лимит 100):

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 больше двух:

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:

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

table.count()

Подсчет количества записей

table.count(string $tableName, array|object $where = [])
Описание:

Ищет записи соответствующие условию метода в таблице и возвращает их количество.

Атрибуты:
Имя Тип Описание
tableName string Наименование таблицы, в которой будет создана запись
where array | object ( json{} ) Условие, которое будет проверяться при поиске
Возвращает:

int - количество записей в формате числа.

Примеры:

Получение количества всех записей в таблице:

var regionsCount = table.count("regions");
memory.setAttr('regionsCount', regionsCount);

Получение количества записей с id больше 2:

var countRegionIdsGreather2 = table.count("regions", [["id", ">", 2]]);
memory.setAttr('countRegionIdsGreather2', countRegionIdsGreather2);

Методы table

table.sum()

Подсчет суммы по полю

table.sum(string $tableName, string $column, array|object $where = [])
Описание:

Ищет записи соответствующие условию метода в таблице и возвращает сумму их значений.

Атрибуты:
Имя Тип Описание
tableName string Наименование таблицы, в которой будет создана запись
column string Наименование поля из которого будут браться значения
where array | object ( json{} ) Условие, которое будет проверяться при поиске
Возвращает:

int - сумма всех значений поля в виде числа.

Примеры:

Подсчет суммы всех значений записей поля id в таблице regions:

var sumRegionIds = table.sum("regions", 'id');
memory.setAttr('sumRegionIds', sumRegionIds);

Подсчет суммы значений записей поля id в таблице regions с id больше нуля:

var sumRegionIds = table.sum("regions", 'id', [["id", ">", 0]]);
memory.setAttr('sumRegionIds', sumRegionIds);

Методы table

table.max()

Поиск максимального значения по полю

Описание:

Ищет записи соответствующие условию метода в таблице и возвращает наибольшее по значению из них.

Атрибуты:
Имя Тип Описание
tableName string Наименование таблицы, в которой будет создана запись
column string Наименование поля из которого будут браться значения
where array | object ( json{} ) Условие, которое будет проверяться при поиске
Возвращает:

mixed - максимальное среди всех значений поля в том же типе, что в таблице

или

null - если максимальное значение не было найдено.

Примеры:

Нахождение максимального значения в поле id в таблице regions:

var maxRegionId = table.max("regions", 'id');
memory.setAttr('maxRegionId', maxRegionId);

Нахождение максимального значения в поле id в таблице regions с id больше нуля:

var maxRegionId = table.max("regions", 'id', [["id", ">", 0]]);
memory.setAttr('maxRegionId', maxRegionId);

Методы для строки полученной через метод table

Методы для строки полученной через метод table

item.update()

Обновление записи

item.update(array|object $data)
Описание:

Изменяет значение указанной записи item в таблице.

Атрибуты:
Имя Тип Описание
data array | object ( json{} ) Значения | значение записи
Возвращает:

bool - подтверждение удачного изменения записи.

Пример:

Обновление записи item:

var items = table.find('regions');
var item = items[0];

item.update({"name": item.name, "num": 77});

Методы для строки полученной через метод table

item.delete()

Удаление записи

Описание:

Удаляет указанную запись item в таблице.

Возвращает:

bool - подтверждение удачного удаления записи.

Пример:

Удаление всех записей из таблицы:

var items = table.find('regions');

for(var i = 0; i < items.length; i++) {
  items[i].delete();
}


Методы для строки полученной через метод table

item.getDateFormatted()

Получить форматированную дату по названию поля

item.getDateFormatted(string $fieldName, string $toFormat = 'Y-m-d H:i:s', string|null $toTimeZone = null, string|null $fromTimeZone = null)
Описание:

Возвращает значение даты измененного формата из запрашиваемого поля.

Атрибуты:
Имя Тип Описание
fieldName string Наименование поля из которого будет браться значение
toFormat string

Формат даты, например: 'Y-m-d H:i:s' (Y - год;

 m - месяц;

 d - день;

 H - часы;

 i - минуты;

 s - секунды.)

toTimeZone string|null Часовой пояс в ответе
fromTimeZone string|null Часовой пояс в запросе
Возвращает:

string 

или

null - если дата не требует форматирования.

Пример:

Возвращает значение даты измененного формата из поля create:

var date = item.getDateFormatted('create', 'd-m-Y H:i:s', 'Y-m-d H', 'UTC', '+3');

Методы для строки полученной через метод table

item.getDateFormattedString()

Получить форматированную дату из произвольной строки

item.getDateFormattedString(string $date, string $toFormat = 'Y-m-d H:i:s', string|null $fromFormat = 'Y-m-d H:i:s', string|null $toTimeZone = null, string|null $fromTimeZone = null)
Описание:

Меняет формат введенной даты.

Атрибуты:
Имя Тип Описание
date string

Дата

toFormat string

Формат даты в ответе, например:

'Y-m-d H:i:s'

(Y - год;

 m - месяц;

 d - день;

 H - часы;

 i - минуты;

 s - секунды.)

fromFormat string|null

Формат даты в запросе

toTimeZone string|null Часовой пояс в ответе
fromTimeZone string|null Часовой пояс в запросе
Возвращает:

string 

или

null - если дата не требует форматирования.

Пример:
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

Методы для строки полученной через метод table

item.reload()

Перезагрузить данные записи из бд

item.reload()
Описание:

Перезагружает значение записи из бд в таблицу.

Возвращает:

bool - подтверждение удачной перезагрузки записи.

Пример:

Перезагрузка всех записей таблицы:

var items = table.find('regions');

for(var i = 0; i < items.length; i++) {
  items[i].reload();
}

Методы для строки полученной через getLastRequest

Методы для строки полученной через 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 запроса

Методы для строки полученной через getLastRequest

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

api.request()

Выполнить HTTP запрос

api.request(string $method, string $uri, $requestOptions = [], $httpClientConfig = [], $body = null, $jsonBody = null, $headers = [], bool $isForceAddJsonHeaders = false)
Описание:

Выполняет HTTP запрос, с помощью Guzzle.

Атрибуты:
Имя Тип Описание
method string Метод запроса
uri string Url запроса
requestOptions array|object Опции запроса
httpClientConfig array|object Набор параметров для включения или выключения различных возможностей Http Client
body array|object|string|null Тело запроса
jsonBody array|object|null JSON тело запроса
headers array|object Заголовки запроса
isForceAddJsonHeaders bool  Добавление заголовков Json
Возвращает:

mixed — ответ запроса

или

ResponseInterface — объект Response

или

null — если таких данных не существует.

Методы api

api.post()

Выполнить HTTP POST запрос

api.post(string $uri, $body = [], $requestOptions = [], $headers = [], $httpClientConfig = [])
Описание:

Выполняет HTTP POST запрос, с помощью Guzzle.

Атрибуты:
Имя Тип Описание
uri string Url запроса
requestOptions array|object Опции запроса
httpClientConfig array|object Набор параметров для включения или выключения различных возможностей Http Client
body array|object|null Тело запроса
headers array|object Заголовки запроса
Возвращает:

string — ответ запроса в формате строки

или

null — если таких данных не существует.

Методы api

api.get()

Выполнить HTTP GET запрос

api.get(string $uri, $requestOptions = [], $headers = [], $httpClientConfig = [])
Описание:

Выполняет HTTP GET запрос, с помощью Guzzle.

Атрибуты:
Имя Тип Описание
uri string Url запроса
requestOptions array|object Опции запроса
httpClientConfig array|object Набор параметров для включения или выключения различных возможностей Http Client
headers array|object Заголовки запроса
Возвращает:

string — ответ запроса в формате строки

или

null — если таких данных не существует.

Методы api

api.getJson()

Выполнить HTTP GET запрос

api.getJson(string $uri, $jsonBody = null, $headers = [], $requestOptions = [], $httpClientConfig = [])
Описание:

Выполняет HTTP GET запрос с jsonBody, с помощью Guzzle.

Атрибуты:
Имя Тип Описание
uri string Url запроса
requestOptions array|object Опции запроса
httpClientConfig array|object Набор параметров для включения или выключения различных возможностей Http Client
jsonBody array|object|null Json тело запроса
headers array|object Заголовки запроса
Возвращает:

array — ответ запроса в формате массива

или

null — если таких данных не существует.

Методы api

api.postJson()

Выполнить HTTP POST запрос

api.postJson(string $uri, $jsonBody = [], $headers = [], $requestOptions = [], $httpClientConfig = [])
Описание:

Выполняет HTTP POST запрос с jsonBody, с помощью Guzzle.

Атрибуты:
Имя Тип Описание
uri string Url запроса
requestOptions array|object Опции запроса
httpClientConfig array|object Набор параметров для включения или выключения различных возможностей Http Client
jsonBody array|object Json тело запроса
headers array|object Заголовки запроса
Возвращает:

array — ответ запроса в формате массива

или

null — если таких данных не существует.

Методы api

api.getHttpConfig()

Получить HTTP Config

api.getHttpConfig()
Описание:

Возвращает HTTP Config.

Возвращает:

array — HTTP Config в формате массива.

Методы api

api.setHttpConfig()

Установить HTTP Config

api.setHttpConfig($config)
Описание:

Устанавливает HTTP Config.

Атрибуты:
Имя Тип Описание
config array|object|string HTTP Config
Возвращает:

array — HTTP Config в формате массива.

Методы api

api.getRequestOptions()

Получить параметры HTTP запроса

api.getRequestOptions()
Описание:

Возвращает параметры HTTP запроса.

Возвращает:

array — параметры HTTP запроса в формате массива.

Методы api

api.setRequestOptions()

Установить параметры HTTP запроса

api.setRequestOptions($options)
Описание:

Устанавливает параметры HTTP запроса.

Атрибуты:
Имя Тип Описание
options array|object|string Параметры HTTP запроса
Возвращает:

array — параметры HTTP запроса в формате массива.

Методы api

api.getHeaders()

Получить заголовки HTTP запроса

api.getHeaders()
Описание:

Возвращает заголовки HTTP запроса.

Возвращает:

array — заголовки HTTP запроса в формате массива.

Методы api

api.setHeaders()

Установить заголовки HTTP запроса

api.setHeaders($headers)
Описание:

Устанавливает заголовки HTTP запроса.

Атрибуты:
Имя Тип Описание
headers array|object Заголовки HTTP запроса
Возвращает:

array — заголовки HTTP запроса в формате массива.

Методы api

api.getProxyUrl()

Получить Proxy Url HTTP запроса

api.getProxyUrl()
Описание:

Возвращает Proxy Url HTTP запроса.

Возвращает:

string — Proxy Url HTTP запроса в формате строки

или

null — если данные не найдены.

Методы api

api.setProxyUrl()

Установить Proxy Url HTTP запроса

api.setProxyUrl($proxyUrl)
Описание:

Устанавливает Proxy Url HTTP запроса.

Атрибуты:
Имя Тип Описание
proxyUrl string Proxy Url HTTP запроса
Возвращает:

string — Proxy Url HTTP запроса в формате строки

или

null — если данные не найдены.

Методы api

api.getLastResponseCode()

Получить код последнего ответа HTTP запроса

api.getLastResponseCode()
Описание:

Возвращает код последнего ответа HTTP запроса.

Возвращает:

int — код ответа HTTP запроса.

Методы api

api.getLastResponseContent()

Получить содержимое последнего ответа HTTP запроса

api.getLastResponseContent()
Описание:

Возвращает содержимое последнего ответа HTTP запроса.

Возвращает:

string — содержимое ответа HTTP запроса

или

null — если данные не найдены.

Методы api

api.getLastJsonResponse()

Получить последний ответ HTTP запроса в формате JSON

api.getLastJsonResponse()
Описание:

Возвращает последний ответ HTTP запроса в формате JSON.

Возвращает:

array — ответ HTTP запроса в формате JSON

или

null — если данные не найдены.

Методы api

api.getLastResponse()

Получить последний ответ HTTP запроса

api.getLastResponse()
Описание:

Возвращает последний ответ HTTP запроса.

Возвращает:

mixed — ответ HTTP запроса

или

ResponseInterface — ответ HTTP запроса

или

null — если данные не найдены.

Методы api

api.setTimeout()

Установить время задержки для HTTP запросов

api.setTimeout(float $timeout)
Описание:

Устанавливает время задержки для HTTP запросов.

Атрибуты:
Имя Тип Описание
timeout float Время задержки
Возвращает:

float — время задержки.

Методы api

api.getTimeout()

Получить время задержки для HTTP запросов

api.getTimeout()
Описание:

Возвращает время задержки для HTTP запросов.

Возвращает:

float — время задержки.

Методы api

api.isExceptionThrown()


api.isExceptionThrown()
Описание:
Возвращает:

bool — .

Методы api

api.getLastResponseTime()

Получить время последнего ответа HTTP запроса

api.getLastResponseTime()
Описание:

Возвращает время последнего ответа HTTP запроса.

Возвращает:

float — время ответа.

Методы api

api.getLastErrorBody()

Получить содержимое ошибки последнего ответа HTTP запроса

api.getLastErrorBody(bool $isAutoConvertToJson = true)
Описание:

Возвращает содержимое ошибки последнего ответа HTTP запроса.

Атрибуты:
Имя Тип Описание
isAutoConvertToJson bool Конвертация в Json
Возвращает:

string — содержимое ошибки в формате строки

или

array — содержимое ошибки в формате массива

или

null — если данные не найдены.

Методы api

api.callEndpoint()

Вызвать внешнее 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
)
Описание:

Вызывает внешнее API из чат-бота.

Атрибуты:
Имя Тип Описание
externalApiEndpointCode string Внешний код эндпоинта
uri string|null Url запроса
method string|null Метод запроса
format string|null Формат запроса
body array|object|string|null Тело запроса
headers array|object|string|null Заголовки запроса
requestOptions array|object|string|null Параметры запроса
httpClientConfig array|object|string|null Набор параметров для включения или выключения различных возможностей Http Client
proxyUrl string|null Proxy Url HTTP запроса
Возвращает:

string — ответ запроса в формате строки

или

array — ответ запроса в формате массива

или

null — если данные не найдены.

Методы api

api.enableExceptions()

Включить исключения для HTTP запросов

api.enableExceptions()
Описание:

Включает исключения для HTTP запросов.

Возвращает:

self — включение исключений.

Методы api

api.disableExceptions()

Выключить исключения для HTTP запросов

api.disableExceptions()
Описание:

Выключает исключения для HTTP запросов.

Возвращает:

self — выключение исключений.

Методы api

api.enableContinueCallEndpointOnJsError()

Включить вызов эндпоинта при ошибке JS

api.enableContinueCallEndpointOnJsError()
Описание:

Включает вызов эндпоинта при ошибке JS.

Возвращает:

self — включение вызова.

Методы api

api.disableContinueCallEndpointOnJsError()

Выключить вызов эндпоинта при ошибке JS

api.disableContinueCallEndpointOnJsError()
Описание:

Выключает вызов эндпоинта при ошибке JS.

Возвращает:

self — выключение вызова.

Методы api

api.getIsContinueCallEndpointOnJsError()

Получить режим вызова эндпоинта при ошибке JS

api.getIsContinueCallEndpointOnJsError()
Описание:

Возвращает режим вызова эндпоинта при ошибке JS.

Возвращает:

bool — режим вызова.

Методы memory

Методы memory

memory.setAttr()

Установить значение временной переменной

memory.setAttr(string $key, string $value)
Описание:

Обновляет значение уже существующей временной переменной или создает новую переменную с указанным значением.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
value string Значение переменной
Возвращает:

self - объект того же типа, в данном случае переменную, которая была создана.

Пример:
let memory = "Значение переменной лида";
let memory_attribute = memory.setAttr('memory_attribute', memory);
Методы memory

memory.getAttr()

Получить значение временной переменной

memory.getAttr(string $key)
Описание:

Возвращает значение уже существующей временной переменной.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
Возвращает:

stringзначение запрашиваемой переменной в виде строки

или

null - если переменная не была найдена.

Пример:
let memory_attribute_value = memory.getAttr('memory_attribute');
Методы memory

memory.getIntAttr()

Получить значение числовой временной переменной

memory.getIntAttr(string $key, ?int|null $default = 0)
Описание:

Возвращает значение уже существующей числовой временной переменной.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
default int Дефолтное значение переменной
Возвращает:

int числовое значение запрашиваемой переменной

или

null - если переменная не была найдена.

Пример:
let memory_attribute_value = memory.getIntAttr('memory_attribute', 2);
Методы memory

memory.getFloatAttr()

Получить значение временной float переменной лида

memory.getFloatAttr(string $key, ?float|null $default = 0.0)
Описание:

Возвращает значение уже существующей временной float переменной лида.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
default float Дефолтное значение
Возвращает:

float - значение запрашиваемой float переменной

или

null - если переменная не была найдена.

Пример:
let memory_attribute_value = memory.getFloatAttr('memory_attribute', 0.1);
Методы memory

memory.getBoolAttr()

Получить значение временной bool переменной

memory.getBoolAttr(string $key, ?bool|null $default = false)
Описание:

Возвращает значение уже существующей временной bool переменной.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
default bool Дефолтное значение
Возвращает:

bool - значение запрашиваемой bool переменной

или

null - если переменная не была найдена.

Пример:
let memory_attribute_value = memory.getBoolAttr('memory_attribute', true);
Методы memory

memory.issetAttr() и memory.isAttrExist()

Проверить наличие временной переменной

memory.issetAttr(string $key)

или

memory.isAttrExist(string $key)
Описание:

Проверяет существует ли временной переменная.

Атрибуты:
Имя Тип Описание
key string Наименование переменной

Возвращает:

bool - подтверждение существования переменной.

Пример:

Проверка двумя способами существования переменной лида memory_attribute:

let memory_exists = memory.issetAttr('memory_attribute');
let memory_altexists = memory.isAttrExist('memory_attribute');
Методы memory

memory.setAllJsonAttrs()

Установить значение всех временных JSON переменных

memory.setAllJsonAttrs(array $data)

Описание:

Устанавливает значение всех временных JSON переменных.

Атрибуты:
Имя Тип Описание
data array JSON значение переменной
Возвращает:

self - объект того же типа и значения, что задан в методе.

Пример:
let memory_attribute_value = memory.setAllJsonAttrs({
  													"id": 2415,
  													"name": "Имя"
													});
Методы memory

memory.getAllJsonAttrs()

Получить значение всех временных JSON переменных

memory.getAllJsonAttrs()

Описание:

Возвращает значение всех временных JSON переменных.

Возвращает:

array - массив JSON переменных.

Пример:
let memory_attribute_value = memory.getAllJsonAttrs();
Методы memory

memory.setJsonAttr()

Установить значение временной JSON переменной

memory.setJsonAttr(string $key, $value)

Описание:

Устанавливает значение временной JSON переменной.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
value mixed JSON значение переменной
Возвращает:

self - объект того же типа и значения, что задан в методе.

Пример:
let memory_attribute_value = memory.setJsonAttr('memory_attribute', {
  																	"id": 2415,
  																	"name": "Имя"
																	});
Методы memory

memory.getJsonAttr()

Получить значение временной JSON переменной

memory.getJsonAttr(string $key)
Описание:

Возвращает значение уже существующей временной JSON переменной.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
Возвращает:

mixed - значение запрашиваемой JSON переменной

или

null - если переменная не была найдена.

Пример:
let memory_attribute_value = memory.getJsonAttr('memory_attribute');
Методы memory

memory.issetJsonAttr() и memory.isJsonAttrKeyExist()

Проверить наличие временной JSON переменной

memory.issetJsonAttr(string $key)

и

memory.isJsonAttrKeyExist(string $key)

Описание:

Проверяет наличие временной JSON переменной.

Атрибуты:
Имя Тип Описание
key string Наименование переменной
Возвращает:

bool - подтверждение существования переменной.

Пример:
let memory_attribute_value = memory.issetJsonAttr('memory_attribute');

или

let memory_attribute_value = memory.isJsonAttrKeyExist('memory_attribute');

Примеры использования методов

Примеры использования методов

Использование методов блокировок

Ниже представлен JS скрипт на примере которого будет рассмотрена работа с методами блокировок.

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('Дополнительно, почистили все блокировки созданные в данном скрипте, на случай, если что-то забыли...')
Примеры использования методов

Использование методов работы с файлами

Ниже представлен JS скрипт на примере которого будет рассмотрена работа с файлами.

// ---------------------------------------------------------------------------------------------------
// ПОДГОТОВКА КОМПОНЕНТА, ПЕРЕЧИСЛЕНИЕ ВСЕХ ПАРАМЕТРОВ
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 = "<b>Изображение не распознано</b>" +
    "\r\n\r\n<i>Повторите попытку...</i>"

// Текст отправляемый в случае успешного сохранения фото
// для вычисления используйте функцию this.calcSuccessMessage()
imageUploader.params.success_message = null

//imageUploader.params.success_message = "<b>Изображение распознано</b>" +
//    "\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 = "<b>Отправьте ваше фото</b>"+
    (maxFileSizeMb > 0 ? ("\r\n\r\n<i>Размер фото: не более " + maxFileSizeMb + " Мб</i>") : "") +
    (minImageWidth > 0 ? ("\r\n<i>Ширина: не менее " + minImageWidth + " px</i>") : "") +
    (minImageHeight > 0 ? ("\r\n<i>Высота: не менее " + minImageHeight + " px</i>") : "")

  return msg
}

imageUploader.calcSuccessMessage = function() {
  return "<b>Изображение распознано</b>" +
    "\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" +
    '<b>При отправке фото через Telegram включите галку "Сжать изображение"</b>' +
    "\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 = "<b>Ваше фото успешно загружено</b>\r\n<a href='" + newImageUrl + "'>Ссылка на загруженное фото</a>"
  // Вариант: Для отправки отдельно фото и отдельно сообщения с меню
  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.

bot.runScriptByCodeForPerson(
      'sentTicketNotification', 
      personId,
      null, 
      false,
      {
        script_request_params: {
          requestId: 86824,
          externalId: 12382
        },
      }
);

В вызываемом скрипте данные параметры могут быть использованы следующим образом:

let Text = "Вам поступила заявка № "+ request.json.requestId +
           " от заказчика с ID "+ request.json.externalId;


Методы ScriptTicketLine

Методы ScriptTicketLine

ScriptTicketLine.reload()

Обновить данные по строке заявки из бд

ScriptTicketLine.reload()
Описание:

Обновляет данные по строке заявки из бд.

Возвращает:

bool - подтверждение обновления данных.

Методы ScriptTicketLine

ScriptTicketLine.getId()

Получить id ScriptTicketLine

ScriptTicketLine.getId()
Описание:

Возвращает id ScriptTicketLine.

Возвращает:

int - если значение найдено

или

null - если значение не найдено.

Методы ScriptTicketLine

ScriptTicketLine.getTicketId()

Получить id заявки

ScriptTicketLine.getTicketId()
Описание:

Возвращает id заявки.

Возвращает:

int - id заявки

или

null - если значение не найдено.

Методы ScriptTicketLine

ScriptTicketLine.getProductId()

Получить id продукта заявки

ScriptTicketLine.getProductId()
Описание:

Возвращает id продукта заявки.

Возвращает:

int - id продукта заявки

или

null - если значение не найдено.

Методы ScriptTicketLine

ScriptTicketLine.getProduct()

Получить все данные продукта заявки

ScriptTicketLine.getProduct()
Описание:

Возвращает все данные продукта заявки.

Возвращает:

ScriptProduct - данные продукта заявки

или

null - если значение не найдено.

Методы ScriptTicketLine

ScriptTicketLine.getQuantity()

Получить количество продукта в заявке

ScriptTicketLine.getQuantity()
Описание:

Возвращает количество продукта в заявке.

Возвращает:

int - количество продукта в заявке

или

null - если значение не найдено.

Методы ScriptTicketLine

ScriptTicketLine.getPrice()

Получить цену продукта в заявке

ScriptTicketLine.getPrice()
Описание:

Возвращает цену продукта в заявке.

Возвращает:

float - цена продукта в заявке.

Методы ScriptTicketLine

ScriptTicketLine.getPriceFormatted()

Получить форматированную цену продукта

ScriptTicketLine.getPriceFormatted()
Описание:

Возвращает форматированную цену продукта в заявке.

Возвращает:

string - форматированная цена продукта.

Методы ScriptTicketLine

ScriptTicketLine.getFee()

Получить стоимость заявки

ScriptTicketLine.getFee()
Описание:

Возвращает стоимость заявки.

Возвращает:

float - стоимость заявки.

Методы ScriptTicketLine

ScriptTicketLine.getFeeFormatted()

Получить форматированную стоимость заявки

ScriptTicketLine.getFeeFormatted()
Описание:

Возвращает форматированную стоимость заявки.

Возвращает:

string - форматированная стоимость заявки.

Методы ScriptTicketLine

ScriptTicketLine.getSubtotal()

Получить итоговую стоимость заявки

ScriptTicketLine.getSubtotal()
Описание:

Возвращает итоговую стоимость заявки.

Возвращает:

float - итоговая стоимость заявки.

Методы ScriptTicketLine

ScriptTicketLine.getSubtotalFormatted()

Получить форматированную итоговую стоимость заявки

ScriptTicketLine.getSubtotalFormatted()
Описание:

Возвращает форматированную итоговую стоимость заявки.

Возвращает:

string - форматированная итоговая стоимость заявки.

Методы ScriptTicketLine

ScriptTicketLine.getPriceDateFormatted() и ScriptTicketLine.priceDateFormatted()

Возвратить дату создания заявки указанном форматировании

ScriptTicketLine.getPriceDateFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)

или

ScriptTicketLine.priceDateFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
Описание:

Возвращает дату создания заявки в указанном форматировании.

Атрибуты:
Имя Тип Описание
format string Формат даты
timeZone string|null Часовой пояс
Возвращает:

string - дата создания заявки

или

 

null - если значение не найдено.

Методы ScriptTicketLine

ScriptTicketLine.getCreatedAtFormatted() и ScriptTicketLine.createdAtFormatted()

Возвратить форматированную дату создания заказа

ScriptTicketLine.getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)

или

ScriptTicketLine.createdAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
Описание:

Возвращает форматированную дату создания заказа.

Атрибуты:
Имя Тип Описание
format string Формат даты
timeZone string|null Часовой пояс
Возвращает:

string - дата создания заявки

или

 

null - если значение не найдено.

Методы ScriptTicketLine

ScriptTicketLine.getUpdatedAtFormatted() и ScriptTicketLine.updatedAtFormatted()

Возвратить форматированную дату обновления заказа

ScriptTicketLine.getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)

или

ScriptTicketLine.updatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
Описание:

Возвращает форматированную дату обновления заказа.

Атрибуты:
Имя Тип Описание
format string Формат даты
timeZone string|null Часовой пояс
Возвращает:

string - дата обновления заявки

или

 

null - если значение не найдено.

Методы ScriptTicketLine

ScriptTicketLine.getDeletedAtFormatted() и ScriptTicketLine.deletedAtFormatted()

Возвратить форматированную дату удаления заказа

ScriptTicketLine.getDeletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)

или

ScriptTicketLine.deletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
Описание:

Возвращает форматированную дату удаления заказа.

Атрибуты:
Имя Тип Описание
format string Формат даты
timeZone string|null Часовой пояс
Возвращает:

string - дата удаления заявки

или

 

null - если значение не найдено.

Методы ScriptProduct

Методы ScriptProduct

ScriptProduct.reload()

Обновить данные по продукту из бд

ScriptProduct.reload()
Описание:

Обновляет данные по продукту из бд.

Возвращает:

bool - если значение найдено.

Методы ScriptProduct

ScriptProduct.getId()

Получить id продукта

ScriptProduct.getId()
Описание:

Возвращает id продукта.

Возвращает:

int - id продукта

или

null - если значение не найдено.

Методы ScriptProduct

ScriptProduct.getTitle()

Получить наименование продукта

ScriptProduct.getTitle()
Описание:

Возвращает наименование продукта.

Возвращает:

string - наименование продукта

или

null - если значение не найдено.

Методы ScriptProduct

ScriptProduct.getCode()

Получить код продукта

ScriptProduct.getCode()
Описание:

Возвращает код продукта.

Возвращает:

string - код продукта

или

null - если значение не найдено.

Методы ScriptProduct

ScriptProduct.getPrice()

Получить цену продукта

ScriptProduct.getPrice()
Описание:

Возвращает цену продукта.

Возвращает:

float - цена продукта

или

null - если значение не найдено.

Методы ScriptProduct

ScriptProduct.getMainCategoryId()

Получить id категории продукта

ScriptProduct.getMainCategoryId()
Описание:

Возвращает id категории продукта.

Возвращает:

int - id категории продукта

или

null - если значение не найдено.

Методы ScriptProduct

ScriptProduct.getIsEnabled()

Проверить активен ли продукт

ScriptProduct.getIsEnabled()
Описание:

Проверяет активен ли продукт.

Возвращает:

bool - подтверждение активности

или

null - если значение не найдено.

Методы ScriptProduct

ScriptProduct.getIsAvailableInStock()

Проверить есть ли продукт в наличии

ScriptProduct.getIsAvailableInStock()
Описание:

Проверяет есть ли продукт в наличии.

Возвращает:

bool - подтверждения наличия продукта

или

null - если значение не найдено.

Методы ScriptProduct

ScriptProduct.getUrl()

Получить url продукта

ScriptProduct.getUrl()
Описание:

Возвращает url продукта.

Возвращает:

string - url продукта

или

null - если значение не найдено.

Методы ScriptProduct

ScriptProduct.getThumbUrl()

Получить thumb url продукта

ScriptProduct.getThumbUrl()
Описание:

Возвращает thumb url продукта.

Возвращает:

string - thumb url продукта

или

null - если значение не найдено.

Методы ScriptProduct

ScriptProduct.getPriceFormatted()

Получить форматированную цену продукта

ScriptProduct.getPriceFormatted()
Описание:

Возвращает форматированную цену продукта.

Возвращает:

string - форматированная цена продукта

или

null - если значение не найдено.

Методы ScriptProduct

ScriptProduct.getCreatedAtFormatted() и ScriptProduct.createdAtFormatted()

Возвратить форматированную дату создания продукта

ScriptProduct.getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)

или

ScriptProduct.createdAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
Описание:

Возвращает форматированную дату создания продукта.

Атрибуты:
Имя Тип Описание
format string Формат даты
timeZone string|null Часовой пояс
Возвращает:

string - дата создания продукта

или

 

null - если значение не найдено.

Методы ScriptProduct

ScriptProduct.updatedAtFormatted() и ScriptProduct.getUpdatedAtFormatted()

Возвратить форматированную дату обновления продукта

ScriptProduct.updatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)

или

ScriptProduct.getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
Описание:

Возвращает форматированную дату обновления продукта.

Атрибуты:
Имя Тип Описание
format string Формат даты
timeZone string|null Часовой пояс
Возвращает:

string - дата обновления продукта

или

 

null - если значение не найдено.

Методы ScriptProduct

ScriptProduct.getDeletedAtFormatted() и ScriptProduct.deletedAtFormatted()

Возвратить форматированную дату удаления продукта

ScriptProduct.getDeletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)

или

ScriptProduct.deletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
Описание:

Возвращает форматированную дату удаления продукта.

Атрибуты:
Имя Тип Описание
format string Формат даты
timeZone string|null Часовой пояс
Возвращает:

string - дата удаления продукта

или

 

null - если значение не найдено.

Методы ticketStatus

Методы ticketStatus

ticketStatus.reload()

Перезагрузить статус в БД

ticketStatus.reload()
Описание:

Перезагружает статус в БД.

Возвращает:

bool - подтверждение перезагрузки

или

null - если значение не найдено.

Методы ticketStatus

ticketStatus.getId()

Получить id статуса

ticketStatus.getId()
Описание:

Возвращает id статуса.

Возвращает:

int - id статуса

или

null - если значение не найдено.

Методы ticketStatus

ticketStatus.getName()

Получить наименование статуса

ticketStatus.getName()
Описание:

Возвращает наименование статуса.

Возвращает:

string - наименование статуса.

Методы ticketStatus

ticketStatus.getType()

Получить тип статуса

ticketStatus.getType()
Описание:

Возвращает тип статуса.

Возвращает:

string - тип статуса

или

null - если значение не найдено.

Методы ticketStatus

ticketStatus.getOrderPos()

Получить значение статуса

ticketStatus.getOrderPos()
Описание:

Возвращает значение статуса.

Возвращает:

int - значение статуса.

Методы ticketStatus

ticketStatus.isSameStatusName()

Проверить наименование статуса на сходство

ticketStatus.isSameStatusName($statusName)
Описание:

Проверяет наименование статуса на сходство.

Атрибуты:
Имя Тип Описание
statusName string Наименование статуса
Возвращает:

bool - подтверждение сходства.

Методы ticketStatus

ticketStatus.getCreatedAtFormatted() и ticketStatus.createdAtFormatted()

Возвратить форматированную дату создания статуса

ticketStatus.getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)

или

ticketStatus.createdAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
Описание:

Возвращает форматированную дату создания статуса.

Атрибуты:
Имя Тип Описание
format string Формат даты
timeZone string|null Часовой пояс
Возвращает:

string - форматированная дата создания статуса

или

 

null - если значение не найдено.

Методы ticketStatus

ticketStatus.getUpdatedAtFormatted() и ticketStatus.getUpdatedAtFormatted()

Возвратить форматированную дату обновления статуса

ticketStatus.getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)

или

ticketStatus.updatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
Описание:

Возвращает форматированную дату обновления статуса.

Атрибуты:
Имя Тип Описание
format string Формат даты
timeZone string|null Часовой пояс
Возвращает:

string - форматированная дата обновления статуса

или

 

null - если значение не найдено.

Методы ticketStatus

ticketStatus.getDeletedAtFormatted() и ticketStatus.deletedAtFormatted()

Возвратить форматированную дату удаления статуса

ticketStatus.getDeletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)

или

ticketStatus.deletedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
Описание:

Возвращает форматированную дату удаления статуса.

Атрибуты:
Имя Тип Описание
format string Формат даты
timeZone string|null Часовой пояс
Возвращает:

string - форматированная дата удаления статуса

или

 

null - если значение не найдено.

Методы personQueue

Методы personQueue

personQueue.getId()

Получить id очереди персон

personQueue.getId()
Описание:

Возвращает id очереди персон.

Возвращает:

int - id очереди персон.

Методы personQueue

personQueue.getCode()

Получить код очереди персон

personQueue.getCode()
Описание:

Возвращает код очереди персон.

Возвращает:

string - код очереди персон.

Методы personQueue

personQueue.getIsEnabled()

Проверить активна ли очередь персон

personQueue.getIsEnabled()
Описание:

Проверяет активна ли очередь персон.

Возвращает:

bool - подтверждение активности.

Методы personQueue

personQueue.getName()

Получить наименование очереди персон

personQueue.getName()
Описание:

Возвращает наименование очереди персон.

Возвращает:

string - id статуса.

Методы personQueue

personQueue.isSameName()

Проверить наименование очереди персон на сходство

personQueue.isSameName($name)
Описание:

Проверяет наименование очереди персон на сходство.

Атрибуты:
Имя Тип Описание
name string Наименование очереди персон
Возвращает:

bool - подтверждение сходства.

Методы personQueue

personQueue.getCreatedAtFormatted() и personQueue.createdAtFormatted()

Возвратить форматированную дату создания очереди персон

personQueue.createdAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)

или

personQueue.getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
Описание:

Возвращает форматированную дату создания очереди персон.

Атрибуты:
Имя Тип Описание
format string Формат даты
timeZone string|null Часовой пояс
Возвращает:

string - дата создания очереди

или

 

null - если значение не найдено.

Методы personQueue

personQueue.getUpdatedAtFormatted() и personQueue.updatedAtFormatted()

Возвратить форматированную дату обновления очереди персон

personQueue.getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)

или

personQueue.updatedAtFormatted(string $format = 'Y-m-d H:i:s', string|null $timeZone = null)
Описание:

Возвращает форматированную дату обновления очереди персон.

Атрибуты:
Имя Тип Описание
format string Формат даты
timeZone string|null Часовой пояс
Возвращает:

string - дата обновления очереди персон

или

 

null - если значение не найдено.