$session
Объект для сохранения произвольных данных о текущей сессии.
После выполнения реакций бота содержимое $session сохраняется во внутренней базе данных и хранится между запросами пользователя.
При завершении сессии эти данные очищаются.
предупреждение
Существует ограничение на объем хранящихся данных в объекте
$session.
При превышении лимита текущий сценарий прерывается, бот перестает отвечать пользователю.Специальные поля
contextPath— текущий контекст диалога, предназначен для внутреннего использования платформой. По этому полю восстанавливается контекст беседы при следующем запросе клиента.
Примеры использования
- Сохранение имени пользователя:
require: name/name.sc
module = sys.zb-common
theme: /
state: Hello
q!: * меня зовут $Name *
script:
$session.name = $parseTree._Name.name;
a: Привет, {{$session.name}}!
- Сохранение и вывод случайного числа:
state: Game
script:
$session.number = $jsapi.random(100) + 1;
a: Я загадывал число {{$session.number}}.
go!: /Check
- Сохранение введенного количества товара в переменной
$session.quantityи добавление параметров в массив$session.cart:
state: GetQuantity
script:
$session.cart = [];
$session.quantity = parseInt($request.query);
$session.cart.push({name: $session.pizzaName, id: $session.pizzaId, quantity: $session.quantity});
a: Хотите ли выбрать что-нибудь еще, или перейдем к оформлению заказа?
- Сохранение идентификатора диалога в зависимости от типа канала:
state: ChatId
script:
if ($request.channelType.indexOf("chatwidget") > -1) {
$session.chatId = $request.channelUserId;
} else {
$session.chatId = $request.data.chatId;
}