Бот с NLP

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

Введение

Чат-бот с применением технологии NLP может стать отличным дополнением в команду. Он выступит заслоном и фильтром обращений, разгрузит специалистов контакт-центра и при этом улучшит клиентский сервис за счет моментальной помощи в режиме 24/7. Если же вы работаете сами, благодаря чат-боту вы сможете высвободить массу времени и будете меньше отвлекаться.

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

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

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

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

Вы сможете обучить чат-бота отвечать на вопросы с применением технологии обработки естественного языка на базе Dialogflow от Google (NLP).

Обработка естественного языка (Natural Language Processing, NLP) — общее направление искусственного интеллекта и математической лингвистики. Оно изучает проблемы компьютерного анализа и синтеза естественных языков. Применительно к искусственному интеллекту анализ означает понимание языка, а синтез — генерацию грамотного текста. Решение этих проблем будет означать создание более удобной формы взаимодействия компьютера и человека. Источник: Wikipedia/NLP

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

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

Структура урока

Данный урок состоит из двух частей:

  • в первой части урока вы узнаете, как на платформе Metabot создать типовой бот с применением NLP технологии, который будет способен распознавать намерение пользователя и стартовать подходящий сценарий поведения;

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

Итак, приступим к первой части нашего урока - к созданию логики бота.

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

  1. Зарегистрируйтесь на платформе Metabot24, подтвердите электронную почту. Далее войдите в аккаунт.

  2. Создайте нового бота, нажав кнопку Создать нового...

Рекомендуем также ознакомиться с подробным описанием Как создать бота.

  • Укажите название бота. Например: "NLP бот продажи услуг";

  • Не устанавливаем опцию Включить обнаружение NLP в приветствии;

  • Не устанавливаем опцию Включить обнаружение NLP Action в приветствии;

  • Нажмите кнопку Создать.

3. Создайте статусы, нажав на кнопку Создать статус в разделе Настройки бота -> Статусы.

Рекомендуем также ознакомиться с подробным описанием Статусы.

В рамках данного урока создадим два статуса: Первичное касание, Диалог с оператором.

  • Введите первый статус Первичное касание - он будет присвоен Лиду при первом запуске бота.

  • Аналогичным способом создадим второй статус Диалог с оператором - он будет присвоен Лиду, если он заказал услугу или позвал оператора.

4. Создайте новый скрипт в вашем боте, нажав на кнопку Создать скрипт в разделе Настройки бота -> Скрипты.

Рекомендуем также ознакомиться с подробным описанием Скрипты.

  • Укажите название скрипта. Например: "Приветствие";

  • Остальные параметры без изменения.

  • Далее откройте редактор скрипта, нажав на кнопку Перейти в редактор скрипта, расположенную напротив только что созданного вами скрипта.

Рекомендуем также ознакомиться с подробным описанием Редактор скрипта.

  • Добавьте команду Отправить текст, нажав на кнопку Добавить команду и выбрав ее в открывшемся окне. Напишите текст сообщения. Текст может содержать эмодзи для эмоционального окраса вашего приветствия.

  • Добавьте команду Установить статус лида, в которой при начале общения с ботом пользователю будет установлен статус, например, "Первичное касание".

Рекомендуем также ознакомиться с подробным описанием Установить статус лида.

5. Теперь мы создадим еще несколько скриптов по аналогии с пунктом 3. Всего в рамках этого урока нам необходимо создать следующие скрипты:

  • Задать NLP вопрос - в этом скрипте бот будет получать вопрос от пользователя и отправлять его в Dialogflow на распознавание;

  • Заказать услугу - это сценарий поведения бота для приема заявок на услугу и переключение на оператора для отработки заявки;

  • 👨‍🔧 Позовите оператора - выполнение данного скрипта подразумевает переключение на оператора;

  • Способы оплаты - ответ на вопрос пользователя;

  • Часы работы - ответ на вопрос пользователя;

  • Позвать бота - скрипт необходим, когда пользователь позвал оператора, но потом передумал и хочет продолжить общение с ботом;

  • 🛑 Не корректный ввод - скрипт, который бот выполняет, когда не распознано намерение пользователя.

Ниже рекомендации по созданию данных скриптов.

Как выполнить интеграцию с соответствующим намерением из базы знаний в DF, рекомендуем ознакомиться в разделах Интеграция с Dialogflow и Обучение бота.

Рекомендуем Намерения DF называть одноименно со скриптами вашего сценария. Если в наименовании Намерения содержится более 1 слова, то слова должны быть соединены знаком "_".

Итак, приступим к созданию скриптов.

6. Создайте новый скрипт с названием Задать NLP вопрос:

  • Укажите название скрипта. Например: "Задать NLP вопрос";

  • Установить опцию Включить NLP;

  • Остальные параметры без изменения.

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

Рекомендуем также ознакомиться с подробным описанием Создание меню.

  • Нажмите на кнопку Добавить пункт меню;

  • В поле Код укажите букву "а" и в фигурных скобках значение 300, например, а{300}. Это регулярное выражение обезопасит чат-бот от случайно введенного не заложенного в сценарии варианта, который может привести к остановке бота.

а{300} - это означает, что пользователь должен ввести символ "а" триста раз, чтобы попасть в этот пункт меню

Однако, поскольку мы включили опцию Включить NLP у скрипта, то ввод от пользователя в первую очередь будет отправлен в DF для распознавания намерения и только в случае, если намерение не будет найдено, ввод от пользователя будет использован для поиска пункта меню с соответствующим кодом.

Так сейчас работает интеграция с NLP-машиной на платформе Metabot. Если в скрипте включена опция NLP, то при достижении меню ввод от пользователя вначале проверяется в базе знаний NLP и только потом по меню.

  • Установить опцию Скрыть код;

  • В поле Подпись пункта меню укажите, например, фразу "Что бы вы хотели узнать?";

  • Не устанавливать опцию Скрыть весь пункт меню

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

"Заглушка" в виде a{300} означает, что работает только NLP распознавание по базе и пользователь никогда не попадет в пункт меню.

  • В качестве скрипта, выберите из списка созданный скрипт Приветствие.

7. Вернемся к редактированию скрипта Приветствие и в редакторе скрипта добавим команду Выполнить скрипт.

Рекомендуем также ознакомиться с подробным описанием Выполнить скрипт.

  • В качестве скрипта, выберите из списка созданный скрипт Задать NLP вопрос.

Внимание! Обращаем ваше внимание на то, что теперь после приветствия пользователя мы перебросим его в скрипт, где зададим невидимый вопрос и будем ждать ввода, а ввод в свою очередь попадет в NLP т.к. у скрипта Задать NLP вопрос активирована NLP-машина.

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

  • Укажите название скрипта. Например: "Заказать услугу";

  • Установить интеграцию с намерением в поле NLP намерение - установить значение заказать_услугу;

  • Остальные параметры без изменения.

Как выполнить интеграцию с соответствующим намерением из базы знаний в DF, рекомендуем ознакомиться в разделах Интеграция с Dialogflow и Обучение бота.

Внимание! Обращаем ваше внимание на логику работы NLP, а именно на то, что когда намерение в Dialogflow найдено, оно ищется по базе скриптов, используя поле NLP Намерение по полному совпадению.

Если ни одного совпадения не найдено, то загрузится заглушка скрипт Не корректный ввод с типом Fallback.

Скрипт Заказать услугу может содержать одну или несколько команд:

  • Добавьте команду Отправить текст, например,

    👋 Я Ваш личный бот-помощник и я готов принять Ваш заказ прямо сейчас! 🤖

    👉 Просто ответьте на мои вопросы.

Далее добавим две различные команды Запросить значение, которые будут запрашивать у пользователя его контактные данные и предпочитаемый способ оплаты, далее эти данные будут фиксироваться в карточке пользователя. Например, запросим следующие значения:

  • Добавьте команду Запросить значение.

    • Имя переменной - значение переменной указывается латинскими буквами. Если переменная состоит из нескольких слов, то слова разделяются знаком подчеркивания "_". Например, order_personal.

    Имя переменной - укажите order_personal.

    • Подсказка-приглашение для пользователя - произвольный текст понятный для пользователя, что он должен указать, например, "Одним сообщением укажите Ваши данные (ФИО, адрес, индекс и номер телефона) и какую услугу Вы хотите заказать 👇"

Рекомендуем также ознакомиться с подробным описанием Запросить значение.

  • Добавьте команду Запросить значение.

    • Имя переменной - значение переменной указывается латинскими буквами. Если переменная состоит из нескольких слов, то слова разделяются знаком подчеркивания "_". Например, order_payment.

    Имя переменной - укажите order_payment.

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

  • Добавьте команду Установить статус лида, например, статус "Диалог с оператором".

Рекомендуем также ознакомиться с подробным описанием Установить статус лида.

  • Добавьте команду Отправить текст, например, "Спасибо! Ваш заказ принят в обработку 🤩. Наши менеджеры работают каждый день с 9:30 до 21:30 и ответят Вам в этот промежуток времени".

  • Добавьте команду Стоп.

Рекомендуем также ознакомиться с подробным описанием Стоп.

9. Создайте новый скрипт с названием Позовите оператора. Выполнение данного скрипта подразумевает переключение на оператора.

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

  • Укажите название скрипта. Например: "Позовите оператора";

  • Установить интеграцию с намерением в поле NLP намерение - установить значение позовите_оператора;

  • Остальные параметры без изменения.

Скрипт Позовите оператора должен содержать несколько команд, для этого в редакторе скрипта создадим команды:

  • Добавьте команду Отправить текст, в которой вы опишите дальнейшие действия пользователя и например, график работы специалистов;

  • Добавьте команду Установить статус лида, в которой будет установлен статус, например, "Диалог с оператором";

  • Добавьте команду Стоп.

10. Создайте новые скрипты Способы оплаты и Часы работы, которые должны быть интегрированы с соответствующими намерениями в DF и могут содержать одну или несколько команд:

  • Создайте скрипты, указав в поле NLP намерение соответствующие намерение из DF.

  • Далее в редакторе скрипта добавьте команду Отправить текст;

  • Добавьте команду Выполнить скрипт, в качестве скрипта укажите скрипт Задать NLP вопрос.

11. Создайте новый скрипт Позвать бота, который будет возобновлять работу чат-бота в том случае, если пользователь остановил его.

Внимание! Не включайте NLP. В данном скрипте мы не используем механизм NLP-машины. Здесь используется внутренний механизм маршрутов и ключевых слов для реакции на слово "Бот", описание будет показано ниже в разделе "Создание маршрутов".

  • Укажите название бота. Например: "Позвать бота";

  • Остальные опции оставьте без изменений.

  • Далее в редакторе скрипта добавьте команду Установить статус лида. В данной команде необходимо перевести пользователя в первоначальный статус, например, "Первичное касание";

  • Добавьте команду Отправить текст, в которой вы уведомите пользователя о том, что с ним снова общается бот. Например, текст "Я здесь, с вами снова общается Бот.";

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

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

  • Укажите название скрипта. Например: "🛑 Не корректный ввод";

  • Тип скрипта - Fallback. Подробнее можно ознакомиться в разделе Скрипты.

  • Остальные параметры без изменения.

  • Далее в редакторе скрипта добавьте команду Отправить текст. В данной команде необходимо сообщить пользователю, что его запрос не распознан и порекомендовать его перефразировать, например, "Извините не понял 🤷‍♂️. Сформулируйте свой вопрос по-другому.";

  • Добавьте команду Повторить вопрос.

Рекомендуем также ознакомиться с подробным описанием Повторить вопрос.

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

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

Создание маршрутов

Создайте маршруты для взаимодействия бота с пользователями, нажав на кнопку Создать маршрут в разделе Настройки бота -> Маршруты.

Рекомендуем также ознакомиться с подробным описанием Маршруты.

1. Создайте маршрут, который будет запускаться для приветствия.

  • Введите параметры, как показано на изображении ниже;

  • В качестве Названия укажите "Приветствие";

  • В качестве скрипта, выберите скрипт Приветствие;

  • В Регулярном выражении слитно напишите точка-звездочка ".*" без кавычек. Это выражение означает, что бот будет реагировать на любой текст от пользователя;

  • В качестве Статуса выберите ранее созданный статус Первичное касание.

2. Создайте маршрут, который будет запускаться при вызове бота и скрипта Позвать бота.

  • Введите параметры как показано на изображении ниже;

  • В качестве Названия укажите "Позвать бота";

  • В качестве скрипта, выберите скрипт Позвать бота;

  • В Регулярном выражении напишите слово "бот". Это выражение означает, что бот будет реагировать на ввод текста "бот" от пользователя;

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

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

Резюмируем. Мы создали два маршрута, однако, напомним, что скриптов всего 8. Один из них Fallback на случай не верного ввода, для двух мы сделали маршруты, а в оставшиеся 5 мы будем попадать при помощи распознавания намерения NLP.

Приступим ко второй части нашего урока - созданию базы знаний и модели Dialogflow.

База знаний / Dialogflow

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

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

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

Как выполнять регистрацию и интеграцию с соответствующим намерением из базы знаний в DF рекомендуем ознакомиться в разделах Регистрация в Dialogflow и Интеграция с Dialogflow.

  1. Выполните авторизацию на сервисе Dialogflow.

  2. Перейдите в консоль учетной записи, нажав кнопку Go to console.

  3. Нажмите на кнопку Create New Agent и создайте новый проект/агента, например, NLP_бот.

4. После авторизации на сервисе Dialogflow и создании нового Проекта/ Агента дальнейшая работа по обучению бота будет производиться в разделе Intents.

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

Как выполнять обучение бота соответствующим намерениям из базы знаний в DF рекомендуем ознакомиться в разделе Обучение бота.

6. Создаем Намерения, с помощью которых бот сможет распознавать текстовые запросы пользователя и подбирать правильные ответы из базы знаний. По кнопке Create Intent создаем новое намерение.

Мы создали бота с 4 скриптами, в которых указана интеграция с базой знаний. Создаем 4 намерения для каждого скрипта соответственно:

  • Заказать_услугу;

  • Позовите_оператора;

  • Способы_оплаты;

  • Часы_работы.

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

В раздел Training phrases надо добавить различные варианты на тему того, что могут написать пользователи.

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

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

В процессе обучения бота нужно проверять правильность вводимых значений. Для этого, в поле Try it now необходимо указать один из введенных вариантов обращения и система должна предоставить ссылку на нужное намерение. Например, при варианте вопроса "До скольки вы открыты" выдается намерение "Часы_работы".

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

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

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

Итак, обучите четыре намерения, например, так как показано на картинках ниже.

Интеграция скриптов в Metabot с намерениями из DF была произведена ранее при создании скриптов. Теперь можно встраивать в бота каналы по обмену сообщениями.

  • В разделе Настройки бота выбрать пункт Интеграции.

  • Создать новую интеграцию, нажав на кнопку Новая привязка.

Интегрируйте Dialogflow с Metabot, используя эту инструкцию Интеграция с Dialogflow.

  • В диалоговом окне заполнить следующие параметры:

    • Интеграционная система - выбрать из списка Dialogflow;

    • Авторизационный ключ (json) - из буфера обмена скопировать полностью текст закрытого ключа;

    • Токен - параметр остается не заполненным;

    • Нажать кнопку Создать.

  • В разделе Интеграции с ботом располагается список всех настроенных интеграционных привязок для данного бота.

Для интеграции с каналами от Umnico, воспользуйтесь инструкцией Бот на базе Umnico.

Запуск бота в Telegram

  1. Создайте бот в Telegram при помощи @BotFather и скопируйте токен.

Рекомендуем также ознакомиться с подробным описанием Интеграция канала Telegram.

2. Создайте новый канал в Metabot в разделе Настройки бота -> Каналы, нажав на кнопку Новая привязка.

Рекомендуем также ознакомиться с подробным описанием Каналы.

  • Выберите Telegram в качестве Канала;

  • Скопируйте токен, полученный на предыдущем шаге;

  • Нажмите Создать, чтобы сохранить настройки.

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

Взаимодействие с ботом

Далее перейдите в приложение Telegram, откройте ваш бот и нажмите кнопку Запустить/Start. Если вы все сделали правильно, ваш бот поприветствует вас.

Далее задайте любой вопрос.

Если вы все сделали правильно, согласно нашего урока, то увидите следующую картину.

Поздравляем вас с созданием вашего бота c NLP на платформе Метабот24!

Попробовать в действии бот, который был описан в данном уроке можно, набрав в Telegram логин @urok1_nlp_bot.

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

Следующие шаги

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

Last updated