Skip to content

Язык скриптов

Триггерные функции

log(...logArgs: any[])

Описание:

Выводит данные в консоль (консоль сервера, в админке не видно).

Параметры:

  • logArgs ( any[ ] ) — список значений, которые нужно вывести.

Возвращаемое значение:

any[]

Тип возвращаемого значения:

Массив данных.

Пример:

getUsers(): IUser[]

Описание:

Возвращает информацию о пользователях (без паролей).

Параметры:

  • query ( string ) — SQL-запрос.

Возвращаемое значение:

IUser[ ]

Тип возвращаемого значения:

Массив.

Пример:

getAll(dbName: string): IDynamicEntity[ ]

Описание:

Получает все данные из пользовательской таблицы.

Параметры:

  • dbName ( string ) — имя таблицы в БД;

Возвращаемое значение:

Массив.

Тип возвращаемого значения:

Пример:

getById(dbName: string, id: string): IDynamicEntity

Описание:

Получает одну строку из пользовательской таблицы по ID.

Параметры:

  • dbName ( string ) — имя таблицы в БД;
  • id ( string ) — id строки.

Возвращаемое значение:

Объект содержимого в БД.

Тип возвращаемого значения:

Пример:

{
  id: 'uno'
  title: 'dos',
}

getByFields(dbName: string, fields: Partial<IDynamicEntity>): IDynamicEntity[]

Описание:

Получает набор строк из таблицы, где поля соответствуют значениям.

Параметры:

  • dbName ( string ) — имя таблицы в БД;
  • fields ( ) — фильтр по значениям*.

Возвращаемое значение:

Массив объектов.

Тип возвращаемого значения:

Ключ: значение.

Пример:

{name: ‘abc’, count: 2} - все у которых name = abс, фильтрация по 2 полям.

IDynamicEntity { id: string, createdAt?: Date,
updatedAt?: Date, deletedAt?: Date, isDeleted?: boolean, [key: string]: any, }

* пользователи CMS могут создавать таблицы с произвольными количеством полей (столбцов).

create(dbName: string, entity: Partial<IDynamicEntity>): IDynamicEntity

Описание:

Создает строку в таблице.

Параметры:

  • dbName ( string ) — имя таблицы в БД;
  • entity ( ) — данные новой строки.

Возвращаемое значение:

Объект.

Тип возвращаемого значения:

Ключ: значение.

Пример:

edit(dbName: string, id: string, entity: Partial<IDynamicEntity>): IDynamicEntity

Описание:

Изменяет данные в строке таблицы.

Параметры:

  • dbName ( string ) — имя таблицы в БД;
  • id ( string ) — id строки;
  • entity ( ) — изменяемые данные.

Возвращаемое значение:

Объект.

Тип возвращаемого значения:

Ключ: значение.

Пример:

deleteById(dbName: string, id: string): boolean

Описание:

Удаляет строку таблицы по ID.

Параметры:

  • dbName ( string ) — имя таблицы в БД;
  • id (string ) — id строки.

Возвращаемое значение:

true , если удаление прошло успешно.

Тип возвращаемого значения:

boolean

Пример:

getTableById(id: string): ITable

Описание:

Получить метаданные о таблице.

Параметры:

  • id ( string ) — id таблицы.

Возвращаемое значение:

Тип возвращаемого значения:

Пример:

export interface ITable extends IEntity {
  dbName: string;
  name: string;
  isSystem: boolean;
  fields?: IField[];
}
export interface IEntity {
  id: string;
  createdAt: Date;
  updatedAt: Date;
  deletedAt: Date;
  isDeleted: boolean;
}

sqlQuery(query: string, params: any[ ]): any[ ]

Описание:

Выполняет произвольный SQL-запрос.

Параметры:

  • query ( string ) — SQL-запрос.
  • params ( any [ ])* — параметры запроса.

Возвращаемое значение:

any[]

Тип возвращаемого значения:

Массив.

Пример:

*any — обертка библиотеки knex https://knexjs.org/guide/raw.html#raw-queries

knex.raw("select * from users where id = ?", [1]).then(function (resp) {
  /*...*/
});

sendMail(to: string, subject:string, text:string): SMTPTransport.SentMessageInfo

Описание:

Отправляет email сообщение.

Параметры:

  • to ( string ) — получатель;
  • subject ( string ) — тема письма;
  • text ( string ) — содержимое.

Возвращаемое значение:

Объект из библиотеки.

Тип возвращаемого значения:

Пример:

sendBotMessageToUser(...)

sendBotMessageToUser(
                botId: string,
                userId: string,
                message: string,
                buttons?: IBotButtonFlexible[],
                buttonsDirection?: BotButtonsDirection,
              ): {
    externalChatId: string;
    externalMessageId: string;
}

Описание:

Отправляет сообщение пользователю через бот.

Параметры:

  • botId ( string ) — id бота в CMS;
  • userId ( string ) — id пользователя в CMS;
  • message ( string ) — сообщение;
  • buttons ( string ) — массив кнопок вида:
  • id ( string ) — id кнопки;
  • title ( string ) — заголовок кнопки;
  • data ( JSONType ) — данные, доступные в триггере кнопки;
  • link ( string ) — URL кнопки.
  • buttonsDirection ( ) — vertical или horizontal расположение кнопок.

Возвращаемое значение:

  • externalChatId — id чата во внешней системе;
  • externalMessageId — id сообщения во внешней системе.

Тип возвращаемого значения:

Пример:

export interface IBotButtonFlexible {
// id сущности кнопки
(IBotButton.id) id: string
// Заголовок кнопки. Денормализация (дублирование) IBotButton.title по
id. title: string data: JSONType link: string }
export enum BotButtonsDirection {
  HORIZONTAL = "horizontal",
  VERTICAL = "vertical",
}

sendBotMessage(...)

sendBotMessage(
botId: string,
            externalChatId: string,
            message: string,
buttons?: IBotButtonFlexible[],
            buttonsDirection?: BotButtonsDirection,
          ): {
    externalChatId: string;
    externalMessageId: string;
}

Описание:

Отправляет сообщение через бот по id внешнего чата.

Параметры:

  • botId ( string ) — id бота в CMS;
  • externalChatId ( string ) — id чата во внешней системе;
  • message ( string ) — сообщение;
  • buttons ( ) — массив кнопок вида:
  • id ( string ) — id кнопки;
  • title ( string ) — заголовок кнопки;
  • data ( JSONType ) — данные, доступные в триггере кнопки;
  • link ( string ) — URL кнопки;
  • buttonsDirection ( ) — vertical или horizontal расположение кнопок.

Возвращаемое значение:

  • externalChatId - id чата во внешней системе;
  • externalMessageId - id сообщения во внешней системе.

Тип возвращаемого значения:

Пример:

editBotMessage(...)

editBotMessage(
            botId: string,
            externalChatId: string,
            externalMessageId: string,
            message: string,
            buttons?: IBotButtonFlexible[],
            buttonsDirection?: BotButtonsDirection,
          ): boolean

Описание:

Редактирует сообщение в боте по внешнему id.

Параметры:

  • botId ( string ) — id бота в CMS;
  • externalChatId ( string ) — id чата во внешней системе;
  • externalMessageId ( string ) — id сообщения во внешней системе;
  • message ( string ) — сообщение;
  • buttons ( ) — массив кнопок вида:
  • id ( string ) — id кнопки;
  • title ( string ) — заголовок кнопки;
  • data ( JSONType ) — данные, доступные в триггере кнопки;
  • link ( string ) — URL кнопки;
  • buttonsDirection ( ) — vertical или horizontal расположение кнопок.

Возвращаемое значение:

true — при успехе.

Тип возвращаемого значения:

boolean

Пример:

excelToObject(excelFileId: string): string[][][]

Описание:

Получает данные из Excel-файла.

Параметры:

  • excelFileId ( string ) — ID файла.

Возвращаемое значение:

string[ ][ ][ ] — массив таблиц c массивом строк и массивом ячеек.

Тип возвращаемого значения:

Массив.

Пример:

fetchJson(url: string, params: RequestInit): any

Описание:

Получает JSON по URL.

Параметры:

  • url ( string ) — URL;,
  • params ( ) — описание.

Возвращаемое значение:

any

Тип возвращаемого значения:

Пример:

fetchText(url: string, params: RequestInit): string

Описание:

Получает текст из URL.

Параметры:

  • url ( string ) — URL;,
  • params ( ? ) — описание.

Возвращаемое значение:

Тип возвращаемого значения:

Пример:

md5(data: string): string

Описание:

Создает MD5-хэш строки.

Параметры:

Возвращаемое значение:

Тип возвращаемого значения:

Пример:

user: IUser

Описание:

Объект с текущим пользователем.

Параметры:

Возвращаемое значение:

Объект.

Тип возвращаемого значения:

Пример:

export enum UserRole {
  GUEST = "guest",
  ADMIN = "admin",
  USER = "user",
}
export interface IUser extends IEntity {
  _id: string;
  id: string;
  name: string;
  email: string;
  password?: string;
  resetPasswordCode?: string;
  resetPasswordExpires?: Date;
  confirmEmail?: string;
  confirmEmailExpires?: Date;
  confirmEmailCode?: string;
  // role: UserRole;
  roleId: string;
  phone?: string;
  avatarId?: string;
}

args: any

Описание:

Данные из текущего триггера.

Параметры:

Возвращаемое значение:

Тип возвращаемого значения:

Пример:

Триггеры

Table beforeCreate

Условие запуска: Перед созданием строчки в таблице.

Данные на входе: args.data — данные для новой строчки.

Данные на выходе:

Пример:

Table afterCreate

Условие запуска: После создания строчки в таблице.

Данные на входе: args.data — данные новой строчки.

Данные на выходе:

Пример:

Table beforeEdit

Условие запуска: Перед редактированием строчки в таблице.

Данные на входе:

  • args.oldData — старые данные;
  • args.changeData — изменяемые данные;
  • args.data — изменяемые данные (устарело);
  • id — id изменяемой строчки.

Данные на выходе:

Пример:

Table afterEdit

Условие запуска: После редактирования строчки в таблице.

Данные на входе:

  • args.oldData — старые данные строчки;
  • args.newData — новые данные строчки;
  • args.data — новые данные строчки (устарело);
  • args.changeData — изменяемые данные.

Данные на выходе:

Пример:

Table beforeDelete

Не реализовано.

Table afterDelete

Не реализовано.

Пример:

Table filter

Условие запуска: При фильтрации данных у строчек.

Данные на входе:

  • args — массив данных строчек.

Данные на выходе: Должен вернуть измененный массив данных строчек.

Пример:

Table queryFilter

Не реализовано.

Bot button trigger

Условие запуска: Перед созданием строчки в таблице.

Данные на входе: args.data — данные для новой строчки.

  • args.botId — id бота; id бота;
  • tableId — id таблицы, если страница бота с кнопкой связана с таблицей;
  • args.botItemTable — метаданные таблицы, если страница бота с кнопкой связана с таблицей;
  • args.rowId — id строчки таблицы, если страница бота с кнопкой связана с таблицей;
  • args.data — дополнительные данные, которые передаются в кнопку.

Данные на выходе:

Пример: