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, если логирование выполнено успешно.
Примеры использования
Логирование информации {{logger “INFO” “Application started” “startup” “user” “admin” “module” “auth”}} >> Лог: INFO — Application started, user=admin, module=auth
Логирование ошибки {{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
Логирование предупреждения {{logger “WARN” “Deprecated API called” “api” “endpoint” “/v1/_objs”}} >> Лог: WARN — Deprecated API called, endpoint=/v1/_objs
Логирование отладки {{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)” }