Создание чат-бота для бронирования билетов в кино - часть 2
Если вы еще не читали первую часть, вот она: Создание чат-бота для бронирования билетов в кино - Часть 1
Я очень благодарен и счастлив, что Патрисия Дуран перевела меня на испанский с чат-бота Planeta.
Это испанская версия: Creando un chatbot para reservar entradas de cine - Parte 1
Краткое содержание первой части
Пока что в конце первой части мне удалось создать базового робота на базе Puppeteer, который представляет собой headless-browser .
Этот робот может:
- Получить все кинотеатры Pathé во Франции.
- Расскажите, какие фильмы доступны в выбранном кинотеатре.
- Укажите, можно ли забронировать фильм или нет, в зависимости от выбранного вами часа.
- Начать процесс бронирования.
Последний пункт очень важен, и вот почему.
После множества тестов, проведенных на разных компьютерах в разных сетях, я понял, что робот может успешно заказывать билеты в кино только один раз из дюжины.
Этого недостаточно для полноценного автоматизированного процесса бронирования, но я посчитал, что этого будет достаточно для этой серии.
Я поинтересовался :
Что самое главное в этом проекте?
Либо две дороги:
- У меня есть собственный персонализированный чат-бот, чтобы заказывать билеты в кино по запросу.
- Узнайте, как настроить чат-бота, связанного с автономным браузером, управляемым удаленным приложением, размещенным на сервере.
Я выбрал последний, потому что слишком много технических препятствий, которые я не могу преодолеть.
Умный читатель Medium прокомментировал первую часть, задав вопрос (изменено) : «Почему вы не попытались реконструировать REST API, используемый для бронирования билетов?».
Я понял, что мой ответ на этот комментарий должен был быть частью первой части серии, вы должны взглянуть на него: https://medium.com/@snowmiser/why-dont-you-just-do-a -manual-network-Inspection-see-what-urls-are-being-be-and-what-headers-8024e3afb03a
В сочетании с разделом Минусы безголового браузера он подчеркивает, что делает этот проект намного сложнее, чем ожидалось.
Что теперь ?
На этот раз мы сосредоточимся на чат-боте на базе DialogFlow (Google).
Примечание: DialogFlow в прошлом назывался api.ai. Вот почему поиск способов решения ваших проблем в Интернете приведет к повышению результатов в отношении материала api.ai. Имейте в виду, что api.ai = dialogflow. Хочешь пойти дальше? Посмотрите здесь https://blog.dialogflow.com/post/apiai-new-name-dialogflow-new-features/
Наши основные проблемы будут связаны с:
- Создание базового чат-бота с нуля, без программирования.
- Понимание того, как вызвать удаленную функцию на веб-сервере, когда чат-бот получает определенное предложение (намерение, сценарий, называйте это как хотите).
Обратите внимание, что DialogFlow является бесплатным и чрезвычайно мощным средством, но это означает, что вы являетесь продуктом. Все, что ваш чат-бот обрабатывает через DialogFlow, потенциально может быть использовано Google для улучшения своего ИИ.
Примеры кода будут предоставлены в Javascript ES6, запущенном на сервере Node.js, поддерживаемом express. Я считаю, что это наиболее простой способ запустить сервер за минимальное время.
Примечание. Прочитав статью, мой друг спросил меня: «Чувак, а как ты размещаешь свои приложения на Node.js?». Помните, что самые распространенные предложения хостинга часто поддерживают только PHP (поскольку Joomla, Wordpress и все эти CMS работают на PHP, я думаю, это просто связано с экономическими проблемами). Я сказал ему искать: DigitalOcean, Gandi и VPS в целом.
Я сделал все возможное, чтобы сделать его предельно простым в использовании и реализации, я рекомендую вам прочитать официальную документацию DialogFlow после прочтения этой статьи, которая является просто хорошей отправной точкой.
Привет, мир
Во-первых, вам нужно привязать свою учетную запись Google к DialogFlow.
Перейдите на сайт dialogflow, вы должны увидеть следующее:

Нажмите кнопку «зарегистрироваться бесплатно», вам будет предложено ввести пароль вашей учетной записи Google и создать новый проект Google. это простой шаг, которому легко следовать.
Теперь, когда ваш проект создан, давайте рассмотрим панель DialogFlow.

Как видите, мой чат-бот называется Allocine.
Интерфейс состоит из трех частей:
- Боковое меню навигации слева
- Главный компонент в центре экрана.
- Интерфейс чата справа, с помощью которого вы можете тестировать и отлаживать своего чат-бота.
Давайте посмотрим, что может предложить это боковое меню:
- Намерения: это сценарии, обрабатываемые вашим чат-ботом.
- Сущности: это ваши пользовательские структуры данных (не алгоритмические, объекты JSON, если хотите). Фактически, DialogFlow имеет множество встроенных сущностей, таких как
@sys.date, @sys.numberи так далее. - Обучение. Это очень мощная и интуитивно понятная функция. Он дает вам обзор последних чатов, которые люди вели с вашим чат-ботом, и позволяет вам контролировать обучение. Допустим, ваш чат-бот не может понять вопрос, вы можете найти этот вопрос и сказать: «В следующий раз обработайте его, как если бы это был обычный сценарий бронирования в Австралии».
- Интеграции. Практически в один клик интегрируется с различными платформами, такими как Facebook, Telegram, Slack, Twitter и т. д.
- Аналитика: вы это уже знаете.
- Выполнение: на чем мы сосредоточимся. Это часть, отвечающая за привязку вашего чат-бота к вашему серверу для обработки особых запросов. Например, если кто-то набирает «Я хочу купить пиццу», вы можете привязать это намерение (также известный как сценарий) к логике вашего сервера. Google также позволяет использовать функции Firebase Cloud для тех, кто более знаком с ним (со встроенным редактором кода браузера). Эта часть также называется веб-перехватчиками.
- Готовые агенты: очень полезный набор уже существующих агентов, который поможет вам начать работу с Dialogflow. Он позволяет импортировать агентов, понимать, как они работают, настраивать их и т. Д.
- Светская беседа: именно так это звучит. Эта часть предназначена для того, чтобы вы могли настроить, как ваш чат-бот будет обрабатывать небольшие разговоры. Этой частью не следует пренебрегать, поскольку именно она делает вашего чат-бота более человечным.

Заставь говорить - Основы
Перейдите на панель Светский разговор.
Выберите тему, например Об агенте.
Дополнительное примечание:
Agent- это термин, используемый как синоним дляChatbot
Заполните поля, каждая строка соответствует возможному ответу на вопрос.
Пример

Затем нажмите Сохранить в правом верхнем углу.
Попробуйте с правой панелью!

Ваш ребенок только что сказал свое первое слово.
У вас есть дополнительная информация, например:
- Google Assistant: симулятор, позволяющий увидеть, как ваш чат-бот работает в Google Assistant, со специальной панелью и очень полезными инструментами отладки.
- Кнопка SHOW JSON: очень полезна для отладки, у вас есть много информации, такой как дата, язык, действие, намерение и т. д.
- Копировать CURL: CURL - это интерфейс командной строки, который позволяет очень легко выполнять HTTP-запросы. Эквивалент с пользовательским интерфейсом и потрясающими функциями, например, Почтальон.
С этого момента вы сможете заставить своего чат-бота говорить и проявлять индивидуальность. Заполнение части светской беседы важно, если пользователям разрешено фактически вводить текст для взаимодействия с вашим чат-ботом (например, в Facebook Messenger вы можете отключить эту функцию, чтобы пользователи могли только нажимать кнопки для использования вашего « чат-бот »)
Немного копаем - Webhooks
Пока что ваш чат-бот представляет собой своего рода огромную базу данных, заполненную жестко закодированными полями вопросов и ответов.
Теперь наша цель - понять, как сделать его более динамичным (это предложение заставляет меня сразу вспомнить еще одно старое руководство по переходу с HTML / CSS на PHP для динамических веб-страниц).
Помимо чат-бота с интеллектуальными переговорами на вашем сервере, веб-перехватчики в целом очень эффективны, потому что они позволяют интегрировать абсолютно все, что угодно, с интерфейсом чата.
Вот почему использование DialogFlow или любой другой крупной платформы чат-бота очень удобно, поскольку она обрабатывает всю часть НЛП, интеграцию с такими приложениями, как Messenger, Whatsapp и т. Д., И другие серьезные проблемы, о которых вы и я, несомненно, не осведомлены.
Позволь мне объяснить. Например, если вы хотите создать электронную коммерцию на основе чат-бота, вы можете это сделать.
Сценарий:
- «Привет, я ищу последнюю модель Nike Air Max».
- (Выполнение запроса к базе данных через веб-перехватчик) - ›Отображение последней модели Air Max. «Хотите купить?»
- «Конечно!»
- «Введите информацию о кредитной карте бла-бла-бла»
- Готово.
Этот пример приведен только для того, чтобы продемонстрировать мою точку зрения. Такое приложение вызовет серьезные проблемы с безопасностью, серьезные проблемы с пользовательским интерфейсом и убьет рабочие места, поскольку больше не будет рекламы.
Настраивать
Сначала перейдите к «Заполнение» в меню слева.

HTTPS НЕ ВАРИАНТ
DialogFlow не будет работать, если ваш SSL-сертификат неправильно настроен на вашем сервере, поверьте мне. (я потерял на это дни, см. позже)

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

Затем вы будете перенаправлены на этот экран конфигурации.

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

Тестирую на всякий случай.

Часть кода - Расширение вашего чат-бота сверхспособностями
Это то, для чего ты пришел
Я не буду заниматься ни настройкой SSL-сертификата, ни настройкой экспресс-приложения в NodeJs. (Вся следующая статья будет именно об этом, поэтому)
Предположим, ваш сервер работает, https работает отлично, а ваш маршрут веб-перехватчика: /webhook.
DialogFlow выполняет запросы POST с данными JSON при запуске веб-перехватчика.
Вот как вы с этим справляетесь.
Обратите внимание, что вы также можете использовать официальный пакет NodeJS, выпущенный Google: https://github.com/dialogflow/dialogflow-nodejs-client-v2
И если вы протестируете это еще раз.

Если ответ на запрос веб-перехватчика не поступает, просмотрите эту документацию и нажмите Показать JSON:

Вы можете пойти дальше, создать свои собственные пользовательские сущности, прочитать документацию и построить большой проект. Например, моим первым проектом с использованием DialogFlow была упрощенная система бронирования автомобилей (задействованы настраиваемые сущности и намерения).
Интересный факт (не так уж и много)
Некоторые из вас, возможно, заметили, что я потратил больше времени, чем в среднем, прежде чем опубликовать эту статью, даже если я стараюсь регулярно писать по одной статье в неделю.
Эта задержка была вызвана ужасным преступником: SSL.
Это испортило мне жизнь.
Однако хорошо то, что мне захотелось написать статью о том, как настроить бесплатный рабочий SSL-сертификат за две минуты независимо от ОС, на которой работает ваш сервер. Готовьтесь 😃
DialogFlow не позволяет использовать веб-перехватчики с сервером, не использующим протокол HTTPS.
Спасибо за прочтение
Надеюсь, вам понравилась эта статья.
Последний был первой частью этой серии:
- На английском языке: https://itnext.io/creating-a-chatbot-to-book-cinema-shows-part-1-9c13de573a07
- На испанском: https://planetachatbot.com/creando-un-chatbot-para-reservar-entradas-de-cine-c0e7c9c5a0f
Для всех вас, кому может быть интересно: Это был второй и последний шаг в этой серии статей. Я стараюсь, чтобы мой контент был легким для понимания и повторно использовался как для начинающих, так и для опытных разработчиков.
Однако я был бы рад пойти дальше, пообщаться с вами, обсудить и обсудить чат-боты, безопасность и другие темы.
Как всегда, не стесняйтесь обращаться ко мне по адресу [email protected]