Интеграция NLP-движка (Dialogflow) в мобильного чат-бота
Мы часто видим проекты, где интеграция Dialogflow начинается без чёткого понимания различий между ES и CX. Клиенты выбирают ES из-за простоты, а через полгода сталкиваются с необходимостью переписывать всю интент-логику — архитектура State Machine в CX несовместима с линейным Flow из ES. Наша задача — помочь выбрать версию и настроить интеграцию так, чтобы бот работал стабильно с первого релиза. Опыт — более 5 лет на рынке мобильной разработки, гарантируем качество на каждом этапе.
Почему выбор версии Dialogflow критичен?
Dialogflow CX и Dialogflow ES — это два принципиально разных продукта. ES использует линейный поток: интенты обрабатываются последовательно, контексты живут ограниченное число реплик. CX построен на State Machine: каждый шаг — это страница (page) с явными переходами. Миграция с ES на CX требует полного перепроектирования агента. CX лучше подходит для сложных многошаговых сценариев (оформление заказа, техподдержка), а ES — для простых ответов на вопросы. Какой вариант выбрать — зависит от ваших сценариев; мы предлагаем аудит перед началом разработки.
Как настроить аутентификацию без риска для безопасности?
Официальная документация Google Cloud предлагает использовать сервисный аккаунт JSON напрямую в приложении. Это неприемлемо — приватный ключ окажется в APK/IPA. Правильный путь: мобильное приложение отправляет текст на ваш бэкенд, бэкенд общается с Dialogflow через библиотеку google-cloud-dialogflow с сервисным аккаунтом. Мы реализуем прокси-сервер на Node.js или Python, который обрабатывает запросы и возвращает ответы. Пример на Node.js:
const { SessionsClient } = require('@google-cloud/dialogflow-cx');
const client = new SessionsClient();
async function detectIntent(projectId, location, agentId, sessionId, text, languageCode) {
const sessionPath = client.projectLocationAgentSessionPath(
projectId, location, agentId, sessionId
);
const request = {
session: sessionPath,
queryInput: {
text: { text },
languageCode,
},
};
const [response] = await client.detectIntent(request);
return response.queryResult;
}
Как решить проблемы мультиязычности и контекста?
Dialogflow поддерживает несколько языков на одном агенте, но тренировочные фразы для каждого языка добавляются отдельно. Если передать languageCode: ru для агента без русских фраз, Dialogflow вернёт фоллбэк-интент с низким confidence — пользователь не поймёт ответ. Мы настраиваем языковые наборы и тестируем их через симулятор.
Управление контекстом — частая причина ошибок. В ES контексты живут N реплик после установки. Если не сбросить контекст после завершения сценария, пользователь получит неожиданный ответ. В CX эта проблема решается явными переходами между страницами. Наши инженеры проектируют потоки так, чтобы каждый сценарий заканчивался сбросом контекста для всех активных диалогов.
Реализация на мобильной стороне
На Android используем OkHttp или Retrofit для вызова прокси-сервера. Session ID генерируем один раз при старте сессии и храним в памяти — не в SharedPreferences, сессии не должны переживать перезапуск приложения.
class DialogflowRepository(private val api: ChatApiService) {
private val sessionId = UUID.randomUUID().toString()
suspend fun sendMessage(text: String, locale: String): ChatResponse {
return api.detectIntent(
DetectIntentRequest(
sessionId = sessionId,
text = text,
languageCode = locale
)
)
}
}
На iOS — аналогично через URLSession или Alamofire. Никакого прямого обращения к Google API из клиента. Для отображения Rich responses (карточки, кнопки, карусели) разбираем fulfillmentMessages и рендерим соответствующие view-компоненты: TextBubbleCell, ButtonsRowCell, CardCell.
Проектирование агента: практические рекомендации
Для продакшн-бота нужно:
- Разделить интенты по доменам (заказы, поддержка, FAQ) и сгруппировать их
- Настроить fallback-интент с несколькими вариантами ответа (не менее 5)
- Добавить Small Talk как отдельный поток — иначе бот грубо игнорирует неформальные реплики
- Webhook fulfillment для динамических ответов (статус заказа, остаток на складе)
- Тренировочные фразы: минимум 10–15 вариантов на интент, иначе confidence будет низким на естественной речи. Мы используем автоматическую генерацию синонимов для увеличения покрытия.
Сравнение Dialogflow ES и CX
| Критерий | Dialogflow ES | Dialogflow CX |
|---|---|---|
| Архитектура | Линейный поток интентов | State Machine со страницами и переходами |
| Сложные сценарии | Трудно поддерживать | Оптимизированы за счёт встроенного State Machine |
| Контекст | Ограничен N реплик, вручную сбрасывать | Явные переходы, контекст управляется автоматически |
| A/B тестирование | Нет | Встроенный A/B тест для маршрутов |
| Версионирование | Ручное (экспорт/импорт) | Встроенные версии и среды |
| Стоимость | Бесплатно до лимитов | Платный, но эффективнее для сложных ботов |
CX лучше ES для многошаговых сценариев как минимум в 2 раза по скорости разработки и стабильности. Экономия бюджета на переписывание — до 50% при правильном выборе с самого начала.
Что входит в нашу работу?
- Аудит текущих сценариев и формулирование требований
- Выбор версии Dialogflow (ES или CX) с обоснованием
- Проектирование агента: интенты, сущности, контексты, flows/pages
- Разработка прокси-сервера (Node.js/Python) с аутентификацией
- Интеграция SDK в мобильное приложение (Android Kotlin, iOS Swift)
- Настройка webhook fulfillment под вашу CRM/базу данных
- Тестирование через Dialogflow Simulator и на реальных устройствах
- Документация по обслуживанию (доступы, скрипты, конфиги)
- Обучение команды работе с агентом
Дополнительные рекомендации по тестированию
Используйте Dialogflow Simulator для проверки каждого интента с разными формулировками. Убедитесь, что confidence превышает 0.7 для всех целевых интентов. Проверьте обработку ошибочных сценариев.Как мы работаем: этапы
- Аналитика — разбираем сценарии, собираем примеры диалогов, определяем крайние случаи.
- Проектирование — рисуем карту диалогов, утверждаем с клиентом.
- Реализация — создаём агента, пишем прокси, интегрируем в клиент.
- Тренировка и тестирование — минимум 50 тестовых диалогов на язык.
- Деплой — публикация в App Store / Google Play, настройка мониторинга.
Ориентиры по срокам
- Интеграция с готовым агентом: от 3 до 4 дней (включая настройку прокси и клиента).
- Разработка агента с нуля для 5–10 сценариев + мобильный клиент: от 1,5 до 2 недель.
- Поддержка после запуска: по запросу, с гарантией отладки найденных ошибок в течение месяца.
Свяжитесь с нами для оценки вашего проекта — мы подберём оптимальное решение под ключ.







