Создаем бота вместе на примере интернет-магазина

Перед созданием Агента

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

Для начала нам необходимо зайти в Платформу и создать на ней Агента. О том, как зарегистрировать и авторизоваться в Платформе:

  • Вы на главной странице Платформы. Создайте новый Проект, нажав кнопку Add project в правом верхнем углу.

  • Определения

    Проект – это группа ботов, своего рода папка для их хранения.

  • Пропишите название Проекта E-commerce в строке NAME и по желанию добавьте описание в строке DESCRIPTION.

  • Зайдите в Проект.

  • Создайте Бота, нажав кнопку ADD AGENT в правом верхнем углу.

  • Пропишите название Бота E-commerce agent в строке NAME и и по желанию добавьте описание в строке DESCRIPTION.

  • Зайдите в Ботбилдер, перейдя по кнопке GO TO BUILDER.

Создание интентов

Далее необходимо добавить интенты.

Определения

Интент – это намерение собеседника, содержащееся в реплике, сказанной Боту. Бот должен распознать намерение – например, узнать курс евро или получить скидку.

На Платформе chatme.ai интенты представлены в виде наборов реквестов (реплик). Каждый интент и реквест имеет свое название.

В процессе создания интентов вам понадобится таблица с прописанными интентами и ответами к интентам – таблица доступна по ссылке.

  • В Ботбилдере перейдите во вкладку INTENTS.

  • Для того чтобы добавить новый интент, нажмите +.

  • Добавим интент про акции, распродажи и специальные предложения. В строке NAME укажите название интента offers_sales. Названия интентов должны кратко и понятно отражать их суть. Все названия вы можете найти в приложенной таблице.

  • Добавьте реквесты в выборку интента, нажав на +.

Важно!

Для наиболее успешного распознавания выборка должна содержать не менее 10 реквестов на каждый интент.

При составлении реквестов необходимо продумать, какими словами Собеседник может сформулировать конкретное намерение – интент, и сделать реквесты как можно более разнообразными.

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

  • Кроме основных интентов, необходимо также добавить интенты Small Talk.

    Определения

    Small Talk представляет собой отвлеченные от основной тематики Бота интенты. Это, например, благодарность, приветствие, прощание. Small Talk делает общение с Ботом более оживленным и приятным.

    Интенты smalltalk также можно найти в таблице.

  • Аналогично добавьте остальные интенты из таблицы. Далее мы приступим к сборке непосредственно Диалогового Сценария.

Сборка сценария

  • В Ботбилдере перейдите на вкладку AGENT DESIGNER. Видим слот ROOT – это корневой слот, с которого начинается Сценарий.

    Определения

    Слот – это визуальный элемент диалогового сценария в Ботбилдере, содержащий действие, совершаемое Собеседником или Ботом.

  • Добавьте слот NLU, нажав + после слота ROOT и выбрав нужный тип из выпадающего списка.

    Определения

    Слот NLU анализирует смысловое содержание введенного Собеседником сообщения и определяет, к какому интенту его отнести.

  • В поле NAME введите название слота start NLU и проставьте значение CONFIDENCE THRESHOLD равное 30.

    Значение Confidence threshold определяет распознавание реплик Ботом. У каждой реплики есть значение Confidence (число от 0 до 1), которое характеризует уверенность Бота в том, что реплика относится к определенному интенту.

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

  • После слота NLU добавьте слоты интентов.

  • В выпадающем списке выберите тип слота Intent.

Выберите нужный интент в выпадающем списке и сохраните слот, нажав на кнопку Create.

Аналогичным образом добавьте все созданные ранее интенты в Сценарий.

  • Также добавьте слот Fallback, выбрав соответствующий тип слота в выпадающем списке, и сохраните его. В результате Сценарий будет выглядеть таким образом:

  • Далее после каждого интента нужно добавить ответ Бота на интент.

    Для этого после каждого из слотов интентов добавьте текстовые слоты Text, нажав + и выбрав из выпадающего списка соответствующий тип слота.

    Определения

    Слот Text выводит на экран собеседника текстовое сообщение Бота.

    Добавьте к каждому интенту соответствующие ответы из таблицы в поле TEXT LIST.

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

  • Добавьте текстовые ответы ко всем интентам, кроме store_location, order_track, pickup, интентов smalltalk и fallback. О них мы поговорим позднее.

  • Если текстовый ответ на интент получился длинным (длиннее 4 строк), рекомендуем разделить его на несколько слотов, ориентируясь на смысловое содержание. Благодаря этому сообщение будет читаться легче. Например, в нашем примере ответ на интент order_track содержит 7 строк.

Разделим его на два слота Text, добавив один слот сразу за другим.

  • То же самое проделаем с интентом pickup.

  • Теперь перейдем к работе с интентом fallback.

    После слота Fallback добавьте слот Text.

    В поле TEXT LIST добавьте текст Я вас не совсем понял. Пожалуйста, перефразируйте ваш вопрос.

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

    Каждый новый вариант ответа заносится в поле TEXT LIST двойным нажатием Enter.Добавьте для слота Fallback варианты ответа Пожалуйста, задайте вопрос другими словами: я не понял вас. и К сожалению, я не понимаю, о чем вы. Задайте ваш вопрос по-другому.

  • Таким же способом добавьте несколько вариантов ответа для интентов Small Talk.

  • При необходимости мы можем добавлять уточняющие вопросы и дать Собеседнику возможность ответить с помощью кнопок.

    Разберем этот случай на примере интента store_location, который содержит вопросы об адресах оффлайн-магазинов. Предположим, наши оффлайн-магазины расположены в двух городах: Москва и Санкт-Петербург. Если Собеседник захочет узнать их адреса, уточним, какой именно город его интересует. Для этого добавьте слот Text и пропишите в нем уточняющий вопрос Какой город вас интересует?.

  • Далее добавьте слот Button Menu: в выпадающем списке при выборе типа слота выберите Button Menu пропишите название Выбор города в поле NAME.

  • Далее нажмите + после текстового слота с уточняющим вопросом и добавьте кнопки Москва и Санкт-Петербург.

  • Следом за каждой кнопкой добавим соответствующие текстовые ответы.

  • После слотов Text в конце каждой ветки добавим слоты Wait For Reaction. Благодаря этому в завершение каждой ветки Бот будет ждать дальнейших сообщений от Собеседника, а после – возвращаться к слоту NLU в начале Сценария.

  • Как только Сценарий будет готов, нажмите кнопку Train.

Подождите, пока Бот обучится. Во время обучения кнопка DEBUG неактивна.

  • Далее протестируем Бота во встроенном окне тестирования, нажав кнопку DEBUG.

В соответствии с интентами, на распознавание которых теперь обучен Бот, зададим ему вопросы. Попробуем сформулировать вопросы разными способами, используя синонимы. Давайте спросим Есть ли какие-то акции? и Какие распродажи есть сейчас?.

  • При тестировании в Сценарии подсвечивается слот, в котором мы в данный момент находимся. Так можно отследить, к какому именно интенту Бот отнес реплику Собеседника.

  • При тестировании может оказаться, что некоторые реплики Бот распознает неверно.

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

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

Усложнение сценария

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

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

    у меня возникла проблема

    что-то пошло не так не получается заказать

    неполадки с заказом

    я не могу сделать заказ

    не удается воспользоваться

    у меня ничего не вышло

    проблемы с сайтом

    произошел сбой

    технические проблемы

  • Прежде чем прописать ответы Бота к интенту problem, узнаем у Собеседника, как его зовут. Для этого добавьте новый слот Intent в Сценарий, а за ним слот Text с текстом Как я могу к вам обращаться? Пожалуйста, напишите ваше имя.

  • Далее добавьте слот Wait For Reaction, чтобы Бот ожидал ответ Собеседника.

  • После слота Wait For Reaction добавьте слот Memory.

    Определения

    Слоты Memory позволяют занести в память Бота полученные от Собеседника данные, в том числе сообщение целиком.

    Для нашего примера в слоте Memory пропишите в поле KEY значение name – это название ключа, в который будет записано сообщение собеседника. В поле VALUE напишите {{ @client_message }} – таким образом Бот запомнит любое сообщение Собеседника. Назовите слот запоминание имени и сохраните его.

  • Далее добавьте слот Text с текстом {{ @name }}, пожалуйста, опишите возникшую у вас проблему., а за ним слот Wait For Reaction. Таким образом с помощью слота Memory Бот запомнит имя Собеседника и использует его в текстовом сообщении.

  • После слота Wait For Reaction добавьте слот Memory, в поле для названия впишите запоминание проблемы, в поле KEY problem_description, а в поле VALUE {{ @client_message }}.

  • Давайте предложим Собеседнику способы связи с интернет-магазином для решения проблемы. Для этого добавьте слот Text с текстом Каким образом мы можем связаться с вами, чтобы обсудить вашу проблему?. Следом добавьте слот Button Menu под названием contacts и кнопки По телефону, По электронной почте и Отменить отправление сообщения о проблеме.

  • После кнопки Отменить отправление сообщения о проблеме добавьте слот Text с текстом В таком случае вы можете задать любой другой интересующий вас вопрос и за ним слот Wait For Reaction.

  • После кнопки По телефону добавьте слот Text с текстом Пожалуйста, укажите ваш номер телефона и слот Wait For Reaction.

  • Здесь необходимо проверить, соответствует ли введенное Cобеседником сообщение формату номера телефона. Для этого существует тип слота Regular Expression.

    Определения

    Слоты Regular Expression проверяют введенное Собеседником сообщение на соответствие регулярному выражению на языке Python.

    После просьбы ввести номер телефона и слота Wait For Reaction добавьте слот Regular Expression.

  • Назовите новый слот number_regexp, а в поле EXPRESSION пропишите регулярное выражение на языке python, задающее российский формат номера мобильного телефона: ^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$.

  • Аналогичные слоты добавьте после кнопки По электронной почте: слот Text с текстом Пожалуйста, укажите ваш адрес электронной почты, слот Wait For Reaction и слот Regexp с названием email_regexp и регулярным выражением ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$.

  • После слотов Regexp в обеих ветках поставьте слоты Result. В поле VALUE укажите True.

  • Добавьте второй слот Result, нажав на появившуюся кнопку +, идущую по второй ветке из слота Regular Expression. В этом слоте в поле VALUE укажите False.

  • Если сообщение Собеседника соответствует формату номера телефона (верхняя ветка) или адресу электронной почты (нижняя ветка), то Бот пойдет по данной ветке со значением true в слоте Result.

    Тогда номер телефона нужно занести в память Бота с помощью слота Memory. Добавьте этот слот после слота со значением true в верхнюю ветку. Назовите его Запоминание контактных данных. В поле KEY впишите contact, а в поле VALUE укажите {{ @parse_result }}. Эта переменная содержит в себе сообщение Собеседника, прошедшее через проверку регулярного выражения.

  • Аналогичным образом Боту нужно запомнить email Собеседника. Но для этого можно не повторять все описанные выше действия, а воспользоваться слотом Jump.

    Определения

    Слот Jump позволяет перемещаться в любой слот Сценария.

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

  • Если в сообщении Собеседника допущена ошибка, Бот выберет ветку со значением false. После слота со значением false добавьте слот Text, в котором сообщите Собеседнику об ошибке: Вы некорректно ввели номер телефона. Введёте заново или хотите задать другой вопрос?.

  • Добавьте к слоту Text кнопочное меню Button Menu под названием number incorrect с двумя кнопками: Ввести заново и Задать другой вопрос.

  • После кнопки Задать другой вопрос поставьте слот Text с текстом Готов помочь! Задавайте ваш вопрос. Далее поставьте слот Wait For Reaction.

  • Добавьте слот Jump после кнопки Ввести заново. В поле DESTINATION укажите текстовый слот с названием Пожалуйста, укажите ваш номер телефона.

  • Аналогичным образом в ветке с вводом электронной почты добавьте после слота Result со значением false сначала текстовый слот Text с текстом Вы некорректно ввели адрес электронной почты. Введёте заново или хотите задать другой вопрос?, а затем кнопочное меню Button Menu. Кнопочное меню назовите email incorrect и добавьте две кнопки: Ввести заново и Задать другой вопрос.

  • После кнопки Задать другой вопрос поставьте слот Text с текстом Готов помочь! Задайте ваш вопрос. Далее поставьте слот Wait For Reaction.

  • После кнопки Ввести заново добавьте слот Jump, в поле DESTINATION выберите текстовый слот Пожалуйста, укажите ваш адрес электронной почты.

  • Вернитесь к слоту Memory, где Бот запоминает верно введенные контактные данные. Добавьте после этого слота слот Text, в котором будут выводиться все данные, введенные Собеседником, и предложение проверить их правильность:

    Проверьте правильность введённых данных:

    Ваше имя: {{ @name }}

    Контактные данные: {{ @contact }}

    Описание проблемы: {{ @problem_description }}

  • Добавьте после этого текстового сообщения кнопки Все верно и Есть ошибки.

  • После кнопки Все верно добавьте текст Ваше обращение было успешно отправлено. Мы свяжемся с вами по указанным вами контактам. при помощи слота Text и добавьте слот Wait For Reaction.

  • После кнопки Есть ошибки добавьте текстовое сообщение Что вы хотите исправить?.

  • Далее добавьте кнопочное меню (слот Button Menu) под названием data_edit_menu с тремя кнопками: Имя, Контактные данные, и Описание проблемы.

  • После кнопки Имя добавьте слот с текстом Пожалуйста, напишите ваше имя. Далее поставьте слот Wait For Reaction. Используя слот Memory присвойте ключу NAME значение {{ @client_message }}. Добавьте слот Jump, в DESTINATION выберите текстовый слот, в котором выводятся все данные, введенные Собеседником.

  • Аналогично закончите ветку после кнопки Описание проблемы: добавьте текст Пожалуйста, опишите возникшую у вас проблему., затем слот Wait For Reaction и слот Memory, где в поле KEY напишите problem, а в поле VALUE {{ @client_message }}.

  • После кнопки Контактные данные добавьте текстовый слот с текстом Каким образом мы можем связаться с вами, чтобы обсудить вашу проблему? и кнопочное меню edit_contact_data_menu с кнопками По электронной почте и По телефону.

    Таким образом мы дадим Собеседнику возможность изменить свой выбор и ввести номер телефона вместо адреса электронной почты, и наоборот.

    После кнопки По электронной почте добавьте Jump в текстовый слот Пожалуйста, укажите ваш адрес электронной почты. После кнопки По телефону – слот Jump в текстовый слот Пожалуйста, укажите ваш номер телефона.

Усложненный Бот готов! Осталось его обучить и протестировать. Для того чтобы убедиться в том, что усложненный сценарий работает так, как надо, необходимо «пройтись» по всем его веткам: проверить каждую кнопку и каждое разветвление.

Last updated