Переменные, ответы и условные переходы в чатботах

Переменные, ответы и условные переходы в чатботах
Автор:
Автор материала
Дмитрий
Время чтения:
Время чтения
25 мин.
Обновлено:
Обновлено, дата
21/01

В уроке про классические элементы чатбота не раз упоминалось, что чатботы собирают и обрабатывают данные, чтобы персонализировать диалоги и изменять свое общение в зависимости от той или иной информации о пользователе. Сегодня мы расскажем, как эта информация хранится и используется, а также рассмотрим лучшие практики по работе с ней.

Эти данные включают и прямые ответы типа имени пользователя, и анализ на основе предыдущих ответов (например, предпочтения на основе заказа пиццы), и историю взаимодействий (например, проходил знакомство или нет). Большая часть из этой информации хранится в переменных.

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

Они играют важную роль в персонализации общения с пользователем, поскольку позволяют:

Сохранять ответы пользователя

Диалог с текстом, кнопками, изображениями, видео и ответом
Диалог с текстом, кнопками, изображениями, видео и ответом

Например, если пользователь вводит свое имя, бот может сохранить его в переменной name и использовать для обращения: «Приятно познакомиться, {{name}}!» Помните, как мы это делали в примере?

Проводить расчёты

Например, на основе введённых данных, таких как дата рождения, бот может посчитать возраст. При этом не обязательно данные должны вводиться пользователем: можно сохранять результаты еженедельного тестирования и проводить расчет, насколько улучшился результат.

Переходить в подходящую схему чата.

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

Передавать данные в сообщения.

Это помогает создавать более человечные и персонализированные ответы.

Обмениваться данными с внешними системами.

Например, бот может отправлять запросы в базу данных, получать информацию с сайта или через API, используя сохраненные в переменных данные и сохраняя полученные ответы в переменную.

Причем неважно, какие названия для переменных вы используете, поскольку конструктор понимает их все. Однако есть все же несколько принципов работы с ними:

· переменные не должны содержать пробел. Хорошей практикой считается использование только букв латинницы, цифр и подчеркивания.

· не используйте в своих названиях слова, зарезервированные для работы системы, то есть начинающиеся с botvar_ - их мы оставили для статусов пользователя, последнего сообщения, дополнительных параметров и др.

· переменные должны быть заранее объявлены (в разделе переменные). Это нужно, чтобы чатбот понимал, когда видел использование переменной, например, в сообщении, что такая переменная существует, а не случайность.

В остальном внимательно читайте документацию: если у других конструкторов чатботов есть ограничения, то их обычно указывают в WIKI.

Для лучшего понимания в рамках курса я буду использовать иллюстрирующие названия для переменных. Соответственно, вместо рекомендованного названия переменной {{user_name}} в тексте вы встретите {{имя пользователя}}.

Создание переменной

Чтобы добавить переменную в проект и затем хранить в ней данные, нажмите на кнопку «переменные» и добавьте новую.

Как добавить переменную в схему чатбота
Как добавить переменную в схему чатбота

После вы сможете использовать эту переменную в диалоге, действиях и сообщениях чатбота.

Применение переменных

Рассмотрим основные действия, в которых используются переменные:

Сохранение данных пользователя

Переменные часто используются для хранения ответов на вопросы. Например, вы задаёте вопрос: «Сколько вам лет?» Ответ пользователя сохраняется в переменной «возраст». Позже это значение можно использовать для персонализации сценария, например: «Я подобрал вам список тех мест, которые имеют лучшие отзыва среди {{возраст}}-летних.»

Применение переменных для расчётов

Если бот собирает числовые данные, он может выполнять с ними математические операции. Например, чатбот спрашивает: «Сколько времени вы работаете каждый день?» Пользователь отвечает, и бот рассчитывает количество свободных часов, предлагая способы оптимизации расписания: «У вас остаётся {{свободное_время}} часов для отдыха.»

Создание персонализированных сообщений

После сохранения имени в переменной имя, бот может использовать его для дружелюбного обращения и расссылок: «Добрый день, {имя}! Чем могу помочь?»

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

Это улучшает впечатление от взаимодействия с ботом, снижает вероятность попасть в спам и в выключенный звук уведомлений. Кроме того, вы можете использовать эти переменные, чтобы создавать по-настоящему персонализированный контент для рассылок. Тем, кто выбрал в опросе вариант «зарабатывать на чатботах» вы можете сделать отдельную рассылку на тему «Как искать клиента и зарабатывать на создании контента?», а тем, кто выбрал «для своей компании делаю», в ваших рассылках вы можете делать упор на чатботов для бизнеса.

Обмен данными с внешними сервисами

Например, бот для бронирования отправляет дату поездки на сайт отеля и, обработав ответ, показывает пользователю доступные номера. Или бот, основанный на геолокации, предлагает ближайшие кафе или актуальный прогноз погоды. В любом из этих примеров чатбот сохраняет в переменной определенную информацию (даты поездки), передает ее во внешние сервисы и сохраняет обработанный ответ в другой переменной.

Логика диалога: условия перехода в разные цепочки

Логика — это структура, определяющая поведение чатбота в зависимости от действий и данных пользователя. С её помощью можно создать гибкий и адаптивный сценарий взаимодействия.

Помните, как в схеме первых уроков мы описывали условия перехода? Каждый сценарий взаимодействия может иметь несколько возможных путей. Например, бот спрашивает: «Вы хотите продолжить?» Если пользователь отвечает «Да», бот переходит к следующему вопросу. Если «Нет», предлагает дополнительную информацию или завершает диалог.

В случае, если вы пишите код чатбота самостоятельно, то он выглядит примерно так (пример логики):

Если (ответ == «Да»):

    перейти к блоку «Следующий вопрос»

Иначе:

    перейти к блоку «Дополнительная информация»

Логика в визуальном конструкторе

В визуальном конструкторе (из-за упрощения работы со схемой) такие переходы вы можете делать по нажатию кнопки и с помощью блока «переход, если...». В случае нажатия кнопки, бот переходит на другой экран и продолжает диалог. Вы видите такие переходы в качестве стрелок.

Переход между диалогами по нажатию кнопок
Переход между диалогами по нажатию кнопок

Чтобы сделать то же самое в своем боте, нажмите на кнопку и выберите раздел «экран», укажите, куда переходить, и не забудьте сохранить изменения. Подробнее о кнопках расскажу далее.

Если вам нужно сделать переход на определенный экран по условию (параметрам), добавьте блок «переход по условию» и укажите, на какой экран переходить при выполнении всех указанных условий. Если условия не выполняются, то бот продолжает общение в этом чате.

Переход на другой блок
Переход на другой блок

Логика в редакторе схем

Для сложных сценариев визуализация логики в виде схем помогает понятнее организовать процессы. Вы можете увидеть все условия перехода, определить альтернативные сценарии и убедиться, что все пути взаимодействия учтены. Кроме того, редактор схем позволяет пользоваться полными возможностями чатботов без программирования - настраивать взаимосвязи блоков в нужном вам порядке, возвращаться, делать повторы, проводить АВ-тесты и многое другое (в разделе знакомства с редакторами эти преимущества уже написаны).

Помните, что бот ведет взаимодействие последовательно по цепочке, что означает выполнение действий одно за другим. Поэтому элементы в редакторе должны быть соединены друг с другом. Чтобы соединить их, нажмите на кнопку «настроить последовательность выполнения». Зажмите мышку на стартовом элементе и перетащите стрелку от к следующему по цепочке. Как только вы отпустите, создастся связь.

Создание связи между блоками
Создание связи между блоками

В случае, если вы хотите, чтобы выполнялись разные действия после элемента, вам нужно создать несколько цепочек и выставить условия выполнения той или иной цепочки. Для этого от одного предыдущего блока перетащите стрелки к каждому блоку-началу каждой цепочки. Затем нажмите на стрелки по очереди и выберите условия, при которых бот должен выполнять тот или иной переход.

Набор блоков диалога называется «ветка»

Среди условий перехода к ветке можно использовать:

Значение переменной - используется для создания выбора, нажатий кнопок, переходов при определенных результатах пользователей. 

В качестве объекта для сравнения вы можете выбрать переменную или последнее сообщение пользователя. Под последним сообщением подразумеваются любые данные, которые пользователь отправил при последнем взаимодействии: нажатие кнопки, файл, голосовое или текстовое сообщение.

Условия перехода к ветке диалога
Условия перехода к ветке диалога

Вы также можете настраивать и другие условия перехода, но чтобы не загружать вас, сейчас мы не будем рассматривать. Ознакомиться вы можете в WIKI.

Помните, от одного элемента может выходить несколько стрелок, в этом случае важно выставить условия перехода вместе с условием «в других случаях» (иначе называемый «стандартный переход», «переходить по умолчанию», «переход в других случаях»). Если условия не будут выставлены или будет несколько одинаковых, то бот выполнит ОДНУ СЛУЧАЙНУЮ цепочку. Остальные будут проигнорированы.

Ожидание ответа пользователя

Блок с ожиданием ответа помогает боту не только прерываться от нескончаемой отправки сообщений, но и запоминать в переменных новую информацию. Помните примеры ранее, когда я добавил вопрос про имя собеседника? Бот ждет ответ, который запомнит, как имя, и сможет дальше обращаться так к собеседнику.

Чтобы также ждать ответного сообщения в своем боте, нажмите на него (или для нового ожидания ответа - значок прицела внизу экрана). 

Ожидание ответа от пользователя
Ожидание ответа от пользователя

Если хотите просто ожидать любого сообщения от пользователя, то в этом блоке выберите пункт «ждать и не обрабатывать». Так, бот остановится и продолжит взаимодействие после нажатия кнопки или получения сообщения от пользователя.

Чтобы сохранить ответ пользователя в переменную (помните, вопрос про имя?), выберите «сохранить в переменную» и ту переменную, в которую надо сохранить введенную информацию.

Не забывайте применять изменения. И конечно, более подробно об этои блоке читайте в WIKI.

Кнопки

Кнопки в чатботах нужны для того, чтобы предоставить пользователю удобный способ выбора вариантов ответа или действия. Это не только ускоряет взаимодействие, но и делает его более интуитивным. Вместо того чтобы вводить текст вручную, пользователь может нажать на одну из предложенных кнопок, что снижает вероятность ошибок и улучшает общий опыт.

Как создать чат-бота самому?

Как создать чат-бота самому?

Создавайте схему общения в чате просто, без программирования. От вас нужен только контент!

Например, кнопки могут использоваться для выбора категорий в интернет-магазине, записи на приём или ответа на вопрос, заданный ботом. Это упрощает процесс общения и повышает удовлетворённость пользователя. В примере ниже по нажатию на соответствующую кнопку бот запускает диалог с добавлением к заказу того или напитка (посмотрите на стрелки).

Выбор напитка идет при старте заказа и после каждого предыдущего добавление - сделать можно переходами
Выбор напитка идет при старте заказа и после каждого предыдущего добавление - сделать можно переходами

В визуальном конструкторе вам не нужно ожидать ответного сообщения, если вы добавили кнопки к отправленному пользователю сообщению. В редакторе схем это делать необходимо!

Кнопки в визуальном редакторе

Чтобы отредактировать кнопки, нажмите на них или добавьте с помощью кнопки «кнопки» внизу экрана. В появившемся блоке есть несколько вкладок для каждой кнопки.

В первом поле вы вводите тот текст, который видит пользователь. Если вы больше не заполняете никаких вкладок, бот получает текст кнопки при ее нажатии пользователем.

Текст кнопки
Текст кнопки

Чтобы пользователь отправил другой ответ, чем тот, который вы задали в тексте кнопки, впишите ответ в эту вкладку. Вы можете также указать здесь команды типа «/start».

Команда по кнопке
Команда по кнопке

Если вам важно сохранить ответ пользователя, используйте вкладку «VAR» (от variable, переменная). Выберите переменную, в которую сохранится ответ.

Сохранить ответ по кнопке в переменной
Сохранить ответ по кнопке в переменной

Вы также можете отправлять пользователя на другой экран (диалог общения) по нажатию кнопки. Для этого во вкладке «На экран» выберите тот экран, на который будет отправлен пользователь. При переходе действия текущего экрана останавливаются (не будут продолжены) и начнется взаимодействие по соответствующему экрану.

Перейти на экран
Перейти на экран

Обратите внимание, что вам необходимо сначала создать переменную или экран, который вы хотите использовать!

Кнопки в редакторе схем

Из-за расширенных возможностей кнопки в редакторе схем работают немного не так, как в визуальном редакторе. Они входят в состав тех блоков в которых могут использоваться. Например, в текстовом блоке помимо отправленного текста можно указать кнопки, которые увидит пользователь.

В рамках текущего обучения расширенные настройки кнопок мы рассматривать не будем. В общем виде, у каждой кнопки 2 поля: в левом вы пишите текст, который видит пользователь, в правом тот текст, который получит бот при нажатии на кнопку. Если вы оставите правое поле пустым, будет отправлен видимый текст кнопки.

Кнопки в редакторе схем
Кнопки в редакторе схем

Более подробно о кнопках и их дополнительных настройках читайте в WIKI.

«Калькулятор» - блок для расчетов

Диалог с текстом, кнопками, изображениями, видео и ответом
Диалог с текстом, кнопками, изображениями, видео и ответом

Как я уже говорил ранее, переменные в хорошем боте используются повсеместно.  Помимо рассмотренного выше блоке «ожидание ответа», который может записать текст в переменную, также существуют специальные блоки для их вычисления – калькуляторы.

С их помощью вы устанавливаете значения переменных без взаимодействия с пользователем. Например, вы можете посчитать возраст человека, получив данные из переменной года рождения и вычтя ее из текущего года. Или вы можете суммировать стоимость товаров в корзине пользователя.

Если говорить в общем, то калькулятор, во-первых, позволяет изменять значения с помощью простых математических формул, подставляя необходимые параметры. Более подробно читайте в WIKI, в рамках урока я предлагаю просто разобрать следующую формулу.

Изменение переменных
Изменение переменных

total_price = (1 + {­{­kilo­}­}*6.92/1.1)*1.2

Сразу разберемся с записью. {­{­kilo­}­} подставляет значение этой переменной в формулу, как и в тексте сообщения. * умножает значение kilo­ на 6.92. / делит полученный результат на 1.1. Скобки () определяют порядок действий, как в обычных математических формулах. Точка (например, в 6.92) используется для обозначения десятичных чисел.

Во-вторых, с помощью калькуляторов вы можете получить несколько автоматических значений, которые будут записываться в соответствии с логикой значения, например, текущую дату в формате 2021-12-31.

В третьих, калькуляторы в боте, несмотря на название, могут работать и с текстовыми данными. В частности, вы можете добавить к одной строке другую. В частности, в примере ниже tmpstr_3 будет состоять из текста «Черный чай» и следующим сразу за ним текущим значением переменной tmpstr_3.

Добавить строку
Добавить строку

Практическое задание

Разобраться в этом было непросто, но вы справились. Вы - молодчина! А теперь, как всегда, предлагаю закончить урок практическим заданием.

1. Заполните контент чата в визуальном конструкторе так, чтобы бот выполнял следующее:

· Спрашивает имя пользователя и запоминает его.

· Узнаёт возраст с помощью кнопок и в зависимости от нажатой переводит на соответствующий экран: для «до 18» свое сообщение, «18-50» свое и «50+» свое.

· В каждом экране пользователь получает индивидуальное сообщение с именем пользователя и текстом, разным для каждого экрана.

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

· В зависимости от ответа, бот вычисляет эту сумму в год (то есть умножает на 12) и отправляет сообщение, что за год пользователь заработает ННННН сумму.

2. Загрузите его в свой канал связи и проверьте работу в качестве пользователя чатбота.

Подсказка: в те места, где вам нужен переход, поставьте сообщение от бота с кнопкой, которая ведет на нужный вам экран, или используйте блок «перейти, если».

Запишите, какие вопросы у вас возникли? Ведет ли бот диалог так, как вы предполагали?

Сохранить

3. Если вы хотите, вы уже сейчас можете попробовать расширенный редактор. Чтобы опробовать все возможности схем с большим числом настроек для контента, предлагаю вам следующее задание. В редакторе схем создайте такой же чатбот, как и в первом задании:

· Спрашивает имя пользователя и запоминает его.

· Узнаёт возраст и предлагает рекомендации на основе этого значения. Например, для «до 18» свое сообщение, «18-50» свое и «50+» свое.

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

· В зависимости от ответа, бот вычисляет эту сумму в год (то есть умножает на 12) и отправляет сообщение, что за год пользователь заработает ННННН сумму.

4. Загрузите его в свой канал связи и проверьте работу логики:

· Что произойдёт, если пользователь оставит поле пустым?

· Как бот обрабатывает неожиданные значения?

· Реагирует ли он корректно на разные сценарии?

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

Сохранить

5. Скорректируйте проверки и выбор веток так, чтобы бот корректно обрабатывал эти сценарии.

6. Дополните диалог так, чтобы бот:

· Узнает, сколько пользователь хотел бы получать в год.

· Рассчитывает, на сколько нужно увеличить текущий доход в месяц.

· Если более чем в 2 раза, бот должен отправлять одни рекомендации. В противном случае свое сообщение.

· Бот должен узнать мнение пользователя по рекомендации и запомнить его.

7. Загрузите его в свой канал связи и проверьте работу логики. Запишите, какие вопросы у вас возникли? Ведет ли бот диалог так, как вы предполагали? Как бы вы его улучшили? Запишите ответы ниже:

Сохранить

---

Подсказка:

В рамках уроков вам предстоит делать разные диалоги и схемы. Вы можете каждый раз создавать новую логику и подключать к новому ключу связи, а можете просто очищать все введенные данные.

Переход к настройкам текущего бота
Переход к настройкам текущего бота

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

Как очистить контент бота?
Как очистить контент бота?

Далее мы рассмотрим третью группу блоков редактора (последнюю в рамках этого курса). Она включает в себя взаимодействие с другими сервисами и использования данных без привязки к пользователю. Как будете готовы, переходите к следующему уроку.

Автор: Дмитрий
  1. Главная

Вам также понравится

Научитесь создавать ботов из программирования

Прекрасная идея? Создайте бота для ее реализации самостоятельно. Мы научим и проведем через все этапы от поиска идеи и написания диалогов до публикации и удержания интереса пользователей на бесплатном открытом курсе.

НАУЧИТЬСЯ БЕСПЛАТНО

Сделано на платформе ПРАВОЛОГИЯ