Обработка переполнения $session и $client в сценарии
предупреждение
Существует огран ичение на объем хранящихся данных в объектах
$session
и $client
. При превышении лимита текущий сценарий прерывается, бот перестает отвечать клиенту.$client
— объект для сохранения постоянных данных о клиенте.$session
— объект для сохранения сессионных данных.
Для того, чтобы сценарий не прерывался, необходимо обрабатывать переполнение данных объектов $session
и $client
в сценарии.
Лимиты
По умолчанию установлены лимиты:
soft
100 Кб;hard
1000 Кб.
подсказка
Обратите внимание, что лимиты установлены для каждого объекта. Таким образом для данных объекта
$client
по soft
лимиту доступно 100 Кб, для данных объекта $session
также доступно 100 Кб.Обработка переполнения
Если достигнут soft
лимит, но при этом не превышен hard
лимит, данные в объекты $session
и $client
будут сохраняться. При этом в сценарий приходят события о достижении soft
лимита event: sessionDataSoftLimitExceeded
и event: clientDataSoftLimitExceeded
.
Если новые данные превышают hard
лимит, то эти данные не сохраняются в объекты $session
и $client
. При этом в сценарий приходят события о достижении hard
лимита event: sessionDataHardLimitExceeded
и event: clientDataHardLimitExceeded
.
Пример обработки переполнения данных в сценарии:
theme: /
state:
q: * *start
go!: /start
state: start
q!: *
script:
$session.text = $parseTree.text // сохраняем данные сессии
a: Вы сказали: {{$parseTree.text}}.
state:
event: sessionDataSoftLimitExceeded // обрабатываем событие о достижении soft лимита
script:
delete session.text; // при достижении soft лимита сессионные данные удаляются