Создание и сохранение переменных контекста | Слот 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