Как настроить автоматический голосовой ответ на виртуальном номере через Google Dialogflow

Вы подключили виртуальный номер, а звонки идут в пустоту — никто не берёт трубку, клиенты сбрасывают через три гудка. Знакомая ситуация? Решение простое: поставить голосового бота, который сам отвечает на звонки, задаёт уточняющие вопросы и переводит вызов на нужного сотрудника — или записывает заявку, если никто не доступен. Под капотом такого бота обычно работает Google Dialogflow. Разберёмся, как это собрать от начала до конца.

Что вообще происходит, когда бот отвечает на звонок

Схема выглядит так: звонок поступает на ваш виртуальный номер → провайдер перенаправляет вызов на шлюз, который запускает 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.

Создайте хотя бы три базовых намерения:

  1. Приветствие и главное меню — бот здоровается и озвучивает варианты действий.
  2. Конкретный запрос — например, запись на услугу, уточнение адреса, получение информации о заказе.
  3. Перевод на оператора — если клиент просит живого человека или бот не может обработать запрос.

Для каждого 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. Схема такая:

  1. Звонок поступает на ваш Twilio-номер.
  2. Twilio отправляет поток аудио на сервер-посредник.
  3. Сервер передаёт аудио в Dialogflow (Speech-to-Text + Intent Detection).
  4. Dialogflow возвращает текст ответа.
  5. Сервер преобразует текст в речь (Text-to-Speech) и отправляет обратно в Twilio.
  6. 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 или уточните у своего провайдера номера наличие готовой интеграции. Через неделю у вас будет работающий прототип, который можно показать коллегам и улучшать.

Virtual SIM — eSIM и виртуальные номера по всему миру