$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;
}