Как создать и интегрировать чат-бота доставки пиццы на Dialogflow

О чем статья
- Что такое Google Dialogflow и зачем он нужен
- Как создать агента (чат‑бота) заказа пиццы шаг за шагом
- Как настроить сущности, интенты и ответы для подтверждения заказа
- Как интегрировать чат‑бота на сайт (Dialogflow Messenger)
- Как тестировать локально и на проде
- Практические дополнения: критерии приёмки, чек‑листы, тесты, GDPR и безопасность
Что такое Google Dialogflow
Google Dialogflow — это платформа для создания чат‑ботов и виртуальных помощников. Она использует Natural Language Understanding (NLU) — компонент анализа естественного языка, который распознаёт смысл пользовательских фраз и извлекает параметры (сущности).
Определение: интент — это цель пользователя (например, «заказать пиццу»). Сущность — структурированные данные внутри фразы (например, адрес, размер, начинка).
Dialogflow предоставляет визуальный конструктор потоков, встроенные сущности системы (@sys.email, @sys.phone-number и т.д.), инструменты аналитики и возможность экспорта/импорта агентов.
Важно: Dialogflow подходит для быстрого прототипирования и для решений, где вам нужно минимальное кодирование и быстрая интеграция в мессенджеры и на сайты.
Преимущества использования Dialogflow
- Быстрый старт: десятки преднастроенных агентов.
- Поддержка системных сущностей (email, телефон, адрес, имя).
- Визуальный редактор интентов и параметров.
- Лёгкая интеграция в веб‑страницы и мессенджеры.
Когда Dialogflow может не подойти
- Если вам нужна полная кастомизация NLU‑моделей на уровне обучения с нуля.
- При жёстких требованиях к задержке (реaltime с миллисекундной задержкой) и полной автономности без облачных сервисов.
- Если в проекте строгие ограничения на передачу пользовательских данных в облако.
Примечание: в таких случаях рассмотрите локальные NLU‑решения (Rasa, spaCy + custom), или гибридный подход: NLU локально и обработка платежей/логики в защищённом бэкенде.
Шаги создания чат‑бота доставки пиццы
Ниже — детальная последовательность действий. Я переорганизовал исходные шаги в один непрерывный рабочий процесс.
Подготовка
- Подготовьте Google‑аккаунт (аккаунт Google необходим для доступа к Dialogflow).
- Соберите список обязательных данных для заказа: имя, email, телефон, адрес доставки, размер пиццы, начинка, основа (корж).
- Определите варианты ответа подтверждения заказа и структуру итогового подтверждения (пример: «Спасибо, Иван. Вы выбрали: Большая пицца, пепперони, тонкое тесто. Адрес: …»).
Создание агента в Dialogflow
- Перейдите в Dialogflow и выполните вход под Google‑аккаунтом.
- Согласитесь с условиями и нажмите “Create Agent”. Агент представляет весь чат‑бот.
- Введите имя агента без пробелов и нажмите “Create”.
Создание интентов (интеракций)
Интент — категория разговора. У Dialogflow уже есть Welcome intent. Нам нужно добавить интенты для сбора данных и оформления заказа.
- В меню слева выберите “Intents” и нажмите “Create Intent”.
- Придумайте понятное имя интента, например: “Order.Pizza”.
- В разделе “Training phrases” добавляйте примеры пользовательских фраз: “Заказать пиццу”, “Хочу пиццу”, “Я хочу оформить заказ”.
- Примеры фраз для заказа: “Order Pizza”, “I want a Pizza”, “I want to order a Pizza” — добавляйте с вариациями и опечатками, чтобы улучшить распознавание.
Настройка параметров (email, имя, телефон, адрес)
- Чтобы научить бота распознавать email, в поле добавления выражения введите пример: “Email ID Training: sampleemail@domainname.com”. Дважды щёлкните по формату email и выберите сущность @sys.email.
- Сохраните интент. В разделе “Action and parameters” отметьте параметр email и нажмите “Define prompt…” — добавьте фразы‑подсказки, например: “Пожалуйста, укажите ваш email для подтверждения заказа.”
- Добавьте набор подсказок (prompts) для email — короткие дружелюбные фразы.
- Повторите тот же подход для имени (@sys.given-name), телефона (@sys.phone-number) и адреса (@sys.address).
Важно: проверяйте, что в параметрах отмечен флаг “Required” (Обязательный), чтобы бот задавал недостающие поля.
Создание сущностей (Size, Topping, Base)
- В меню слева выберите “Entities” и создайте новую сущность.
- Создайте сущность с именем Size и добавьте значения: Regular, Small, Medium, Large, Monster (или локализованные варианты: Маленькая, Средняя, Большая, Монстр).
- Создайте сущности Topping (начинка) и Base (корж) с нужными вариантами.
Связывание сущностей с интентом
- В интенте Order.Pizza добавьте тренировочные фразы, где встречаются сущности, например: “Pizza Size Training: size” — выделите слово size и укажите тип @Size.
Отмечайте все параметры как обязательные и задавайте соответствующие подсказки. Порядок вопросов можно изменить перетаскиванием.
В секции “Responses” добавьте финальную текстовую подсказку, использующую параметризованные переменные: вставляйте сущности через символ $. Например:
“Спасибо, $given-name. Ваш заказ: $Size пицца, $Topping, $Base. Адрес доставки: $address. Контакт: $phone-number. Подтвердить заказ?”
Настройка профиля агента
- Нажмите на иконку “Settings (⚙)” рядом с именем агента.
- Обновите описание, при необходимости вставьте URL изображения для аватара агента и измените имя, чтобы оно соответствовало бренду.
- Сохраните изменения.
Импорт и экспорт агента
Полный проект чат‑бота может быть доступен в ZIP‑архиве репозитория GitHub. Для импорта:
- Откройте Settings агента -> Export and Import -> Import from Zip и загрузите файл.
Это удобно для развертывания одинакового бота на нескольких агентах или для резервного копирования.
Интеграция Dialogflow Messenger на сайт
- В меню слева выберите “Integrations”.
- Пролистайте до раздела Text Based и выберите “Dialogflow Messenger”.
- Нажмите “Enable”.
- Скопируйте сгенерированный скрипт и вставьте его в вашей веб‑страницы.
Тестирование и запуск локально
Простой HTML‑файл (index.html)
Создайте файл index.html с минимальным шаблоном и вставьте туда скрипт Dialogflow Messenger.
Сохраните файл в папке проекта.
Запуск локального сервера
Один из простых способов — использовать Python для локального статического сервера. Откройте терминал в папке с index.html и выполните:
python3 -m http.server 9000Откройте http://localhost:9000/index.html и проверьте, как выглядит и работает виджет бота.
Нажмите на виджет и пройдите сценарий заказа.
Кастомизация внешнего вида
Dialogflow Messenger поддерживает CSS‑переменные и стили. Вы можете изменить цвета пузырьков, фон и шрифты, вставив пользовательские стили в
вашего HTML.Практические рекомендации и методология разработки
Мини‑методология (MVP‑first):
- Сфокусируйтесь на самом простом рабочем сценарии: сбор контакта, адреса, размера и подтверждение заказа.
- Разверните минимальный агент и интеграцию на тестовый сайт.
- Соберите обратную связь от реальных пользователей и расширяйте интенты и сущности.
Ментальные модели:
- Модель «ошибка‑доверие»: сначала задавайте простые вопросы и подтверждайте критичные данные (адрес, телефон).
- Модель «fallback control»: ограничьте количество fallback‑ответов и добавьте четкий путь к оператору.
Альтернативные подходы:
- Rasa (open source) — если нужна локальная обработка NLU.
- Dialogflow CX — если нужен более сложный поток с визуальными переходами для enterprise.
- Простая кнопочная система (без NLU) — если диалог строго структурирован.
Критерии приёмки
- Бот корректно распознаёт и сохраняет имя, email, телефон, адрес, размер, начинку и основу в 95% тестов по набору тренировочных фраз.
- При отсутствии обязательного параметра бот задаёт уточняющий вопрос и повторяет попытку.
- Финальное сообщение содержит все выбранные параметры и предлагает подтвердить заказ.
- Интеграция на сайт работает без JS‑ошибок на текущем браузере проекта.
- Минимальные защитные механизмы против инъекций: данные экранируются до отправки в систему записи или в CRM.
Тестовые кейсы и позитивные/негативные сценарии
Позитивные тесты:
- Пользователь вводит полный набор данных в одну фразу: “Я Ольга, хочу большую пиццу с грибами, тонкое тесто, адрес ул. Ленина, 5, телефон +7 912 123 45 67, email olga@mail.ru” — бот распарсит все сущности и предложит подтверждение.
- Пользователь отвечает на уточняющие вопросы по одному параметру — бот корректно продолжает диалог.
Негативные тесты:
- Некорректный email — бот просит повторить.
- Неполный адрес — бот задаёт уточняющие вопросы.
- Пользователь использует сленг или опечатки — бот использует fallback и предлагает варианты.
Критерий успешного теста: для позитивных сценариев — финальное подтверждение совпадает с введёнными данными, для негативных — бот корректно обрабатывает ошибку.
Роли и чек‑листы
Developer:
- Создать агента и основные интенты.
- Настроить сущности и их синонимы.
- Вставить окончательные ответы с переменными.
- Подготовить экспорт ZIP.
Product Owner:
- Утвердить список обязательных полей и вариаций пиццы.
- Проверить сценарии диалога и UX сообщений.
- Организовать приёмочное тестирование.
QA:
- Провести автоматизированные и ручные тесты по позитивным и негативным сценариям.
- Проверить интеграцию на сайтах с разными браузерами и мобильными.
Ops:
- Настроить доступы к Google‑аккаунту агента.
- Обеспечить резервное копирование агента и логов.
Безопасность и защита персональных данных
- Не храните чувствительные данные в диалогах без шифрования.
- Используйте серверный компонент для обработки платежей: не передавайте данные карт через публичный чат.
- Для хранения email/телефонов и адресов используйте защищённую базу с журналированием доступа.
Примечание по GDPR/локальным законам:
- Убедитесь, что пользователи дают согласие на обработку персональных данных перед их отправкой.
- Обеспечьте возможность удалить все данные пользователя по запросу.
Меры безопасности (hardening)
- Ограничьте доступ к проекту Dialogflow через IAM и используйте двухфакторную аутентификацию.
- Логируйте только метаданные диалогов, а не полные PII, если это возможно.
- Регулярно обновляйте список стоп‑слов и защитных фильтров для предотвращения инъекций.
Когда стоит подключать оператора (fallback)
- Если бот сделал три подряд неуспешных распознавания — переводите на оператора.
- Если пользователь просит изменить оформленный заказ, требующий вмешательства склада или курьера.
Оценка стоимости разработки и TCO (качественно)
- Быстрый PoC в Dialogflow: низкие усилия и стоимость (несколько часов/дней).
- Интеграция с CRM и платёжными шлюзами: средние усилия (несколько недель).
- Поддержка и доработка NLU: постоянные усилия по обучению и обновлению корпуса фраз.
Примеры распространённых ошибок и как их избежать
- Ошибка: бот не понимает варианты ввода размера (e.g. “L”, “большую”). Решение: добавить синонимы и шаблоны для сущностей.
- Ошибка: порядок вопросов путает пользователей. Решение: тестируйте с реальными пользователями и выстраивайте естественный поток.
Решение проблем при интеграции
- Если виджет не загружается — проверьте консоль браузера на ошибки CORS и наличие скрипта в .
- Если сущности не распознаются — добавьте дополнительные тренировочные фразы и пометьте варианты как синонимы.
Модель принятия решения (Mermaid)
flowchart TD
A[Пользователь открывает чат] --> B{Пользователь хочет сделать заказ?}
B -- Да --> C[Собрать имя]
C --> D[Собрать email]
D --> E[Собрать телефон]
E --> F[Собрать адрес]
F --> G[Собрать параметры пиццы]
G --> H[Показать подтверждение]
H --> I{Подтверждает?}
I -- Да --> J[Создать заказ в CRM]
I -- Нет --> K[Изменить параметры]
B -- Нет --> L[Ответ на общий вопрос или fallback]Локальные альтернативы и особенности для России
- Для локальных проектов с требованиями к хранению данных в России рассмотрите self‑hosted решения или настройку серверной части в российской облачной инфраструктуре.
- Локализуйте названия пицц и начинки на русский язык, добавьте синонимы (например, пепперони → пепперони, перцовая колбаса).
Социальные превью (рекомендации)
OG title: Чат‑бот доставки пиццы на Dialogflow OG description: Быстрый гайд по созданию, обучению и интеграции чат‑бота заказа пиццы с тестами и чек‑листами.
Итог и следующие шаги
Чат‑бот на Dialogflow позволяет быстро запустить клиентский сценарий заказа пиццы и интегрировать его в сайт или мессенджер. Начните с MVP: минимальный набор данных и подтверждение заказа. Затем добавляйте оплату, интеграцию с CRM и автоматические уведомления курьерам.
Ключевые рекомендации:
- Пишите короткие тренировочные фразы и добавляйте синонимы.
- Проверяйте поведение при неправильных вводах.
- Защищайте PII и соблюдайте локальное законодательство по данным.
Спасибо за внимание — следуйте чек‑листу и проводите приёмочное тестирование перед релизом.
Похожие материалы
Амортизация кредита с переменной ставкой в Excel
Как сохранить Google Sheets в PDF и опубликовать ссылку
Как стать DevOps-инженером
iPhone медленно гасит экран — как убрать задержку
Отключить автоустановку драйверов в Windows 11