3

我有一个电报机器人 webhook 消息,例如

{  
   "update_id":236420475,
   "message":{  
      "message_id":26577,
      "from":{  
         "id":xxxxxxxx,
         "first_name":"DB",
         "last_name":"Ks",
         "username":"xxxxxxxx"
      },
      "chat":{  
         "id":193044649,
         "first_name":"DB",
         "last_name":"Ks",
         "username":"xxxxxxxx",
         "type":"private"
      },
      "date":1493266832,
      "voice":{  
         "duration":2,
         "mime_type":"audio/ogg",
         "file_id":"AwADBQADBAADQKMIVC978KStO6ZhAg",
         "file_size":7532
      }
   }
} 

电报机器人 API 文档中,指定了一个用于下载文件的file_path 。如何使用file_id获取file_path或任何用于获取file_path的API ?

4

3 回答 3

7

您可以分两步下载文件:

  1. call getFile(),作为响应,您将得到一个响应,正如Alexey Shablowski上面所示,其中 afile_path与响应值一起返回
  2. 使用此文件路径来调用他们的文件下载端点。

前任。比方说,您的机器人身份验证令牌1234:abcdfile_id:' xyz890'

getFile request:

https://api.telegram.org/bot1234:abcd/getFile?file_id=xyz890

回复:

   {
      "ok": true,
      "result": 
        {
           "file_id": "xyz890",
           "file_size": 911,
           "file_path": "photos/file_name.jpg" 
         }
    }

现在获取file_path字符串值并构建完整的可下载链接:

https://api.telegram.org/file/bot1234:abcd/photos/file_name.jpg


API 详细信息

于 2018-05-23T16:51:18.733 回答
2

您应该尝试通过getFile方法执行此操作,该方法返回一个File对象。只需从File获取file_path字段并使用它。

于 2017-04-27T07:33:59.567 回答
2

这很简单:

要求:

https://api.telegram.org/bot<token>/getFile?file_id=<file_id>

回复:

{
  "ok": true,
  "result": {
    "file_id": "---",
    "file_size": 999,
    "file_path": "photos/file_59.jpg" <<--- file_path
  }
}
于 2018-05-04T22:33:44.713 回答