3

我想使用它的深度链接api 通过电报设置身份验证。

为了进行身份验证,在我的应用程序中,我要求用户单击如下链接:

https://telegram.me/myloginbot?start=somesecretkey

如果我正确理解文档,我应该期望机器人回显somesecretky到我的服务器。

现在,我不清楚文档的这一步:

  1. 配置 webhook 处理器以使用以 /start 开头的传入消息中传递的参数查询 Memcached

如果我理解正确,我需要进行配置myloginbot,以便当用户单击机器人页面上的开始按钮时,机器人会向我的服务器回显一个包含 somesecretkey一些用户信息的 url。但我不知道该怎么做。

这个答案中,建议:

  1. 让机器人通过在数据库或键值存储中查询 unique_code 来检索用户名。

但我不知道如何让机器人查询(可能是远程的)数据库。

所以非常感谢你的提示。

4

1 回答 1

9

我对深度链接的理解是这样的:

  1. 您有一个用户数据库。每个用户都有一个 ID。假设您希望 Telegram 机器人与 user 通信123。但是你不知道他的 Telegram chat_id(机器人需要它来向他发送消息)。你如何“引诱”他与机器人交谈,从而揭示他的chat_id?你在网页上放了一个链接。

  2. 但是链接必须是“个性化的”。您希望每个用户按下稍微不同的链接,以便区分它们。一种方法是在链接中嵌入用户 ID。但是,用户 ID不是您想要公开的东西,因此您生成与每个用户 ID 关联的(临时)密钥,并将该密钥嵌入到链接中。例如,用户123拥有密钥abcde。他的个性化链接将是:

    https://telegram.me/myloginbot?start=abcde
    
  3. 有人单击该链接,并被引导与您的机器人进行对话。同时(或者当他按下开始按钮时),你的机器人会收到一条消息:

    /start abcde
    
  4. 收到该消息后,机器人会看到abcde与 user 相关联123。电报chat_id也可以从消息中提取。现在,机器人知道 user123chat_id,并且可以在之后向他发送消息。

要试验深度链接,您需要一个可以处理/start消息的机器人,并由记住键 ID 关联的“数据存储”支持。当 Telegram 文档说“memcache”时,它们只是指存储 key-ID 关联的东西。对于一个实验,它可能像字典或关联数组一样简单。在现实生活中,它可能是 Memcached(内存缓存软件)或数据库表。

如果您使用 Python,我建议您看一下Telepot,这是 Telegram Bot API 的 Python 框架。它本身不进行深度链接,但它确实可以帮助您接收机器人的消息,以及一般的其他机器人操作。我还有一个示例,演示了如何输出个性化链接、设置 webhook 并/start使用密钥解析传入的命令。

于 2016-01-31T11:25:00.043 回答