Перейти к основному содержимому

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