• Главная
  • Контакты
Подписаться:
  • Twitter
  • Facebook
  • RSS
  • VK
  • PushAll
logo

logo

  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • За год
    • Положительные
    • Отрицательные
  • Сортировка
    • По дате (возр)
    • По дате (убыв)
    • По рейтингу (возр)
    • По рейтингу (убыв)
    • По комментам (возр)
    • По комментам (убыв)
    • По просмотрам (возр)
    • По просмотрам (убыв)
Главная
  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • Главная
  • Отправка голосовых сообщений ВКонтакте с помощью VK API

Отправка голосовых сообщений ВКонтакте с помощью VK API +18

24.04.2017 15:57
PeterSamokhin 6 5700 Источник
Вконтакте API*, Java*
Всем, кто работал с VK API, давно известно, что доступ к любой работе с аудиозаписями ВКонтакте был закрыт 16 декабря 2016 года, а информация о голосовых сообщениях вообще отсутствует в документации.

imageНа примере моего пустого сообщества-песочницы

Так как же это делается?

Используем скрытые параметры для загрузки документа


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

Как и для обычного документа, получаем адрес сервера для загрузки:

https://api.vk.com/method/docs.getUploadServer?access_token=ACCESS_TOKEN&type=audio_message&v=5.63

Основной момент здесь: параметр type=audio_message.

В ответ мы должны получить следующий JSON:

{
  "response":
             {
               "upload_url":"https://..."
             }
}

Как правильно загрузить файл на сервер ВКонтакте


Если отправлять файл не в формате multipart/form-data, ничего не выйдет.
В формате mp3 загрузить аудио тоже не получится, лучше всего использовать ogg, хотя можно и поэкспериментировать.

Можно использовать код отсюда, чтобы загрузить файл в нужном формате (пример указан на Java, аналоги для себя, я думаю, можно найти в интернете):

Используем экземпляр класса MultipartUtility, в нём ничего менять не нужно:

StringBuilder response_sb = new StringBuilder();
try {
    MultipartUtility multipart = new MultipartUtility("адрес_сервера_для_загрузки", "UTF-8");

    multipart.addFilePart("путь_до_файла_с_голосовым_сообщением");

    List<String> response = multipart.finish();

    for (String line : response) {
       response_sb.append(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

Всё, аудиосообщение загружено. Ответ от сервера в случае удачи будет похожим на это:

{
   "file":"62802565|0|0|805131|многосимволов|ogg|9943|file.ogg|многосимволов|многосимволов||||многосимволов="
}

Сохраняем документ на сервере


Здесь также важно подметить: если вы сохраните документ не у пользователя, то при отправке он будет выглядеть как документ, а не как голосовое сообщение. Либо же вы отправите просто пустое сообщение.

Делаем следующий запрос:

https://api.vk.com/method/docs.save?file=полученный_ранее_file&access_token=ACCESS_TOKEN&v=5.63

Это была последняя стадия. Получаем ответ:

{
    "response": [
                    {
                        "id": 000000000,
                        "owner_id": 000000000
                        ...  и ещё куча параметров, которые нам сейчас не нужны
                    }
                ]
}

Вот и всё. Можно отправлять сообщения обычным способом, в attachments указав ссылку doc(owner_id)_(id), используя owner_id и id, полученные выше.

P.S. Обычный пользователь не может отправить сообщение, содержащее что-то кроме записи голоса. А через API это делается очень легко. Раньше это работало и в комментариях/обсуждениях и так далее, но сейчас, видимо, лавочку прикрыли, как и загрузку (но не отправку!) голосовых сообщений сообществами.



Я не являюсь автором «расследования» по поиску способа отправки аудиосообщений через API, я лишь собрал всю информацию в кучу и постарался красиво оформить. Заметил на просторах интернета много вопросов по этому поводу.

Данная статья написана для тех, кто работал с ВКонтакте API, и описывать неинтересные вещи я не стал, стараясь писать лишь по делу. Если решусь, напишу еще пару статеек о том, как написать бота на Java с использованием LongPoll-сервера VK (для личных страниц) и с использованием Callback API и web-сервлетов (для сообществ).

За предоставленные материалы и помощь благодарность Станиславу Куделко.
Поделиться с друзьями
-->

Комментарии (6)


  1. Ockonal
    25.04.2017 00:51
    #10189486

    Если решусь, напишу еще пару статеек о том, как написать бота на Java с использованием LongPoll-сервера VK (для личных страниц) и с использованием Callback API и web-сервлетов (для сообществ).

    Для каких целей это может быть полезно?


    1. PeterSamokhin
      25.04.2017 00:57
      #10189490
      +1

      Ockonal видел краткие и, возможно, не очень полезные для начинающих разработчиков статьи по этой теме, а также увидел, что людям это интересно. Здесь же недавно тоже была статья про ботов на python и я подумал, что, возможно, подобного рода статьи заинтересуют кого-то, и хотел подробно написать от А до Я, как это сделать, и прикрепить готовый вариант. И всё же: зачем? Думаю, с той же целью, зачем написал и эту статью: донести информацию, о которой в интернете встречал немало вопросов, возможно она кому-то покажется интересной.


      1. jasonOk
        25.04.2017 16:47
        #10190642

        Статься хорошая, но всё это (практически) уже было написано здесь

        Ещё и так же на Java.


        1. PeterSamokhin
          25.04.2017 16:47
          #10190646

          jasonOk это и писал Станислав Куделко, указанный в статье.


  1. XRain
    25.04.2017 11:22
    #10189918

    Это уже пофиксили, и теперь можно от имени сообщества грузить и отправлять аудиосообщение. Если слишком часто от имени пользователя загружать, то можно капчу словить. Да и mp3 наравне с ogg нормально грузится.


  1. sbnur
    25.04.2017 16:25
    #10190570
    -4

    Вот чего бы я никогда не рекомендовал, так это использовать VK API

МЕТКИ

  • Хабы
  • Теги

JAVA

Вконтакте API

java

вконтакте api

СЕРВИСЫ
  • logo

    CloudLogs.ru - Облачное логирование

    • Храните логи вашего сервиса или приложения в облаке. Удобно просматривайте и анализируйте их.
Все публикации автора
  • Создаём динамическую обложку ВКонтакте +39

    • 11.06.2017 15:33

    Отправка голосовых сообщений ВКонтакте с помощью VK API +18

    • 24.04.2017 15:57

Подписка


ЛУЧШЕЕ

  • Сегодня
  • Вчера
  • Позавчера
00:33

«Трубы» зовут — вспоминаем историю скринсейверов +19

07:05

О технологиях домашнего производства пластиковых/металлических деталей +11

07:16

Возвращение блудного программиста +6

07:01

Кустарные вакуумные триоды Клода Пайяра. Часть 6. Приспособления, оснастка +5

06:28

Видеть невидимое: как создаётся независимость Поднебесной в космосе +3

06:00

Ищем бесплатную альтернативу Телеграм и WhatsApp*. Тестим мессенджер в Битрикс24 в издательстве настольных игр +3

05:20

Моделирование резьбы для 3D печати +3

05:01

Бегущий чайник +3

08:06

Тренд на деградацию: как я написал прокси-шакализатор на Next.js, чтобы помочь замедлить интернет +2

08:04

Прихоть или безопасность: как компаниям использовать биометрию в новых реалиях +2

08:00

Ленты коротких видео: как оптимизировать, чтобы вас смотрели больше +2

08:00

Как подключить Kafka UI к кластеру Kafka в DBaaS +2

07:38

Проблемы в работе над стилем в AI-видео – и как их решать +2

07:20

Арестован владелец аккаунта на Polymarket, заработавший $400 тыс. на инсайде по Венесуэле +2

07:14

Приоритет выше закона физики: как мы победили «шумных соседей» в Kafka на 301 млн сообщений +2

06:50

Что нужно знать про 3D-принтеры, если вы провели 30 лет в коме +2

05:48

Реактивные серверы, или как перестать писать JavaScript и начать жить +2

08:15

AI в iOS-разработке: что у меня реально закрепилось в 2026, а что я выкинул +1

08:00

АИС «Налог-3»: что на самом деле видит о вас налоговая? +1

07:35

Допиливаем InferSim для собственных нужд моделирования загрузки промышленных GPU +1

05:38

TSMC: почему 90% передовых чипов в мире делают на одном взрывоопасном острове +124

22:13

Выжать больше из локальных LLM. Ollama медленнее llama.cpp в 3 раза. UD_Q4_K_XL лучше чем Q4_K_M, а вес тот же и т.д +43

11:07

Что на самом деле происходит в комнате с пирамидками и почему после неё не верят даташитам на микросхемы +43

12:04

Тихий перфоратор для соседа: как спроектировать тактовый генератор с распределенным спектром +32

08:01

OpenSearch Dashboards и как веб‑интерфейс упрощает работу с кластером +32

12:00

Возвращение испанской барахолки: аудиосистемы, интернет по проводке, баян и кое-что еще +29

15:22

Вы еще спрашиваете, почему все ненавидят рекрутеров? +25

14:55

Есть ли жизнь после Cisco ISE? Распаковка и тест-драйв российского NAC от Eltex в сетевой лаборатории +25

07:05

Дело 2005г.: Sony BMG против собственных покупателей или как защита от пиратства превратилась в руткит +25

09:01

Редкий китайский суперстрат Vorson TS-K-6 +23

14:27

Вот как сегодня устроено российское производство +22

13:01

АПаем возможности паять: переход на новый паяльник +22

09:49

Я устал каждый раз гуглить одно и то же в nginx — и сделал инструмент, который объясняет конфиги на русском +19

05:35

Обзор релиза Kubernetes 1.36: перестаём пересобирать образы, чистим «зомби» PVC и читаем логи без SSH. Разбор 68 фич +17

14:15

Подводные камни распараллеливания автотестов +16

08:50

Как дообучать локальные LLM в 2026 году: практическое руководство +15

14:05

Intl: мощный браузерный API, который вы, возможно, не используете +14

14:00

AutoML для NLU без ручной настройки: делимся библиотекой OpenAutoNLU +14

11:41

Чит-код для ИТ-карьеры: как рецензирование книг помогает проходить собесы в бигтех и прокачивать личный бренд +14

05:49

Почему я так придираюсь к вёрстке (и вам советую) +14

19:02

Минцифры идёт на зачистку. Малые операторы — под нож… +243

09:01

Реверсим штатный ключ сигнализации JAC-Москвич +73

09:01

Тридцать три тысячи жизней: самое громкое киберпреступление в истории Финляндии +55

08:17

Разработка RC-машинки с BLDC. Подход с нуля +54

12:00

Практическое руководство по Qwen: установка, настройка vLLM и работа через API +45

11:39

Ловим время в формате DCF77 +38

07:02

userver 3.0 — большой релиз фреймворка для IO‑bound‑программ, переход на C++20 +33

13:01

Устанавливаем почтовый сервер Addy.io для одноразовых почтовых адресов +32

15:30

Я много лет пытался повысить продуктивность и качество жизни — эксперименты над собой (Часть 2) +27

08:00

Автоматизируем создание глобального роутера для связи выделенного и облачного серверов +27

07:05

Если трос оборвался. Что произойдет с кабиной лифта в самом плохом случае? +27

11:21

CSS для тех, кто спал и проснулся +25

13:47

Зачем айтишнику писать книги, и почему сейчас — самый лучший момент? +24

16:25

$1.8 миллиарда, два брата и ноль проверок: как The New York Times попалась на AI-хайп +23

07:00

PicoClaw на Arduino Uno Q +23

06:20

IT-монополии наперегонки сращиваются с государством: кто быстрее? +20

11:17

Как ускорить верификацию: советы для инженеров и менеджеров аппаратной разработки +19

09:30

Запускаем Qwen3.6 35B-A3B + opencode локально на RTX 4070 12GB — AI-ассистент для разработки без облака +18

07:06

Рецензия на книгу «Основы разработки приложений для iOS» +17

07:09

Возвращение легенды: почему Fortran снова в топе и где его использовать сегодня +16

ОБСУЖДАЕМОЕ

  • Минцифры идёт на зачистку. Малые операторы — под нож… +243

    • 477   40000

    Парадокс «кадрового голода» 2026: почему вакансий меньше, а работать некому? -8

    • 152   26000

    TSMC: почему 90% передовых чипов в мире делают на одном взрывоопасном острове +124

    • 89   24000

    Роботы заменят людей? +7

    • 89   7800

    Покупатель попросил готовить дом к его приезду и приносить ему еду. Тогда я понял, за что берут 900 тысяч за сотку +9

    • 75   31000

    Зачем ИТ-специалисту семья, или как не потерять себя на работе и в разврате? -15

    • 56   19000

    Реверсим штатный ключ сигнализации JAC-Москвич +73

    • 41   13000

    Вы еще спрашиваете, почему все ненавидят рекрутеров? +25

    • 38   13000

    Зачем айтишнику писать книги, и почему сейчас — самый лучший момент? +24

    • 37   11000

    Что на самом деле происходит в комнате с пирамидками и почему после неё не верят даташитам на микросхемы +43

    • 35   13000

    Если трос оборвался. Что произойдет с кабиной лифта в самом плохом случае? +29

    • 33   8800

    Способы достижения технологической независимости в области ЭВМ -2

    • 29   8100

    Ловим время в формате DCF77 +38

    • 29   11000

    5 стадий поиска работы в IT +14

    • 29   5900

    АПаем возможности паять: переход на новый паяльник +22

    • 28   13000
  • Главная
  • Контакты
© 2026. Все публикации принадлежат авторам.