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

Подписка


ЛУЧШЕЕ

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

Paranoia Mode: подборка инструментов для приватной и безопасной работы в Linux +30

08:23

3D-сканер из датчика Kinect Xbox 360 +19

09:01

Электронная нагрузка для разряда аккумуляторов на микроконтроллере PIC16F628A +17

09:45

Рецензия на книгу “Машинное обучение для приложений высокого риска” +15

02:09

LLM работают лучше если им угрожать? Вообще не факт +12

12:02

Взломают или нет? Оцениваем риски вашей информационной системы и моделируем угрозы +11

11:31

Один на один с Rust +11

07:19

5 игровых проектов, которые разрушают ожидания за 15 минут. И это прекрасно +10

11:35

Об (отсутствии) синтаксической поддержки обработки ошибок в Go +9

08:48

Управление уязвимостями: практический гайд по защите инфраструктуры +9

06:25

Разбираемся с новым Ryzen Threadripper Pro 9000 WX — до 5,4 ГГц и 96 ядер на процессор +9

13:21

Читаем под одеялом с фонариком: темная тема и документация в ТМС TestY 2.1 +7

13:01

Апгрейды для Денди: часть 2/2 +7

08:05

Переводим спортивное табло на управление по Bluetooth и контроллер arduino +7

01:18

Три горьких правды о моей профессии +7

10:38

Достижения российских ученых в первой половине 2025 года +6

05:00

Монитор 42 — сервис для мониторинга документов о вырубке и застройке зеленых зон +6

12:35

Новые атаки GOFFEE: разбор Kill Chain и анализ вредоносного ПО +5

12:15

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

11:59

Что такое PPEM и как он освободит DBA от рутинной работы? +5

06:47

5 смертельных проблем первого метро, и как их решили +63

07:00

Как мы встроили 32-битный Internet Explorer в 64-битный Яндекс Браузер для организаций +60

08:52

Stack Overflow убил не искусственный интеллект +55

13:01

Недистрибутивность деления, или Как я считал среднюю величину +54

16:18

Миссия невыполнима 2: как мы снова «похитили» радиатор +43

15:23

Как мы разрабатываем отечественный AI-процессор. Часть 1. Почему GPGPU? +42

12:00

Не украл, а вдохновился! Как геймдизайнеры крадут ассеты, модели, текстуры и уровни из чужих игр +40

08:07

Как измерить сезонность в SEO: пошаговая инструкция +39

09:01

Как сделать ужасный для пользователя интерфейс. Коллекция HTML/CSS лайфхаков +37

14:20

React Native тормозит? Проверь эти 8 узких мест в производительности, прежде чем винить фреймворк [ЧЕК-ЛИСТ] +34

06:52

Симуляция жизни частиц в браузере на WebGPU +30

10:13

Как перестать беспокоиться и начать внедрять интеграционные тесты +29

10:13

Как перестать беспокоиться и начать внедрять интеграционные тесты +29

08:36

Фичи, кейсы и любовь – как палаточный IT-лагерь на 2К+ человек меняет жизни +26

18:20

Потрясающие фотографии Млечного Пути от лучших астрофотографов +25

09:02

ContractFirst- vs CodeFirst-подходы, строим техпроцесс с нуля +23

17:17

Почему в английском ТАК много слов +22

15:31

std::launder: зачем и когда нужен +22

08:20

3D для каждого. Оптимизация. Часть 3. Графические ремастеры +20

16:29

Лавандовый раф или стакан самогона: есть ли место на заводе хипстеру с макбуком +19

10:08

Дискретное преобразование Фурье в живых картинках для девятиклассников +83

15:59

SOSAL: Современный социальный подход к программированию +80

08:33

TI-99/4A — популярный компьютер, который принёс одни убытки +65

10:37

Как выглядит рабочий день продакт-менеджера? Анализ, исследование и созвоны +45

07:27

Совершенный* электродвигатель: протонный наноблок. Разработан: 3,5 млрд. лет назад +37

05:55

Структурированная генерация в LLM +34

09:03

Мира Мурати: главная девушка в разработке ИИ +33

14:22

Настройка location в Angie. Разделение динамических и статических запросов +25

08:05

Релиз MyCompany 6.0 — открытого и бесплатного решения для небольшого бизнеса +22

07:00

Портативные мониторы для удаленки и командировок: что лучше выбрать +21

14:14

Чек-лист по оптимизации, с которым мы вышли в зелёную зону +20

12:00

МТС в Антарктиде: как команда инженеров покоряла шестой континент и обеспечивала связью полярников +20

04:47

Компрессия требований, распад бизнес-логики. Разбираемся, почему архитектура не спасает от эрозии смыслов +16

18:21

Мурмулируем Mac 128K +15

14:35

30 лет Java: от провалившегося гаджета до фундамента разработки ПО +14

09:07

Почему крупный бизнес бежит от ChatGPT на «железки» за $150 +13

07:13

Недельный геймдев: #228 — 1 июня, 2025 +13

13:13

Angular 20: Большое обновление для современного веба +12

08:11

Топ-ошибки айтишников в английском +12

04:55

Илон Маск получил удар от своего детища, а Дуров привлек $1,7 млрд +12

ОБСУЖДАЕМОЕ

  • SOSAL: Современный социальный подход к программированию +80

    • 97   23000

    Stack Overflow убил не искусственный интеллект +55

    • 78   22000

    Топ-ошибки айтишников в английском +12

    • 78   7800

    Совершенный* электродвигатель: протонный наноблок. Разработан: 3,5 млрд. лет назад +37

    • 64   8100

    5 смертельных проблем первого метро, и как их решили +63

    • 55   9000

    Как я запустил безотходное производство и зарабатываю 17 млн в год на маркетплейсах +5

    • 55   35000

    Почему в английском ТАК много слов +22

    • 51   5100

    Недистрибутивность деления, или Как я считал среднюю величину +54

    • 50   3800

    Анатомия Отчуждения — Капитализм как Фабрика Неврозов и Пути Побега +2

    • 47   1700

    Как выбрать очки, чтобы не ослепнуть +19

    • 46   2800

    Как мы встроили 32-битный Internet Explorer в 64-битный Яндекс Браузер для организаций +60

    • 40   6800

    Что мы теряем, доверяя ИИ? +4

    • 34   1300

    Высшее образование в IT: трамплин или преграда? +3

    • 34   4000

    Проверенный стек технологий для быстрого создания Web SaaS в 2025 году +2

    • 33   858

    Лавандовый раф или стакан самогона: есть ли место на заводе хипстеру с макбуком +19

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