Шаблоны
Шаблоны позволяют генерировать как однострочные команды, так и целые блоки текста.
Эти механизмы являются основой построения взаимодействий SHM.
Шаблоны рендерятся локально (сервером SHM), результат рендера может быть отправлен/выполнен с помощью Транспорта.
Шаблоны служат:
Введение
Синтаксис: {{ ОБЪЕКТ.ДАННЫЕ }}
Например, с помощью объекта user
можно получить доступ к данным пользователя:
user.id
- идентификатор пользователя
user.login
- логин пользователя
user.balance
- баланс пользователя
Используя эти функции мы можем написать такой шаблон:
Уважаемый клиент.
Ваш логин: {{ user.login }}
Ваш баланс: {{ user.balance }} руб.
В шаблонах поддерживаются условия и циклы, примеры использования вы можете увидеть здесь: Прогноз оплаты
Больше информации о шаблонизаторе Вы можете узнать здесь
Объекты и функции
Ниже приведен список методов для работы с SHM через шаблоны.
Достуность тех или иных методов зависит от контекста применения шаблона.
Подробнее о доступности методов описано здесь.
Пользователь
Метод |
Описание |
user.id() |
Идентификатор пользователя (получить/установить) |
user.switch( USER_ID ) |
Переключение пользователя на указанного (смена контекста) |
user.login |
Логин пользователя |
user.balance |
Баланс пользователя |
user.credit |
Кредитный лимит пользователя |
user.dogovor |
Договор пользователя |
user.full_name |
ФИО пользователя |
user.settings |
Получить settings пользователя |
user.get_bonus |
Получить кол-во бонусов |
user.income_percent |
Получить процент партнерских бонусов |
user.add_bonus( КОЛ-ВО, КОММЕНТ ) |
Начисление бонусов |
user.set_settings({ 'foo' => 1 }) |
Сохранить в settings пользователя произвольные данные |
user.services |
Ссылка на услуги пользователя |
user.gen_session.id |
Специальная функция для генерации идентификатора сессии |
user.set_new_passwd |
Смена пароля пользователя. Вернет новый пароль |
user.pays. |
Ссылка на платежи пользователя |
user.delete |
Удаление пользователя (с нулевым балансом, без услуг) |
user.list_for_api( 'admin', 1) |
Получить всех пользователей |
Услуги пользователя
Метод |
Описание |
us.id() |
Идентификатор пользовательской услуги (получить/установить) |
us.name |
Имя пользовательской услуги |
us.created |
Дата создания пользовательской услуги |
us.expire |
Дата истечения пользовательской услуги |
us.status |
Статус пользовательской услуги |
us.settings |
Получить параметры пользовательской услуги |
us.set_settings({ 'foo' => 1 }) |
Сохранить в settings услуги пользователя произвольные данные |
us.set(FIELD, VALUE) |
Установка поля FIELD в значение VALUE. Пример: us.set('next', 123) |
us.child_by_category(CATEGORY). |
Ссылка на дочернюю услугу определенной категории |
us.finish( 'money_back', 1) |
Завершение услуги с возвратом средств (биллинг продлит или заблокирует услугу в зависимости от наличия средств) |
us.block |
Принудительная блокировка услуги пользователя |
us.activate |
Активация услуги пользователя после блокировки |
us.delete |
Удаление заблокированной услуги пользователя |
us.gen_store_pass |
Специальная функция для генерации и сохранения пароля в settings |
us.parent. |
Ссылка на родительскую услугу пользователя |
us.top_parent. |
Ссылка на самую верхнюю услугу пользователя |
us.service. |
Ссылка на каталог услуг |
us.withdraw. |
Ссылка на списание услуги |
us.list_for_api() |
Получение списка услуг пользователя |
Каталог услуг
Метод |
Описание |
service.id() |
Идентификатор пользовательской услуги (получить/установить) |
service.name |
Название услуги |
service.cost |
Базовая стоимость услуги |
service.period |
Период услуги |
service.category |
Категория услуги |
service.server |
Ссылка на сервер услуги |
service.id( N ).name |
Получение имени услуги c идентификатором N |
service.id( N ). |
Получение произвольного поля услуги c идентификатором N |
service.api_price_list() |
Возвращает массив услуг из каталога |
service.settings |
Получить settings услуги |
service.set_settings({ 'foo' => 1 }) |
Сохранить в settings услуги произвольные данные |
service.withdraw. |
Ссылка на объект списания |
service.create_for_api( 'service_id', N, 'check_allow_to_order',1 ) |
Регистрирует услугу клиенту с идентификатором N |
service.list_for_api() |
Получение списка услуг из каталога |
Платежи
Метод |
Описание |
pay.id() |
Получить/установить id платежа |
pay.date |
Дата и время платежа |
pay.money |
Cумма платежа |
pay.pay_system_id |
Имя платежной системы |
pay.comment |
Данные платежа |
pay.last |
Получить ссылку на последний платеж |
pay.forecast |
Возвращает JSON прогноза оплат услуг |
pay.paysystems |
Получить список платежных систем |
pay.list_for_api() |
Получение списка платежей |
Бонусы
Метод |
Описание |
bonus.list_for_api() |
Получение списка бонусов |
Списания
Метод |
Описание |
wd.id() |
Получить/установить id списания |
wd.create_date |
Дата создания списания |
wd.withdraw_date |
Дата списания списания |
wd.cost |
Сумма |
wd.discount |
Скидка |
wd.bonus |
Кол-во бонусов |
wd.months |
Период услуги |
wd.total |
Итоговая стоимость |
wd.service_id |
идентификатор каталога услуг |
wd.user_service_id |
идентификатор услуги пользователя |
wd.qnt |
Кол-во единиц товара |
wd.list_for_api() |
Получение списка списаний |
Сервера
Метод |
Описание |
server.id() |
Получить/установить id сервера |
server.name |
Имя сервера |
server.host |
Host сервера |
server.transport |
Транспорт сервера |
server.settings |
Получение settings текущего сервера |
server.set_settings({ 'foo' => 1 }) |
Сохранить в settings сервера произвольные данные |
server.group. |
Ссылка на группу сервера |
server.servers_by_group_id( N ) |
Получение списка серверов из группы N |
server.list_for_api() |
Получение списка серверов |
Группы серверов
Метод |
Описание |
sg.id() |
Получить/установить id группы серверов |
sg.name |
Имя группы серверов |
sg.type |
Способ выбора серверов (random,by-one,evenly) |
sg.transport |
Транспорт группы (local,ssh,http…) |
sg.settings |
settings группы серверов |
sg.set_settings({ 'foo' => 1 }) |
Сохранить в settings группы серверов произвольные данные |
sg.list_for_api() |
Получение списка групп серверов |
Шаблоны
Метод |
Описание |
tpl.id |
Получить/установить id шаблона |
tpl.id( NAME ).parse( 'usi', 123 ) |
Выполнить шаблон с именем NAME для пользовательской услуги с идентификаторм 123 |
tpl.data |
Данные шаблона |
tpl.settings |
Получить settings шаблона |
Хранилище
Метод |
Описание |
storage.save( NAME, DATA ) |
Сохранить данные DATA в хранилище с ключом NAME |
storage.load( NAME ) |
Получить данные из хранилища с ключом NAME |
storage.del( NAME ) |
Удалить данные из хранилища с ключом NAME |
storage.list_for_api() |
Получение списка данных |
Конфигурация
Метод |
Описание |
config.NAME |
Получить данные NAME из конфигурации |
Telegram
Метод |
Описание |
telegram.bot(TEMPLATE, CMD, [ARGS]) |
Выполнить CMD с аргументами ARGS из шаблона TEMPLATE |
Задачи
Метод |
Описание |
task |
Работа с задачами |
Вспомогательные ф-ии
Метод |
Описание |
params |
Аргументы вызова шаблона (http query string) |
event_name |
Переменная содержит название текущего события |
toJson() |
Функция преобразования объекта в JSON |
toQueryString() |
Функция преобразования объектов в Query string |
ref() |
Функция для преобразования данных в массив |
list_for_api() |
Функция для получения списков данных из объекта |
Примеры