Голосовой звонок напрямую через Telegram-бота, как между обычными пользователями, невозможен: Bot API не поддерживает исходящие аудиозвонки, и это ограничение заложено на уровне самой платформы, а не конкретной библиотеки. Если вы пытаетесь найти метод вида «позвонить пользователю» в документации Telegram Bot API и не находите его — это не ошибка в вашем коде, а осознанное ограничение мессенджера.
Тем не менее задача «звонки телеграм бот» решается обходными путями: уведомления о пропущенных звонках, интеграция с телефонией через SIP, голосовые сообщения, звонки с инициацией пользователем. Ниже разберём, что реально доступно разработчику, какие сценарии работают, а какие приведут к блокировке бота.
Что умеет и чего не умеет Telegram Bot API в части звонков
Официальный Bot API предоставляет методы для отправки текстов, медиа, голосовых сообщений и управления чатами. Метода для установления голосового соединения в реальном времени в нём нет. Голосовые звонки в Telegram работают по протоколу, привязанному к пользовательским аккаунтам и клиентским приложениям, а боты технически являются учётными записями особого типа без поддержки звонков.
Что при этом доступно:
- 📞 Отправка голосовых сообщений через метод
sendVoice— бот может «озвучить» текст или передать аудиофайл. - 🔔 Уведомления о событиях телефонии — внешняя АТС или сервис звонков шлёт вебхук, бот пересылает его пользователю в чат.
- 🎙 Приём голосовых сообщений от пользователей и их обработка (например, распознавание речи).
- 🔗 Кнопки с deep link на звонок — бот выдаёт ссылку вида
tel:или кнопку для перехода в звонок с оператором-человеком.
⚠️ Внимание: сервисы и библиотеки, обещающие «исходящие звонки от имени бота», обычно используют userbot-схемы (управление обычным аккаунтом через MTProto). Это нарушает условия Telegram и может привести к блокировке номера. Для бизнес-задач такой путь небезопасен.
Вариант 1: уведомления о звонках через бота
Самый востребованный сценарий — бот, который сообщает менеджеру или клиенту о входящем звонке, пропущенном вызове или записи разговора. Реализуется это через интеграцию с виртуальной АТС или CRM: телефонная система фиксирует событие и отправляет его на ваш сервер, а тот вызывает метод sendMessage бота.
Типовая схема выглядит так: АТС → вебхук на ваш сервер → обработка данных (номер, время, статус) → сообщение в нужный чат. Вам нужно знать chat_id получателя — его можно получить, когда пользователь первый раз напишет боту или нажмёт /start.
☑️ Чек-лист
Пример простейшего запроса к Bot API для отправки уведомления:
https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=Пропущенный звонок с номера +7...
На практике запрос лучше отправлять методом POST из кода вашего сервера, а не вручную — так проще экранировать спецсимволы и обрабатывать ошибки доставки.
Вариант 2: голосовые сообщения и синтез речи
Если задача — «проговорить» пользователю информацию, используйте метод sendVoice. Бот отправляет аудиофайл в формате OGG/Opus, который Telegram отображает как голосовое сообщение с волновой формой. Это не звонок в реальном времени, но для уведомлений, кодов подтверждения и коротких инструкций формата достаточно.
Аудио можно сгенерировать заранее или синтезировать через сервисы text-to-speech. Обратите внимание: для корректного отображения как voice-заметки файл должен быть в поддерживаемом контейнере; MP3 отправится как обычный аудиофайл через sendAudio и будет выглядеть иначе.
Вариант 3: интеграция с телефонией (SIP и облачные АТС)
Когда нужен именно живой разговор, бот выступает посредником: он не звонит сам, а организует соединение через телефонного оператора. Схема callback выглядит так — пользователь нажимает кнопку «Позвоните мне», бот передаёт номер в API облачной АТС, та инициирует два плеча звонка: сначала оператору, затем клиенту.
Сравнение подходов к реализации «звонков» через бота:
| Подход | Реальный звонок | Сложность | Риск блокировки |
|---|---|---|---|
| Уведомления из АТС | Нет, только события | Низкая | Отсутствует |
| sendVoice (озвучка) | Нет, голосовое сообщение | Низкая | Отсутствует |
| Callback через облачную АТС | Да, через оператора | Средняя | Отсутствует |
| Userbot через MTProto | Да, от аккаунта | Высокая | Высокий |
⚠️ Внимание: автоматический обзвон абонентов без их согласия может нарушать законодательство о персональных данных и рекламе. Перед запуском массовых сценариев убедитесь, что у вас есть правовое основание для звонков, и сверьтесь с требованиями, действующими в вашей юрисдикции.
Пошаговая настройка связки «бот + АТС»
Порядок действий зависит от конкретного провайдера телефонии, но общий каркас одинаков. Сначала создаётся бот через @BotFather — вы получаете токен доступа. Затем в личном кабинете облачной АТС подключается интеграция с Telegram или настраивается отправка вебхуков на ваш сервер.
Далее необходимо сопоставить события телефонии с получателями в Telegram: какой менеджер отвечает за какой номер, в какой групповой чат складывать пропущенные вызовы. Эти правила задаются либо в интерфейсе АТС, либо в коде вашего обработчика. Точные названия разделов и параметров различаются у разных провайдеров — сверяйтесь с документацией именно вашего сервиса.
После настройки обязательно проведите тест: совершите реальный звонок на подключённый номер и проверьте, что уведомление пришло в нужный чат, содержит корректный номер звонящего и время вызова. Если сообщение не дошло — смотрите логи вебхука: чаще всего проблема в недоступности сервера извне, неверном токене или ошибке в chat_id.
Типичные ошибки и их решение
Первая частая проблема — бот «молчит», хотя вебхук от АТС приходит. Проверьте, что пользователь хотя бы раз запускал бота командой /start: Telegram не позволяет боту писать первым. Это ограничение платформы, обойти его легально нельзя.
Вторая ситуация — сообщения приходят с задержкой или теряются при большом потоке звонков. Здесь помогает очередь на отправку: не вызывайте sendMessage синхронно в обработчике вебхука, а складывайте задачи в очередь и отправляйте с контролем частоты. У Bot API есть лимиты на частоту запросов, при превышении API возвращает ошибку 429 с указанием времени ожидания.
Что делать при ошибке 429 Too Many Requests
Ответ содержит параметр retry_after — число секунд, через которое можно повторить запрос. Реализуйте повторную отправку с учётом этого значения и добавьте экспоненциальную задержку между попытками. Не игнорируйте лимиты: систематическое превышение может привести к временным ограничениям для бота.
Третья ошибка — попытка передать в уведомлении запись разговора слишком большого размера. Bot API ограничивает размер отправляемых файлов; для длинных записей лучше отправлять ссылку на файл в защищённом хранилище, а не сам файл. Точные лимиты периодически меняются — актуальные значения смотрите в официальной документации Bot API.
FAQ: частые вопросы о звонках через Телеграм-бота
Может ли Телеграм-бот сам позвонить пользователю голосом?
Нет. Bot API не содержит методов для установления голосового вызова. Доступные альтернативы — голосовые сообщения через sendVoice или организация звонка через внешнюю телефонию (callback-схема).
Как боту узнать о входящем звонке на корпоративный номер?
Через интеграцию с виртуальной АТС или CRM: телефонная система отправляет вебхук о событии вызова на ваш сервер, а сервер пересылает уведомление в Telegram через метод sendMessage.
Почему бот не отправляет уведомление конкретному пользователю?
Скорее всего, пользователь ни разу не запускал бота. Telegram запрещает ботам инициировать диалог — попросите пользователя нажать /start, после чего его chat_id станет доступен для отправки сообщений.
Безопасно ли использовать userbot для звонков от аккаунта?
Нет. Управление обычным аккаунтом через MTProto для автоматических звонков нарушает условия использования Telegram и грозит блокировкой номера. Для бизнес-задач используйте официальный Bot API в связке с легальной телефонией.
Можно ли отправить запись разговора через бота?
Да, через методы sendAudio или sendDocument, если файл укладывается в лимиты Bot API по размеру. Для больших записей надёжнее отправлять ссылку на защищённое хранилище. Учитывайте требования законодательства к хранению и передаче записей разговоров.