Skip to main content

Telegram voice and MTProto

The Telegram Bot API has no voice calls at all. It can send a voice message or a video note — recordings — but there is no method to place a call, answer one, or join a group voice chat, and no token scope adds one.

Calls live on MTProto, the protocol the regular Telegram clients speak, so taking part means signing in as a user account. Three consequences shape any integration built on it:

  • One 1:1 call per account at a time. Telegram itself refuses a second concurrent call, so concurrency needs several accounts or a queue.
  • No pre-pickup event. Nothing announces "ringing" and then "answered": the playback call returning normally is the answer signal, while declined, busy, rang-out and cancelled each surface as their own failure.
  • Group voice chats are a different shape. The agent joins as a named, visible participant and hears speakers individually. While it sits in one, the account busy-declines personal calls.

With DialogBrain

You do not implement any of the above. Connect a Telegram account once, then a call is one request:

curl -X POST https://api.dialogbrain.com/v1/calls \
-H "X-API-Key: $DIALOGBRAIN_KEY" \
-H "Idempotency-Key: call-9f21c7" \
-d '{"agent_id": 118, "target": "telegram:123456789"}'

target decides where the agent goes: telegram:<user id> for a person, @group or a t.me link for a group voice chat, new for a fresh conference. See Calls for the full reference.

The long version

The full write-up — including the three audio-bridging rules we learned from production incidents, and the feed-rate arithmetic that makes a voice tremble — lives on the site:

Telegram voice via MTProto: what the Bot API cannot do