• Главная
  • Контакты
Подписаться:
  • 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

Подписка


ЛУЧШЕЕ

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

Дело о длинном тире +36

10:13

Как сломать сервер без обновления Php. НА Пальцах +21

12:17

8 интересных способов использования GPT-6 Astra, про которые знают не все +17

12:10

Лайнер, в который заходили через багажное отделение +16

09:02

Как из двух кубиков выбить число Пи? +15

04:15

Самодельный ВЧ-паяльник в духе Metcal на USB-C: по мотивам статьи с Хабра +13

10:50

Через тундру на Монмартр: как простой механик выиграл гонку Нью-Йорк — Париж 118 лет назад +9

13:01

Номерные радиостанции: криповая «Шведская рапсодия», тирольские напевы и «Радио Судного Дня» +7

09:12

Древние боги под радиоактивными пустошами: самые жуткие тайны вселенной Fallout +7

09:33

Локальная генерация на 16 ГБ: что умеют новые модели +6

08:06

Ускоряем развитие Wine с помощью ИИ +6

07:16

Зачем ИИ-моделям самореплицироваться. Или это нужно не им? +6

13:39

Никогда не задавайте ИИ вопросы на которые не знаете ответа +5

08:03

Кто ты без своего костюма? Гений, миллиардер, аналитик 1С +5

06:45

Как поставить Arch Linux рядом с Android по USB-кабелю: пошагово, с Windows или Linux +5

10:31

Особенности при разработке одноплатника на RK3568 +4

07:31

Расшифровываем цифровую шину мультимедии (A2B) в китайском кроссовере +4

04:05

Они не взламывали Polymarket, а просто подменили его тест скорости +4

14:32

«ИИ не научит вас делать лучшие макеты»: как нейросети изменили работу продуктового дизайнера +3

09:36

За пределами вайбкодинга: фундаментальная база программной инженерии +3

12:59

Методичка по построению VPN, осень 2026 +91

14:05

Как я отремонтировал 32-х летний ноутбук с кафедры университета и для чего он мне нужен в 2026'ом +63

10:00

Я нарисовал алгоритм, который взрослые давно перестали замечать +59

09:01

История письма, часть 15. Суровые и причудливые орфографии скандинавов, или зачем норвежцам две языковые нормы? +41

11:15

Как черенок от метлы стал джойстиком Airbus и почему о нем спорят почти 40 лет +32

08:30

Два инженера против сроков: чему нас научили два месяца агентной разработки +30

11:20

Сокол среди ужей +22

13:01

Caraya E210BS — отличный стратокастер за смешные деньги +19

10:48

Что там с китайским авиапромом +19

10:05

Не DeepSeek единым: 4 китайских ИИ-проекта, о которых стоит знать +19

17:24

Вам не нужны bool и Option +18

20:31

ReactOS: итоги хакфеста во Флориде — новые возможности ядра, поддержка NTFS, SMP и перспективы перехода на NT 6+ +16

10:28

Препарируем мозг Qwen 3.8 27B-1c +12

08:39

Восстановление готических соборов при помощи станков с ЧПУ +12

23:49

Взглянуть на мир глазами кошки +11

19:12

Странная квантовая теорема добила реальность Эйнштейна: история теоремы PBR +11

16:12

Mac сам вычисляет вашу семью: разбор недокументированного графа знаний macOS +9

10:45

История телефонисток AT&T, или Почему технологии не могут сразу вытеснить ручной труд +9

09:12

Вторая жизнь ретроконсолей: как энтузиасты исправляют ошибки производителей спустя десятилетия +8

22:24

Я устал от VLESS-клиентов и написал свой. Rust, EvertyUI, Mihomo и немного экспериментов с ИИ +7

14:11

Знакомый пишет, что на вас штраф. Новый схематоз мошенников — такого цирка я еще не видел +68

09:01

Электровакуумное дело. Биндер +62

16:11

Эмодзи козла — валидный машинный код 8088. Я собрал из эмодзи целые программы +50

06:01

Крутое пике: что происходит на ИТ-рынке труда в 2026 году +46

13:03

Как получить электроэнергию при помощи списанного авиадвигателя +40

13:01

Мультиплатформенный движок для конкурса Nokia 3310 Jam +32

08:05

Что умеет «486SX на максималках»? Запускаем промышленный мини‑ПК из двухтысячных +27

06:20

Чем заменить Claude или Gemini после блокировки +27

08:00

Code-server: поднимаем личную IDE в браузере +25

10:46

Как защитить свой сайт от взлома. ПО Шагам +22

08:34

Брусофония: как устроен звук в игровой приставке «Брус-16» +22

14:53

Большинство ИИ-агентов внутри одинаковые. Тогда в чём разница? +21

04:10

Экран для старой кассы стоил около $300, и я вывел картинку на VGA через Raspberry Pi Pico +17

07:06

От фараонов до телеграфа: вся история шифрования до эпохи компьютеров в одной книге +16

12:15

Слетать к Марсу за горстью пыли: зачем ученым понадобился грунт Фобоса +15

07:55

GitOps «сломал» CI/CD — настраиваем промоушен: от костылей и sed до Kargo (разбор на практике и неочевидные нюансы) +13

21:09

11 наносекунд на слово: до смешного эффективная сверхоптимизация анаграмм +12

10:23

Wi-Fi не добивает до дальней комнаты. Что лучше: усилитель, mesh или второй роутер +12

05:25

Луддиты: история от первых паровых машин до наших дней и AI +12

12:31

Как мы построили систему планирования производства для типографии и проверяли его точной моделью +11

ОБСУЖДАЕМОЕ

  • Крутое пике: что происходит на ИТ-рынке труда в 2026 году +46

    • 177   72000

    Чем заменить Claude или Gemini после блокировки +27

    • 160   87000

    Методичка по построению VPN, осень 2026 +91

    • 98   64000

    Как я отремонтировал 32-х летний ноутбук с кафедры университета и для чего он мне нужен в 2026'ом +63

    • 73   12000

    Знакомый пишет, что на вас штраф. Новый схематоз мошенников — такого цирка я еще не видел +68

    • 61   68000

    Как защитить свой сайт от взлома. ПО Шагам +22

    • 50   68000

    Я нарисовал алгоритм, который взрослые давно перестали замечать +59

    • 46   20000

    Режим полета стал ритуалом. Только защищает он вовсе не самолет +7

    • 41   9400

    Как получить электроэнергию при помощи списанного авиадвигателя +40

    • 34   9400

    Вам не нужны bool и Option +18

    • 24   37000

    Wi-Fi не добивает до дальней комнаты. Что лучше: усилитель, mesh или второй роутер +12

    • 24   9300

    Умные термоголовки: тест Aqara, Sonoff, MOES — и что внутри у Яндекса и Сбера +3

    • 24   5200

    Электровакуумное дело. Биндер +62

    • 22   11000

    Взглянуть на мир глазами кошки +11

    • 21   8500

    Учись 5 лет — получи дубликат диплома и отписку. Ошибки ВУЗов, слабые законы Минобрнауки — расплачиваться вам +1

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