Чат-Бот, Понимающий Человеческую Речь На Dialogflow

Хочу поделиться с вами своим опытом работы с сервисом.

Диалоговый поток и поговорим о некоторых не столь очевидных вещах.



Чат-бот, понимающий человеческую речь на Dialogflow

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

Воспользоваться сервисом можно абсолютно бесплатно, поэтому не теряйте времени и приступайте к работе.

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



Шаг 0. Задача

Бот должен принять запрос от пользователя, состоящий из трёх параметров: имени, города и адреса.

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



Шаг 1. Первоначальная настройка

Для начала вам необходимо зарегистрироваться и создать нового агента:

Чат-бот, понимающий человеческую речь на Dialogflow

Вы можете указать любое имя агента.

В качестве языка я выбрал русский.

Но в будущем вы сможете добавить и другие.

Часовой пояс важен, так как он будет определять такие фразы, как «Сегодня», «3 дня назад».

Давайте создадим новый проект Google. Я буду использовать первую версию API После создания агента переходим на вкладку «Интеграции» и подключаем нужные нам платформы.



Чат-бот, понимающий человеческую речь на Dialogflow

На этом этапе наш бот уже запущен и может общаться с пользователями.

Теперь нам нужно научить его правильно понимать фразы.



Шаг 2. Создайте задания

Назначение — это обработчик конкретного запроса пользователя.

Перейдите на вкладку «Намерения».

После создания агента здесь будет два стандартных назначения: Приветственное намерение по умолчанию — бежит приветствовать пользователя (отправит ответное приветствие) Резервное намерение по умолчанию — запускается, если ни одно из остальных назначений не подходит. Он отправит сообщение о том, что пользователя не поняли («Эта последняя фраза мне непонятна», «Пожалуйста, попробуйте выразить свою мысль по-другому» и т. д.).

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



Добавьте в приветствие вопрос о пользователе

Откройте «Намерение приветствия по умолчанию».

Здесь есть несколько разделов: Контексты Пользователь говорит События Действие Ответ Обратите внимание на раздел «Мероприятия»: здесь указано одно сервисное событие «ДОБРО ПОЖАЛОВАТЬ».

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

В нашем случае назначение «Намерение приветствия по умолчанию» отвечает не на какой-то текст от пользователя, а на событие службы WELCOME. Например, для Telegram это запуск бота командой /start. Подробнее о мероприятиях .

Итак, давайте посмотрим на раздел «Ответ».

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

Каждое сообщение может состоять из нескольких строк.

Каждая строка представляет собой отдельную версию сообщения.

Для ответа будет выбран один из этих вариантов.

И чем их больше, тем реже ваш бот будет повторяться.

Давайте добавим сюда сообщение с просьбой рассказать нам о себе.



Чат-бот, понимающий человеческую речь на Dialogflow



Реакция на ответ

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

На вкладке «Намерения» наведите указатель мыши на «Намерение приветствия по умолчанию» и нажмите «Добавить последующее намерение».

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

Они нас не интересуют — выбираем «Пользовательский» Перейдем к разделу «Пользователь говорит» и добавим несколько вариантов сообщений от пользователя.

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

Для этого выделите фрагмент текста и в выпадающем меню выберите тип данных.

Dialogflow имеет ряд предопределенных типов, особенно для имен и адресов.

Но вы можете создать свой собственный.

Подробнее .



Чат-бот, понимающий человеческую речь на Dialogflow

Теперь обратите внимание на раздел «Действие».

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

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



Чат-бот, понимающий человеческую речь на Dialogflow

Обозначим имя пользователя обязательным параметром.

Давайте для большего удобства изменим имя параметра с «given-name» на «name».

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

И наконец, добавим ответ пользователю в раздел «Ответ».



Чат-бот, понимающий человеческую речь на Dialogflow



Работа с контекстом

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

Давайте рассмотрим это по порядку: Приветственное намерение по умолчанию — нет входящего контекста.

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

Присвоение создает новый пустой контекст «DefaultWelcomeIntent-followup» (добавляется автоматически).

Приветственное намерение по умолчанию — пользовательское — имеет входящий контекст «DefaultWelcomeIntent-followup» (добавляется автоматически).

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

Исходящего контекста здесь пока нет. Давайте добавим исходящий контекст для «Намерение приветствия по умолчанию — пользовательское» с именем «UserData».

Теперь, когда пользователь представится после приветствия, информация о нем будет записана в новом контексте «UserData».



Пользователь размещает заказ

Создадим новое задание «Заказ» с исходящим контекстом «UserData».

Это назначение может быть выполнено в любое время и может изменить контекст «UserData».

В тексте заказа нам нужны Имя, Город и Адрес.

Давайте добавим фразы и разметим их.

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



Чат-бот, понимающий человеческую речь на Dialogflow



Используя уже известные данные

Наше назначение может работать как при отсутствии контекста «UserData», так и при его наличии.

В первом случае бот запросит у пользователя все недостающие данные.

А во втором он должен использовать уже известные.

Для этого: Для параметра имя установить значение по умолчанию #UserData.name Для параметра адрес установить значение по умолчанию #UserData.address Для параметра город установить значение по умолчанию #UserData.city Теперь, если пользователь ранее представился (его имя хранится в контексте UserData), то при оформлении заказа его имя будет введено автоматически.

Если нет, бот запросит у пользователя имя.

Добавляем ответ, подтверждающий заказ.

Вы можете использовать свои параметры в ответе.

Подробнее .



Чат-бот, понимающий человеческую речь на Dialogflow



Результат работы

Результат работы бота показан на скриншоте ниже.

Вы можете пообщаться с ним самостоятельно в Telegram: @sample_ShopBot или Веб-демо

Чат-бот, понимающий человеческую речь на Dialogflow

Через некоторое время контекст будет сброшен.

После первого контакта бот запросит у вас имя и адрес доставки.

И это восстановит контекст.

Чат-бот, понимающий человеческую речь на Dialogflow



Заключение

Таким образом, Dialogflow заботится о сборе информации о пользователе и заказе и отправляет в ваш сервис только готовый результат. Остаётся только настроить отправку WebHook на твой сервер, который ответит и осуществит доставку.

Подробнее .



Ссылки

Веб-демо Чат-бот Документация Теги: #apiai #чат-бот #мессенджеры #Google Cloud Platform
Вместе с данным постом часто просматривают: