Телеграм бот может принимать файлы от пользователя, а также передавать файлы пользователю.
В этой статье разберем как это сделаь в рамках платформы Falcon Space.
Для этого мы используем команду sendDocument вместо sendMessage.
Параметры будут те же, что и у sendmessage + добавляются поля fileUrl, fileName (необязательный параметр).
В fileUrl находится путь к файлу на сайте. Если файла не будет, то бот просто не отправит сообщение.
Пример вызова команды:
select 'sendDocument' [Type],
'Некоторый текст' [Text],
@chatID ChatId,
@messageID ReplyToMessageId,
0 DisableNotification,
'/uploads/1.txt' FileUrl,
'Некий документ' FileName
end
Пользователь может отправить картинки или документы.
Если это картинки, то тип сообщения (messageType) будет Photo. Если просто некий неграфический файл - то тип сообщения Document.
Переданные файлы сохраняются на диск в папки /uploads/telegram/{fileId}.
В процедуру telegram_bot_action передается информация и документах и картинках в бот в параметре @parameters:
в Key передается doc (если документ), либо image0, image1, image2.
В Value передается путь к файлу, сохраненному на сайте в /uploads/telegram подпапке. Вы можете извлечь эти данные о файлах и сохранить где-то в БД для последующей обработки.
ВАЖНО! Если передается множество файлов, то они передаются в бот как ОТДЕЛЬНЫЕ команды с типом Photo или Document.
При передаче картинок в бот передается сразу несколько ее копий в разных разрешениях (в целях упрощения обработки возможно имеет смысл брать только image0).
В appsettings.json есть настройка telegram:fileSizeLimit, которая задает в байтах максимальный размер (по умолчанию 60Мб). Если загружаемый файл превысил этот размер, то он не загружается, а в лог идет запись о факте превышения максимального размера файла.