You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Telethon加入群组通话?InputGroupCall参数该如何填写?

Telegram 群组通话自动加入功能实现说明

所需参数获取方式

  • InputGroupCall 的 id 和 access_hash 参数
    这两个参数是目标群组当前活跃通话的唯一标识,不能手动填写固定值,需要从群组的实时信息中拉取:首先获取目标群组的实体,再调用GetFullChannelRequest拉取群组完整信息,其中full_chat.call字段即为当前正在进行的群组通话实例,实例中直接包含对应id和access_hash,如果该字段为空则说明当前群组无活跃通话。
  • join_as 参数
    该参数不能直接填写字符串名称,需要传入你用来加入通话的身份的InputPeer实例,比如用当前登录账号加入就传client.get_me(),用群组内的频道身份加入就传对应频道的实体对象。
  • DataJSON 的 data 参数
    该参数为WebRTC相关的信令配置,仅实现加入通话功能时可以使用最小结构的JSON内容即可,若需要后续实现语音/视频传输,需要补充对应WebRTC会话的实际参数。

修正后可运行代码示例

from telethon.sync import TelegramClient
from telethon import functions, types

# 替换为你自己的API信息和会话名
API_ID = 123456 # 替换为你的api_id
API_HASH = '你的api_hash字符串'
SESSION_NAME = 'tg_call_session'
# 替换为目标群组用户名/数字ID
TARGET_GROUP = '你的群组用户名'

with TelegramClient(SESSION_NAME, API_ID, API_HASH) as client:
    # 获取群组实体
    group = client.get_entity(TARGET_GROUP)
    # 拉取群组完整信息,读取活跃通话
    full_channel = client(functions.channels.GetFullChannelRequest(channel=group))
    active_call = full_channel.full_chat.call
    if not active_call:
        print("当前群组没有正在进行的群组通话")
        exit()
    
    # 构造加入通话请求
    result = client.invoke(functions.phone.JoinGroupCallRequest(
        call=types.InputGroupCall(
            id=active_call.id,
            access_hash=active_call.access_hash
        ),
        # 以当前登录账号身份加入
        join_as=client.get_me(),
        # 最小可用的信令配置,无需修改即可完成加入操作
        params=types.DataJSON(
            data='{"ufrag": "", "pwd": "", "fingerprints": [], "ssrc": 0, "ssrcGroups": []}'
        ),
        muted=True,
        video_stopped=True
    ))
    print("加入通话成功,返回信息:", result)

注意:如果需要实现发送语音、接收语音等通话核心功能,还需要额外处理WebRTC信令交互和音频流的编解码传输,上述代码仅实现单纯加入通话的功能。

内容的提问来源于stack exchange,提问作者Unviray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:54:01