【问题标题】:Is there a way to x-callback from Telegram to another app?有没有办法从 Telegram 回调到另一个应用程序?
【发布时间】:2021-11-18 16:31:29
【问题描述】:

我正在创建一个 Telegram 机器人,需要 x-callback 到另一个应用程序。

这是我的 x-callback,它打开 VLC 并流式传输视频。当我在 Siri Shortcuts 或 Safari 中使用它时效果很好。但我需要它来处理 Telegram 聊天对话。

vlc-x-callback://x-callback-url/stream?url=https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4

当我将其作为原始文本发送时,它显然不会将其识别为有效的 url,并且什么也不做。 我尝试将其格式化为MarkdownMarkdownV2HTML 样式,但均无效。 我也试过InlineKeyboardButton 给它texturl 但它会抛出一个BadRequest 错误

telegram.error.BadRequest: Inline keyboard button url is invalid

从 Telegram 到另一个应用的 x-callback 有什么解决方法吗?

我的问题与实现无关,但这是我使用 python-telegram-bot 的代码

from telegram import Update, ParseMode, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import CommandHandler, CallbackContext, Updater


my_x_callback = 'vlc-x-callback://x-callback-url/stream?url=https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4'

def test(update: Update, context: CallbackContext):
    update.message.reply_text(my_x_callback)
    update.message.reply_text(f'[Play it on VLC]({my_x_callback})', parse_mode=ParseMode.MARKDOWN)
    update.message.reply_text(f'[Play it on VLC]({my_x_callback})', parse_mode=ParseMode.MARKDOWN_V2)
    update.message.reply_text(f'<a href="{my_x_callback}">Play it on VLC</a>', parse_mode=ParseMode.HTML)
    button = InlineKeyboardButton('Play it on VLC', url=my_x_callback)
    update.message.reply_text(
        'Testing InlineKeyboard',
        reply_markup=InlineKeyboardMarkup([[button]])
    )

if __name__ == '__main__':
    updater = Updater('TOKEN')
    updater.dispatcher.add_handler(CommandHandler('test', test))
    updater.start_polling()
    updater.idle()

【问题讨论】:

  • 我认为你需要在包含的 url 中对 url 进行编码。
  • 您应该撤销您的机器人令牌。否则任何人都可以使用它。
  • @CallMeStag 哎呀!已撤销和编辑。谢谢

标签: ios telegram telegram-bot x-callback-url


【解决方案1】:

我曾经有一个类似的用例,我想使用mailto: 链接。我的解决方法是创建一个指向 mailto: 链接的网站 URL。 IE。流程是:

  1. 根据用户请求生成mailto链接
  2. 生成指向链接的https:// url - 在我的例子中,这是通过自托管的YOURLS 实例完成的
  3. 将生成的 URL 用于内联按钮或文本链接。

【讨论】:

  • 当您说自托管您的实例时,您的意思是在我自己的服务器上部署它?我现在没有服务器。我认为您的项目对于我的要求来说太大了
  • 是的,我就是这个意思。但是您没有必须自行托管任何东西。您只需要一种以编程方式生成指向 vlc-x-callback:// 回调的 https URL 的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 2021-06-07
相关资源
最近更新 更多