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

如何在Telegram Bot中实现x-callback跳转至其他应用如VLC?

问题根因

Telegram 平台出于安全限制,对可识别的链接协议做了白名单限制:

  • 仅支持 http/https/tg 等少数官方认可的协议,自定义协议(比如你用到的 vlc-x-callback://)会被直接过滤,无法被识别为可点击链接
  • InlineKeyboardButton 的 url 参数会在服务端做协议校验,非白名单协议会直接返回 BadRequest: Inline keyboard button url is invalid 报错

可行解决方案

方案1:使用HTTPS中间跳转页(最稳妥,全平台兼容)

你只需要开发一个极简的静态HTML页面,部署到任意支持HTTPS的静态资源服务器上,页面加载时自动重定向到你的x-callback链接即可。
示例中间页代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>跳转到VLC</title>
</head>
<body>
    <p>正在跳转到VLC播放器,若未自动跳转请点击下方按钮</p>
    <button id="jumpBtn">手动跳转至VLC</button>
    <script>
        const vlcCallback = 'vlc-x-callback://x-callback-url/stream?url=' + decodeURIComponent(new URLSearchParams(window.location.search).get('video_url'))
        // 自动跳转
        window.location.href = vlcCallback
        // 绑定手动跳转按钮
        document.getElementById('jumpBtn').addEventListener('click', () => {
            window.location.href = vlcCallback
        })
    </script>
</body>
</html>

使用时把你要跳转的视频地址编码后作为参数传给中间页即可,比如你的示例视频对应的中间页地址为:
https://你的域名/vlc-jump.html?video_url=https%3A%2F%2Fsample-videos.com%2Fvideo123%2Fmp4%2F720%2Fbig_buck_bunny_720p_1mb.mp4
把这个HTTPS地址放到Telegram的富文本链接或者InlineKeyboardButton的url参数里即可正常跳转。

方案2:引导用户手动操作

如果不想额外部署页面,可以直接在消息中提示用户:复制x-callback链接到系统浏览器(Safari/Chrome等)打开,即可正常唤起VLC。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:24:02