$jsapi.startSession
Метод начинает новую сессию.
При вызове метода $jsapi.startSession
новая сессия начинается немедленно:
- Текущий запрос пользователя и все реакции бота попадают в новую сессию.
- Данные из переменной
$session
сразу очищаются.
Синтаксис
Метод вызывается без аргументов:
$jsapi.startSession();
Особенности
В телефонном канале вызов метода $jsapi.startSession
игнорируется в стейте, который активируется по паттерну /start
.
JAICP автоматически начинает новую сессию в начале звонка.
Примеры использования
Новая сессия в начале диалога
require: patterns.sc
module = sys.zb-common
theme: /
state: Приветствие
q!: $regex</start>
q!: * $hello *
script:
$jsapi.startSession();
random:
a: Здравствуйте! Чем я могу вам помочь?
a: Добрый день. Какой у вас вопрос?
Создание новой сессии по таймауту
В этом примере при помощи функции bind
устанавливаются два обработчика,
которые будут вызываться на каждый запрос пользователя:
- Обработчик
postProcess
, в котором вызывается метод$jsapi.currentTime
, а его результат сохраняется в$session
как время последней активности пользователя. - Обработчик
preProcess
, в котором вычисляется разница между текущим временем и временем последней активности. Если она больше заданного таймаута, сценарий начинает новую сессию.
init:
var SESSION_TIMEOUT_MS = 172800000; // Два дня
bind("postProcess", function($context) {
$context.session.lastActiveTime = $jsapi.currentTime();
});
bind("preProcess", function($context) {
if ($context.session.lastActiveTime) {
var interval = $jsapi.currentTime() - $context.session.lastActiveTime;
if (interval > SESSION_TIMEOUT_MS) $jsapi.startSession();
}
});