LCML/Расширение

blockasync

blockasync - Функция block выполняет асинхронный вызов блока с возможностью передачи тела запроса.

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

Рекомендация - используейте статусную модель выполнения операций через плагин Analytic.

Метод

Part: LCML/Расширение

Формат

blockasync blockUrl param jsonBody request

  • blockUrl (строка): URL блока для вызова.

  • param - параметры в формате URI, для добавление в запрос к блоку

  • jsonBody (строка): JSON-данные для тела запроса. Если пусто, используется метод GET. При наличии данных используется метод POST.

  • request - (обязательно) - передайте вызов параметра запроса $.RequestRaw

Результат

  • status - статус запуска выполнения запроса
  true

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

    {{ status := blockasync "plugin-m" "" "" $.RequestRaw}}

blocksync

blocksync - Функция blocksync выполняет синхронный вызов блока с возможностью передачи тела запроса.

Метод

Part: LCML/Расширение

Формат

blocksync blockUrl param jsonBody request

  • blockUrl (строка): URL блока для вызова.

  • param - параметры в формате URI, для добавление в запрос к блоку

  • jsonBody (строка): JSON-данные для тела запроса. Если пусто, используется метод GET. При наличии данных используется метод POST.

  • request - (обязательно) - передайте вызов параметра запроса $.RequestRaw

Результат

struct {
Result template.HTML
Err    error
}
  • Result - тело формата шаблона (можно привести к строке).
  • Err - ошибка, если что-то пошло не так.

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

    {{ $result := blocksync "plugin-m" "" "" $.RequestRaw}}

Если получили данные в формате JSON и необходимо получить доступ к полям, например:

Блок возвращает данные

{
"title":"Заголовок",
"description": "Описание"
}

Запрос будет выглядеть так:

    {{ $result := blocksync "plugin-m" "" "" $.RequestRaw}}
{{ $g := unmarshal (tostring $result.Result) }}
{{ $g.title }}

Ответ

Заголовок

cache

cache - Получение значения из кеша

Метод

Part: LCML/Расширение

Функция cache позволяет извлечь значение из кеша по заданному ключу. Если значение не найдено, возвращается строка “nil”.

Формат:

cache key
  • key — строковый ключ, по которому извлекается значение из кеша. Результат:

  • Значение из кеша, если ключ существует.

  • Строка “nil”, если ключ отсутствует или произошла ошибка извлечения. Пример использования:

    {{ $res := cache "result" }}
    

cacheset

cacheset - Добавляет или обновляет значение в кэше с использованием ключа.

Метод

Part: LCML/Расширение

Формат:

cacheset key value
  • key — строка, ключ для кэширования.
  • value — значение, которое будет сохранено в кэш. Может быть любым типом, так как используется интерфейс типа interface{}. Результат:

Возвращает true, если значение было успешно добавлено или обновлено в кэш, и false в случае ошибки.

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


{{$cacheKey := "user:123"}}
{{$cacheValue := dict "name" "Anna" "role" "Student"}}
{{$result := cacheSet $cacheKey $cacheValue}}
{{if $result}}
Значение успешно сохранено в кэш.
{{else}}
Ошибка при сохранении значения в кэш.
{{end}}
>> Значение успешно сохранено в кэш.

extension

extension - Вызов внешнего сервиса

Метод

Part: LCML/Расширение

Формат

extension service method params

  • service (строка): Название внешнего сервиса.

  • method (строка): Метод или операция, которую нужно выполнить в сервисе.

  • params (строка): Параметры для выполнения запроса в формате строки. Результат

Возвращает объект типа extension с полями:

  • Id (строка): Уникальный идентификатор выполненной операции.

  • Result (строка): Результат выполнения операции.

  • Error (ошибка): Ошибка, возникшая при выполнении операции (если есть). Примеры использования


logger

logger - Логирование сообщений приложения

Метод

Part: LCML/Расширение

Функция logger записывает сообщения в лог с указанным уровнем логирования и дополнительными параметрами. Поддерживает уровни INFO, ERROR, WARN, DEBUG.

Формат

logger logtype msg key [params…]

  • logtype (string) — Уровень логирования. Поддерживаются значения:

  • INFO — информационные сообщения,

  • ERROR — сообщения об ошибках,

  • WARN — предупреждения,

  • DEBUG — отладочные сообщения.

  • msg (string) — Сообщение, которое будет записано в лог.

  • key (string) — Ключ для группировки сообщений.

  • params (необязательно, string) — Дополнительные параметры для включения в лог в виде пар ключ-значение. Результат

Возвращает true, если логирование выполнено успешно.

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

  1. Логирование информации {{logger “INFO” “Application started” “startup” “user” “admin” “module” “auth”}} >> Лог: INFO — Application started, user=admin, module=auth

  2. Логирование ошибки {{logger “ERROR” “Failed to load configuration” “config” “file” “config.json” “Error loading file”}} >> Лог: ERROR — Failed to load configuration, file=config.json, error=Error loading file

  3. Логирование предупреждения {{logger “WARN” “Deprecated API called” “api” “endpoint” “/v1/_objs”}} >> Лог: WARN — Deprecated API called, endpoint=/v1/_objs

  4. Логирование отладки {{logger “DEBUG” “Processing request” “http” “method” “POST”, “url” “/api/query”}} >> Лог: DEBUG — Processing request, method=POST, url=/api/query


sendmail

sendmail - Отправка email-письма

Метод

Part: LCML/Расширение

Используется для отправки электронных писем.

Тело запроса : { “jsonrpc”: “2.0”, “method”:“sendmail”, “params”:{ “server”: “”, “port”: “”, “user”: “”, “pass”: “”, “from”: “”, “to”: “”, “subject”: “”, “message”:“”, “turbo”:“” }, “id”:“@Rand(int)” - идентификатор запроса - сгенерированное случайное число }

  • params - синтаксис параметров соответствуют фунции sendmail ( [смотреть подробнее]() ). Пример:

{ “jsonrpc”: “2.0”, “method”:“delete”, “params”:{ “server”: “smtp.gmail.com”, “port”: “587”, “user”: “userserver”, “pass”: “pass”, “from”: “Иванов [ivanov@mail.ru]”, “to”: “Петров Петр [petrov@mail.ru], Сидоров Иван [sidorov@mail.ru]”, “subject”: “Хорошее письмо”, “message”:“Текст сообщения в текстовом формате, html-формате или ссылка на сформированное письмо”, “turbo”:“” }, “id”:“@Rand(int)” }