Вы подключили виртуальный номер, а звонки идут в пустоту — никто не берёт трубку, клиенты сбрасывают через три гудка. Знакомая ситуация? Решение простое: поставить голосового бота, который сам отвечает на звонки, задаёт уточняющие вопросы и переводит вызов на нужного сотрудника — или записывает заявку, если никто не доступен. Под капотом такого бота обычно работает Google Dialogflow. Разберёмся, как это собрать от начала до конца.
- Что вообще происходит, когда бот отвечает на звонок
- Что понадобится перед началом
- Шаг 1. Создаём агента Dialogflow
- Шаг 2. Настраиваем основные намерения (Intents)
- Шаг 3. Добавляем сущности для извлечения данных
- Шаг 4. Настраиваем ответы бота
- Шаг 5. Подключаем Fulfillment (вебхук) для сложной логики
- Шаг 6. Соединяем Dialogflow с телефонией
- Шаг 7. Тестируем и дорабатываем
- Какой вариант интеграции выбрать
- Что делать в зависимости от вашей ситуации
- Частые ошибки, которые всё ломают
- Практические рекомендации
- Итог
Что вообще происходит, когда бот отвечает на звонок
Схема выглядит так: звонок поступает на ваш виртуальный номер → провайдер перенаправляет вызов на шлюз, который запускает Dialogflow → бот слушает собеседника, распознаёт речь и отвечает → при необходимости переводит вызов на реального оператора или в голосовое меню.
Dialogflow здесь — это «мозг» разговора. Он понимает, что сказал человек, решает, что ответить дальше, и управляет логикой диалога. А голосовой шлюз (например, Twilio, Plivo или решение от вашего провайдера виртуальных номеров) — это «уши и рот», которые преобразуют речь в текст и обратно.
Что понадобится перед началом
Не нужно быть программистом, но базовое понимание того, как работают API, не повредит. Вот минимальный набор инструментов:
- Аккаунт Google Cloud — Dialogflow живёт внутри него. Новым пользователям дают кредиты (около $300), которых хватит на тестирование.
- Провайдер виртуального номера, который поддерживает интеграцию с Dialogflow или может переводить вызовы на webhook. Если ваш текущий провайдер этого не умеет — придётся подключить промежуточный шлюз.
- Twilio-аккаунт (или аналогичный) — если виртуальный номер не работает напрямую с Dialogflow, Twilio выступит мостом между телефонией и вашим агентом.
- Базовые знания о формате JSON — не для написания кода, а для понимания, что приходит и уходит в вебхуках.
Шаг 1. Создаём агента Dialogflow
Зайдите в консоль Dialogflow, выберите проект в Google Cloud (или создайте новый) и нажмите «Create Agent». Агент — это и есть ваш бот. Дайте ему понятное имя: например, «Офис-секретарь» или «Приёмная».
При создании выберите язык по умолчанию. Если звонки идут на русском — ставьте русский. Часовой пояс тоже укажите свой, это влияет на работу встроенных функций времени.
После создания вы попадёте в интерфейс агента. Слева — меню с Intent’ами (намерениями), в центре — поле для их настройки. Именно Intent’ы определяют, что бот понимает и как реагирует.
Шаг 2. Настраиваем основные намерения (Intents)
Intent — это цель, которую преследует звонящий. Например: «хочу записаться на приём», «хочу узнать график работы», «хочу поговорить с менеджером». Для каждого — отдельный Intent.
Создайте хотя бы три базовых намерения:
- Приветствие и главное меню — бот здоровается и озвучивает варианты действий.
- Конкретный запрос — например, запись на услугу, уточнение адреса, получение информации о заказе.
- Перевод на оператора — если клиент просит живого человека или бот не может обработать запрос.
Для каждого Intent задайте фразы-примеры (Training Phrases) — что может сказать человек. Чем больше вариантов, тем лучше. Не дословно, а с разными формулировками:
- «Запишите меня к врачу»
- «Хочу на приём в четверг»
- «Можно записаться на этой неделе?»
- «Мне нужно на осмотр»
Dialogflow на основе этих примеров научится понимать и другие похожие фразы. Десять-пятнадцать вариантов на намерение — хороший минимум.
Шаг 3. Добавляем сущности для извлечения данных
Сущности (Entities) позволяют вытаскивать из речи конкретные данные: даты, имена, номера заказов. Без них бот поймёт общий смысл, но не сможет работать с деталями.
Например, для записи на приём нужна дата и время. В Dialogflow уже есть системная сущность sys.date — она распознаёт «завтра», «5 марта», «следующий понедельник». Для времени используйте sys.time. Если нужно что-то специфическое — например, тип услуги — создайте свою сущность и перечислите допустимые значения.
В ответе бот подставляет распознанные значения: «Отлично, я записываю вас на пятницу, 15:00. Верно?»
Шаг 4. Настраиваем ответы бота
В каждом Intent есть блок Responses — то, что бот говорит в ответ. Не делайте ответы слишком длинными: человек по телефону не может перечитать текст, он слушает. Коротко, чётко, по делу.
Хороший пример: «Запись на какую услугу вас интересует? Стоматология, анализы или консультация терапевта?»
Плохой пример: «Добрый день! Вы позвонили в медицинский центр «Здоровье», мы работаем с 8 до 20, у нас широкий спектр услуг, включая стоматологию, лабораторную диагностику и консультации специалистов. Пожалуйста, выберите интересующее вас направление из предложенных вариантов.» Человек теряется на четвёртой секунде.
Используйте переменные: если бот распознал имя или дату, вставляйте их в ответ. Это делает диалог живым.
Шаг 5. Подключаем Fulfillment (вебхук) для сложной логики
Статических ответов достаточно для простых сценариев. Но если нужно проверить свободные слоты в расписании, сохранить заявку в CRM или отправить уведомление — нужен вебхук.
Включите Fulfillment для соответствующего Intent и укажите URL вашего сервера. Dialogflow отправит туда JSON-запрос с распознанными данными, а ваш сервер вернёт JSON-ответ с текстом, который бот произнесёт.
Минимальный пример обработки на Python с Flask:
from flask import Flask, request, jsonify
import json
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def webhook():
req = request.get_json(silent=True, force=True)
intent = req['queryResult']['intent']['displayName']
params = req['queryResult']['parameters']
if intent == 'Запись на приём':
date = params.get('date')
time = params.get('time')
service = params.get('service')
# здесь логика проверки слотов и записи
response_text = f'Вы записаны на {service} на {date.strftime("%d %m")} в {time.strftime("%H:%M")}. Ожидайте!'
else:
response_text = 'К сожалению, я не смог обработать запрос. Переключаю на оператора.'
return jsonify({'fulfillmentText': response_text})
if __name__ == '__main__':
app.run(port=5000)
Этот код нужно разместить на любом хостинге с публичным HTTPS-адресом. Для теста можно использовать ngrok — он пробросит локальный сервер наружу.
Шаг 6. Соединяем Dialogflow с телефонией
У Dialogflow нет встроенной телефонной книжки — нужен посредник. Самый распространённый вариант — Twilio. Схема такая:
- Звонок поступает на ваш Twilio-номер.
- Twilio отправляет поток аудио на сервер-посредник.
- Сервер передаёт аудио в Dialogflow (Speech-to-Text + Intent Detection).
- Dialogflow возвращает текст ответа.
- Сервер преобразует текст в речь (Text-to-Speech) и отправляет обратно в Twilio.
- Twilio произносит ответ звонящему.
Для этого можно использовать готовые решения — например, библиотеку twilio-dialogflow на Node.js или интеграцию через Twilio Studio + Functions. Studio позволяет собрать логику в визуальном редакторе без написания кода, а Functions — добавить кастомную обработку.
Если вы работаете с российским провайдером виртуальных номеров, уточните у них наличие готовой интеграции с Dialogflow. Некоторые провайдеры предлагают коробочное решение — вам останется только настроить агента в Dialogflow и привязать номер.
Шаг 7. Тестируем и дорабатываем
Не надейтесь на то, что всё заработает с первого раза. Пройдите полный сценарий сами и попросите коллег. Обратите внимание на:
- Как бот реагирует на паузы — если человек замолчал, бот должен переспросить, а не молчать вечно.
- Как обрабатывает неразборчивую речь — добавьте Intent для неудачного распознавания (Default Fallback) с вежливым переспросом.
- Как ведёт себя при отказе — если клиент говорит «нет», бот не должен упорствовать и повторять одно и то же.
- Скорость ответа — если бот думает больше двух секунд, звонящий начнёт подумать, что связь оборвалась.
В консоли Dialogflow есть раздел History — там видны все диалоги. Анализируйте их регулярно: ищите места, где бот спотыкается, и добавляйте новые варианты фраз в обучение.
Какой вариант интеграции выбрать
Пути подключения Dialogflow к телефонии отличаются по сложности и гибкости. Вот сравнение основных подходов:
| Подход | Сложность настройки | Гибкость | Стоимость | Для кого подходит |
|---|---|---|---|---|
| Готовая интеграция провайдера номера | Минимальная | Низкая | Включена в тариф или небольшая доплата | Малый бизнес, нет программиста |
| Twilio Studio + Functions | Средняя | Высокая | Pay-as-you-go, примерно $0.005–0.02 за минуту обработки | Средний бизнес, есть технический специалист |
| Собственный сервер-посредник | Высокая | Максимальная | Стоимость хостинга + услуги разработчика | Крупный бизнес, сложные сценарии, интеграция с внутренними системами |
| Платформы-конструкторы голосовых ботов (например, Voiceflow, Voximplant) | Низкая-средняя | Средняя | Подписка от $50/мес | Быстрый запуск без глубокого погружения в Dialogflow |
Что делать в зависимости от вашей ситуации
У вас интернет-магазин, звонят с вопросами о заказах. Настройте простого бота, который принимает номер заказа и озвучивает статус. Интеграцию с CRM можно сделать через вебхук. Если заказ не найден — перевод на оператора.
У вас клиника, нужна запись к врачам. Здесь важна интеграция с расписанием. Бот должен проверять свободные слоты в реальном времени и подтверждать запись. Без вебхука не обойтись.
У вас маленький офис, просто чтобы не пропускать звонки. Достаточно простого голосового меню: «Добрый день! Если по вопросам оплаты — нажмите 1, по доставке — нажмите 2, для разговора с менеджером — остайтесь на линии». Это можно настроить даже без Dialogflow, средствами провайдера номера.
У вас call-центр, хотите разгрузить операторов. Полноценный бот с обработкой типовых вопросов, переводом на оператора при сложных запросах и логированием всех диалогов для аналитики.
Частые ошибки, которые всё ломают
- Слишком много вариантов в главном меню. Человек по телефону не может запомнить семь пунктов. Оптимально — три-четыре.
- Бот не даёт выйти из сценария. Всегда должна быть возможность сказать «оператор» и дозвониться до человека.
- Игнорируют качество аудио. Если звонок идёт по плохому каналу, распознавание речи сильно страдает. Используйте шумоподавление на стороне шлюза и тестируйте с разных телефонов.
- Не настраивают fallback. Когда бот не понимает — он должен реагировать адекватно, а не молчать или повторять одно и то же по пятому разу.
- Забывают про время ожидания. Если бот думает дольше полутора секунд — нужен промежуточный ответ вроде «Одну секунду, уточняю».
- Тестируют только в консоли Dialogflow. Консоль работает с текстом, а в реальном звонке — речь с акцентом, шумом, помехами. Тестируйте именно по телефону.
Практические рекомендации
- Начните с одного сценария. Не пытайтесь сразу покрыть все возможные запросы. Сделайте один хорошо работающий сценарий, запустите в работу, соберите обратную связь, потом добавляйте следующий.
- Логируйте все диалоги. Без логов вы не узнаете, почему клиенты сбрасывают на третьей секунде. Записывайте хотя бы аудио и текст распознавания.
- Давайте боту имя. «Алло, это помощник компании «Ромашка»» звучит лучше, чем безликое «Здравствуйте». Это мелочь, но она снижает раздражение от общения с машиной.
- Предупреждайте, что это бот. Люди не любят, когда их обманывают. Фраза «Я голосовой помощник, помогу вам быстро решить вопрос» работает лучше, чем имитация живого человека.
- Регулярно обновляйте обучающие фразы. Раз в месяц просматривайте диалоги и добавляйте новые варианты в Intent’ы. Язык живых людей меняется, и бот должен за ним успевать.
Итог
Настройка автоматического голосового ответа через Dialogflow — это не магия и не пятиминутная задача. Нужно создать агента, прописать намерения с достаточным числом обучающих фраз, настроить сущности для извлечения данных, написать или настроить вебхук для сложной логики и подключить телефонный шлюз. Но если подойти к этому по шагам — начать с простого сценария, протестировать на реальных звонках и постепенно расширять — вы получите работающего бота, который реально разгрузит вашу линию и улучшит опыт звонящих.
Начните сегодня: создайте агента в Dialogflow, добавьте два-три намерения, пропишите по десять вариантов фраз для каждого. Завтра подключите Twilio или уточните у своего провайдера номера наличие готовой интеграции. Через неделю у вас будет работающий прототип, который можно показать коллегам и улучшать.
