Создание и сохранение переменных контекста | Слот Memory (старый синтаксис)

Назначение и общая информация

Слот Memory – слот, позволяющий записывать данные в Контекстные переменные чата, а также создавать новые Пользовательские контекстные переменные путем записи значения в несуществующую ранее переменную.

Изменять Системные контекстные переменные в слоте Memory запрещено, за исключением client_message.

Последующие переходы: Text, Wait For Reaction, Jump, Attachment, File, Memory, External Request, Slot Filling, Button Menu, Transition Rule, Regular Expression, NLU, Change Chat Mode.

Создание и настройки слота Memory

Атрибуты слота

  • NAME ー название слота, которое будет отображено в Диалоговом Сценарии;

  • KEY ー имя переменной;

  • VALUE ー значение, которое будет записано в переменную.

Работа слота

Для того, чтобы записать значение в Контекстные переменные чата, используя слот Memory, необходимо указать в поле KEY название переменной, а в поле VALUE нужное значение.

Важно!

Все переменные записываются только в текстовом или числовом формате. Число, записанное в одинарных кавычках (’45’), является строкой и не может участвовать в арифметических операциях.

Запись числового значения в переменную

Запись строки в переменную

В некоторых случаях значение VALUE необходимо обрамить одинарными кавычками.

Например, если нужно записать числа как строку:

или записать строку со спецсимволами (+):

Запись пробелов

Важно!

Пробелы в начале или в конце поля VALUE будут автоматически удалены.

Запись значения одной переменной в другую

Если требуется записать значение одной Контекстной переменной чата в другую переменную, то в поле VALUE необходимо указать название переменной, используя синтаксис {{ @variable_name }}.

Например, если нужно сохранить последнее сообщение Собеседника в Контексте client_message, то в поле VALUE будет значение {{ @client_message }}.

Запись пустой строки в переменную

Если нужно записать в переменную пустую строку, в поле VALUE нужно указать две одинарные кавычки.

Перезапись переменной client_message

В некоторых случаях необходимо заменить значение client_message на отличное от последнего сообщения Собеседника. Например, для распознавания текста, полученного по External Request в слотах NLU и Regular Expression.

Это можно сделать в слоте Memory. Переменная client_messageー единственная из системных контекстных переменных, которую можно перезаписывать.

Запись в переменную результатов конкатенации строк

Также в слоте Memory можно выполнять конкатенацию нескольких значений, в т.ч. переменными.

Для этого нужно перечислить эти переменные в нужном порядке в поле VALUE, через знак « + ».

  • Конкатенация строковых переменных

  • Конкатенация строковой и числовой переменной

Переменная v3 имеет числовое значение, ее необходимо обрамить одинарными кавычками. Иначе в процессе общения в слоте Memory произойдет ошибка, так как знак « + » с числовым значением определяется как операция сложения.

  • Конкатенация строковой переменной и строки

Важно!

Конкатенация системных контекстных переменных modified_at и date невозможна, так как они имеют тип данных «Дата».

Арифметические операции

В слоте Memory можно выполнять арифметические операции с числами.

NB

На данный момент нельзя проводить арифметические операции с переменными.

Сложение

Знак “+” выполняет как сложение, так и конкатенацию, в вышеуказанном примере складываются числа, но если обрамить их в одинарные кавычки (т.е. привести к строкам) ‘134’+’1265’, то будет выполнена конкатенация строк, итог будет равен 1341265.

Вычитание

Умножение

Деление

Для получения целой части от результата деления используется операция приведения данных к целочисленному типу.

Скобки

Для определения приоритета выполнения арифметических операций используются круглые скобки.

Важно!

При попытке записать в поле VALUE операцию, которая не соответствует описанным выше правилам, произойдет ошибка. Системная контекстная переменная error примет значение Failed to process the data!

Last updated