Отправка файла в тг бота

Добрый день!
“Из полученного ответа вы можете узнать относительный путь к файлу, он передается в параметре “file_path”. Соответственно, используя следующее регулярное выражение (“file_path”:”[^“]+), вы можете извлечь нужное значение и подключиться с помощью “https://api.telegram.org/file/bot {Токен API бота}/”, чтобы получить полную ссылку на файл.” How to create bot for ChatGPT | AppMaster

Вопрос: т.е. мы извлекли значение из “file_path”, используя replace string, далее мне необходимо concat strings “https://api.telegram.org/file/bot {Токен API бота}/” с полученным значением из replace string? Дошел до момента, когда сохранил относительную ссылку на фото в бд и теперь надо отправить фото из бд в тг бота, подскажите пожалуйста как дальше действовать?

Уверены, что ссылку получили правильную? В статье речь идет про регулярные выражения, а не использование replace string.
Но если получили, то нужно сохранить сам фото в БД (не ссылку на нее), а для отправки в тг бота использовать блок Telegram: Send Photo, где передается указатель на фото в базе (file id).

Спасибо за ответ! Подскажите пожалуйста, что делаю не так, попробовал создать модель и получить id файла, но все же не могу получить отправить файл в тг бота. Прикрепляю скрин полного бизнес процесса-эхо.

На большом скриншоте не видно ничего, но на маленьком

  1. Делаете HTTP запрос и результат никак не используете (проверяете только сам факт успешности)
  2. Собираете модель файла и указываете только его имя, без содержимого)
  3. Раскрываете модель и берете оттуда ID, которого там нет (там ничего кроме имени)
  4. Переводите ID в стринг, хотя сам блок ожидает file ID и никакие преобразования не нужны.

Добрый день, спасибо за замечания. Response у меня случайно слетел(ранее передавал его), а вот id проглядел. Если я правильно понял, то file id мы передаем из regex блока. Ссылку запрос получает вроде как корректную. Пример: https://api.telegram.org/file/bot7646587812:AAFStzJ8PPkU3LxTIwgsEZw7TKEE6DQ1Xwo/photos/file_14.jpg
Запрос работает, но почему-то все же бот не возвращает фото. Подскажите пожалуйста что делаю не так?

File ID - это идентификатор файла в БД. Соответственно при начальной записи файла в базу (Create File) его указывать не нужно. А вот после создания, файл как раз должен этот ID получить.
И тут нужно проверить, действительно ли файл в базе корректно сохранился. Как минимум, по логам посмотреть какой ID уходит боту, есть ли он реально в базе, можно ли его открыть и просмотреть, например, в браузере.

Добрый день!

Спасибо, с получением файла разобрались. Но файл получаем в плохом качестве, если перейти через браузер по ссылке там тоже самое. (ссылку выше оставлял)

Подскажите пожалуйста, с чем это связано и как это решить?

Видимо изначально достаете неправильную ссылку на фото. Скорее всего извлекаете ее из сообщения, где есть массив ссылок в различных разрешениях. Нужно взять самую большую, а не микропревью

не совсем понимаю как это можно сделать, следовал мануалке и ссылка у меня сохраняется одна, а не массивом и таким же образом как тут How to create bot for ChatGPT | AppMaster
Можете пожалуйста подробнее описать процесс?

В мануале описано получение ссылки на аудиофайл, а не изображение, поэтому процесс немного отличается.
В любом случае все упирается в то, что Телеграм присылает сообщение и это сообщение можно перевести в нормальный вид и рассмотреть подробнее. Собственно в процессе это уже сделано, но потом сразу используется регулярка, чтобы достать идентификатор файла для составления урла на скачивание.
В случае с изображением нужно либо:

  1. Самостоятельно доработать регулярку, чтобы она забирала нужный идентификатор
  2. Рассмотрев ответ, сделать виртуальную модель для него, конвертировать ответ в модель (deserialize json to model) и доставать айдишник уже из модели.
  3. Использовать extract form json и извлекать нужный айдишник через него, прямым указанием на нужные данные.
1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.