May 23, 2023

Как в Salebot скачать файл голосового сообщения в Telegram

CRM-агентство "Нейравенство" - это нетривиальные чат-боты. Иногда требуется работать на низком уровне.

1. В переменных клиента, сделки или в константах проекта создайте переменную save_webhook и присвойте ей значение 1: save_webhook = 1

2. Отправьте в бота, подключенного к Salebot-у, голосовое сообщение

3. Переходите в раздел клиентов и найдите там себя, перейдите в карточку клиента и найдите переменную сделки tg_request. Будет что-то типа:

{"update_id":289341543,
"message":
{"message_id":178,
"from":{"id":210539493,"is_bot":false,
"first_name":"Николай",
"last_name":"Васильев (чат-боты;CRM;Битрикс24)",
"username":"khibinite","language_code":"ru","is_premium":true},
"chat":{"id":210539493,"first_name":"Николай",
"last_name":"Васильев (чат-боты;CRM;Битрикс24)",
"username":"khibinite","type":"private"},
"date":1684764366,
"voice":{"duration":2,"mime_type":"audio\/ogg",
"file_id":"AwACAgIAAxkBAAOyZGt2zmeC3TedHTUf13t9dUwWI5wAAvAyAAKqiFlLl-1lw5QSQjEvBA",
"file_unique_id":"AgAD8DIAAqqIWUs","file_size":44513}}}

4. Чтобы получить имя файла, нужно отправить get-запрос по адресу:

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

где <token> вашего бота (берётся в BotFather или в настройках канала Salebot)

<file_id> - file_id из JSON-набора выше (предпоследний параметр).

5. Получаем следующий результат:

{"ok":true,
"result":{
"file_id":"AwACAgIAAxkBAAOyZGt2zmeC3TedHTUf13t9dUwWI5wAAvAyAAKqiFlLl-1lw5QSQjEvBA",
"file_unique_id":"AgAD8DIAAqqIWUs",
"file_size":44513,
"file_path":"voice/file_5.oga"}}

Имя файла и папка содержится в параметре file_path

6. Теперь файл голосового сообщения можно скачать по адресу

https://api.telegram.org/file/bot<token>/<file_path>