This site is no longer updated.Go to new Conversational Cloud docs

function newSession(arg)


Метод предназначен для явного создания новой сессии из скрипта.


Параметры

  • message — стартовое сообщение, будет передано сценарию сразу после активации сессии. Если параметр не задан, будут выполнены только реакции корневой темы.
$reactions.newSession({message: $context.request.query, data: $context.request.data});

  • session — данные для новой сессии. По умолчанию — пустой объект.
{ timezone: "GMT+3" }

  • client — данные клиента. Вы можете модифицировать в новой сессии текущие данные или сбросить их.
theme: /
    init:
        bind("postProcess", function($context) {
            if ($context.session.startNewSession) {
                $reactions.newSession({message: 'newSessionMessage', client: {}});
            }
        });
    state:
        q!: test
        script:
            $session.startNewSession = true;
            $context.client.clientCustomData = 'testClientQuery';
        a: Test answer
    state:
        q!: newSessionMessage
        a: Message from new session request {{ $client.clientCustomData }}

  • request — исходный запрос можно модифицировать в новой сессии. Например, изменить event или query: {event: 'new event'}.
theme: /
    init:
        bind("postProcess", function($context) {
            if ($context.session.startNewSession) {
                var $request = $context.request;
                $request.event = 'newSessionEvent';
                $reactions.newSession({request: $request});
            }
        });
    state:
        q!: test
        script:
            $session.startNewSession = true;
        a: Test answer
    state:
        event: newSessionEvent
        script:
        a: Event from new session request

  • data — данные для новой сессии, например, данные запроса клиента $request.data. По умолчанию — пустой объект.
$reactions.newSession({message: $context.request.query, data: $context.request.data});

Примеры использования

script:
        if (!$context.testContext && !$request.data.newSession) {
            if ($parseTree) {
                 $reactions.newSession({message: $parseTree.text, data: {newSession:true}});
                } 
            else {
                $reactions.newSession({message: "/start", data: {newSession:true}});
                }
            }
state: reset
        q!: reset
        script:
            $reactions.newSession({message: "/start", data: $request.data});

Подробнее о сессиях в платформе JAICP