07. Справочник по функциям JS
Руководство по функциям JavaScript для Metabot
- Справочник всех функций
- Подробное описание сложных методов
- Методы bot
- bot.getData()
- bot.findLeads()
- bot.scheduleScript()
- bot.getScriptIdByName()
- bot.getScriptIdByCode()
- bot.runScriptForLead()
- bot.runScriptByNameForLead()
- bot.runScriptForPerson()
- bot.runScriptByNameForPerson()
- bot.runScriptByCodeForLead()
- bot.runScriptByCodeForPerson()
- bot.clearJobsByScriptId()
- bot.clearJobsByScriptName()
- bot.clearJobsByScriptCode()
- bot.setAttr()
- bot.getAttr()
- bot.getAllAttr()
- bot.issetAttr() и bot.isAttrExist()
- bot.scheduleTrigger()
- bot.runTriggerByCodeForLead()
- bot.runTriggerByCodeForPerson()
- bot.clearTriggerJobsForLead()
- bot.clearTriggerJobsForAllPersonLeads()
- bot.getTriggerIdByName()
- bot.getTriggerIdByCode()
- bot.runTriggerForLead()
- bot.runTriggerByNameForLead()
- bot.runTriggerForPerson()
- bot.runTriggerByNameForPerson()
- bot.clearTriggerJobsById()
- bot.clearTriggerJobsByName()
- bot.clearTriggerJobsByScriptCode()
- bot.clearTriggerJobsByIdForTicket()
- bot.clearTriggerJobsByNameForTicket()
- bot.scheduleBroadcast()
- bot.scheduleBroadcastByCode()
- bot.getBroadcastIdByCode()
- bot.getForwardEventType()
- bot.isForwardedToOperator()
- bot.createTicket()
- bot.updateTicketById()
- bot.getMaxRejectsTicketCount()
- bot.findTickets()
- bot.findTicketIdByCustomField()
- bot.getTicketTypeIdByName()
- bot.getTicketStatusIdByName()
- bot.setCurrentTicketById()
- bot.clearTicketAssignedPersonsLog()
- bot.createPerson()
- bot.findPersons()
- bot.updatePersonById()
- bot.deletePersonById()
- bot.getIntegrationIdByCode()
- bot.getEnabledIntegrationIdByCode()
- bot.isEnabledIntegrationById()
- bot.isEnabledIntegrationByCode()
- bot.getLockNameForBot()
- bot.getLockNameForBusiness()
- bot.waitForBusinessLock()
- bot.waitForBotLock()
- bot.releaseAllCurrentLocks()
- bot.releaseCurrentLockForBusiness()
- bot.releaseCurrentLockForBot()
- bot.releaseLockForBusiness()
- bot.releaseLockForBot()
- bot.hasLockForBot()
- bot.hasLockForBusiness()
- bot.getForwardEventType()
- bot.canAutoForward()
- bot.scheduleJob()
- bot.getIncomingMessage()
- bot.getWebhookJobId()
- bot.getWebhookJob()
- bot.getWebhookPayload()
- bot.getLastResultPayload()
- bot.getChannelData()
- bot.disableBuffer()
- bot.enableBuffer()
- bot.flushBuffer()
- bot.getAllAttachments()
- bot.getFiles()
- bot.getImages()
- bot.getVideos()
- bot.sendPayload()
- bot.sendText()
- bot.sendMessage()
- bot.sendButtons()
- bot.getTelegramFileInfoById()
- bot.sendTelegramAttachmentAndGetFileId()
- bot.editTelegramInlineKeyboard()
- bot.removeTelegramInlineKeyboard()
- bot.getTelegramLastMessageId()
- bot.setCdnConfig()
- bot.setCdnConfig()
- bot.getCdnConfig()
- bot.getFileInfoByUrl()
- bot.downloadFileFromUrl()
- bot.downloadTmpFileFromUrl()
- bot.removeFile()
- bot.removeTmpFile()
- bot.uploadFileToCdnAndGetNewUrl()
- bot.removeFileFromCdn()
- bot.randomStr()
- bot.newGuid()
- bot.newOrderedGuid()
- bot.sysLogInfo()
- bot.sysLogError()
- bot.sysLogInfoToAdmin()
- bot.sysLogErrorToAdmin()
- bot.debug()
- bot.getGeoLocation()
- bot.getAllData()
- bot.setData()
- bot.scheduleScriptByCode()
- bot.getScriptCodeById()
- bot.getIntAttr()
- bot.getFloatAttr()
- bot.getBoolAttr()
- bot.getAllJsonAttrs()
- bot.setJsonAttr()
- bot.getJsonAttr()
- bot.issetJsonAttr() и bot.isJsonAttrKeyExist()
- bot.scheduleTriggerByCode()
- bot.clearTriggerJobsByScriptId()
- bot.clearTriggerJobsByScriptName()
- bot.clearTriggerJobsByCode()
- bot.clearTriggerJobsByCodeForAllPersonLeads()
- bot.clearTriggerJobsByCodeForTicket()
- bot.getTicketTypeNameById()
- bot.getDefaultPersonRoleId()
- bot.getWebhookJobRecord()
- bot.run()
- Методы lead
- lead.getData()
- lead.issetData() и lead.isDataExist()
- lead.getSerialNumber()
- lead.getChannelCode()
- lead.setAttr()
- lead.getAttr()
- lead.getAllAttr()
- lead.issetAttr() и lead.isAttrExist()
- lead.deleteAttrs() и lead.deleteAttr()
- lead.forceDeleteAttrs() и lead.forceDeleteAttr()
- lead.deleteJsonAttrs() и lead.deleteJsonAttr()
- lead.forceDeleteJsonAttrs() и lead.forceDeleteJsonAttr()
- lead.isInStatus()
- lead.getStatusId()
- lead.isTagExist() и lead.issetTag()
- lead.getTag()
- lead.getAllTags()
- lead.addTags() и lead.addTag()
- lead.deleteTags() и lead.deleteTag()
- lead.forceDeleteTags() и lead.forceDeleteTag()
- lead.setForwarded()
- lead.getPersonId()
- lead.setPersonId()
- lead.createPersonForCurrentLead()
- lead.isContextExist() и lead.issetContext()
- lead.getContext()
- lead.getAllContexts()
- lead.setActiveNlpIntegrationByCode()
- lead.canAutoForward()
- lead.getNextOperators()
- lead.assignDialogToNextOperator()
- lead.assignDialogToOperator()
- lead.getLastRequest()
- lead.getMessengerCode()
- lead.getIdentification()
- lead.getIdentificationEntity()
- lead.getMessenger()
- lead.getAllData()
- lead.setData()
- lead.isInlineButtonsAvailable()
- lead.isInlineButtonsAvailableGeneralChannelSetting()
- lead.getIntAttr()
- lead.getFloatAttr()
- lead.getBoolAttr()
- lead.getJsonAttr()
- lead.getAllJsonAttrs()
- lead.setJsonAttr()
- lead.issetJsonAttr() и lead.isJsonAttrKeyExist()
- lead.setAllLiveTexAttrs()
- lead.setLiveTexAttr()
- lead.getLiveTexAttr()
- lead.getAllLiveTexAttrs()
- lead.setTag()
- lead.setContext()
- lead.getAllStatuses()
- lead.getAllStatusesIndexedByName()
- lead.setStatusId()
- lead.setStatusName()
- lead.getStatusName()
- lead.setStatus()
- lead.setStatusById()
- lead.issetStatusById()
- lead.issetStatusByName()
- lead.getStatusIdByName()
- lead.setStatusByName()
- lead.setActiveNlpIntegrationById()
- lead.hasActiveNlpIntegration()
- lead.getActiveNlpIntegrationId()
- lead.getActiveNlpIntegrationCode()
- lead.getActiveOrFirstNlpIntegrationCode()
- lead.getActiveOrFirstNlpIntegrationId()
- lead.getForwardEventTypeForFB()
- lead.getLang()
- lead.setLang()
- lead.isLangExist()
- Методы ticket
- ticket.update()
- ticket.getData()
- ticket.getCustomData()
- ticket.issetData() и ticket.isDataExist()
- ticket.reloadCustomData()
- ticket.setAllCustomData()
- ticket.getAllCustomData()
- ticket.setCustomData()
- ticket.issetCustomData()
- ticket.isCustomDataExist()
- ticket.getTicketTypeName()
- ticket.getStatusId() и ticket.getAttr('status_id')
- ticket.getStatusName()
- ticket.getStatusType()
- ticket._sanitizeString()
- ticket.isInStatus()
- ticket.setStatusId()
- ticket.setStatusByName()
- ticket.reloadTicket()
- ticket.getAuthorPersonId()
- ticket.getAssignedPersonId()
- ticket.getClientPersonId()
- ticket.getAuthorPersonFullName()
- ticket.getAssignedPersonFullName()
- ticket.getClientPersonFullName()
- ticket.getAuthorPersonRoleId()
- ticket.getAssignedPersonRoleId()
- ticket.getClientPersonRoleId()
- ticket.getAuthorPersonRoleName()
- ticket.getAssignedPersonRoleName()
- ticket.getClientPersonRoleName()
- ticket.getAuthorPersonRoleTitle()
- ticket.getAssignedPersonRoleTitle()
- ticket.getClientPersonRoleTitle()
- ticket.getAuthorPersonRoleFormattedTitle()
- ticket.getAssignedPersonRoleFormattedTitle()
- ticket.getClientPersonRoleFormattedTitle()
- ticket.getPerson1Id()
- ticket.getPerson2Id()
- ticket.getPerson3Id()
- ticket.setPerson1Id()
- ticket.setPerson2Id()
- ticket.setPerson3Id()
- ticket.assignToNextQueuePerson()
- ticket.moveAssignedPersonToEndOfQueue()
- ticket.assignToPersonById()
- ticket.getAssignedPersonRejectsCount()
- ticket.setAssignedPersonRejectsCount()
- ticket.incAssignedPersonRejectsCount()
- ticket.assignToNextPersonAndMoveToEnd()
- ticket.getAllData()
- ticket.setData()
- ticket.loadCustomDataIfNotLoaded()
- ticket.getSubtotalFormatted()
- ticket.getTotalFeeFormatted()
- ticket.getDeliveryFeeFormatted()
- ticket.getTotalFormatted()
- ticket.getTicketLines()
- Методы ticketStatuses
- ticketStatuses.reload()
- ticketStatuses.getCollection()
- ticketStatuses.find()
- ticketStatuses.findById()
- ticketStatuses.findByName()
- ticketStatuses.findAllByNames()
- ticketStatuses.findAllByTypes()
- Методы person
- person.update()
- person.delete()
- person.getAllData()
- person.setData()
- person.getData()
- person.issetData() и person.isDataExist()
- person.getId()
- person.getFullName() и person.getFIO()
- person.getRoleId()
- person.getRoleName()
- person.getRoleTitle()
- person.getRoleFormattedTitle()
- person.getPhone()
- person.setPhone()
- person.getEmail()
- person.addToQueue()
- person.removeFromQueue()
- person.moveToEndOfQueue()
- person.setIsActiveInQueue()
- person.getLeads()
- Методы personQueues
- personQueues.find()
- personQueues.findById()
- personQueues.findAllByTitles()
- personQueues.findByCode()
- personQueues.findAllByCodes()
- personQueues.reload()
- personQueues.getCollection()
- personQueues.findByName()
- personQueues.findAllByNames()
- Методы table
- Методы для строки полученной через метод table
- Методы для строки полученной через getLastRequest
- Методы api
- api.request()
- api.post()
- api.get()
- api.getJson()
- api.postJson()
- api.getHttpConfig()
- api.setHttpConfig()
- api.getRequestOptions()
- api.setRequestOptions()
- api.getHeaders()
- api.setHeaders()
- api.getProxyUrl()
- api.setProxyUrl()
- api.getLastResponseCode()
- api.getLastResponseContent()
- api.getLastJsonResponse()
- api.getLastResponse()
- api.setTimeout()
- api.getTimeout()
- api.isExceptionThrown()
- api.getLastResponseTime()
- api.getLastErrorBody()
- api.callEndpoint()
- api.enableExceptions()
- api.disableExceptions()
- api.enableContinueCallEndpointOnJsError()
- api.disableContinueCallEndpointOnJsError()
- api.getIsContinueCallEndpointOnJsError()
- Методы memory
- memory.setAttr()
- memory.getAttr()
- memory.getIntAttr()
- memory.getFloatAttr()
- memory.getBoolAttr()
- memory.issetAttr() и memory.isAttrExist()
- memory.setAllJsonAttrs()
- memory.getAllJsonAttrs()
- memory.setJsonAttr()
- memory.getJsonAttr()
- memory.issetJsonAttr() и memory.isJsonAttrKeyExist()
- Примеры использования методов
- Использование методов блокировок
- Использование методов работы с файлами
- Передача JSON параметров через джобы
- Методы ScriptTicketLine
- ScriptTicketLine.reload()
- ScriptTicketLine.getId()
- ScriptTicketLine.getTicketId()
- ScriptTicketLine.getProductId()
- ScriptTicketLine.getProduct()
- ScriptTicketLine.getQuantity()
- ScriptTicketLine.getPrice()
- ScriptTicketLine.getPriceFormatted()
- ScriptTicketLine.getFee()
- ScriptTicketLine.getFeeFormatted()
- ScriptTicketLine.getSubtotal()
- ScriptTicketLine.getSubtotalFormatted()
- ScriptTicketLine.getPriceDateFormatted() и ScriptTicketLine.priceDateFormatted()
- ScriptTicketLine.getCreatedAtFormatted() и ScriptTicketLine.createdAtFormatted()
- ScriptTicketLine.getUpdatedAtFormatted() и ScriptTicketLine.updatedAtFormatted()
- ScriptTicketLine.getDeletedAtFormatted() и ScriptTicketLine.deletedAtFormatted()
- Методы ScriptProduct
- ScriptProduct.reload()
- ScriptProduct.getId()
- ScriptProduct.getTitle()
- ScriptProduct.getCode()
- ScriptProduct.getPrice()
- ScriptProduct.getMainCategoryId()
- ScriptProduct.getIsEnabled()
- ScriptProduct.getIsAvailableInStock()
- ScriptProduct.getUrl()
- ScriptProduct.getThumbUrl()
- ScriptProduct.getPriceFormatted()
- ScriptProduct.getCreatedAtFormatted() и ScriptProduct.createdAtFormatted()
- ScriptProduct.updatedAtFormatted() и ScriptProduct.getUpdatedAtFormatted()
- ScriptProduct.getDeletedAtFormatted() и ScriptProduct.deletedAtFormatted()
- Методы ticketStatus
- ticketStatus.reload()
- ticketStatus.getId()
- ticketStatus.getName()
- ticketStatus.getType()
- ticketStatus.getOrderPos()
- ticketStatus.isSameStatusName()
- ticketStatus.getCreatedAtFormatted() и ticketStatus.createdAtFormatted()
- ticketStatus.getUpdatedAtFormatted() и ticketStatus.getUpdatedAtFormatted()
- ticketStatus.getDeletedAtFormatted() и ticketStatus.deletedAtFormatted()
- Методы personQueue
Справочник всех функций
Получение данных бота
Метод | Описание |
Возвращает все данные текущего бота |
|
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.setData(string $key, $value): self |
Устанавливает значение данных лида по ключу Возможные ключи:
|
lead.getData(string $key): mixed|null |
Возвращает значение данных лида по ключу Возможные ключи:
|
Проверяет наличие данных лида по ключу Возможные ключи:
|
|
lead.getSerialNumber(): int|null | Возвращает порядковый номер лида в текущем боте |
lead.getChannelCode(): string | Возвращает код канала лида |
lead.isInlineButtonsAvailable(): bool|null | Проверяет включены ли инлайн кнопки |
lead.isInlineButtonsAvailableGeneralChannelSetting(): bool|null | Возвращает настройки кнопок канала |
Работа со скриптами
Работа с атрибутами
Методы 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 переменной бота |
Проверяет наличие JSON переменной бота |
|
Методы lead
Методы memory
Работа с триггерами
Работа со статусами
Работа с рассылками
Метод | Описание |
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.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.loadCustomDataIfNotLoaded(bool $isReloadModel = false): bool |
Загружает кастомные данные, если они не загружены |
Переопределяет список кастомных полей | |
Возвращает список кастомных полей | |
Устанавливает значение кастомного поля В качестве ключа можно указать:
|
|
Проверяет имеет ли значение кастомное поле В качестве ключа можно указать:
|
|
Проверяет существует ли кастомное поле В качестве ключа можно указать:
|
|
Возвращает название типа заявки | |
Возвращает ID статуса заявки |
|
Возвращает название статуса заявки |
|
Возвращает тип статуса заявки |
|
Проверяет статус заявки |
|
Устанавливает статус заявки по id |
|
Устанавливает статус заявки по имени |
|
Загружает заявку повторно |
|
Возвращает ID автора заявки |
|
Возвращает ID исполнителя заявки |
|
Возвращает ID клиента заявки |
|
Возвращает ФИО автора заявки |
|
Возвращает ФИО исполнителя заявки |
|
Возвращает ФИО клиента заявки |
|
Возвращает ID роли автора заявки |
|
Возвращает ID роли исполнителя заявки |
|
Возвращает ID роли клиента заявки | |
Возвращает имя роли автора заявки | |
Возвращает имя роли исполнителя заявки | |
Возвращает имя роли клиента заявки | |
Возвращает заголовок роли автора заявки | |
Возвращает заголовок роли исполнителя заявки | |
Возвращает заголовок роли клиента заявки | |
Возвращает форматированное название роли автора заявки | |
Возвращает форматированное название роли исполнителя заявки | |
Возвращает форматированное название роли клиента заявки | |
Возвращает id первой дополнительной персоны | |
Возвращает id второй дополнительной персоны | |
Возвращает id третьей дополнительной персоны | |
Устанавливает id первой дополнительной персоны | |
Устанавливает id второй дополнительной персоны | |
Устанавливает id третьей дополнительной персоны | |
Возвращает форматированную итоговую стоимость заказа | |
Возвращает форматированную промежуточную стоимость заказа | |
Возвращает форматированную стоимость заказа | |
Возвращает форматированную стоимость доставки |
|
Возвращает массив объектов 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.getFee(): float | Возвращает стоимость заявки |
ScriptTicketLine.getFeeFormatted(): string | Возвращает форматированную стоимость заявки |
ScriptTicketLine.getSubtotal(): float | Возвращает итоговую стоимость заявки |
ScriptTicketLine.getSubtotalFormatted(): string | Возвращает форматированную итоговую стоимость заявки |
Возвращает форматированную дату создания заказа |
|
Возвращает форматированную дату обновления заказа | |
Возвращает форматированную дату удаления заказа | |
Методы 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 | Возвращает форматированную цену продукта |
Возвращает форматированную дату создания продукта |
|
Возвращает форматированную дату обновления продукта | |
Возвращает форматированную дату удаления продукта | |
Работа со статусами заявок
Методы ticketStatus
Метод | Описание |
ticketStatus.reload(): bool | Перезагружает статус в БД |
ticketStatus.getId(): int | Возвращает id статуса |
ticketStatus.getName(): string | Возвращает наименование статуса |
ticketStatus.getType(): string|null | Возвращает тип статуса |
ticketStatus.getOrderPos(): int | Возвращает значение статуса |
ticketStatus.isSameStatusName($statusName): bool | Проверяет наименование статуса на сходство |
Возвращает форматированную дату создания статуса | |
Возвращает форматированную дату обновления статуса | |
Возвращает форматированную дату удаления статуса | |
Методы 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 |
Устанавливает поле персоны по ключу В качестве ключа можно указать:
|
person.getData(string $key) |
Возвращает значение данных персоны В качестве ключа можно указать:
|
person.issetData(string $key): bool |
Проверяет наличие данных по персоне В качестве ключа можно указать:
|
person.isDataExist(string $key): bool | |
person.getLeads(bool $isFindInAllBusinessBots = false): array |
Возвращает лиды персоны |
person.getId(): int|null |
Возвращает ID персоны |
Возвращает полное имя персоны |
|
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 | Переносит исполнителя в конец очереди |
Назначает исполнителя заявки |
|
Назначает заявку следующему исполнителю и переносит его в конец очереди |
|
Возвращает количество отказов от заявок |
|
Устанавливает количество отказов от заявок |
|
Увеличивает количество отказов от заявок |
Методы 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
Работа с интеграциями 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.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 |
Возвращает форматированную дату из произвольной строки |
Перезагружает данные записи из БД |
Работа с блокировками
Работа с контакт-центром
Методы 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 |
Возвращает текст входящего сообщения или текст подписи к вложению |
Возвращает id вебхука зарегистрированного в очереди Метабот | |
Возвращает запись вебхука зарегистрированного в очереди Метабот | |
Возвращает информацию о вебхуке | |
Возвращает payload входящего вебхука в виде массива |
|
Возвращает payload c данными о последнем ответе мессенджера в ввиде массива | |
bot.getChannelData(string|null $key = null): array|null|mixed |
Возвращает настройки канала лида |
Принудительное отключение буффера исходящих сообщений |
|
Принудительное включение буффера исходящих сообщений |
|
Принудительное освобождение буффера исходящих сообщений |
|
bot.getAllAttachments(string|null $filesMimeExcludeFilter = '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.getTelegramFileInfoById(string|null $fileId, bool $isShowOriginalInfo = false): array|null |
Возвращает информацию о файле в Telegram по его id |
Отправляет файл в телеграм и возвращает его id |
|
Редактирует кнопки меню уже отправленного в Telegram сообщения |
|
Возвращает ID последнего сообщения, отправленного в Telegram |
|
Устанавливает конфиг для доступа к CDN |
|
Возвращает текущий конфиг CDN |
|
Возвращает информацию о файле по URL |
|
Скачивает файл с URL и загружает в хранилище файлов Метабот для вашего бизнеса |
|
Скачивает файл с URL и загружает во временное хранилище файлов Метабот для вашего бизнеса |
|
Удаляет файл по URL из хранилища файлов Метабот для вашего бизнеса |
|
Удаляет файл по URL из временного хранилища файлов Метабот для вашего бизнеса |
|
bot.uploadFileToCdnAndGetNewUrl(string $fileUrl, array|object|null $cdnConfig = null): array |
Заливает файл на CDN и возвращает новую ссылку |
Удаляет файл из CDN |
Методы lead
Метод | Описание |
Возвращает обозначение текущего мессенджера канала | |
Возвращает буквенное обозначение текущего мессенджера канала | |
Возвращает идентификатор лида во внешней системе | |
Возвращает дополнительный идентификатор лида во внешней системе |
Работа с 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 | Выводит информацию в мессенджер |
Подробное описание сложных методов
Некоторые методы обладают сложной структурой и требуют более детального объяснения. В этом разделе вы найдете отдельные страницы, посвященные подробному описанию параметров и особенностей работы таких методов.
Операторы условий в методах
В условиях можно использовать различные операторы:
- Сравнения: =, <, >, <=, >=, <>, !=
- Строковые: like, not like
- Множества: IN, NOT IN
Оператор | Описание | Тип переменной | Пример |
= | Равно | string, int | ['id', '=', 100] |
< | Меньше | int, float | ['price', '<', 1000] |
> | Больше | int, float | ['age', '>', 18] |
<= | Меньше или равно | int, float | ['quantity', '<=', 50] |
>= | Больше или равно | int, float | ['rating', '>=', 4.5] |
<> или != | Не равно | string, int | ['status', '<>', 'closed'] |
like | Соответствует шаблону | string | ['name', 'like', '%John%'] |
not like | Не соответствует шаблону | string | ['email', 'not like', '%@spam.com'] |
ilike | Соответствует шаблону (без учета регистра) | string | ['title', 'ilike', '%book%'] |
IN | Содержится в списке | array | ['id', 'IN', [1, 2, 3]] |
NOT IN | Не содержится в списке | array | ['status', 'NOT IN', ['closed', 'deleted']] |
is | Равно (для null) | null | ['manager_id', 'is', null] |
is not | Не равно (для null) | null | ['end_date', 'is not', null] |
regexp | Соответствует регулярному выражению | string | ['phone', 'regexp', '^\\+7'] |
not regexp | Не соответствует регулярному выражению | string | ['username', 'not regexp', '[0-9]'] |
Примечание! Некоторые операторы могут быть недоступны или работать иначе.
Пример использования операторов:
let where = [
['id', '>', 1000],
['name', 'like', '%Иван%'],
['channels.code', 'IN', ['telegram', 'whatsapp']]
]
where для bot.findLeads()
Базовая структура
Каждое условие внутри массива where имеет следующую структуру:
-
Простое условие: ['поле', 'значение'] — проверяет, равно ли поле заданному значению;
-
Условие с оператором: ['поле', 'оператор', 'значение'] — проверяет поле с использованием указанного оператора.
let where = [
['поле', 'значение'],
['поле', 'оператор', 'значение']
]
bot.findLeads([], where, [])
Доступные категории полей
- Поля лидов;
- Каналы (channels);
- Статусы лидов (leadstatuses);
- Атрибуты лидов (lead_attributes).
Поля лидов
Это основные поля, доступные для каждого лида.
Поле | Описание |
id | ID лида |
name | Имя лида |
identification | ID в мессенджере (например, Telegram ID) |
person_id | ID персоны |
manager_id | ID менеджера |
bot_id | ID бота |
channel_id | ID канала |
lang_code | Код языка |
status_id | ID статуса |
is_mute | Включен ли бот для лида (0 или 1) |
is_forwarded | Передан ли оператору (0 или 1) |
last_activity | Дата последней активности |
last_response | Timestamp последнего ответа |
messenger | ID мессенджера |
bot_debug_level | Уровень отладки бота (0 - обычный, 11 - админ) |
created_at | Дата создания |
updated_at | Дата обновления |
dialog_id | ID диалога |
unread_count | Количество непрочитанных сообщений |
forwarded_at | Дата передачи оператору |
Пример использования:
where = [
['id', 145492],
['name', 'like', '%Иван%'],
['created_at', '>=', '2023-01-01']
]
Каналы (channels)
Для поиска по каналам используются поля channels.code и channels.id.
Код | ID | Описание |
unknown | 0 | Неизвестный канал |
avito | 1 | Avito |
2 | ||
3 | ||
livechatWidget | 4 | LiveChat Widget |
skype | 5 | Skype |
telegram | 6 | Telegram |
7 | ||
viber | 8 | Viber |
vk | 9 | VKontakte |
10 | ||
youla | 11 | Youla |
12 | ||
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.id — status_id, а вместо channels.id — channel_id. Если вы выполняете большие операции это сократит время вычисления.
Атрибуты лидов (lead_attributes)
Для поиска по атрибутам используются следующие поля:
Поле | Описание |
lead_attributes.attribute_type | Тип атрибута (tag, variable, system, json, context) |
lead_attributes.attribute_key | Ключ атрибута |
lead_attributes.attribute_value | Значение атрибута. Если type = tag, то можно не использовать |
Пример использования:
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)
- Поле — название поля, по которому будет производиться сортировка (например, created_at, updated_at, id);
- Порядок — определяет, как будет сортироваться поле. Возможны два значения:
- ASC — по возрастанию;
- DESC — по убыванию.
Доступные категории полей:
Примеры использования
Сортировка по одному полю
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.getData()
Получить значение данных бота
bot.getData(string $key)
Описание:
Возвращает значение данных бота по ключу.
Атрибуты:
Имя | Тип | Описание |
key | string | Ключ данных бота |
В качестве ключа можно указать:
- leadsCount - количество лидов бота.
Возвращает:
mixed - значение данных бота в формате, в котором они находятся в сущности
или
null - если таких данных не существует.
Пример:
let data = bot.getData('leadsCount');
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 - массив полей лидов.
В массиве следующие поля:
- id - id лида
- identification - внешний id лида
- manager_id - id менеджера привязанного к лиду
- bot_id - id бота лида
- channel_id - id канала лида
- status_id - id статуса лида
- is_mute - включен ли бот для лида
Пример:
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.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:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение планирования скрипта.
Пример:
var result = bot.scheduleScript(1426, 6473, null, {
"script_request_params": {
"name": "Alex"
}
});
bot.getScriptIdByName()
Получить ID скрипта по наименованию
bot.getScriptIdByName(?string $scriptName)
Описание:
Возвращает id скрипта по его наименованию.
Атрибуты:
Имя | Тип | Описание |
scriptName | string | Наименование скрипта |
Возвращает:
int - id скрипта в формате числа.
Пример:
let ScriptId = bot.getScriptIdByName('Меню');
bot.getScriptIdByCode()
Получить ID скрипта по коду
bot.getScriptIdByCode(?string $scriptCode)
Описание:
Возвращает id скрипта по его дополнительному идентификатору.
Атрибуты:
Имя | Тип | Описание |
scriptCode | string | Код скрипта |
Возвращает:
int - id скрипта в формате числа.
Пример:
let ScriptId = bot.getScriptIdByCode('menu');
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:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение запуска скрипта.
Пример:
let ScriptId = bot.getScriptIdByName('Меню');
bot.runScriptForLead(ScriptId, 165784, null, true);
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:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение запуска скрипта.
Пример:
bot.runScriptByNameForLead('Меню', 165784, null, true);
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:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение запуска скрипта.
Пример:
let ScriptId = bot.getScriptIdByCode('menu');
bot.runScriptForPerson(ScriptId, 24178, null, true);
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:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение запуска скрипта.
Пример:
bot.runScriptByNameForPerson('Меню', 24178, null, false);
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:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение запуска скрипта.
Пример:
bot.runScriptByCodeForLead("SEND_TOKEN", 135, null, false, {
"run_at": "2021-03-23 19:05:30",
});
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:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение запуска скрипта.
Пример:
bot.runScriptByCodeForPerson("SEND_TOKEN", 135, null, false, {
"run_after_sec": 5,
});
bot.clearJobsByScriptId()
Очистить джобы по id скрипта
bot.clearJobsByScriptId(?int $scriptId, ?int $leadId = null)
Описание:
Выполняется поиск и очистка джоб по id скрипта.
Атрибуты:
Имя | Тип | Описание |
scriptId | int | ID серипта |
leadId | int | ID лида |
Возвращает:
bool - подтверждение очистки джоб.
Пример:
bot.clearJobsByScriptId(1342, 187);
bot.clearJobsByScriptName()
Очистить джобы по наименованию скрипта
bot.clearJobsByScriptName(?string $scriptName, ?int $leadId = null)
Описание:
Выполняется поиск и очистка джоб по наименованию скрипта.
Атрибуты:
Имя | Тип | Описание |
scriptName | string | Наименование скрипта |
leadId | int | ID лида |
Возвращает:
bool - подтверждение очистки джоб.
Пример:
bot.clearJobsByScriptName("skript", 187);
bot.clearJobsByScriptCode()
Очистить джобы по коду скрипта
bot.clearJobsByScriptCode(?string $scriptCode, ?int $leadId = null)
Описание:
Выполняется поиск и очистка джоб по коду скрипта.
Атрибуты:
Имя | Тип | Описание |
scriptCode | string | Код скрипта |
leadId | int | ID лида |
Возвращает:
bool - подтверждение очистки джоб.
Пример:
bot.clearJobsByScriptCode("SEND_TOKEN", 187);
bot.setAttr()
Установить значение переменной бота
bot.setAttr(string $key, string $value)
Описание:
Обновляет значение уже существующей глобальной переменной или создает новую переменную с указанным значением. Данные будут сохранены в БД.
Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
value | string | Значение переменной |
Не возвращает значений, так как выполняет только установку переменной.
Пример:
Создание глобальной переменной бота bot_attribute:
bot.setAttr('bot_attribute', 'Значение глобальной переменной')
bot.getAttr()
Получить значение переменной бота
bot.getAttr(string $key)
Описание:
Возвращает значение уже существующей глобальной переменной.
Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
Возвращает:
mixed - объект того же типа и значения, что у запрашиваемой переменной.
Пример:
Получение значения глобальной переменной бота bot_attribute:
let bot_attribute_value = bot.getAttr('bot_attribute');
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.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.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:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение планирования триггера.
Пример:
var result = bot.scheduleTrigger(4213, 1426, null, {
"is_periodic": true,
"repeat_interval_sec": 10,
"script_request_params": {
"name": "Alex"
}
});
bot.runTriggerByCodeForLead()
Планирование триггера по коду
bot.runTriggerByCodeForLead(?string $triggerCode, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:
Запускает триггер в соответствии с указанными параметрами по коду.
Атрибуты:
Имя | Тип | Описание |
triggerCode | string | ID триггера, который будет запущен |
leadId | int | ID лида, для которого будет запущен триггер |
ticketId | int | ID заявки, для которой будет запущен триггер |
addToQueue | bool | Добавление в очередь триггеров |
jobParams | json |
Передача в планируемую задачу входящих json параметров. Можно указать script_request_params |
Возможные параметры в jobParams:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение планирования триггера.
Пример:
var result = bot.runTriggerByCodeForLead('test', 1426, null, true, {
"is_periodic": true,
"repeat_interval_sec": 10,
"script_request_params": {
"name": "Alex"
}
});
bot.runTriggerByCodeForPerson()
Планирование триггера по коду для последнего лида персоны
bot.runTriggerByCodeForPerson(?string $triggerCode, ?int $personId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:
Запускает триггер в соответствии с указанными параметрами по коду для последнего лида указанной персоны.
Атрибуты:
Имя | Тип | Описание |
triggerCode | string | ID триггера, который будет запущен |
personId | int | ID персоны, для которой будет найден последний лид |
ticketId | int | ID заявки, для которой будет запущен триггер |
addToQueue | bool | Добавление в очередь триггеров |
jobParams | json |
Передача в планируемую задачу входящих json параметров. Можно указать script_request_params |
Возможные параметры в jobParams:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение планирования триггера.
Пример:
var result = bot.runTriggerByCodeForPerson('test', 1426, null, true, {
"is_periodic": true,
"repeat_interval_sec": 10,
"script_request_params": {
"name": "Alex"
}
});
bot.clearTriggerJobsForLead()
Удалить триггеры для лида
bot.clearTriggerJobsForLead(?int $leadId, ?int $ticketId = null)
Описание:
Удаляет все триггеры из очереди для лида.
Атрибуты:
Имя | Тип | Описание |
leadId | int | ID лида, триггеры которого будут удалены |
ticketId | int | ID заявки, триггеры которого будут удалены |
Возвращает:
bool - подтверждение удаления триггеров.
Пример:
bot.clearTriggerJobsForLead(236178, 229715);
bot.clearTriggerJobsForAllPersonLeads()
Удалить триггеры для всех лидов персоны
bot.clearTriggerJobsForAllPersonLeads(?int $personId, ?int $ticketId = null)
Описание:
Удаляет все триггеры из очереди для всех лидов персоны.
Атрибуты:
Имя | Тип | Описание |
personId | int | ID персоны, триггеры которой будут удалены |
ticketId | int | ID заявки, триггеры которого будут удалены |
Возвращает:
bool - подтверждение удаления триггеров.
Пример:
bot.clearTriggerJobsForAllPersonLeads(36178);
bot.getTriggerIdByName()
Получить ID триггера по наименованию
bot.getTriggerIdByName(?string $triggerName)
Описание:
Возвращает id триггера по указанному наименованию.
Атрибуты:
Имя | Тип | Описание |
triggerName | string | Наименование триггера |
Возвращает:
int - id триггера в формате числа.
Пример:
let TriggerId = bot.getTriggerIdByName('Триггер');
bot.getTriggerIdByCode()
Получить ID Триггера по Коду
bot.getTriggerIdByCode(?string $triggerCode)
Описание:
Возвращает id триггера по указанному коду.
Атрибуты:
Имя | Тип | Описание |
triggerCode | string | Код триггера |
Возвращает:
int - id триггера в формате числа.
bot.runTriggerForLead()
Запустить триггер для лида по ID триггера
bot.runTriggerForLead(?int $triggerId, ?int $leadId, ?int $ticketId = null, $addToQueue = true, $jobParams = [])
Описание:
Запускает триггер для лида по указанному id триггера.
Атрибуты:
Имя | Тип | Описание |
triggerId | int | ID триггера, который будет запущен |
leadId | int | ID лида, для которого будет запущен скрипт |
ticketId | int | ID заявки, для которой будет запущен скрипт |
addToQueue | bool | Добавление в очередь скриптов |
jobParams | json |
Передача в планируемую задачу входящих json параметров. Можно указать script_request_params |
Возможные параметры в jobParams:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение запуска триггера.
Пример:
let TriggerId = bot.getTriggerIdByName('Триггер');
bot.runTriggerForLead(TriggerId, 236178, null, true, {
"run_at": "2021-03-23 19:01:00",
});
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:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение запуска триггера.
Пример:
bot.runTriggerByNameForLead('Триггер', 236178, null, true{
"run_after_sec": 5,
});
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:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение запуска триггера.
Пример:
let TriggerId = bot.getTriggerIdByName('Триггер');
bot.runTriggerForPerson(TriggerId, 36178, null, true);
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:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение запуска триггера.
Пример:
bot.runTriggerByNameForPerson('Триггер', 36178, null, true);
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.clearTriggerJobsByName()
Очистить джобы по наименованию триггера
bot.clearTriggerJobsByName(?string $triggerName, ?int $leadId = null)
Описание:
Выполняется поиск и очистка джоб по наименованию триггера.
Атрибуты:
Имя | Тип | Описание |
triggerName | string | Наименование триггера |
leadId | int | ID лида |
Возвращает:
bool - подтверждение очистки джоб.
Пример:
bot.clearTriggerJobsByName('Триггер');
bot.clearTriggerJobsByScriptCode()
Очистить джобы по коду скрипта
bot.clearTriggerJobsByScriptCode(?string $scriptCode, ?int $leadId = null, ?int $ticketId = null)
Описание:
Выполняется поиск и очистка джоб триггеров по коду скрипта.
Атрибуты:
Имя | Тип | Описание |
scriptCode | string | Код скрипта |
leadId | int | ID лида |
ticketId | int | ID заявки |
Возвращает:
bool - подтверждение очистки джоб.
bot.clearTriggerJobsByIdForTicket()
Очистить джобы по id триггера и ID заявки
bot.clearTriggerJobsByIdForTicket(?int $triggerId, ?int $ticketId)
Описание:
Выполняется поиск и очистка джоб по id триггера и ID заявки.
Атрибуты:
Имя | Тип | Описание |
triggerId | int | ID триггера |
ticketId | int | ID заявки, джобы которой будут очищены |
Возвращает:
bool - подтверждение очистки джоб.
Пример:
let TriggerId = bot.getTriggerIdByName('Триггер');
bot.clearTriggerJobsByIdForTicket(TriggerId, 17256);
bot.clearTriggerJobsByNameForTicket()
Очистить джобы по наименованию триггера и ID заявки
bot.clearTriggerJobsByNameForTicket(?string $triggerName, ?int $ticketId)
Описание:
Выполняется поиск и очистка джоб по наименованию триггера и ID заявки.
Атрибуты:
Имя | Тип | Описание |
triggerName | string | Наименование триггера |
ticketId | int | ID заявки, джобы которой будут очищены |
Возвращает:
bool - подтверждение очистки джоб.
Пример:
bot.clearTriggerJobsByNameForTicket('Триггер', 17256);
bot.scheduleBroadcast()
Планирование рассылки
bot.scheduleBroadcast(?int $broadcastId, ?int $ticketId = null, $jobParams = [])
Описание:
Запускает рассылку в соответствии с указанными параметрами.
Атрибуты:
Имя | Тип | Описание |
broadcastId | int | ID рассылки, которая будет запущена |
ticketId | int | ID заявки, для которой будет запущена рассылка |
jobParams | json |
Передача в планируемую задачу входящих json параметров. Можно указать script_request_params (для скрипта/триггера/рассылки) Для установки времени запуска: run_at - точное время запуска (по часовому поясу сервера) |
Если указать 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.scheduleBroadcastByCode()
Планирование рассылки по коду
bot.scheduleBroadcastByCode(?string $broadcastCode, ?int $ticketId = null, $jobParams = [])
Описание:
Запускает рассылку в соответствии с указанными параметрами по коду.
Атрибуты:
Имя | Тип | Описание |
broadcastCode | string | Код рассылки, которая будет запущена |
ticketId | int | ID заявки, для которой будет запущена рассылка |
jobParams | json |
Передача в планируемую задачу входящих json параметров. Можно указать script_request_params (для скрипта/триггера/рассылки) Для установки времени запуска: run_at - точное время запуска (по часовому поясу сервера) |
Если указать 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.getBroadcastIdByCode()
Получить ID Рассылки по Коду
bot.getBroadcastIdByCode(?string $broadcastCode)
Описание:
Находит id рассылки по ее коду.
Атрибуты:
Имя | Тип | Описание |
broadcastCode | string | Код рассылки |
Возвращает:
int - id рассылки.
bot.getForwardEventType()
Проверка кто переключил на оператора
bot.getForwardEventType()
Описание:
Эта функция необходимо для того чтобы отличать событие Переключения на оператора обычным способом (через маршруты/скрипты бота) или при перехвате управления оператором.
Возвращает:
bool - "forwarded_by_operator" если контроль за диалогом забран оператором (по его инициативе).
bot.isForwardedToOperator()
Проверка переключения на оператора
bot.isForwardedToOperator()
Описание:
Проверяет переключен ли лид на оператора.
Возвращает:
bool - подтверждение того, что лид переключен на оператора.
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.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.getMaxRejectsTicketCount()
Получить максимальное количество отказов
bot.getMaxRejectsTicketCount()
Описание:
Возвращает максимальное количество отказов от заявки.
Возвращает:
int - количество отказов в формате числа.
Пример:
let MaxRejects = bot.getMaxRejectsTicketCount();
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.findTicketIdByCustomField()
Найти id заявки по значению поля
bot.findTicketIdByCustomField(string $fieldName, $value)
Описание:
Находит Id первой заявки, у которой поле $fieldName имеет значение $value.
Атрибуты:
Имя | Тип | Описание |
fieldName | string | Наименование поля заявки |
value | mixed | Значение поля заявки |
Возвращает:
int - id найденной заявки в формате числа.
Пример:
let TicketId = bot.findTicketIdByCustomField('title', 'Заявка');
bot.getTicketTypeIdByName()
Найти id вида заявки по наименованию
bot.getTicketTypeIdByName(string $typeName)
Описание:
Находит id вида заявки по наименованию вида заявки.
Атрибуты:
Имя | Тип | Описание |
typeName | string | Наименование вида заявки |
Возвращает:
int - id вида заявки в формате числа.
Пример:
let TicketId = bot.findTicketIdByCustomField('Заявка');
bot.getTicketStatusIdByName()
Найти id статуса заявки по наименованию
bot.getTicketStatusIdByName(string $statusName)
Описание:
Находит id статуса заявки по наименованию статуса заявки.
Атрибуты:
Имя | Тип | Описание |
statusName | string | Наименование статуса заявки |
Возвращает:
int - id статуса заявки в формате числа.
Пример:
let StatusId = bot.getTicketStatusIdByName('Статус');
bot.setCurrentTicketById()
Установить текущую заявку
bot.setCurrentTicketById(?int $ticketId)
Описание:
Устанавливает текущую заявку по id. Переменные с новым значением начинают работать со следующей команды после команды с вызовом bot.setCurrentTicketById.
Атрибуты:
Имя | Тип | Описание |
ticketId | ?int | ID заявки |
Возвращает:
bool - подтверждение установки текущей заявки.
Пример:
bot.setCurrentTicketById(1432);
bot.clearTicketAssignedPersonsLog()
Очистить лог назначения тикета персонам
bot.clearTicketAssignedPersonsLog()
Описание:
Очищает лог назначения тикета персонам, чтобы можно было запустить один тикет повторно по той же очереди исполнителей.
Возвращает:
bool — подтверждение очистки лога.
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 | Отчество персоны |
|
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.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.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 | Отчество персоны |
|
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.deletePersonById()
Удалить персону по id
bot.deletePersonById(int $personId)
Описание:
Удаляет персону по id.
Атрибуты:
Имя | Тип | Описание |
personId |
int | ID персоны |
Возвращает:
bool - подтверждение удаления персоны.
Пример:
bot.deletePersonById(24376);
bot.getIntegrationIdByCode()
Получить id интеграции бота по коду
bot.getIntegrationIdByCode(?string $integrationCode)
Описание:
Находит id интеграции по ее коду.
Атрибуты:
Имя | Тип | Описание |
integrationCode | string | Код интеграции |
Возвращает:
int - id интеграции, если она принадлежит боту
или
null - если интеграция не найдена.
bot.getEnabledIntegrationIdByCode()
Получить id включенной интеграции бота по коду
bot.getEnabledIntegrationIdByCode(?string $integrationCode)
Описание:
Находит id интеграции по ее коду, если интеграция активна.
Атрибуты:
Имя | Тип | Описание |
integrationCode | string | Код интеграции |
Возвращает:
int - id интеграции, если она принадлежит боту и активна
или
null - если интеграция не найдена или не активна.
bot.isEnabledIntegrationById()
Проверить активность интеграции по id
bot.isEnabledIntegrationById(?int $integrationId)
Описание:
Проверяет есть ли такая интеграция по id и включена ли она.
Атрибуты:
Имя | Тип | Описание |
integrationId | int | ID интеграции |
Возвращает:
bool - подтверждение активности интеграции.
bot.isEnabledIntegrationByCode()
Проверить активность интеграции по коду
bot.isEnabledIntegrationByCode(?string $integrationCode)
Описание:
Проверяет есть ли такая интеграция по коду и включена ли она.
Атрибуты:
Имя | Тип | Описание |
integrationId | int | ID интеграции |
Возвращает:
bool - подтверждение активности интеграции.
bot.getLockNameForBot()
Сгенерировать имя блокировки по боту
bot.getLockNameForBot(string $lockName, string $lockPrefix = ''): string
Описание:
Генерирует имя блокировки по боту.
Использование на данный момент смысла не имеет, функции блокировок сами добавляют дополнительные префиксы к именами блокировок указанным в аргументах функций.
Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
Возвращает:
string - имя блокировки в формате строки.
Пример:
let lockName = bot.getLockNameForBot('lock', 'first');
bot.getLockNameForBusiness()
Сгенерировать имя блокировки по бизнесу
bot.getLockNameForBusiness(string $lockName, string $lockPrefix = ''): string
Описание:
Генерирует имя блокировки по бизнесу.
Использование на данный момент смысла не имеет, функции блокировок сами добавляют дополнительные префиксы к именами блокировок указанным в аргументах функций.
Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
Возвращает:
string - имя блокировки в формате строки.
Пример:
let lockName = bot.getLockNameForBusiness('lock', 'first');
bot.waitForBusinessLock()
Захватить блокировку по бизнесу
bot.waitForBusinessLock(string $lockName, string $lockPrefix = '', ?int $ttlSec = null, $maxWaitSec = 300): bool
Описание:
Дожидается, когда блокировка будет освобождена, и затем захватывает ее.
Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
ttlSec | ?int | Время жизни блокировки |
maxWaitSec | int | Максимальное время ожидания блокировки |
Возвращает:
bool - подтверждение захвата блокировки.
Пример:
let lockName = 'my_lock_1';
let lockPrefix = '';
let ttlSec = 5;
let maxWaitSec = 300;
let isLocked = false;
isLocked = bot.waitForBusinessLock(lockName, lockPrefix, ttlSec, maxWaitSec);
bot.waitForBotLock()
Захватить блокировку по боту
bot.waitForBotLock(string $lockName, string $lockPrefix = '', ?int $ttlSec = null, $maxWaitSec = 300): bool
Описание:
Дожидается, когда блокировка будет освобождена, и затем захватывает ее.
Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
ttlSec | ?int | Время жизни блокировки |
maxWaitSec | int | Максимальное время ожидания блокировки |
Возвращает:
bool - подтверждение захвата блокировки.
Пример:
let lockName = 'my_lock_1';
let lockPrefix = '';
let ttlSec = 5;
let maxWaitSec = 300;
let isLocked = false;
isLocked = bot.waitForBotLock(lockName, lockPrefix, ttlSec, maxWaitSec);
bot.releaseAllCurrentLocks()
Освободить все блокировки
bot.releaseAllCurrentLocks(): bool
Описание:
Освобождает все блокировки захваченные в текущем скрипте
Возвращает:
bool - подтверждение освобождения блокировки.
bot.releaseCurrentLockForBusiness()
Освободить блокировку скрипта по бизнесу
bot.releaseCurrentLockForBusiness(string $lockName, string $lockPrefix = ''): bool
Описание:
Освобождает блокировку захваченную текущем скрипте по бизнесу.
Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
Возвращает:
bool - подтверждение освобождения блокировки.
Пример:
if (bot.releaseCurrentLockForBusiness('lockName')) {
bot.sendText('Блокировка удалена')
} else {
bot.sendText('Ошика удаления блокировки')
}
bot.releaseCurrentLockForBot()
Освободить блокировку скрипта по боту
bot.releaseCurrentLockForBot(string $lockName, string $lockPrefix = ''): bool
Описание:
Освобождает блокировку захваченную текущем скрипте по боту.
Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
Возвращает:
bool - подтверждение освобождения блокировки.
Пример:
if (bot.releaseCurrentLockForBot('lockName')) {
bot.sendText('Блокировка удалена')
} else {
bot.sendText('Ошика удаления блокировки')
}
bot.releaseLockForBusiness()
Освободить блокировку по бизнесу
bot.releaseLockForBusiness(string $lockName, string $lockPrefix = ''): bool
Описание:
Освобождает блокировку по бизнесу.
Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
Возвращает:
bool - подтверждение освобождения блокировки.
Пример:
if (bot.releaseLockForBusiness('lockName')) {
bot.sendText('Блокировка удалена')
} else {
bot.sendText('Ошика удаления блокировки')
}
bot.releaseLockForBot()
Освободить блокировку по боту
bot.releaseLockForBot(string $lockName, string $lockPrefix = ''): bool
Описание:
Освобождает блокировку по боту.
Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
Возвращает:
bool - подтверждение освобождения блокировки.
Пример:
if (bot.releaseLockForBot('lockName')) {
bot.sendText('Блокировка удалена')
} else {
bot.sendText('Ошика удаления блокировки')
}
bot.hasLockForBot()
Проверка существования блокировки по боту
bot.hasLockLockForBot(string $lockName, string $lockPrefix = '', $checkValue = null): bool
Описание:
Проверяет существование блокировки по боту.
Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
checkValue | int | Количество проверок |
Возвращает:
bool - подтверждение существования блокировки.
Пример:
let hasLock = bot.hasLockLockForBot('lockName');
bot.hasLockForBusiness()
Проверка существования блокировки по бизнесу
bot.hasLockForBusiness(string $lockName, string $lockPrefix = '', $checkValue = null): bool
Описание:
Проверяет существование блокировки по бизнесу.
Атрибуты:
Имя | Тип | Описание |
lockName | string | Имя блокировки |
lockPrefix | string | Префикс, который будет добавлен к имени блокировки |
checkValue | int | Количество проверок |
Возвращает:
bool - подтверждение существования блокировки.
Пример:
let hasLock = bot.hasLockForBusiness('lockName');
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.canAutoForward()
Узнать доступно ли авто-назначение оператора в данном скрипте
bot.canAutoForward()
Описание:
Функция необходима для исключения рекурсивного вызова назначения диалога на оператора, а также для исключения выполнения авто-назначения диалога на оператора, если оператор сам подключается к диалога из контакт-центра.
Возвращает:
bool - подтверждение доступа к авто-назначению.
bot.scheduleJob()
Планирование любой задачи
bot.scheduleJob($jobParams = [])
Описание:
Запускает задачу в соответствии с указанными параметрами.
Атрибуты:
Имя | Тип | Описание |
jobParams | json |
Передача в планируемую задачу входящих json параметров. Можно указать script_request_params (для скрипта/триггера/рассылки) |
Возможные параметры в jobParams:
- trigger_code — код триггера;
- script_code — код скрипта;
- lead_id — лид;
- ticket_id — заявка;
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool — подтверждение планирования задачи.
Пример:
var result = bot.scheduleJob({
"trigger_code": "trg31",
"lead_id": lead.getData('id'),
"is_periodic": true,
"repeat_interval_sec": 10,
"script_request_params": {
"name": "Alex"
}
});
bot.getIncomingMessage()
Получить текст входящего сообщения
bot.getIncomingMessage(bool $useOutputFilter = false)
Описание:
Возвращает текст входящего сообщения или текст подписи к вложению.
Атрибуты:
Имя | Тип | Описание |
useOutputFilter | bool | Используется для включения фильтра входящего сообщения, чтобы исключить не поддерживаемые системой символы |
Возвращает:
string - текст входящего сообщения в формате строки.
bot.getWebhookJobId()
Получить id вебхука зарегистрированного в очереди Метабот
bot.getWebhookJobId()
Описание:
Возвращает id вебхука зарегистрированного в очереди Метабот.
Возвращает:
int - id вебхука
или
null - если таких данных не существует.
bot.getWebhookJob()
Получить информацию о вебхуке
bot.getWebhookJob()
Описание:
Возвращает информацию о вебхуке, т.е. запись из очереди Метабот. Данная запись также содержит поле payload, удобство использования данной функции в отличии от обработки «сырого» payload в том, что данные возвращаемые функцией уже обработаны и представлены в едином формате для любого мессенджера.
Возвращает:
array - массив индексов.
Параметры (индексы массива) которые возвращает данная функция:
- 'id'
- 'status_id'
- 'attempt'
- 'response_code'
- 'response_time'
- 'worked_time'
- 'messenger'
- 'event_type'
- 'original_event_type'
- 'channel_code'
- 'channel_id'
- 'channel_id'
- 'bot_channel_id'
- 'bot_id'
- 'lead_identification'
- 'lead_identification_entity'
- 'lead_id'
- 'lead_status_ext'
- 'lead_status_id'
- 'message_id'
- 'message_date'
- 'message'
- 'message_type'
- 'url'
- 'url_secret'
- 'payload'
- 'payload_array'
- 'chat_id'
- 'created_at'
- 'updated_at'
bot.getWebhookPayload()
Получить payload входящего вебхука
bot.getWebhookPayload()
Описание:
Возвращает payload входящего вебхука в виде массива.
Возвращает:
array - массив payload входящего вебхука.
bot.getLastResultPayload()
Получить payload c данными о последнем ответе мессенджера
bot.getLastResultPayload()
Описание:
Возвращает payload c данными о последнем ответе мессенджера в виде массива.
Возвращает:
array - массив payload c данными о последнем ответе мессенджера
или
null - если таких данных не существует.
Пример:
- Мы отправили в мессенджер сообщения используя REST API.
- Мессенджер вернул ответ, этот ответ будет доступен с помощью функции getLastResultPayload().
- Например, таким способом можно получить file_id, который вернул Telegram после отправки файла или id сообщения который вернул Telegram, для того чтобы в дальнейшем отредактировать это сообщение или удалить.
bot.getChannelData()
Получить настройки канала лида
bot.getChannelData(string|null $key = null)
Описание:
Получить настройки канала лида, задаваемые при привязки нового канала.
Атрибуты:
Имя | Тип | Описание |
key | string|null | Ключ настройки канала лида |
Возвращает:
array - массив настроек канала
mixed - настройка канала в формате, в котором она находится в сущности
или
null - если таких данных не существует.
bot.disableBuffer()
Принудительное отключение буфера исходящих сообщений
bot.disableBuffer()
Описание:
Принудительное отключение буфера исходящих сообщений.
Если отключаете, не забывайте включать назад, в конце вашего JavaScript кода.
bot.enableBuffer()
Принудительное включение буфера исходящих сообщений
bot.enableBuffer()
Описание:
Принудительное включение буфера исходящих сообщений.
Не влияет на аргумент $isDisableBuffer передаваемый в sendText / sendMessage / sendButtons.
bot.flushBuffer()
Принудительное освобождение буфера исходящих сообщений
bot.flushBuffer()
Описание:
Принудительное освобождение буфера исходящих сообщений. Отправка всех накопленных сообщений клиенту.
bot.getAllAttachments()
Получить вложения всех видов
bot.getAllAttachments(string|null $filesMimeExcludeFilter = 'image|video')
Описание:
Получить вложения всех видов, в т.ч. фото, видео, аудио, файлы и т.д., т.е. все вложения которые поддерживаем Метабот и данный канал.
На данный момент getAllAttachments работает только с Telegram, для других каналов функция возвращает пустой массив.
Атрибуты:
Имя | Тип | Описание |
filesMimeExcludeFilter | 'image|video' | null | Тип исключаемых файлов |
Возвращает:
array - массив вложений.
bot.getFiles()
Получить все вложения, которые распознаны как файл
bot.getFiles(string|null $mimeIncludeFilter = null, string|null $mimeExcludeFilter = 'image|video')
Описание:
Получить все вложения, которые распознаны как файл.
На данный момент getFilesработает работает только с Telegram, для других каналов функция возвращает пустой массив.
Атрибуты:
Имя | Тип | Описание |
mimeIncludeFilter | string|null | null | Тип добавляемых файлов |
mimeExcludeFilter | 'image|video' | null | Тип исключаемых файлов |
Возвращает:
array - массив вложений.
bot.getImages()
Получить все изображения
bot.getImages(string|null $mimeIncludeFilter = 'image')
Описание:
Получить все изображения, а также файлы, которые распознаны как изображение.
На данный момент getImagesработает работает только с Telegram, для других каналов функция возвращает пустой массив.
Атрибуты:
Имя | Тип | Описание |
mimeIncludeFilter | string|null | Тип включаемых файлов |
Возвращает:
array - массив вложений.
bot.getVideos()
Получить все видео
bot.getVideos(string|null $mimeIncludeFilter = 'video')
Описание:
Получить все видео, а также файлы, которые распознаны как видео.
На данный момент getVideos работает только с Telegram, для других каналов функция возвращает пустой массив.
Атрибуты:
Имя | Тип | Описание |
mimeIncludeFilter | string | null | Тип включаемых файлов |
Возвращает:
array - массив вложений.
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.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.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.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.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.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.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.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.getTelegramLastMessageId()
Получить ID последнего сообщения
bot.getTelegramLastMessageId()
Описание:
Возвращает ID последнего сообщения, отправленного в Telegram. Доступно только в текущем вебхуке, сразу после отправки сообщения. Функция считывает последний payload ответа API мессенджера и извлекает ID сообщения.
Возвращает:
int - ID сообщения
или
null - если сообщение не найдено.
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.setCdnConfig()
Передача конфига коннекта к CDN
bot.setCdnConfig(array|object|null $cdnConfig = null)
Описание:
Передача конфига коннекта к CDN в JS коде может быть не приемлема с точки зрения безопасности.
Поэтому мы можем подключить CDN к вашему бизнесу с помощью конфига системы, для этого обратитесь в поддержку.
Атрибуты:
Имя | Тип | Описание |
cdnConfig | array|object|null | Конфиг |
Возвращает:
bool - подтверждение успешной работы метода.
bot.getCdnConfig()
Получить текущий конфиг CDN
bot.getCdnConfig()
Описание:
Возвращает текущий конфиг CDN.
Возвращает:
array - текущий конфиг
или
null - если данные не найдены.
bot.getFileInfoByUrl()
Получить информацию о файле по URL
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.downloadFileFromUrl()
Скачать файла с URL
bot.downloadFileFromUrl(string $fileUrl)
Описание:
Скачивает файл с URL и загрузить в хранилище файлов Метабот для вашего бизнеса. Желательно использовать своё CDN хранилище или самим загружать файлы с помощью своего, стороннего микросервиса.
Атрибуты:
Имя | Тип | Описание |
fileUrl | string | URL файла |
Возвращает:
array - скачанный файлы
или
string - скачанный файл.
bot.downloadTmpFileFromUrl()
Скачать файла с URL и загрузить во временное хранилище
bot.downloadTmpFileFromUrl(string $fileUrl)
Описание:
Скачивает файл с URL и загрузить во временное хранилище файлов Метабот для вашего бизнеса. Желательно использовать своё CDN хранилище или самим загружать файлы с помощью своего, стороннего микросервиса.
Имейте ввиду, что такое хранилище периодически очищается.
Атрибуты:
Имя | Тип | Описание |
fileUrl | string | URL файла |
Возвращает:
array - скачанный файлы
или
string - скачанный файл.
bot.removeFile()
Удалить файл по URL
bot.removeFile(string $fileUrl)
Описание:
Удаляет файл по URL из хранилища файлов Метабот для вашего бизнеса.
Атрибуты:
Имя | Тип | Описание |
fileUrl | string | URL файла |
Возвращает:
string - URL файла.
bot.removeTmpFile()
Удалить файл по URL из временного хранилища
bot.removeTmpFile(string $fileUrl)
Описание:
Удаляет файл по URL из временного хранилища файлов Метабот для вашего бизнеса.
Атрибуты:
Имя | Тип | Описание |
fileUrl | string | URL файла |
Возвращает:
string - URL файла.
bot.uploadFileToCdnAndGetNewUrl()
Залить файл на CDN и получить новую ссылку
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.removeFileFromCdn()
Удалить файл из CDN
bot.removeFileFromCdn(string $fileUrl, $cdnConfig = null)
Описание:
Удаляет файл из CDN.
Атрибуты:
Имя | Тип | Описание |
fileUrl | string | URL файла |
cdnConfig | array|object|null | Конфиг |
Возвращает:
array - данные файла.
bot.randomStr()
Получить случайную буквенно-цифровую строку
bot.randomStr(int $length = 16)
Описание:
Генерирует случайную буквенно-цифровую строку.
При вызове внешнего API эндпоинта через асинхронную команду, можно генерировать guid или случайную строку, сохранять и передавать во внешнюю систему, при приеме ответа на асинхронный запрос можно валидировать пришедший код.
Таким образом можно идентифицировать вызовы между двумя системами, или гарантировать то что ответ из внешней системы пришел именно на данный запрос а не на предыдущий.
Атрибуты:
Имя | Тип | Описание |
length | int | Длина строки, по умолчанию 16 |
Возвращает:
string - строка.
bot.newGuid()
Получить случайный уникальный guid
bot.newGuid()
Описание:
Генерирует случайный уникальный guid (UUID версии 4).
При вызове внешнего API эндпоинта через асинхронную команду, можно генерировать guid или случайную строку, сохранять и передавать во внешнюю систему, при приеме ответа на асинхронный запрос можно валидировать пришедший код.
Таким образом можно идентифицировать вызовы между двумя системами, или гарантировать то что ответ из внешней системы пришел именно на данный запрос а не на предыдущий.
Возвращает:
string - случайный уникальный guid.
bot.newOrderedGuid()
Получить случайный уникальный guid упорядоченный по времени
bot.newOrderedGuid()
Описание:
Генерирует случайный уникальный guid (UUID версии 4) упорядоченный по времени.
При вызове внешнего API эндпоинта через асинхронную команду, можно генерировать guid или случайную строку, сохранять и передавать во внешнюю систему, при приеме ответа на асинхронный запрос можно валидировать пришедший код.
Таким образом можно идентифицировать вызовы между двумя системами, или гарантировать то что ответ из внешней системы пришел именно на данный запрос а не на предыдущий.
Возвращает:
string - случайный уникальный guid.
bot.sysLogInfo()
Вывести информацию в лог
bot.sysLogInfo($data, bool $isSendMessageToLead = false)
Описание:
Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит обычный лид, но только если у него включена отладка уровня только V8 (editor).
Атрибуты:
Имя | Тип | Описание |
data | mixed | Информация |
isSendMessageToLead | bool | Отправлять или нет сообщение в мессенджер |
Возвращает:
bool - успешное срабатывание метода.
bot.sysLogError()
Вывести информацию об ошибке в лог
bot.sysLogError($data, bool $isSendMessageToLead = false)
Описание:
Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит обычный лид, но только если у него включена отладка уровня только V8 (editor).
Атрибуты:
Имя | Тип | Описание |
data | mixed | Информация об ошибке |
isSendMessageToLead | bool | Отправлять или нет сообщение в мессенджер |
Возвращает:
bool - успешное срабатывание метода.
bot.sysLogInfoToAdmin()
Вывести информацию в лог для админа
bot.sysLogInfoToAdmin($data)
Описание:
Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит только лид-админ, т.е. если у него включен уровень отладки V8 и Exceptions (admin)
Атрибуты:
Имя | Тип | Описание |
data | mixed | Информация |
Возвращает:
bool - успешное срабатывание метода.
bot.sysLogErrorToAdmin()
Вывести информацию об ошибке в лог для админа
bot.sysLogErrorToAdmin($data)
Описание:
Добавляет в лог системы информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Если отправлять в мессенджер то сообщение увидит только лид-админ, т.е. если у него включен уровень отладки V8 и Exceptions (admin).
Атрибуты:
Имя | Тип | Описание |
data | mixed | Информация об ошибке |
Возвращает:
bool - успешное срабатывание метода.
bot.debug()
Вывести информацию в мессенджер
bot.debug($data, bool $isStopBot = false)
Описание:
Добавляет в сообщения мессенджера информацию указанную в data, чтобы в дальнейшем было проще искать проблемы в боте или видеть цепочку выполнения по лиду. Функция идентична функции из глобального пространства имен debug(),
по умолчанию не останавливает выполнение скрипта.
Атрибуты:
Имя | Тип | Описание |
data | mixed | Информация |
isStopBot | bool | Прерывать или нет выполнение скрипта |
Возвращает:
bool - успешное срабатывание метода.
bot.getGeoLocation()
Геолокация лида
bot.getGeoLocation()
Описание:
Для Telegram вернет массив {latitude: n, longitute: m}, если в вебхуке пришла локация, иначе null. Для мессенджера отличного от Telegram вернет null.
Возвращает:
array - массив {latitude: n, longitute: m}
или
null - если локация не найдена.
bot.getAllData()
Получить все данные текущего бота
bot.getAllData()
Описание:
Возвращает все данные текущего бота.
Возвращает:
array - значение данных бота в формате массива:
- leadsCount - количество лидов бота.
Пример:
let data = bot.getAllData();
bot.setData()
Установить значение данных бота по ключу
bot.setData(string $key, $value)
Описание:
Устанавливает значение данных текущего бота по ключу.
Атрибуты:
Имя | Тип | Описание |
key | string | Ключ данных бота |
value | mixed | Значение данных бота |
В качестве ключа можно указать:
- leadsCount - количество лидов бота.
Возвращает:
self - значение данных бота в формате, в котором они находятся в сущности.
Пример:
let data = bot.setData('leadsCount', 4);
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:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение планирования скрипта.
Пример:
var result = bot.scheduleScriptByCode('trigger', 6473, null, {
"script_request_params": {
"name": "Alex"
}
});
bot.getScriptCodeById()
Получить ID скрипта по коду
bot.getScriptCodeById(int|null $scriptId)
Описание:
Возвращает id скрипта по его дополнительному идентификатору.
Атрибуты:
Имя | Тип | Описание |
scriptId | int | Id скрипта |
Возвращает:
int - id скрипта в формате числа
или
null - если таких данных не существует.
Пример:
let ScriptId = bot.getScriptCodeById(23121);
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.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.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.getAllJsonAttrs()
Получить значение всех JSON переменных бота
bot.getAllJsonAttrs()
Описание:
Возвращает значение всех JSON переменных бота.
Возвращает:
array - массив JSON переменных бота.
Пример:
let bot_attribute_value = bot.getAllJsonAttrs();
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.getJsonAttr()
Получить значение JSON переменной бота
bot.getJsonAttr(string $key)
Описание:
Возвращает значение JSON переменной бота.
Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
Возвращает:
mixed - объект того же типа и значения, что у запрашиваемой переменной.
Пример:
let bot_attribute_value = bot.getJsonAttr('bot_attribute');
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.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:
- add_tags — добавить тэги;
- remove_tags — удалить тэги;
- is_periodic — будет ли запускаться джоба с периодичностью;
- repeat_interval_sec — интервал периодичности запуска;
- script_request_params:
- run_at — точное время запуска (по часовому поясу сервера);
- run_after_sec — для запуска через указанное кол-во секунд;
- condition_script_code — параметр для перекрытия условия триггера/рассылки.
Если указать run_at и run_after_sec то будет использован только параметр run_at.
Возвращает:
bool - подтверждение планирования триггера.
Пример:
var result = bot.scheduleTriggerByCode("trigger_code", 1426, null, {
"is_periodic": true,
"repeat_interval_sec": 10,
"script_request_params": {
"name": "Alex"
}
});
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.clearTriggerJobsByScriptName()
Удалить триггеры для лида
bot.clearTriggerJobsByScriptName(string|null $scriptName, int|null $leadId = null)
Описание:
Удаляет все триггеры из очереди для лида.
Атрибуты:
Имя | Тип | Описание |
leadId | int | ID лида, триггеры которого будут удалены |
scriptName | string | Наименование скрипта, триггеры которого будут удалены |
Возвращает:
bool - подтверждение удаления триггеров.
Пример:
bot.clearTriggerJobsByScriptName("skript_name", 236178);
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.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.clearTriggerJobsByCodeForTicket()
Удалить джобы по коду триггера и ID заявки
bot.clearTriggerJobsByCodeForTicket(string|null $triggerCode, int|null $ticketId)
Описание:
Очищает джобы по коду триггера и ID заявки.
Атрибуты:
Имя | Тип | Описание |
triggerCode | string | Код триггера |
ticketId | int | ID заявки, триггеры которого будут удалены |
Возвращает:
bool - подтверждение удаления триггеров.
Пример:
bot.clearTriggerJobsByCodeForTicket("trigger_code", 229715);
bot.getTicketTypeNameById()
Получить наименование заявки по id вида заявки
bot.getTicketTypeNameById(int|null $ticketTypeId)
Описание:
Возвращает наименование заявки по id вида заявки.
Атрибуты:
Имя | Тип | Описание |
ticketTypeId | int | Наименование тэга |
Возвращает:
string - наименование заявки в формате строки.
Пример:
let TicketType = bot.getTicketTypeNameById(14);
bot.getDefaultPersonRoleId()
Получить id роли персоны по умолчанию
bot.getDefaultPersonRoleId()
Описание:
Возвращает id роли персоны по умолчанию.
Возвращает:
int - id роли
или
null - если таких данных нет.
Пример:
let RoleId = bot.getDefaultPersonRoleId();
bot.getWebhookJobRecord()
Получить запись вебхука зарегистрированного в очереди Метабот
bot.getWebhookJobRecord()
Описание:
Возвращает запись вебхука зарегистрированного в очереди Метабот.
Возвращает:
BotWebhookQueueRecord - запись в очереди
или
null - если таких данных не существует.
bot.run()
Запустить скрипт в рамках текущего потока бота
bot.run(array|object|null $jobParams = [])
Описание:
Запускает скрипт в рамках текущего потока бота. Можно использовать только в V8 команде/условии команды размещенной в скрипте конструктора, т.е. не применимо для запуска в JS триггера, маршрута, в внутреннего эндпоинта и т.д.
Атрибуты:
Имя | Тип | Описание |
jobParams | json |
Передача в планируемую задачу входящих json параметров |
Возможные параметры в jobParams:
- script_id — id вызываемого скрипта;
- script_code — код вызываемого скрипта;
- lead_id — id лида;
- skip_till_command_id — id команды скрипта, с которой начнется запуск (если указать не верный id, то будут пропущены все команды);
- stop_current_flow — по умолчанию true, после выполнения вызываемого скрипта, текущий JS будет остановлен. Если указано false, то после выполнения вызываемого скрипта JS вернется и продолжится с текущей точки.
Возвращает:
bool - подтверждение запуска скрипта.
Пример:
bot.run({
"script_id": 111,
"skip_till_command_id": 123,
"stop_current_flow": false,
})
Методы lead
lead.getData()
Получить значение данных лида
lead.getData(string $key)
Описание:
Возвращает значение данных сущности лида по ключу.
Атрибуты:
Имя | Тип | Описание |
key | string | Ключ данных лида |
В качестве ключа можно указать:
- id - id лида;
- name - имя лида;
- identification - внешний id лида;
- identification_entity - внешний id сущности;
- person_id - id персоны лида;
- manager_id - id менеджера привязанного к лиду;
- bot_id - id бота лида;
- channel_id - id канала лида;
- lang_code - код языка;
- status_id - id статуса лида;
- extra
- last_message_payload
- identification - id последнего сообщения;
- event_name - код события, например, user_uttered, когда последнее сообщение - ответ пользователя;
- text - текст последнего сообщения;
- payload - данные последнего сообщения;
- timestamp - время отправки;
- session_id - id сессии;
- socket_id - id сокета;
- last_message_payload
- is_mute - включен ли бот для лида;
- last_message_date - дата последнего сообщения;
- active_nlp_integration_id - id активной NLP интеграции;
- last_activity - время последней активности;
- last_response - код последнего ответа;
- messenger - id мессенджера;
- bot_debug_level - уровень отладки бота;
- created_at - время создания;
- updated_at - время обновления;
- dialog_id - id диалога;
- unread_count - количество непрочитанных оператором сообщений;
- last_message - последнее сообщение;
- last_message_botlog_id - id последнего сообщения в логе.
Возвращает:
mixed - значение данных лида в формате, в котором они находятся в сущности
или
null - если таких данных не существует.
Пример:
let extra = lead.getData('extra');
lead.issetData() и lead.isDataExist()
Проверить наличие данных
lead.issetData(string $key)
или
lead.isDataExist(string $key)
Описание:
Проверяет существуют ли данные по ключу.
Атрибуты:
Имя | Тип | Описание |
key | string | Ключ данных лида |
В качестве ключа можно указать:
- id - id лида;
- name - имя лида;
- identification - внешний id лида;
- identification_entity - внешний id сущности;
- person_id - id персоны лида;
- manager_id - id менеджера привязанного к лиду;
- bot_id - id бота лида;
- channel_id - id канала лида;
- lang_code - код языка;
- status_id - id статуса лида;
- extra
- last_message_payload
- identification - id последнего сообщения;
- event_name - код события, например, user_uttered, когда последнее сообщение - ответ пользователя;
- text - текст последнего сообщения;
- payload - данные последнего сообщения;
- timestamp - время отправки;
- session_id - id сессии;
- socket_id - id сокета;
- last_message_payload
- is_mute - включен ли бот для лида;
- last_message_date - дата последнего сообщения;
- active_nlp_integration_id - id активной NLP интеграции;
- last_activity - время последней активности;
- last_response - код последнего ответа;
- messenger - id мессенджера;
- bot_debug_level - уровень отладки бота;
- created_at - время создания;
- updated_at - время обновления;
- dialog_id - id диалога;
- unread_count - количество непрочитанных оператором сообщений;
- last_message - последнее сообщение;
- last_message_botlog_id - id последнего сообщения в логе.
Возвращает:
bool - подтверждение существования данных.
Пример:
let data = lead.issetData('manager_id');
let altdata = lead.isDataExist('status_id');
lead.getSerialNumber()
Порядковый номер лида
lead.getSerialNumber()
Описание:
Возвращает порядковый номер лида в боте начиная с первого созданного.
Возвращает:
int - порядковый номер лида
или
null - если лид не найден.
Пример:
let num = lead.getSerialNumber();
lead.getChannelCode()
Код канала лида
lead.getChannelCode()
Описание:
Возвращает код канала лида (telegram, umnico, bitrix, и пр.)
Возвращает:
string - код канала лида в формате строки.
Коды которые может возвращать данная функция:
- 'unknown'
- 'avito'
- 'apple_business_chat'
- 'facebook'
- 'instagram'
- 'jivoWidget'
- 'livechatWidget'
- 'odnoklassniki'
- 'skype'
- 'telegram'
- 'twitter'
- 'viber'
- 'vk'
- 'wechat'
- 'whatsapp'
- 'youla'
- 'metabotWidget'
- 'webim'
lead.setAttr()
Установить значение переменной лида
lead.setAttr(string $key, string $value)
Описание:
Обновляет значение уже существующей переменной лида или создает новую переменную с указанным значением. Данные будут сохранены в БД.
Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
value | string | Значение переменной |
Возвращает:
self - объект того же типа, в данном случае переменную, которая была создана.
Пример:
Создание переменной лида lead_attribute:
let lead = "Значение переменной лида";
let lead_attribute = lead.setAttr('lead_attribute', lead);
lead.getAttr()
Получить значение переменной лида
lead.getAttr(string $key)
Описание:
Возвращает значение уже существующей переменной лида.
Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
Возвращает:
string - значение запрашиваемой переменной в виде строки
или
null - если переменная не была найдена.
Пример:
Получение значения переменной лида lead_attribute:
let lead_attribute_value = lead.getAttr('lead_attribute');
lead.getAllAttr()
Получить все переменные лида
lead.getAllAttr()
Описание:
Возвращает значение всех переменных лида.
Возвращает:
array - массив значений всех переменных.
Пример:
Получение значения всех переменных лида и вынесение из массива одного из значений:
let all_lead_attributes = lead.getAllAttr();
let lead_attribute = all_lead_attributes[3];
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.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.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.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.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.isInStatus()
Проверка существования статуса у лида
lead.isInStatus(string $statusName)
Описание:
Проверить, что лид находится в статусе с указанным в методе именем.
Атрибуты:
Имя | Тип | Описание |
statusName | string | Наименование статуса |
Возвращает:
bool — подтверждение существования статуса.
lead.getStatusId()
Узнать id статуса лида
lead.getStatusId()
Описание:
Возвращает значение поля status_id лида.
Возвращает:
int — id статуса лида в форме числа
или
null — если у лида нет статуса.
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.getTag()
Получить значение тэга лида
lead.getTag(string $key)
Описание:
Возвращает значение тэга лида по наименованию.
Атрибуты:
Имя | Тип | Описание |
key | string | Наименование тэга |
Возвращает:
string - если тэг активен
или
null - если тэг неактивен.
Пример:
let Tag = lead.getTag('тэг');
lead.getAllTags()
Получить массив всех тэгов лида
lead.getAllTags()
Описание:
Возвращает массив всех тэгов лида.
Возвращает:
array - массив наименований тэгов лида.
Пример:
let AllTags = lead.getAllTags();
let Tag2 = AllTags[1];
lead.addTags() и lead.addTag()
Добавление тэгов лида
lead.addTags(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)
или
lead.addTag(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isSuppressTriggers = false)
Описание:
Добавляет тэг в бот.
Атрибуты:
Имя | Тип | Описание |
tags | string|object|array|null | Строка, представляющая собой список названий тэгов(разделитель запятая). Можно указать вместо списка json объект или массив |
ticketId | ?int | Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления тэга |
scriptRequestParams | object | Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления тэга |
isSuppressTriggers | bool | Не мягкое удаление. Если передано true, то тэг будет удален из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается |
Возвращает:
self - наименование созданного тэга.
Пример:
lead.addTags('new_tag', null, {"some_key": "some_value"});
lead.deleteTags() и lead.deleteTag()
Удаление тэгов лида
lead.deleteTags(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false)
или
lead.deleteTag(string|object|array|null $tags, ?int $ticketId = null, $scriptRequestParams = [], bool $isForceDelete = false, bool $isSuppressTriggers = false)
Описание:
Удаляет тэг из бота.
Атрибуты:
Имя | Тип | Описание |
tags | string|object|array|null | Строка, представляющая собой список названий тэгов (разделитель запятая). Можно указать вместо списка json объект или массив |
ticketId | ?int | Передает ticket в запускаемый триггер, который подписан на событие изменения/удаления тэга |
scriptRequestParams | object | Передает дополнительный параметры в запускаемый триггер , который подписан на событие изменения/удаления тэга |
isForceDelete | bool | Подавить запуск триггеров или нет, т.е. если передать true, и есть триггер подписанный на событие изменения/удаления тэга то он не будет запущен. |
isSuppressTriggers | bool | Не мягкое удаление. Если передано true, то тэг будет удален из БД, иначе у удаляемого атрибута указывается признак что он удален, но в бд он остается |
Возвращает:
self - подтверждение удаления тэга.
Пример:
lead.deleteTags('TAG_111, tag_222 , tag_333', null, null, true);
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.setForwarded()
Переключить на оператора
lead.setForwarded(bool|int $state)
Описание:
Установка ($state == true) или сброс ($state == false) у лида признака “Переведён на оператора”.
Атрибуты:
Имя | Тип | Описание |
state | bool|int | При $state = true установка и при $state = false сброс признака “Переведён на оператора” |
Возвращает:
self - подтверждение установки или сброса в формате используемом при вызове метода.
lead.getPersonId()
Получить id персоны
lead.getPersonId()
Описание:
Возвращает id персоны лида.
Возвращает:
int - id персоны в формате числа
или
null - если персоны нет.
Пример:
let PersonId = lead.getPersonId();
lead.setAttr('PersonId', PersonId);
lead.setPersonId()
Привязать персону к лиду
lead.setPersonId(?int $personId)
Описание:
Привязывает к лиду персону с соответствующим id.
Атрибуты:
Имя | Тип | Описание |
personId |
int | Id персоны |
Возвращает:
bool - подтверждение успешной привязки персоны к лиду.
Пример:
lead.setPersonId(167435);
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 | Отчество персоны |
|
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.isContextExist() и lead.issetContext()
Проверить наличие контекста лида
lead.isContextExist(string $key)
или
lead.issetContext(string $key)
Описание:
Проверяет существование контекста у лида.
Атрибуты:
Имя | Тип | Описание |
key | string | Наименование контекста |
Возвращает:
bool - подтверждение существования контекста.
Пример:
let ContextExist = lead.isContextExist('контекст');
или
let ContextExist = lead.issetContext('контекст');
lead.getContext()
Получить значение контекста лида
lead.getContext(string $key)
Описание:
Возвращает значение контекста лида по наименованию.
Атрибуты:
Имя | Тип | Описание |
key | string | Наименование контекста |
Возвращает:
string - если контекст активен
или
null - если контекст неактивен.
Пример:
let Context = lead.getContext('контекст');
lead.getAllContexts()
Получить массив всех контекстов лида
lead.getAllContexts()
Описание:
Возвращает массив всех контекстов лида.
Возвращает:
array - массив наименований контекстов лида.
Пример:
let AllContexts = lead.getAllContexts();
let Context2 = AllContexts[1];
lead.setActiveNlpIntegrationByCode()
Присвоить интеграцию лиду по коду
lead.setActiveNlpIntegrationByCode(?string $integrationCode)
Описание:
Присваивает интеграцию лиду в соответствии с кодом интеграции.
Атрибуты:
Имя | Тип | Описание |
integrationCode | string | Код интеграции |
Возвращает:
bool - подтверждение присвоения интеграции.
lead.canAutoForward()
Узнать доступно ли авто-назначение оператора в данном скрипте
lead.canAutoForward()
Описание:
Функция необходима для исключения рекурсивного вызова назначения диалога на оператора, а также для исключения выполнения авто-назначения диалога на оператора, если оператор сам подключается к диалога из контакт-центра.
Результат выполнения данной функции аналогичен результату выполнения функции bot.canAutoForward(), функция в bot первична, в лиде функция добавлена для удобства.
Если оператор сам выполняет подключение к диалогу из контакт-центра, то результат функции аналогичен проверке:
return bot.getForwardEventType() !== 'forwarded_by_operator';
Но при этом lead.canAutoForward(): bool гарантирует что назначение заявки на оператора не вызвано рекурсивно.
Возвращает:
bool - подтверждение доступа к авто-назначению.
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.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.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.getLastRequest()
Получить объект с параметрами последнего реквеста
lead.getLastRequest()
Описание:
Находит последний реквест и возвращает объект с его параметрами.
Возвращает:
ScriptRequest — последний реквест.
lead.getMessengerCode()
Получить буквенное обозначение текущего мессенджера канала
lead.getMessengerCode()
Описание:
Возвращает буквенное обозначение текущего мессенджера канала.
Возвращает:
string - буквенное обозначение текущего мессенджера канала.
Коды которые может возвращать данная функция:
- 'unknown'
- 'avito'
- 'apple_business_chat'
- 'facebook'
- 'instagram'
- 'jivoWidget'
- 'livechatWidget'
- 'odnoklassniki'
- 'skype'
- 'telegram'
- 'twitter'
- 'viber'
- 'vk'
- 'wechat'
- 'whatsapp'
- 'youla'
- 'metabotWidget'
- 'webim'
lead.getIdentification()
Получить идентификатор лида во внешней системе
lead.getIdentification()
Описание:
Возвращает идентификатор лида во внешней системе, т.е. в мессенджере, например для Telegram - это id чата клиента.
Возвращает:
string - идентификатор лида во внешней системе в формате строки
или
null - если идентификатор не найден.
lead.getIdentificationEntity()
Получить дополнительный идентификатор лида во внешней системе
lead.getIdentificationEntity()
Описание:
Возвращает дополнительный идентификатор лида во внешней системе, например используется для Bitrix24 – и возвращает ‘LEAD’ / ‘DEAL’.
Возвращает:
string - дополнительный идентификатор лида во внешней системе в формате строки
или
null - если нет составного идентификатора лида.
lead.getMessenger()
Получить текущий мессенджер
lead.getMessenger()
Описание:
Метод для получения обозначения текущего мессенджера канала.
Коды которые может возвращать данная функция:
- Unknown - 0
- Avito - 1
- Apple business chat - 17
- Facebook - 2
- Instagram - 3
- JivoWidget - 15
- LivechatWidget - 4
- Jdnoklassniki - 16
- Skype - 5
- Telegram - 6
- Twitter - 7
- Viber - 8
- VK - 9
- Wechat - 12
- Whatsapp - 10
- Юла - 11
- MetabotWidget - 13
- Webim - 14
Возвращает:
int - код канала.
lead.getAllData()
Получить все данные лида
lead.getAllData()
Описание:
Возвращает все данные лида.
Возвращает:
array - значение данных лида в формате массива:
- id - id лида;
- name - имя лида;
- identification - внешний id лида;
- identification_entity - внешний id сущности;
- person_id - id персоны лида;
- manager_id - id менеджера привязанного к лиду;
- bot_id - id бота лида;
- channel_id - id канала лида;
- lang_code - код языка;
- status_id - id статуса лида;
- extra
- last_message_payload
- identification - id последнего сообщения;
- event_name - код события, например, user_uttered, когда последнее сообщение - ответ пользователя;
- text - текст последнего сообщения;
- payload - данные последнего сообщения;
- timestamp - время отправки;
- session_id - id сессии;
- socket_id - id сокета;
- last_message_payload
- is_mute - включен ли бот для лида;
- last_message_date - дата последнего сообщения;
- active_nlp_integration_id - id активной NLP интеграции;
- last_activity - время последней активности;
- last_response - код последнего ответа;
- messenger - id мессенджера;
- bot_debug_level - уровень отладки бота;
- created_at - время создания;
- updated_at - время обновления;
- dialog_id - id диалога;
- unread_count - количество непрочитанных оператором сообщений;
- last_message - последнее сообщение;
- last_message_botlog_id - id последнего сообщения в логе.
Пример:
let extra = lead.getAllData();
lead.setData()
Установить значение данных лида
lead.setData(string $key, $value)
Описание:
Устанавливает значение данных лида по ключу.
Атрибуты:
Имя | Тип | Описание |
key | string | Ключ данных лида |
value | mixed | Значение данных |
В качестве ключа можно указать:
- id - id лида;
- name - имя лида;
- identification - внешний id лида;
- identification_entity - внешний id сущности;
- person_id - id персоны лида;
- manager_id - id менеджера привязанного к лиду;
- bot_id - id бота лида;
- channel_id - id канала лида;
- lang_code - код языка;
- status_id - id статуса лида;
- extra
- last_message_payload
- identification - id последнего сообщения;
- event_name - код события, например, user_uttered, когда последнее сообщение - ответ пользователя;
- text - текст последнего сообщения;
- payload - данные последнего сообщения;
- timestamp - время отправки;
- session_id - id сессии;
- socket_id - id сокета;
- last_message_payload
- is_mute - включен ли бот для лида;
- last_message_date - дата последнего сообщения;
- active_nlp_integration_id - id активной NLP интеграции;
- last_activity - время последней активности;
- last_response - код последнего ответа;
- messenger - id мессенджера;
- bot_debug_level - уровень отладки бота;
- created_at - время создания;
- updated_at - время обновления;
- dialog_id - id диалога;
- unread_count - количество непрочитанных оператором сообщений;
- last_message - последнее сообщение;
- last_message_botlog_id - id последнего сообщения в логе.
Возвращает:
self - значение данных лида в формате, в котором они находятся в сущности.
Пример:
let person_id = lead.setData('person_id', 34);
lead.isInlineButtonsAvailable()
Проверка включения инлайн кнопок
lead.isInlineButtonsAvailable()
Описание:
Проверяет включены ли инлайн кнопки.
Возвращает:
bool - 0, если не включены, 1, если включены
или
null - если таких данных не существует.
Пример:
let inlineButtons = lead.isInlineButtonsAvailable();
lead.isInlineButtonsAvailableGeneralChannelSetting()
Получить настройки кнопок канала
lead.isInlineButtonsAvailableGeneralChannelSetting()
Описание:
Возвращает настройки кнопок текущего канала лида.
Возвращает:
bool - 0, если не включены, 1, если включены
или
null - если таких данных не существует.
Пример:
let inlineButtons = lead.isInlineButtonsAvailableGeneralChannelSetting();
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.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.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.getJsonAttr()
Получить значение JSON переменной лида
lead.getJsonAttr(string $key)
Описание:
Возвращает значение уже существующей JSON переменной лида.
Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
Возвращает:
mixed - значение запрашиваемой JSON переменной
или
null - если переменная не была найдена.
Пример:
let lead_attribute_value = lead.getJsonAttr('lead_attribute');
lead.getAllJsonAttrs()
Получить значение всех JSON переменных лида
lead.getAllJsonAttrs()
Описание:
Возвращает значение всех JSON переменных лида.
Возвращает:
array - массив JSON переменных лида.
Пример:
let lead_attribute_value = lead.getAllJsonAttrs();
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.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.setAllLiveTexAttrs()
Установить значение всех LiveTex переменных лида
lead.setAllLiveTexAttrs(string $value)
Описание:
Устанавливает значение всех LiveTex переменных лида.
Атрибуты:
Имя | Тип | Описание |
value | string | Значение переменной |
Возвращает:
self - объект того же типа и значения, что задан в методе.
Пример:
let lead_attribute_value = lead.setAllLiveTexAttrs('lead_value');
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.getLiveTexAttr()
Получить значение LiveTex переменной лида
lead.getLiveTexAttr(string $key)
Описание:
Возвращает значение уже существующей LiveTex переменной лида.
Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
Возвращает:
mixed - значение запрашиваемой переменной
или
null - если переменная не была найдена.
Пример:
let lead_attribute_value = lead.getLiveTexAttr('lead_attribute');
lead.getAllLiveTexAttrs()
Получить значение всех LiveTex переменных лида
lead.getAllLiveTexAttrs()
Описание:
Возвращает значение всех LiveTex переменных лида.
Возвращает:
array - массив LiveTex переменных лида.
Пример:
let lead_attribute_value = lead.getAllLiveTexAttrs();
lead.setTag()
Установить значение тэга лида
lead.setTag(string $key, $value)
Описание:
Устанавливает значение тэга лида по наименованию.
Атрибуты:
Имя | Тип | Описание |
key | string | Наименование тэга |
value | mixed | Значение тэга |
Возвращает:
self - значение, указанное в методе.
Пример:
let Tag = lead.setTag('регистрация');
lead.setContext()
Установить значение контекста лида
lead.setContext(string $key, $value)
Описание:
Устанавливает значение контекста лида по наименованию.
Атрибуты:
Имя | Тип | Описание |
key | string | Наименование контекста |
value | mixed | Значение контекста |
Возвращает:
self - значение, указанное в методе.
Пример:
let Con = lead.setContext('контекст', "регистрация");
lead.getAllStatuses()
Узнать все статусы лида
lead.getAllStatuses()
Описание:
Возвращает все статусы лида.
Возвращает:
array — id статусов лида в формате массива.
lead.getAllStatusesIndexedByName()
Узнать все наименования статусов лида
lead.getAllStatusesIndexedByName()
Описание:
Возвращает все наименования статусов лида.
Возвращает:
array — массив наименований статусов лида.
lead.setStatusId()
Установить id статуса лида
lead.setStatusId(int $statusId, string $name)
Описание:
Устанавливает id статуса лида.
Атрибуты:
Имя | Тип | Описание |
statusId | int | Id статуса |
name | string | Наименование статуса |
Возвращает:
self — id статуса лида.
lead.setStatusName()
Установить наименование статуса лида
lead.setStatusName(string $name)
Описание:
Устанавливает наименование статуса лида.
Атрибуты:
Имя | Тип | Описание |
name | string | Наименование статуса |
Возвращает:
self — наименование статуса лида.
lead.getStatusName()
Узнать наименование статуса лида
lead.getStatusName()
Описание:
Возвращает наименование статуса лида.
Возвращает:
string — наименование статуса лида в формате строки.
lead.setStatus()
Установить статус лида
lead.setStatus(int $statusId, string $name)
Описание:
Устанавливает статус лида.
Атрибуты:
Имя | Тип | Описание |
statusId | int | Id статуса |
name | string | Наименование статуса |
Возвращает:
self — id статуса лида.
lead.setStatusById()
Установить статус лида по id
lead.setStatusById(int $statusId)
Описание:
Устанавливает статус лида по id.
Атрибуты:
Имя | Тип | Описание |
statusId | int | Id статуса |
Возвращает:
self — id статуса.
lead.issetStatusById()
Проверить существует ли статус у лида по id
lead.issetStatusById(string $id)
Описание:
Проверяет существует ли статус у лида по id.
Атрибуты:
Имя | Тип | Описание |
id | string | Id статуса |
Возвращает:
bool — подтверждение существования статуса.
lead.issetStatusByName()
Проверить существует ли статуса у лида по наименованию
lead.issetStatusByName(string $name)
Описание:
Проверяет существует ли статуса у лида по наименованию.
Атрибуты:
Имя | Тип | Описание |
name | string | Наименование статуса |
Возвращает:
bool — подтверждение существования статуса.
lead.getStatusIdByName()
Узнать id статуса лида по наименованию
lead.getStatusIdByName(string $statusName)
Описание:
Возвращает id статуса лида по наименованию.
Атрибуты:
Имя | Тип | Описание |
statusName | string | Наименование статуса |
Возвращает:
int — id статуса.
lead.setStatusByName()
Установить статус лида по наименованию
lead.setStatusByName(string $statusName)
Описание:
Устанавливает статус лида по наименованию.
Атрибуты:
Имя | Тип | Описание |
statusName | string | Наименование статуса |
Возвращает:
self — наименование статуса лида.
lead.setActiveNlpIntegrationById()
Присвоить интеграцию лиду по id
lead.setActiveNlpIntegrationById(int|null $nlpIntegrationId)
Описание:
Присваивает интеграцию лиду по id.
Атрибуты:
Имя | Тип | Описание |
nlpIntegrationId | int | Id интеграции |
Возвращает:
bool - подтверждение присвоения интеграции.
lead.hasActiveNlpIntegration()
Проверить активна ли интеграция
lead.hasActiveNlpIntegration()
Описание:
Проверяет активна ли интеграция.
Возвращает:
bool - подтверждение активности интеграции.
lead.getActiveNlpIntegrationId()
Получить интеграцию по id
lead.getActiveNlpIntegrationId(int|null $nlpIntegrationId)
Описание:
Возвращает интеграцию по id.
Атрибуты:
Имя | Тип | Описание |
nlpIntegrationId | int | Id интеграции |
Возвращает:
int - id интеграции
или
null - если таких данных нет.
lead.getActiveNlpIntegrationCode()
Получить интеграцию по коду
lead.getActiveNlpIntegrationCode(string|null $integrationCode)
Описание:
Возвращает интеграцию по коду.
Атрибуты:
Имя | Тип | Описание |
integrationCode | string | Код интеграции |
Возвращает:
string - код интеграции
или
null - если таких данных нет.
lead.getActiveOrFirstNlpIntegrationCode()
Получить активную или первую интеграцию по коду
lead.getActiveOrFirstNlpIntegrationCode(string|null $integrationCode)
Описание:
Возвращает активную или первую интеграцию по коду.
Атрибуты:
Имя | Тип | Описание |
integrationCode | string | Код интеграции |
Возвращает:
string - код интеграции
или
null - если таких данных нет.
lead.getActiveOrFirstNlpIntegrationId()
Получить активную или первую интеграцию по id
lead.getActiveOrFirstNlpIntegrationId(int|null $nlpIntegrationId)
Описание:
Возвращает активную или первую интеграцию по id.
Атрибуты:
Имя | Тип | Описание |
nlpIntegrationId | int | Id интеграции |
Возвращает:
int - id интеграции
или
null - если данные не найдены.
lead.getForwardEventTypeForFB()
Получить тип события для ФБ
lead.getForwardEventTypeForFB()
Описание:
Возвращает тип события для ФБ.
Возвращает:
string - тип события интеграции
или
null - если таких данных нет.
lead.getLang()
Получить язык установленный в бизнесе
lead.getLang()
Описание:
Возвращает язык установленный в бизнесе.
Возвращает:
string - код языка
или
null - если таких данных нет.
lead.setLang()
Установить язык в бизнесе
lead.setLang(string|null $langCode)
Описание:
Устанавливает язык в бизнесе.
Атрибуты:
Имя | Тип | Описание |
langCode | string | Код языка |
Возвращает:
string - код языка
или
null - если таких данных не существует.
lead.isLangExist()
Проверить существует ли язык
lead.isLangExist(string $langCode, bool|null $isEnabled = true)
Описание:
Проверяет существует ли язык.
Атрибуты:
Имя | Тип | Описание |
langCode | string | Код языка |
isEnabled | bool | Активность языка |
Возвращает:
bool - подтверждения существования языка.
Методы 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.getData()
Получить значение данных заявки
ticket.getData(string $key)
Описание:
Получить значение данных заявки по ключу или названию поля БД.
Атрибуты:
Имя | Тип | Описание |
key | string | Ключ наименование поля |
В качестве ключа можно указать:
- id - id заявки;
- business_id - id бизнеса;
- bot_id - id бота;
- author_person_id - id автора заявки;
- client_person_id - id клиента заявки;
- assigned_person_id - id исполнителя заявки;
- ticket_type_id - id вида заявки, виды заявки создаются вручную;
- payment_type_id - id способа оплаты. Доступные значения:
- 0 - PAYMENT_TYPE_NONE;
- 1 - PAYMENT_TYPE_ROBOKASSA;
- 2 - PAYMENT_TYPE_YANDEXKASSA;
- 3 - PAYMENT_TYPE_CASH;
- status_id - id статуса заявки;
- title - заголовок заявки;
- description - описание заявки;
- created_at - время создания заявки;
- updated_at - время обновления заявки;
- deleted_at - время удаления заявки;
- все системные поля заявки (по английски).
Возвращает:
mixed - если значение найдено
или
null - если значение не найдено.
Пример:
let Data = ticket.getData('title');
ticket.getCustomData()
Считывание произвольных полей заявки
ticket.getCustomData(string $key)
Описание:
Находит значение указанного типа произвольного поля заявки.
Атрибуты:
Имя | Тип | Описание |
key | string | Ключ наименование поля |
В качестве ключа можно указать:
- названия всех произвольных полей заявки;
- id - id заявки;
- business_id - id бизнеса;
- bot_id - id бота;
- author_person_id - id автора заявки;
- client_person_id - id клиента заявки;
- assigned_person_id - id исполнителя заявки;
- ticket_type_id - id вида заявки, виды заявки создаются вручную;
- payment_type_id - id способа оплаты. Доступные значения:
- 0 - PAYMENT_TYPE_NONE;
- 1 - PAYMENT_TYPE_ROBOKASSA;
- 2 - PAYMENT_TYPE_YANDEXKASSA;
- 3 - PAYMENT_TYPE_CASH;
- status_id - id статуса заявки;
- title - заголовок заявки;
- description - описание заявки;
- created_at - время создания заявки;
- updated_at - время обновления заявки;
- deleted_at - время удаления заявки;
- все системные поля заявки (по английски).
Можно получить код значения, используя суффикс ".raw" к имени произвольного поля. Т.е. если в заявке установлено из опций поля с именем age второе значение:
({
"1": "18-25 лет",
"2": "25-30 лет",
"3": "30-35 лет",
"4": "35-40 лет",
"5": "Больше 40 лет",
"6": "Не важно"
})
то ticket.getCustomData('age') вернёт "25-30 лет", ticket.getCustomData('age.raw') вернёт "2".
Возвращает:
mixed - если значение найдено
или
null - если значение не найдено.
Пример:
let tickets = bot.findTickets();
for (let i = 0; i < tickets.length; i++) {
lead.setAttr('tickets_' + i + '_tickets_title', tickets[i].getData('title'));
lead.setAttr('tickets_' + i + '_client_contacts', tickets[i].getCustomData('client_contacts'));
lead.setAttr('tickets_' + i + '_details', tickets[i].getCustomData('details'));
lead.setAttr('tickets_' + i + '_статус_имя', tickets[i].getCustomData('статус.имя'));
}
lead.setAttr('found_tickets_count', tickets.length);
ticket.issetData() и ticket.isDataExist()
Проверить наличие данных по заявке
ticket.issetData(string $key)
или
ticket.isDataExist(string $key)
Описание:
Проверяет существуют ли данные заявки по заданному ключу.
Атрибуты:
Имя | Тип | Описание |
key | string | Ключ наименование поля |
В качестве ключа можно указать:
- id - id заявки;
- business_id - id бизнеса;
- bot_id - id бота;
- author_person_id - id автора заявки;
- client_person_id - id клиента заявки;
- assigned_person_id - id исполнителя заявки;
- ticket_type_id - id вида заявки, виды заявки создаются вручную;
- payment_type_id - id способа оплаты. Доступные значения:
- 0 - PAYMENT_TYPE_NONE;
- 1 - PAYMENT_TYPE_ROBOKASSA;
- 2 - PAYMENT_TYPE_YANDEXKASSA;
- 3 - PAYMENT_TYPE_CASH;
- status_id - id статуса заявки;
- title - заголовок заявки;
- description - описание заявки;
- created_at - время создания заявки;
- updated_at - время обновления заявки;
- deleted_at - время удаления заявки;
- все системные поля заявки (по английски).
Возвращает:
bool - подтверждение существования данных.
Пример:
let Data = ticket.issetData('title');
или
let Data = ticket.isDataExist('title');
ticket.reloadCustomData()
Перезагрузка кастомных данных
ticket.reloadCustomData(bool $isReloadModel = false)
Описание:
Перезагружает кастомные поля заявки.
Атрибуты:
Имя | Тип | Описание |
isReloadModel | bool | Перезагружает и системные поля заявки, вызывая ticket.reloadTicket() |
Возвращает:
bool — подтверждение успешной перезагрузки.
ticket.setAllCustomData()
Переопределить список кастомных полей
ticket.setAllCustomData(array $customData)
Описание:
Не переносится в БД. Будет переопределен массив кастомных полей в памяти, используется для внутренних целей задания значений полей.
Атрибуты:
Имя | Тип | Описание |
customData | array | Массив кастомных полей |
Возвращает:
self - тип указанный при вызове метода.
Пример:
ticket.setAllCustomData([{
"место": "Место 01",
"время": "12:30"
}]);
ticket.getAllCustomData()
Получить список кастомных полей
ticket.getAllCustomData()
Описание:
Возвращает значения всех кастомных полей.
Возвращает:
array - массив значений кастмных полей.
ticket.setCustomData()
Установить значение кастомного поля
ticket.setCustomData(string $key, $value)
Описание:
Устанавливает значение кастомного поля. Не сохраняется в БД.
Атрибуты:
Имя | Тип | Описание |
key | string | Ключ наименование поля |
value | self | Значение поля |
В качестве ключа можно указать:
- названия всех произвольных полей заявки;
- id - id заявки;
- business_id - id бизнеса;
- bot_id - id бота;
- author_person_id - id автора заявки;
- client_person_id - id клиента заявки;
- assigned_person_id - id исполнителя заявки;
- ticket_type_id - id вида заявки, виды заявки создаются вручную;
- payment_type_id - id способа оплаты. Доступные значения:
- 0 - PAYMENT_TYPE_NONE;
- 1 - PAYMENT_TYPE_ROBOKASSA;
- 2 - PAYMENT_TYPE_YANDEXKASSA;
- 3 - PAYMENT_TYPE_CASH;
- status_id - id статуса заявки;
- title - заголовок заявки;
- description - описание заявки;
- created_at - время создания заявки;
- updated_at - время обновления заявки;
- deleted_at - время удаления заявки;
- все системные поля заявки (по английски).
Возвращает:
self - тип указанный при вызове метода.
Пример:
ticket.setCustomData("место", "Место1");
ticket.issetCustomData()
Имеет ли значение кастомное поле
ticket.issetCustomData(string $key)
Описание:
Проверяет существует ли ключ и не имеет ли он значение null.
Атрибуты:
Имя | Тип | Описание |
key | string | Ключ наименование поля |
В качестве ключа можно указать:
- названия всех произвольных полей заявки;
- id - id заявки;
- business_id - id бизнеса;
- bot_id - id бота;
- author_person_id - id автора заявки;
- client_person_id - id клиента заявки;
- assigned_person_id - id исполнителя заявки;
- ticket_type_id - id вида заявки, виды заявки создаются вручную;
- payment_type_id - id способа оплаты. Доступные значения:
- 0 - PAYMENT_TYPE_NONE;
- 1 - PAYMENT_TYPE_ROBOKASSA;
- 2 - PAYMENT_TYPE_YANDEXKASSA;
- 3 - PAYMENT_TYPE_CASH;
- status_id - id статуса заявки;
- title - заголовок заявки;
- description - описание заявки;
- created_at - время создания заявки;
- updated_at - время обновления заявки;
- deleted_at - время удаления заявки;
- все системные поля заявки (по английски).
Возвращает:
bool - подтверждение существования ключа.
Пример:
ticket.issetCustomData("время");
ticket.isCustomDataExist()
Существует ли кастомное поле
ticket.isCustomDataExist(string $key)
Описание:
Проверяет существует ли такой ключ в списке кастомных полей.
Атрибуты:
Имя | Тип | Описание |
key | string | Ключ наименование поля |
В качестве ключа можно указать:
- названия всех произвольных полей заявки;
- id - id заявки;
- business_id - id бизнеса;
- bot_id - id бота;
- author_person_id - id автора заявки;
- client_person_id - id клиента заявки;
- assigned_person_id - id исполнителя заявки;
- ticket_type_id - id вида заявки, виды заявки создаются вручную;
- payment_type_id - id способа оплаты. Доступные значения:
- 0 - PAYMENT_TYPE_NONE;
- 1 - PAYMENT_TYPE_ROBOKASSA;
- 2 - PAYMENT_TYPE_YANDEXKASSA;
- 3 - PAYMENT_TYPE_CASH;
- status_id - id статуса заявки;
- title - заголовок заявки;
- description - описание заявки;
- created_at - время создания заявки;
- updated_at - время обновления заявки;
- deleted_at - время удаления заявки;
- все системные поля заявки (по английски).
Возвращает:
bool - подтверждение существования ключа.
Пример:
ticket.isCustomDataExist("место");
ticket.getTicketTypeName()
Получить название типа заявки
ticket.getTicketTypeName()
Описание:
Находит название типа заявки.
Возвращает:
string — название типа заявки
или
null — если у заявки нет типа.
ticket.getStatusId() и ticket.getAttr('status_id')
Получить ID статуса заявки
ticket.getStatusId()
или
ticket.getAttr('status_id')
Описание:
Находит id статуса заявки.
Атрибуты:
Имя | Тип | Описание |
status_id | string | Ключ id статуса заявки |
Возвращает:
int — id статуса заявки
или
null — если у заявки нет статуса.
ticket.getStatusName()
Получить название статуса заявки
ticket.getStatusName()
Описание:
Находит название статуса заявки.
Возвращает:
string — название статуса заявки
или
null — если у заявки нет статуса.
ticket.getStatusType()
Получить тип статуса заявки
ticket.getStatusType()
Описание:
Находит тип статуса заявки.
Возвращает:
string — тип статуса заявки
или
null — если у заявки нет статуса или у статуса нет типа.
ticket._sanitizeString()
Приведение названия статуса к стандартному виду
ticket._sanitizeString($string)
Описание:
Вспомогательная функция используемая для приведения названия статуса к нижнему регистру и удаления лишних символов из названия.
Атрибуты:
Имя | Тип | Описание |
statusNme | string | Наименование статуса заявки |
Возвращает:
string - обновленное наименование статуса заявки.
В v8 скриптах не используется.
ticket.isInStatus()
Проверить статус заявки
ticket.isInStatus($statusName)
Описание:
Проверить, что заявка находится в статусе с именем $statusName.
Атрибуты:
Имя | Тип | Описание |
statusName | string | Наименование статуса заявки |
Возвращает:
bool — подтверждение, что заявка находится в указанном статусе.
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.setStatusByName()
Установить статус заявки по имени
ticket.setStatusByName(string $statusName, int|null $personQueueIdForLog = null, string|null $personQueueTableForLog = null)
Описание:
Устанавливает указанный статус для заявки по имени.
Атрибуты:
Имя | Тип | Описание |
statusName | string | Наименование статуса заявки |
personQueueIdForLog | int|null | id очереди записываемый в лог |
personQueueTableForLog | string|null | Название таблицы-связки для очередей записываемое в лог |
Возвращает:
bool — подтверждение установки нового статуса.
ticket.reloadTicket()
Загрузить заявку повторно
ticket.reloadTicket()
Описание:
Загрузить заявку повторно из БД. Автоматически выполняется, например, в случае изменения статуса заявки, назначении другого исполнителя и т.п.
Возвращает:
bool — подтверждение повторной загрузки заявки.
ticket.getAuthorPersonId()
Получить ID автора заявки
ticket.getAuthorPersonId()
Описание:
Возвращает id автора заявки.
Возвращает:
int — id автора заявки в формате числа
или
null — если автор не найден.
ticket.getAssignedPersonId()
Получить ID исполнителя заявки
ticket.getAssignedPersonId()
Описание:
Возвращает id исполнителя заявки.
Возвращает:
int — id исполнителя заявки в формате числа
или
null — если исполнитель не найден.
ticket.getClientPersonId()
Получить ID клиента заявки
ticket.getClientPersonId()
Описание:
Возвращает id клиента заявки.
Возвращает:
int — id клиента заявки в формате числа
или
null — если клиент не найден.
ticket.getAuthorPersonFullName()
Получить ФИО автора заявки
ticket.getAuthorPersonFullName()
Описание:
Возвращает ФИО автора заявки.
Возвращает:
string — ФИО автора заявки.
ticket.getAssignedPersonFullName()
Получить ФИО исполнителя заявки
ticket.getAssignedPersonFullName()
Описание:
Возвращает ФИО исполнителя заявки.
Возвращает:
string — ФИО исполнителя заявки.
ticket.getClientPersonFullName()
Получить ФИО клиента заявки
ticket.getClientPersonFullName()
Описание:
Возвращает ФИО клиента заявки.
Возвращает:
string — ФИО клиента заявки.
ticket.getAuthorPersonRoleId()
Получить ID роли автора заявки
ticket.getAuthorPersonRoleId()
Описание:
Возвращает ID роли автора заявки.
Возвращает:
int — ID роли автора заявки
или
null — если клиент или роль не найдены.
ticket.getAssignedPersonRoleId()
Получить ID роли исполнителя заявки
ticket.getAssignedPersonRoleId()
Описание:
Возвращает ID роли исполнителя заявки.
Возвращает:
int — ID роли исполнителя заявки
или
null — если клиент или роль не найдены.
ticket.getClientPersonRoleId()
Получить ID роли клиента заявки
ticket.getClientPersonRoleId()
Описание:
Возвращает ID роли клиента заявки.
Возвращает:
int — ID роли клиента заявки
или
null — если клиент или роль не найдены.
ticket.getAuthorPersonRoleName()
Получить имя роли автора заявки
ticket.getAuthorPersonRoleName()
Описание:
Возвращает имя роли автора заявки.
Возвращает:
string — имя роли автора заявки.
ticket.getAssignedPersonRoleName()
Получить имя роли исполнителя заявки
ticket.getAssignedPersonRoleName()
Описание:
Возвращает имя роли исполнителя заявки.
Возвращает:
string — имя роли исполнителя заявки.
ticket.getClientPersonRoleName()
Получить имя роли клиента заявки
ticket.getClientPersonRoleName()
Описание:
Возвращает имя роли клиента заявки.
Возвращает:
string — имя роли клиента заявки.
ticket.getAuthorPersonRoleTitle()
Получить заголовок роли автора заявки
ticket.getAuthorPersonRoleTitle()
Описание:
Возвращает заголовок роли автора заявки.
Возвращает:
string — заголовок роли автора заявки.
ticket.getAssignedPersonRoleTitle()
Получить заголовок роли исполнителя заявки
ticket.getAssignedPersonRoleTitle()
Описание:
Возвращает заголовок роли исполнителя заявки.
Возвращает:
string — заголовок роли исполнителя заявки.
ticket.getClientPersonRoleTitle()
Получить заголовок роли клиента заявки
ticket.getClientPersonRoleTitle()
Описание:
Возвращает заголовок роли клиента заявки.
Возвращает:
string — заголовок роли клиента заявки.
ticket.getAuthorPersonRoleFormattedTitle()
Получить форматированное название роли автора заявки
ticket.getAuthorPersonRoleFormattedTitle()
Описание:
Возвращает форматированное название роли автора заявки.
Возвращает:
string — форматированное название роли автора заявки.
ticket.getAssignedPersonRoleFormattedTitle()
Получить форматированное название роли исполнителя заявки
ticket.getAssignedPersonRoleFormattedTitle()
Описание:
Возвращает форматированное название роли исполнителя заявки.
Возвращает:
string — форматированное название роли исполнителя заявки.
ticket.getClientPersonRoleFormattedTitle()
Получить форматированное название роли клиента заявки
ticket.getClientPersonRoleFormattedTitle()
Описание:
Возвращает форматированное название роли клиента заявки.
Возвращает:
string — форматированное название роли клиента заявки.
ticket.getPerson1Id()
Получение id первой дополнительной персоны
ticket.getPerson1Id()
Описание:
Возвращает id первой дополнительной персоны заявки.
Возвращает:
int — id персоны в формате числа
или
null — если персона не найдена.
ticket.getPerson2Id()
Получение id второй дополнительной персоны
ticket.getPerson2Id()
Описание:
Возвращает id второй дополнительной персоны заявки.
Возвращает:
int — id персоны в формате числа
или
null — если персона не найдена.
ticket.getPerson3Id()
Получение id третьей дополнительной персоны
ticket.getPerson3Id()
Описание:
Возвращает id третьей дополнительной персоны заявки.
Возвращает:
int — id персоны в формате числа
или
null — если персона не найдена.
ticket.setPerson1Id()
Установка id первой дополнительной персоны
ticket.setPerson1Id(int|null $personId)
Описание:
Устанавливает id первой дополнительной персоны заявки.
Атрибуты:
Имя | Тип | Описание |
personId | int|null | ID персоны |
Возвращает:
bool — подтверждение установки значения.
ticket.setPerson2Id()
Установка id второй дополнительной персоны
ticket.setPerson2Id(int|null $personId)
Описание:
Устанавливает id второй дополнительной персоны заявки.
Атрибуты:
Имя | Тип | Описание |
personId | int|null | ID персоны |
Возвращает:
bool — подтверждение установки значения.
ticket.setPerson3Id()
Установка id третьей дополнительной персоны
ticket.setPerson3Id(int|null $personId)
Описание:
Устанавливает id третьей дополнительной персоны заявки.
Атрибуты:
Имя | Тип | Описание |
personId | int|null | ID персоны |
Возвращает:
bool — подтверждение установки значения.
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)
Описание:
Назначить заявку следующему исполнителю. Исполнитель будет определен, как первый в очереди распределения по типу заявки.
Логика работы функции:
- Ищет первую персону из очереди распределения, которой еще не назначали тикет (заявку).
- Если персоны нет, то возвращаем false (чтобы остановить триггер распределения очереди).
- Увеличивает счетчик отказов у найденной персоны.
- Увеличивается счетчик отказов по найденному исполнителю.
- Если кол-во отказов >= $maxRejects, то исполнитель переносится в конец очереди (исполнитель текущий, которого нашли, а не первый в очереди).
- Назначает заявку найденной персоне.
Поиск исполнителя выполняется по следующим критериям:
- Исполнитель есть в очереди по типу заявки;
- Исполнитель активен в очереди распределения (включена соответствующая галка);
- Исполнителю еще не назначалась данная заявка.
Условие (количество отказов по исполнителю rejects_count < $maxRejects+1) НЕ НУЖНО, т.к.:
1. Как только лимит превышен персона сразу будет перемещена в конец очереди, а счетчик сброшен.
2. Может возникнуть баг, если лимит превышен, персона никогда не попадет в выборку и ее счетчик не будет сброшен.
Атрибуты:
Имя | Тип | Описание |
queueMode | int |
Режим работы очереди. Для работы с очередью на основе видов заявок указывать не нужно, будет использовано значение по умолчанию 1; |
personQueueId | int|null | id очереди |
personQueueTable | string|null | Название таблицы-связки для очередей |
currentAssignAttempt | int|null |
Номер попытки прогона одного и того же тикета по той же очереди |
isIncRejectsCount | bool | Увеличивать или нет счетчик попыток у персоны (в очереди исполнителей) |
isMoveToEndIfRejectsExceed | bool | Переносить или нет персону в конец очереди и сбрасывать счетчик попыток, если кол-во попыток превышено (превышает число указанное в настройках бота) |
Возвращает:
bool — подтверждение назначения заявки следующему исполнителю.
ticket.moveAssignedPersonToEndOfQueue()
Перенести исполнителя в конец очереди
ticket.moveAssignedPersonToEndOfQueue(int $queueMode = 1, int|null $personQueueId = null, string|null $personQueueTable = null, bool $isResetRejectsCount = true)
Описание:
Используется для скрипта "Приема заявки" в боте, чтобы переместить исполнителя в конец очереди, после того как он принял заявку.
Переносит персону, которой в данный момент назначен тикет, в конец очереди, при этом исполнитель заявки не меняется.
Атрибуты:
Имя | Тип | Описание |
queueMode | int |
Режим работы очереди. Для работы с очередью на основе видов заявок указывать не нужно, будет использовано значение по умолчанию 1; |
personQueueId | int|null | id очереди |
personQueueTable | string|null | Название таблицы-связки для очередей |
isResetRejectsCount | bool | Обновить или нет счетчик попыток у персоны (в очереди исполнителей) |
Возвращает:
bool — подтверждение переноса исполнителя.
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.getAssignedPersonRejectsCount()
Получить количество отказов от заявок
ticket.getAssignedPersonRejectsCount(int|null $personQueueId = null, string|null $personQueueTable = null): ?int
Описание:
Возвращает количество отказов от заявок для текущего исполнителя.
Атрибуты:
Имя | Тип | Описание |
personQueueId | int|null | id очереди |
personQueueTable | string|null | Название таблицы-связки для очередей |
Возвращает:
int — количество отказов от заявок в формате числа.
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.incAssignedPersonRejectsCount()
Увеличить количество отказов от заявок
ticket.incAssignedPersonRejectsCount(int|null $personQueueId = null, string|null $personQueueTable = null)
Описание:
Увеличить количество отказов от заявок для текущего исполнителя на 1. Метод не сбрасывает кол-во попыток, если значение будет больше чем указанное в боте максимальное количество отказов.
Атрибуты:
Имя | Тип | Описание |
personQueueId | int|null | id очереди |
personQueueTable | string|null | Название таблицы-связки для очередей |
Возвращает:
bool — подтверждение успешного увеличения отказов.
ticket.assignToNextPersonAndMoveToEnd()
Назначить заявку следующему исполнителю и перенести в конец очереди
ticket.assignToNextPersonAndMoveToEnd()
Описание:
Назначает заявку следующему исполнителю и переносит его в конец очереди.
Возвращает:
bool — подтверждение назначения заявки.
ticket.getAllData()
Получить значение всех данных заявки
ticket.getAllData()
Описание:
Возвращает значение всех данных заявки.
Возвращает:
array - массив данных заявки:
- id - id заявки;
- business_id - id бизнеса;
- bot_id - id бота;
- author_person_id - id автора заявки;
- client_person_id - id клиента заявки;
- assigned_person_id - id исполнителя заявки;
- ticket_type_id - id вида заявки, виды заявки создаются вручную;
- payment_type_id - id способа оплаты. Доступные значения:
- 0 - PAYMENT_TYPE_NONE;
- 1 - PAYMENT_TYPE_ROBOKASSA;
- 2 - PAYMENT_TYPE_YANDEXKASSA;
- 3 - PAYMENT_TYPE_CASH;
- status_id - id статуса заявки;
- title - заголовок заявки;
- description - описание заявки;
- created_at - время создания заявки;
- updated_at - время обновления заявки;
- deleted_at - время удаления заявки;
- все системные поля заявки (по английски).
ticket.setData()
Установить значение данных заявки по ключу
ticket.setData(string $key, $value)
Описание:
Устанавливает значение данных заявки по ключу.
Атрибуты:
Имя | Тип | Описание |
key | string | Ключ наименование поля |
value | mixed | Значение данных |
В качестве ключа можно указать:
- id - id заявки;
- business_id - id бизнеса;
- bot_id - id бота;
- author_person_id - id автора заявки;
- client_person_id - id клиента заявки;
- assigned_person_id - id исполнителя заявки;
- ticket_type_id - id вида заявки, виды заявки создаются вручную;
- payment_type_id - id способа оплаты. Доступные значения:
- 0 - PAYMENT_TYPE_NONE;
- 1 - PAYMENT_TYPE_ROBOKASSA;
- 2 - PAYMENT_TYPE_YANDEXKASSA;
- 3 - PAYMENT_TYPE_CASH;
- status_id - id статуса заявки;
- title - заголовок заявки;
- description - описание заявки;
- created_at - время создания заявки;
- updated_at - время обновления заявки;
- deleted_at - время удаления заявки;
- все системные поля заявки (по английски).
Возвращает:
self - установленные данные.
ticket.loadCustomDataIfNotLoaded()
Загрузить кастомные данные
ticket.loadCustomDataIfNotLoaded(bool $isReloadModel = false)
Описание:
Загружает кастомные данные, если они не загружены.
Атрибуты:
Имя | Тип | Описание |
isReloadModel | bool |
Возвращает:
bool - подтверждение загрузки.
ticket.getSubtotalFormatted()
Узнать форматированную промежуточную стоимость заказа
ticket.getSubtotalFormatted()
Описание:
Возвращает форматированную промежуточную стоимость заказа.
Возвращает:
string - промежуточная стоимость заказа.
ticket.getTotalFeeFormatted()
Узнать форматированную стоимость заказа
ticket.getTotalFeeFormatted()
Описание:
Возвращает форматированную стоимость заказа.
Возвращает:
string - стоимость заказа.
ticket.getDeliveryFeeFormatted()
Узнать форматированную стоимость доставки
ticket.getDeliveryFeeFormatted()
Описание:
Возвращает форматированную стоимость доставки.
Возвращает:
string - стоимость доставки.
ticket.getTotalFormatted()
Узнать форматированную итоговую стоимость заказа
ticket.getTotalFormatted()
Описание:
Возвращает форматированную итоговую стоимость заказа.
Возвращает:
string - итоговая стоимость заказа.
ticket.getTicketLines()
Получить массив объектов ScriptTicketLine
ticket.getTicketLines()
Описание:
Возвращает массив объектов ScriptTicketLine.
Возвращает:
ScriptTicketLine - массив объектов.
Методы ticketStatuses
ticketStatuses.reload()
Перезагрузить все статусы из БД
ticketStatuses.reload()
Описание:
Перезагружает все статусы из БД.
Возвращает:
bool - подтверждение перезагрузки.
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.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 над ним можно работать с помощью следующих методов для получения необходимых значений:
Описание | Метод | Возвращаемое значение |
Получение элемента |
|
?string |
Обновление |
|
bool |
Получение даты создания |
|
?string |
Получение даты обновления |
|
?string |
Получение даты удаления |
|
?string |
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 над ним можно работать с помощью следующих методов для получения необходимых значений:
Описание | Метод | Возвращаемое значение |
Получение элемента |
|
?string |
Обновление |
|
bool |
Получение даты создания |
|
?string |
Получение даты обновления |
|
?string |
Получение даты удаления |
|
?string |
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 над ним можно работать с помощью следующих методов для получения необходимых значений:
Описание | Метод | Возвращаемое значение |
Получение элемента |
|
?string |
Обновление |
|
bool |
Получение даты создания |
|
?string |
Получение даты обновления |
|
?string |
Получение даты удаления |
|
?string |
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.findAllByTypes()
Поиск статусов по типу статуса
ticketStatuses.findAllByTypes(string|array|object|null $types, string $operator = '=', bool $isReturnCollection = false)
Описание:
Находит статусы соответствующие указанным типам.
Атрибуты:
Имя | Тип | Описание |
types | string|array|object|null | Тип статуса |
operator | string | Оператор |
isReturnCollection | bool | Параметр позволяющий вернуть значения в виде коллекции |
На данный момент поддерживаются следующие типы статусов:
- NEW
- ASSIGNED
- PENDING_CONFIRMATION
- CONFIRMED
- CANCELLED
- CLOSED
- PENDING_PAYMENT
- PAYMENT_FAILED
- PAID
- PREPARING_ORDER
- DELIVERY_IN_PROGRESS
- WAITS_FOR_CUSTOMER_PICK_UP
- DELIVERED
Возвращает:
Collection - данные статусов в виде коллекции.
Пример:
var statuses = ticketStatuses.findAllByTypes(['ASSIGNED', 'NEW'], 'IN');
lead.setAttr('4_found_ticket_statuses_by_types_in_count', statuses.length);
statuses = ticketStatuses.findAllByTypes('ASSIGNED', 'like');
lead.setAttr('5_found_ticket_statuses_by_types_like_count', statuses.length);
Методы person
person.update()
Обновить персону
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 | Отчество персоны |
|
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.delete()
Удалить персону
person.delete()
Описание:
Удаляет персону лида.
Возвращает:
bool - подтверждение удаления персоны.
person.getAllData()
Получить все поля персоны
person.getAllData()
Описание:
Возвращает значения всех полей персоны лида в виде массива.
Возвращает:
array - массив всех значений полей персоны:
- id - id персоны;
- business_id - id бизнеса;
- bot_id - id бота;
- person_role_id - id роли;
- is_external - значение поля Сотрудник/Клиент;
- user_id - id пользователя;
- firstname - имя;
- lastname - фамилия;
- middlename - отчество;
- email - адрес электронной почты;
- phone - номер телефона;
- organization_name - название организации;
- organization_address - адрес организации;
- comment - комментарий;
- created_at - дата создания;
- updated_at - дата последнего редактирования;
- deleted_at - дата удаления;
- все системные поля персоны (по английски).
Пример:
let AllData = person.getAllData();
let Data2 = AllData[1];
person.setData()
Установить поле персоны
person.setData(string $key, $value)
Описание:
Заполняет указанное поле персоны лида указанным значением.
Атрибуты:
Имя | Тип | Описание |
key |
string | Ключ наименование поля |
value |
mixed | Значение вводимое в поле |
В качестве ключа можно указать:
- id - id персоны;
- business_id - id бизнеса;
- bot_id - id бота;
- person_role_id - id роли;
- is_external - значение поля Сотрудник/Клиент;
- user_id - id пользователя;
- firstname - имя;
- lastname - фамилия;
- middlename - отчество;
- email - адрес электронной почты;
- phone - номер телефона;
- organization_name - название организации;
- organization_address - адрес организации;
- comment - комментарий;
- created_at - дата создания;
- updated_at - дата последнего редактирования;
- deleted_at - дата удаления;
- все системные поля персоны (по английски).
Возвращает:
self - значение отредактированного поля в соответствующем формате.
Пример:
person.setData('email', 'user@mail.ru');
person.getData()
Получить значение данных персоны
person.getData(string $key)
Описание:
Возвращает значение данных персоны по ключу или названию поля БД.
Атрибуты:
Имя | Тип | Описание |
key |
string | Ключ наименование поля |
В качестве ключа можно указать:
- id - id персоны;
- business_id - id бизнеса;
- bot_id - id бота;
- person_role_id - id роли;
- is_external - значение поля Сотрудник/Клиент;
- user_id - id пользователя;
- firstname - имя;
- lastname - фамилия;
- middlename - отчество;
- email - адрес электронной почты;
- phone - номер телефона;
- organization_name - название организации;
- organization_address - адрес организации;
- comment - комментарий;
- created_at - дата создания;
- updated_at - дата последнего редактирования;
- deleted_at - дата удаления;
- все системные поля персоны (по английски).
Возвращает:
self - значение запрашиваемого поля в соответствующем формате.
Пример:
let createdAt = person.getData('created_at');
person.issetData() и person.isDataExist()
Проверить наличие данных по персоне
person.issetData(string $key)
или
person.isDataExist(string $key)
Описание:
Проверяет существование данных персоны лида.
Атрибуты:
Имя | Тип | Описание |
key |
string | Ключ наименование поля |
В качестве ключа можно указать:
- id - id персоны;
- business_id - id бизнеса;
- bot_id - id бота;
- person_role_id - id роли;
- is_external - значение поля Сотрудник/Клиент;
- user_id - id пользователя;
- firstname - имя;
- lastname - фамилия;
- middlename - отчество;
- email - адрес электронной почты;
- phone - номер телефона;
- comment - комментарий;
- created_at - дата создания;
- updated_at - дата последнего редактирования;
- deleted_at - дата удаления;
- все системные поля персоны (по английски).
Возвращает:
bool - подтверждение существования данных.
Пример:
let DataExist = person.issetData('phone');
или
let DataExist = person.isDataExist('phone');
person.getId()
Получить ID персоны
person.getId()
Описание:
Возвращает id персоны привязанной к лиду.
Возвращает:
int - id персоны в формате числа.
Пример:
let PersonId = person.getId();
lead.setAttr('PersonId', PersonId);
person.getFullName() и person.getFIO()
Получить полное имя персоны
person.getFullName()
person.getFIO()
Описание:
Возвращает полное имя персоны лида в виде Фамилия + Имя + Отчество.
Возвращает:
string - полное имя персоны.
Пример:
let PersonName = person.getFullName();
lead.setAttr('PersonName', PersonName);
person.getRoleId()
Получить ID роли персоны
person.getRoleId()
Описание:
Возвращает id роли привязанной к персоне лида.
Возвращает:
int - id роли персоны в формате числа.
Пример:
let RoleId = person.getRoleId();
lead.setAttr('RoleId', RoleId);
person.getRoleName()
Получить название роли персоны
person.getRoleName()
Описание:
Возвращает название роли привязанной к персоне лида.
Возвращает:
string - название роли персоны.
Пример:
let RoleName = person.getRoleName();
lead.setAttr('RoleName', RoleName);
person.getRoleTitle()
Получить заголовок роли персоны
person.getRoleTitle()
Описание:
Возвращает заголовок роли привязанной к персоне лида.
Возвращает:
string - заголовок роли персоны.
Пример:
let RoleTitle = person.getRoleTitle();
lead.setAttr('RoleTitle', RoleTitle);
person.getRoleFormattedTitle()
Получить форматированное название роли персоны
person.getRoleFormattedTitle()
Описание:
Возвращает форматированное название роли персоны лида.
Будет возвращено:
- Заголовок роли, если он указан, иначе
- Имя роли, если оно указано, иначе
- ID роли.
Возвращает:
string - форматированное название роли персоны.
Пример:
let FormattedTitle = person.getRoleFormattedTitle();
lead.setAttr('FormattedTitle', FormattedTitle);
person.getPhone()
Получить номер телефона персоны
person.getPhone()
Описание:
Находит номер телефона персоны лида.
Возвращает:
string - номер телефона персоны в формате строки.
person.setPhone()
Установить номер телефона персоны
person.setPhone(?string $phone)
Описание:
Устанавливает значение номера телефона персоны лида.
Атрибуты:
Имя | Тип | Описание |
phone |
string | Номер телефона |
Возвращает:
bool - подтверждение установки значения.
Пример:
person.setPhone('+71234567890');
person.getEmail()
Получить почту персоны
person.getEmail()
Описание:
Находит адрес электронной почты персоны лида.
Возвращает:
string - адрес электронной почты персоны в формате строки.
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.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.moveToEndOfQueue()
Перемещение персоны в конец очереди
person.moveToEndOfQueue(int $queueMode = 1, ?int $personQueueId = null, ?string $personQueueTable = null, ?int $ticketTypeId = null, bool $isResetRejectsCount = true)
Описание:
Перемещает персону в конец указанной очереди, либо в конец нескольких очередей.
Атрибуты:
Имя | Тип | Описание |
queueMode | int |
Режим работы очереди. Для работы с очередью на основе видов заявок указывать не нужно, будет использовано значение по умолчанию 1; |
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.setIsActiveInQueue()
Активация/деактивация персоны в очереди
person.setIsActiveInQueue(bool $isActive = true)
Описание:
Включает или выключает параметр Активна персоны в очереди.
Атрибуты:
Имя | Тип | Описание |
isActive |
bool | Активировать или деактивировать персону в очереди |
Возвращает:
bool - подтверждение активации или деактивации.
Пример:
persons.setIsActiveInQueue(true);
person.getLeads()
Получить лиды персоны
person.getLeads(bool $isFindInAllBusinessBots = false)
Описание:
Возвращает лиды персоны.
Атрибуты:
Имя | Тип | Описание |
isFindInAllBusinessBots |
bool | Поиск по всем ботам бизнеса |
Возвращает:
array - массив лидов персоны.
Методы personQueues
personQueues.find()
Найти очередь исполнителей
personQueues.find($where, bool $isReturnCollection = false)
Описание:
Находит очередь исполнителей соответствующую указанным значениям.
Атрибуты:
Имя | Тип | Описание |
where |
array | Параметр по которому будет проверяться соответствие с найденными очередями |
isReturnCollection |
bool | Параметр позволяющий вернуть значения в виде коллекции |
Возвращает:
ScriptPersonQueue[] - обертка вокруг записи из таблицы person_queues
или
Collection - данные очередей в виде коллекции.
Пример:
Атрибуты и методы ScriptPersonQueue
Описание | Метод | Возвращаемое значение |
Получение id |
|
int |
Получение кода |
|
string |
Получение активности |
|
bool |
Получение заголовка |
|
string |
Получение даты создания |
|
string |
Получение даты обновления |
|
string |
Обновление |
|
bool |
Приводит $title к нижнему регистру и сравнивает с заголовком очереди |
|
bool |
personQueues.findById()
Найти очередь исполнителей по id
personQueues.findById(string|int|null $id)
Описание:
Находит очередь исполнителей соответствующую указанному id.
Атрибуты:
Имя | Тип | Описание |
id |
string|int|null | ID очереди исполнителей |
Возвращает:
ScriptPersonQueue[] - обертка вокруг записи из таблицы person_queues.
Атрибуты и методы ScriptPersonQueue
Описание | Метод | Возвращаемое значение |
Получение id |
|
int |
Получение кода |
|
string |
Получение активности |
|
bool |
Получение заголовка |
|
string |
Получение даты создания |
|
string |
Получение даты обновления |
|
string |
Обновление |
|
bool |
Приводит $title к нижнему регистру и сравнивает с заголовком очереди |
|
bool |
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 |
|
int |
Получение кода |
|
string |
Получение активности |
|
bool |
Получение заголовка |
|
string |
Получение даты создания |
|
string |
Получение даты обновления |
|
string |
Обновление |
|
bool |
Приводит $title к нижнему регистру и сравнивает с заголовком очереди |
|
bool |
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 |
|
int |
Получение кода |
|
string |
Получение активности |
|
bool |
Получение заголовка |
|
string |
Получение даты создания |
|
string |
Получение даты обновления |
|
string |
Обновление |
|
bool |
Приводит $title к нижнему регистру и сравнивает с заголовком очереди |
|
bool |
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 |
|
int |
Получение кода |
|
string |
Получение активности |
|
bool |
Получение заголовка |
|
string |
Получение даты создания |
|
string |
Получение даты обновления |
|
string |
Обновление |
|
bool |
Приводит $title к нижнему регистру и сравнивает с заголовком очереди |
|
bool |
personQueues.reload()
Обновить очередь исполнителей
personQueues.reload()
Описание:
Обновляет данные очередей исполнителей
Возвращает:
bool - подтверждение обновления очередей.
personQueues.getCollection()
Получить коллекцию очередей исполнителей
personQueues.getCollection()
Описание:
Возвращает коллекцию очередей исполнителей.
Возвращает:
Collection - данные очередей в виде коллекции.
personQueues.findByName()
Найти очередь исполнителей по наименованию
personQueues.findByName(string $name, bool $isEnabled = null)
Описание:
Возвращает очередь исполнителей по наименованию.
Атрибуты:
Имя | Тип | Описание |
name |
string | Наименование очереди исполнителей |
isEnabled |
bool | Активна или нет |
Возвращает:
ScriptPersonQueue[] - обертка вокруг записи из таблицы person_queues.
Атрибуты и методы ScriptPersonQueue
Описание | Метод | Возвращаемое значение |
Получение id |
|
int |
Получение кода |
|
string |
Получение активности |
|
bool |
Получение заголовка |
|
string |
Получение даты создания |
|
string |
Получение даты обновления |
|
string |
Обновление |
|
bool |
Приводит $title к нижнему регистру и сравнивает с заголовком очереди |
|
bool |
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 |
|
int |
Получение кода |
|
string |
Получение активности |
|
bool |
Получение заголовка |
|
string |
Получение даты создания |
|
string |
Получение даты обновления |
|
string |
Обновление |
|
bool |
Приводит $title к нижнему регистру и сравнивает с заголовком очереди |
|
bool |
Методы 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.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)
Использование оператора IN:
["stage_code", "IN", ["planned", "active", "submission"]]
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.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.max()
Поиск максимального значения по полю
table.max(string $tableName, string $column, array|object $where = [])
Описание:
Ищет записи соответствующие условию метода в таблице и возвращает наибольшее по значению из них.
Атрибуты:
Имя | Тип | Описание |
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
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});
item.delete()
Удаление записи
item.delete()
Описание:
Удаляет указанную запись item в таблице.
Возвращает:
bool - подтверждение удачного удаления записи.
Пример:
Удаление всех записей из таблицы:
var items = table.find('regions');
for(var i = 0; i < items.length; i++) {
items[i].delete();
}
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');
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
item.reload()
Перезагрузить данные записи из бд
item.reload()
Описание:
Перезагружает значение записи из бд в таблицу.
Возвращает:
bool - подтверждение удачной перезагрузки записи.
Пример:
Перезагрузка всех записей таблицы:
var items = table.find('regions');
for(var i = 0; i < items.length; i++) {
items[i].reload();
}
Методы для строки полученной через getLastRequest
request.
Доступ к json параметрам
request.json
request.array
request.string
или
request.asJson()
request.asArray()
request.asString()
Описание:
Доступ к json параметрам в виде javascript json-обьекта, например для использования как request.json.name или в виде массива request.array['name'] или в виде json объекта соответственно. request — нужен чтобы знать точно что именно в текущем запросе прилетели параметры, а не были сохранены в атрибуты лида, например неделю назад.
.json/.array/.string — это синонимы и по факту вызывают функции
request — это параметры текущего request запроса
last_request.
Доступ к последнему реквесту
last_request.json
last_request.array
last_request.string
или
last_request.asJson()
last_request.asArray()
last_request.asString()
Описание:
Доступ к последним json параметрам сохраненным в атрибутах лида в виде javascript json-обьекта, например для использования как request.json.name или в виде массива request.array['name'] или в виде json объекта соответственно. В лид параметры будут сохранены в json атрибут лида (sys_last_script_request_params).
Методы api
api.request()
Выполнить HTTP запрос
api.request(string $method, string $uri, $requestOptions = [], $httpClientConfig = [], $body = null, $jsonBody = null, $headers = [], bool $isForceAddJsonHeaders = false)
Описание:
Выполняет HTTP запрос, с помощью Guzzle.
Атрибуты:
Имя | Тип | Описание |
method | string | Метод запроса |
uri | string | Url запроса |
requestOptions | array|object | Опции запроса |
httpClientConfig | array|object | Набор параметров для включения или выключения различных возможностей Http Client |
body | array|object|string|null | Тело запроса |
jsonBody | array|object|null | JSON тело запроса |
headers | array|object | Заголовки запроса |
isForceAddJsonHeaders | bool | Добавление заголовков Json |
Возвращает:
mixed — ответ запроса
или
ResponseInterface — объект Response
или
null — если таких данных не существует.
api.post()
Выполнить HTTP POST запрос
api.post(string $uri, $body = [], $requestOptions = [], $headers = [], $httpClientConfig = [])
Описание:
Выполняет HTTP POST запрос, с помощью Guzzle.
Атрибуты:
Имя | Тип | Описание |
uri | string | Url запроса |
requestOptions | array|object | Опции запроса |
httpClientConfig | array|object | Набор параметров для включения или выключения различных возможностей Http Client |
body | array|object|null | Тело запроса |
headers | array|object | Заголовки запроса |
Возвращает:
string — ответ запроса в формате строки
или
null — если таких данных не существует.
api.get()
Выполнить HTTP GET запрос
api.get(string $uri, $requestOptions = [], $headers = [], $httpClientConfig = [])
Описание:
Выполняет HTTP GET запрос, с помощью Guzzle.
Атрибуты:
Имя | Тип | Описание |
uri | string | Url запроса |
requestOptions | array|object | Опции запроса |
httpClientConfig | array|object | Набор параметров для включения или выключения различных возможностей Http Client |
headers | array|object | Заголовки запроса |
Возвращает:
string — ответ запроса в формате строки
или
null — если таких данных не существует.
api.getJson()
Выполнить HTTP GET запрос
api.getJson(string $uri, $jsonBody = null, $headers = [], $requestOptions = [], $httpClientConfig = [])
Описание:
Выполняет HTTP GET запрос с jsonBody, с помощью Guzzle.
Атрибуты:
Имя | Тип | Описание |
uri | string | Url запроса |
requestOptions | array|object | Опции запроса |
httpClientConfig | array|object | Набор параметров для включения или выключения различных возможностей Http Client |
jsonBody | array|object|null | Json тело запроса |
headers | array|object | Заголовки запроса |
Возвращает:
array — ответ запроса в формате массива
или
null — если таких данных не существует.
api.postJson()
Выполнить HTTP POST запрос
api.postJson(string $uri, $jsonBody = [], $headers = [], $requestOptions = [], $httpClientConfig = [])
Описание:
Выполняет HTTP POST запрос с jsonBody, с помощью Guzzle.
Атрибуты:
Имя | Тип | Описание |
uri | string | Url запроса |
requestOptions | array|object | Опции запроса |
httpClientConfig | array|object | Набор параметров для включения или выключения различных возможностей Http Client |
jsonBody | array|object | Json тело запроса |
headers | array|object | Заголовки запроса |
Возвращает:
array — ответ запроса в формате массива
или
null — если таких данных не существует.
api.getHttpConfig()
Получить HTTP Config
api.getHttpConfig()
Описание:
Возвращает HTTP Config.
Возвращает:
array — HTTP Config в формате массива.
api.setHttpConfig()
Установить HTTP Config
api.setHttpConfig($config)
Описание:
Устанавливает HTTP Config.
Атрибуты:
Имя | Тип | Описание |
config | array|object|string | HTTP Config |
Возвращает:
array — HTTP Config в формате массива.
api.getRequestOptions()
Получить параметры HTTP запроса
api.getRequestOptions()
Описание:
Возвращает параметры HTTP запроса.
Возвращает:
array — параметры HTTP запроса в формате массива.
api.setRequestOptions()
Установить параметры HTTP запроса
api.setRequestOptions($options)
Описание:
Устанавливает параметры HTTP запроса.
Атрибуты:
Имя | Тип | Описание |
options | array|object|string | Параметры HTTP запроса |
Возвращает:
array — параметры HTTP запроса в формате массива.
api.getHeaders()
Получить заголовки HTTP запроса
api.getHeaders()
Описание:
Возвращает заголовки HTTP запроса.
Возвращает:
array — заголовки HTTP запроса в формате массива.
api.setHeaders()
Установить заголовки HTTP запроса
api.setHeaders($headers)
Описание:
Устанавливает заголовки HTTP запроса.
Атрибуты:
Имя | Тип | Описание |
headers | array|object | Заголовки HTTP запроса |
Возвращает:
array — заголовки HTTP запроса в формате массива.
api.getProxyUrl()
Получить Proxy Url HTTP запроса
api.getProxyUrl()
Описание:
Возвращает Proxy Url HTTP запроса.
Возвращает:
string — Proxy Url HTTP запроса в формате строки
или
null — если данные не найдены.
api.setProxyUrl()
Установить Proxy Url HTTP запроса
api.setProxyUrl($proxyUrl)
Описание:
Устанавливает Proxy Url HTTP запроса.
Атрибуты:
Имя | Тип | Описание |
proxyUrl | string | Proxy Url HTTP запроса |
Возвращает:
string — Proxy Url HTTP запроса в формате строки
или
null — если данные не найдены.
api.getLastResponseCode()
Получить код последнего ответа HTTP запроса
api.getLastResponseCode()
Описание:
Возвращает код последнего ответа HTTP запроса.
Возвращает:
int — код ответа HTTP запроса.
api.getLastResponseContent()
Получить содержимое последнего ответа HTTP запроса
api.getLastResponseContent()
Описание:
Возвращает содержимое последнего ответа HTTP запроса.
Возвращает:
string — содержимое ответа HTTP запроса
или
null — если данные не найдены.
api.getLastJsonResponse()
Получить последний ответ HTTP запроса в формате JSON
api.getLastJsonResponse()
Описание:
Возвращает последний ответ HTTP запроса в формате JSON.
Возвращает:
array — ответ HTTP запроса в формате JSON
или
null — если данные не найдены.
api.getLastResponse()
Получить последний ответ HTTP запроса
api.getLastResponse()
Описание:
Возвращает последний ответ HTTP запроса.
Возвращает:
mixed — ответ HTTP запроса
или
ResponseInterface — ответ HTTP запроса
или
null — если данные не найдены.
api.setTimeout()
Установить время задержки для HTTP запросов
api.setTimeout(float $timeout)
Описание:
Устанавливает время задержки для HTTP запросов.
Атрибуты:
Имя | Тип | Описание |
timeout | float | Время задержки |
Возвращает:
float — время задержки.
api.getTimeout()
Получить время задержки для HTTP запросов
api.getTimeout()
Описание:
Возвращает время задержки для HTTP запросов.
Возвращает:
float — время задержки.
api.isExceptionThrown()
api.isExceptionThrown()
Описание:
Возвращает:
bool — .
api.getLastResponseTime()
Получить время последнего ответа HTTP запроса
api.getLastResponseTime()
Описание:
Возвращает время последнего ответа HTTP запроса.
Возвращает:
float — время ответа.
api.getLastErrorBody()
Получить содержимое ошибки последнего ответа HTTP запроса
api.getLastErrorBody(bool $isAutoConvertToJson = true)
Описание:
Возвращает содержимое ошибки последнего ответа HTTP запроса.
Атрибуты:
Имя | Тип | Описание |
isAutoConvertToJson | bool | Конвертация в Json |
Возвращает:
string — содержимое ошибки в формате строки
или
array — содержимое ошибки в формате массива
или
null — если данные не найдены.
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.enableExceptions()
Включить исключения для HTTP запросов
api.enableExceptions()
Описание:
Включает исключения для HTTP запросов.
Возвращает:
self — включение исключений.
api.disableExceptions()
Выключить исключения для HTTP запросов
api.disableExceptions()
Описание:
Выключает исключения для HTTP запросов.
Возвращает:
self — выключение исключений.
api.enableContinueCallEndpointOnJsError()
Включить вызов эндпоинта при ошибке JS
api.enableContinueCallEndpointOnJsError()
Описание:
Включает вызов эндпоинта при ошибке JS.
Возвращает:
self — включение вызова.
api.disableContinueCallEndpointOnJsError()
Выключить вызов эндпоинта при ошибке JS
api.disableContinueCallEndpointOnJsError()
Описание:
Выключает вызов эндпоинта при ошибке JS.
Возвращает:
self — выключение вызова.
api.getIsContinueCallEndpointOnJsError()
Получить режим вызова эндпоинта при ошибке JS
api.getIsContinueCallEndpointOnJsError()
Описание:
Возвращает режим вызова эндпоинта при ошибке JS.
Возвращает:
bool — режим вызова.
Методы 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.getAttr()
Получить значение временной переменной
memory.getAttr(string $key)
Описание:
Возвращает значение уже существующей временной переменной.
Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
Возвращает:
string - значение запрашиваемой переменной в виде строки
или
null - если переменная не была найдена.
Пример:
let memory_attribute_value = memory.getAttr('memory_attribute');
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.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.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.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.setAllJsonAttrs()
Установить значение всех временных JSON переменных
memory.setAllJsonAttrs(array $data)
Описание:
Устанавливает значение всех временных JSON переменных.
Атрибуты:
Имя | Тип | Описание |
data | array | JSON значение переменной |
Возвращает:
self - объект того же типа и значения, что задан в методе.
Пример:
let memory_attribute_value = memory.setAllJsonAttrs({
"id": 2415,
"name": "Имя"
});
memory.getAllJsonAttrs()
Получить значение всех временных JSON переменных
memory.getAllJsonAttrs()
Описание:
Возвращает значение всех временных JSON переменных.
Возвращает:
array - массив JSON переменных.
Пример:
let memory_attribute_value = memory.getAllJsonAttrs();
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.getJsonAttr()
Получить значение временной JSON переменной
memory.getJsonAttr(string $key)
Описание:
Возвращает значение уже существующей временной JSON переменной.
Атрибуты:
Имя | Тип | Описание |
key | string | Наименование переменной |
Возвращает:
mixed - значение запрашиваемой JSON переменной
или
null - если переменная не была найдена.
Пример:
let memory_attribute_value = memory.getJsonAttr('memory_attribute');
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.reload()
Обновить данные по строке заявки из бд
ScriptTicketLine.reload()
Описание:
Обновляет данные по строке заявки из бд.
Возвращает:
bool - подтверждение обновления данных.
ScriptTicketLine.getId()
Получить id ScriptTicketLine
ScriptTicketLine.getId()
Описание:
Возвращает id ScriptTicketLine.
Возвращает:
int - если значение найдено
или
null - если значение не найдено.
ScriptTicketLine.getTicketId()
Получить id заявки
ScriptTicketLine.getTicketId()
Описание:
Возвращает id заявки.
Возвращает:
int - id заявки
или
null - если значение не найдено.
ScriptTicketLine.getProductId()
Получить id продукта заявки
ScriptTicketLine.getProductId()
Описание:
Возвращает id продукта заявки.
Возвращает:
int - id продукта заявки
или
null - если значение не найдено.
ScriptTicketLine.getProduct()
Получить все данные продукта заявки
ScriptTicketLine.getProduct()
Описание:
Возвращает все данные продукта заявки.
Возвращает:
ScriptProduct - данные продукта заявки
или
null - если значение не найдено.
ScriptTicketLine.getQuantity()
Получить количество продукта в заявке
ScriptTicketLine.getQuantity()
Описание:
Возвращает количество продукта в заявке.
Возвращает:
int - количество продукта в заявке
или
null - если значение не найдено.
ScriptTicketLine.getPrice()
Получить цену продукта в заявке
ScriptTicketLine.getPrice()
Описание:
Возвращает цену продукта в заявке.
Возвращает:
float - цена продукта в заявке.
ScriptTicketLine.getPriceFormatted()
Получить форматированную цену продукта
ScriptTicketLine.getPriceFormatted()
Описание:
Возвращает форматированную цену продукта в заявке.
Возвращает:
string - форматированная цена продукта.
ScriptTicketLine.getFee()
Получить стоимость заявки
ScriptTicketLine.getFee()
Описание:
Возвращает стоимость заявки.
Возвращает:
float - стоимость заявки.
ScriptTicketLine.getFeeFormatted()
Получить форматированную стоимость заявки
ScriptTicketLine.getFeeFormatted()
Описание:
Возвращает форматированную стоимость заявки.
Возвращает:
string - форматированная стоимость заявки.
ScriptTicketLine.getSubtotal()
Получить итоговую стоимость заявки
ScriptTicketLine.getSubtotal()
Описание:
Возвращает итоговую стоимость заявки.
Возвращает:
float - итоговая стоимость заявки.
ScriptTicketLine.getSubtotalFormatted()
Получить форматированную итоговую стоимость заявки
ScriptTicketLine.getSubtotalFormatted()
Описание:
Возвращает форматированную итоговую стоимость заявки.
Возвращает:
string - форматированная итоговая стоимость заявки.
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.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.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.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.reload()
Обновить данные по продукту из бд
ScriptProduct.reload()
Описание:
Обновляет данные по продукту из бд.
Возвращает:
bool - если значение найдено.
ScriptProduct.getId()
Получить id продукта
ScriptProduct.getId()
Описание:
Возвращает id продукта.
Возвращает:
int - id продукта
или
null - если значение не найдено.
ScriptProduct.getTitle()
Получить наименование продукта
ScriptProduct.getTitle()
Описание:
Возвращает наименование продукта.
Возвращает:
string - наименование продукта
или
null - если значение не найдено.
ScriptProduct.getCode()
Получить код продукта
ScriptProduct.getCode()
Описание:
Возвращает код продукта.
Возвращает:
string - код продукта
или
null - если значение не найдено.
ScriptProduct.getPrice()
Получить цену продукта
ScriptProduct.getPrice()
Описание:
Возвращает цену продукта.
Возвращает:
float - цена продукта
или
null - если значение не найдено.
ScriptProduct.getMainCategoryId()
Получить id категории продукта
ScriptProduct.getMainCategoryId()
Описание:
Возвращает id категории продукта.
Возвращает:
int - id категории продукта
или
null - если значение не найдено.
ScriptProduct.getIsEnabled()
Проверить активен ли продукт
ScriptProduct.getIsEnabled()
Описание:
Проверяет активен ли продукт.
Возвращает:
bool - подтверждение активности
или
null - если значение не найдено.
ScriptProduct.getIsAvailableInStock()
Проверить есть ли продукт в наличии
ScriptProduct.getIsAvailableInStock()
Описание:
Проверяет есть ли продукт в наличии.
Возвращает:
bool - подтверждения наличия продукта
или
null - если значение не найдено.
ScriptProduct.getUrl()
Получить url продукта
ScriptProduct.getUrl()
Описание:
Возвращает url продукта.
Возвращает:
string - url продукта
или
null - если значение не найдено.
ScriptProduct.getThumbUrl()
Получить thumb url продукта
ScriptProduct.getThumbUrl()
Описание:
Возвращает thumb url продукта.
Возвращает:
string - thumb url продукта
или
null - если значение не найдено.
ScriptProduct.getPriceFormatted()
Получить форматированную цену продукта
ScriptProduct.getPriceFormatted()
Описание:
Возвращает форматированную цену продукта.
Возвращает:
string - форматированная цена продукта
или
null - если значение не найдено.
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.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.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.reload()
Перезагрузить статус в БД
ticketStatus.reload()
Описание:
Перезагружает статус в БД.
Возвращает:
bool - подтверждение перезагрузки
или
null - если значение не найдено.
ticketStatus.getId()
Получить id статуса
ticketStatus.getId()
Описание:
Возвращает id статуса.
Возвращает:
int - id статуса
или
null - если значение не найдено.
ticketStatus.getName()
Получить наименование статуса
ticketStatus.getName()
Описание:
Возвращает наименование статуса.
Возвращает:
string - наименование статуса.
ticketStatus.getType()
Получить тип статуса
ticketStatus.getType()
Описание:
Возвращает тип статуса.
Возвращает:
string - тип статуса
или
null - если значение не найдено.
ticketStatus.getOrderPos()
Получить значение статуса
ticketStatus.getOrderPos()
Описание:
Возвращает значение статуса.
Возвращает:
int - значение статуса.
ticketStatus.isSameStatusName()
Проверить наименование статуса на сходство
ticketStatus.isSameStatusName($statusName)
Описание:
Проверяет наименование статуса на сходство.
Атрибуты:
Имя | Тип | Описание |
statusName | string | Наименование статуса |
Возвращает:
bool - подтверждение сходства.
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.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.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.getId()
Получить id очереди персон
personQueue.getId()
Описание:
Возвращает id очереди персон.
Возвращает:
int - id очереди персон.
personQueue.getCode()
Получить код очереди персон
personQueue.getCode()
Описание:
Возвращает код очереди персон.
Возвращает:
string - код очереди персон.
personQueue.getIsEnabled()
Проверить активна ли очередь персон
personQueue.getIsEnabled()
Описание:
Проверяет активна ли очередь персон.
Возвращает:
bool - подтверждение активности.
personQueue.getName()
Получить наименование очереди персон
personQueue.getName()
Описание:
Возвращает наименование очереди персон.
Возвращает:
string - id статуса.
personQueue.isSameName()
Проверить наименование очереди персон на сходство
personQueue.isSameName($name)
Описание:
Проверяет наименование очереди персон на сходство.
Атрибуты:
Имя | Тип | Описание |
name | string | Наименование очереди персон |
Возвращает:
bool - подтверждение сходства.
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.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 - если значение не найдено.