Оптимизируем общение чатботов

Оптимизируем общение чатботов
Автор:
Автор материала
Дмитрий
Время чтения:
Время чтения
21 мин.
Обновлено:
Обновлено, дата
21/01

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

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

Избегание повторяющихся сообщений

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

Один из ключевых подходов — использование шаблонов и параметризированных сообщений. Вместо того чтобы вручную прописывать каждое сообщение, можно создать единый шаблон с переменными. Возвращаясь к прошлым урокам, для приветственного сообщения можно задать формат: «Привет, { {Имя} }! Рад вас видеть в нашем чате. Чем могу помочь?». Такая структура позволяет использовать одно сообщение для множества пользователей, заменяя имя на персонализированные данные.

Использование логики с переходом между экранов вместо огромного выбора сообщений в боте кофейни
Использование логики с переходом между экранов вместо огромного выбора сообщений в боте кофейни

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

Использование случайных значений и таблиц данных

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

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

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

А помните приветственное сообщение из прошлых уроков? Если человек пользуется ботом каждый день, то одно и то же сообщение быстро сведет его интерес на нет. Вы можете разнообразить его типа «Привет, { {Имя} }! Рады вас видеть в нашем чате. Чем можем помочь?». «Hola, { {Имя} }! У вас появился вопрос?», «Как дела, { {Имя} }! Мы готовы помочь – в чем вопрос?». Соответственно, надо не только подготовить эти 3-5-10 сообщений, но и настроить условия отправки каждого. А можно использовать блок со случайным текстом – в переменную записывается случайная строка из списка, который вы укажете. И эту строку вы можете использовать в сообщении. Такая структура упрощает создание, понимание, а также позволяет использовать простую схему для множества отправляемых сообщений.

Повторяющиеся наборы действий чатботов

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

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

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

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

Периодическое обновление данных

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

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

Оптимизация условий

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

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

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

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

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

Кажется, что это простое улучшение, однако уже одно оно позволяет боту работать быстрее и эффективнее. А представьте, что таких «кирпичиков» будет 10-20?

Использование внешних сервисов

Автоматизация и интеграция с внешними сервисами — еще один способ оптимизации. Например, бот может подключаться к системам CRM для получения данных о клиентах или использовать API сторонних сервисов для выполнения задач. Это сокращает объем работы, который чатботам нужно выполнять параллельно. Вы также можете использовать коннекторы типа Zapier, чтобы вам не приходилось настраивать вручную все поддерживаемые интеграции.

Коннектор Zapier
Коннектор Zapier

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

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

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

В этом уроке вам предстоит подумать над тем, как составить оптимальные диалоги и экраны (если вы предпочитаете визуальный конструктор) или схему работы чатбота (если вы пользуетесь редактором схем). Представим, что к вам пришел клиент с уже готовыми (по его мнению) вариантами диалогов для своего проекта. Ему нужен чатбот, который будет заниматься 24/7 рум-сервисными вопросами мини-гостиницы.

1. Прочтите диалог.

[чатбот] Привет! Рад, что вы пользуетесь рум-сервисом гостиницы «Летняя пташка». Я ваш персональный помощник, Игорь. Чем могу помочь?

Кнопки: «Показать услуги», «Часто задаваемые вопросы», «Связаться с поддержкой»

[пользователь] Показать услуги.

[чатбот] Вот что я могу для вас сделать:

Кнопки: «Оформить заказ», «Проверить статус заказа», «Узнать о скидках»

Группа 1: Оформление заказа

[пользователь] Оформить заказ.

[чатбот] Отлично! Что вы хотите заказать?

Кнопки: «Еда», «Одежда», «Техника»

[пользователь] Еда.

[чатбот] Выберите тип кухни:

Кнопки: «Итальянская», «Японская», «Американская»

[пользователь] Итальянская.

[чатбот] У нас есть: пицца, паста, лазанья

Кнопки: «Выбрать пиццу», «Выбрать пасту», «Выбрать лазанью», «Назад»

[пользователь] Выбрать пиццу.

[чатбот] Выберите размер:

Кнопки: «Маленькая», «Средняя», «Большая»

[пользователь] Средняя.

[чатбот] Отличный выбор! Добавить напиток?

[пользователь] Да.

[чатбот] Выберите напиток:

Кнопки: «Кола», «Сок», «Минеральная вода»

[пользователь] Сок.

[чатбот] Ваш заказ: Средняя пицца, Сок. Все верно?

[пользователь] Подтвердить.

[чатбот] Спасибо за заказ! Мы доставим его в течение часа. Хотите отследить статус?

Группа 2: Проверка статуса заказа

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

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

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

[пользователь] Да.

[чатбот] Введите номер вашего заказа.

[пользователь] 12345.

[чатбот] Заказ 12345: статус «В пути». Ориентировочное время доставки: 15 минут. Нужна помощь?

[пользователь] Нет.

[чатбот] Отлично! Если понадоблюсь, напишите.

Группа 3: Часто задаваемые вопросы / Связь с поддержкой

[пользователь] Часто задаваемые вопросы.

[чатбот] Вот популярные вопросы. Выберите один, чтобы узнать больше:

Кнопки: «Как оформить заказ?», «Как узнать статус заказа?», «Как связаться с поддержкой?»

[пользователь] Как связаться с поддержкой?

[чатбот] Вы можете связаться с поддержкой через чат или звонок. Как предпочитаете?

[пользователь] Чат.

[чатбот] Напишите ваш вопрос, и мы постараемся помочь.

[пользователь] У меня не работает приложение.

[чатбот] Понял! Передал вашу проблему специалисту. Он ответит в течение 5 минут. Хотите еще что-то спросить?

[пользователь] Нет.

[чатбот] Хорошо! Если появятся вопросы, пишите.

Завершение диалога

[чатбот] Спасибо, что выбрали нас! Хотите оставить отзыв?

[пользователь] Да.

[чатбот] Напишите ваш отзыв, мы учтем все пожелания.

[пользователь] Отличный сервис, спасибо!

[чатбот] Спасибо за обратную связь! Рады стараться для вас.

[пользователь] Пока.

[чатбот] До свидания! Возвращайтесь снова.

Напоминания, уведомления, рассылки

[чатбот] Вы давно к нам не заходили. Хотите узнать о новинках?

[пользователь] Да.

[чатбот] Новинка дня: паста «Карбонара» со скидкой 15%. Заказать?

[пользователь] Да.

[чатбот] Отлично!

[чатбот] Напоминаем: ваш заказ доставлен. Все ли вас устроило?

[пользователь] Да.

[чатбот] Приятно слышать! Хорошего дня.

[чатбот] Не забывайте: у нас сегодня скидка 20% на пиццу! Хотите воспользоваться?

[пользователь] Да.

[чатбот] Отлично! Переходим к оформлению заказа.

Поддержка

[пользователь] У меня вопрос.

[чатбот] Напишите, чем я могу помочь.

[пользователь] Как поменять адрес доставки?

[чатбот] Среди часто задаваемых вопросов я не нашел ответа – сейчас приглашу менеджера, чтобы вам помочь.

[чатбот] Вы можете изменить адрес через личный кабинет или связаться с поддержкой. Хотите перейти?

[пользователь] Перейти.

2. Запишите, исходя из представленного диалога, какие экраны вам необходимо сделать, как они будут связаны.

Сохранить

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

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

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

Подсказка. Проверьте, есть ли:

- повторяющиеся диалоги, которые еще не вынесены на отдельные экраны,

- взаимодействие со сторонним API, которое необходимо настроить,

- обратная связь,

- особенности общения, которые лучше изменить,

- повторяющиеся или разнообразные тексты, которые можно оптимизировать.

Скорректируйте диалоги и запишите их в поле ниже. (Вы можете скопировать их из задания и редактировать сразу в поле)

Сохранить

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

Сохранить

Мы почти закончили курс - осталось итоговое задание. Когда будете готовы, переходите к следующему уроку.

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

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

Сэкономьте время на самостоятельном создании ботов

Хотите получить персональную демонстрацию сервиса, кейсы использования или персональную разработку бота? Оставьте заявку через нашего чат-бота или ознакомьтесь подробнее.

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