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

Библиотека визуализации графов: как мы решили дилемму Canvas vs HTML в Gravity UI +17

07:01

Ретро-компьютеры Cifer: британский взгляд на терминальную эру +8

05:13

Язык Cangjie от Huawei — скачаем, запустим, попробуем +7

07:06

Как Bitrix считает «попугаев»: что на самом деле измеряет метрика производительности +5

08:09

Применение Portainer в CI/CD процессах +4

07:14

Строка из чисел +4

07:00

Термояд не нужен? Звезды у центра Галактики живут за счет темной материи +4

06:37

Оверинжиниринг: простое сложным языком +4

06:00

Вас наняли спасать проект — вот что пойдёт не так +4

05:22

Как заставить 400-тонный груз ехать точно по траектории: AMR в металлургии +4

05:00

AI Software Engineering: От хаоса Vibe Coding к системной разработке с AI-агентами +4

04:06

Контракт с одним адресом на все EVM-блокчейны: как работает Safe Singleton Factory +4

08:02

Чем дешевые роутеры отличаются от дорогих и что нужно знать перед покупкой +2

07:05

Где работать в IT в 2025 году: DatsTeam +2

06:15

Пайка плат, заказанных на JLCPCB, в домашних условиях +2

08:05

Нейро-дайджест: ключевые события мира AI за 1 неделю августа 2025 +1

07:16

Использование инструментов разработки программного обеспечения для законотворческой деятельности +1

07:10

Действительно ли ИИ умеет программировать? +1

06:48

Авито вместо Яндекс Директа или вместе. Кейс завода-производителя стальной дроби +1

06:45

Wetware: что произошло в мире биокомпьютеров со времен нейронов, играющих в Pong +1

09:01

Головоломка на 1000 BTC +85

13:01

Самый загадочный баг в моей работе +41

04:24

МММ — прошлый век. Сейчас в тренде ППП — Психологи Платят Психологам (критика волчистой психологии) +41

09:00

Как проектируют систему на кристалле: разбираем основные этапы «для новичков» +31

09:00

Как мы учимся решать одну из самых сложных задач в метеорологии — прогнозирование количества осадков по часам +29

09:53

Большой интернет сломан +25

13:01

Топ-5 бесплатных AI-сервисов для генерации 3D-моделей +22

13:19

Эти 4 ошибки делают ваш дом душным, сырым и дорогим в обслуживании. Я проверил +20

08:21

IT Волчата: как кандидаты с фейковым опытом взламывают найм и что с этим делать? +20

11:01

Как развернуть простой Kubernetes-кластер с VictoriaMetrics? Пособие для начинающих +18

16:20

Тест батареек SAYDO +16

15:01

Экономика будущего: управляемая экономика +16

10:15

Как я устал проходить собесы. И сделал проект, чтобы собеседовать их сам +16

08:22

Как воссоздать код DOS-игры: пошаговое дизассемблирование ретро-игр +16

21:33

Экстремальная физика шаровых молний +15

05:49

Все почти готово — осталось лишь чуть-чуть доделать +15

07:41

Кто такой этот ваш CTO?! Мой опыт обучения в Стратоплане +14

06:00

Проверьте себя: совершаете ли вы эти ошибки в английском +14

05:05

Успех секрета: как доставлять секреты в приложения безопасно и без головной боли +14

15:34

Они говорят «неудобно», но продолжают пользоваться +13

13:11

Если вам звонят из службы безопасности банка — будьте осторожны. Это может быть служба безопасности банка +312

04:53

Как я перевёл команду в таск-трекер, а в итоге меня решили уволить +99

05:36

Самые дикие налоговые проблемы эмигрантов (и возвращантов) из РФ в 2025 году +90

17:15

Серьезные проблемы Интернета последних лет, уничтожающее его как кладезь знаний и информации +85

12:05

Ненависть к брокколи: как вкус защищает от бактерий и ядов +68

07:01

Технологии древних: WAP-сайт своими руками +64

09:01

Что новенького есть в CSS в 2025 году? +44

13:01

Inga — лучшая педаль-квакушка для электрогитары времён СССР +35

11:05

Палеошпион юрского периода +31

10:31

Байки из ЦОДа-2: кошки-мышки, роковой галстук и зима в машзале +24

09:12

Как в Авито разработали метрику для поиска распространённых проблем крупных пользователей +23

08:03

Три брата UX’a: PX, AiX и MX +23

07:08

Плазменная обработка почвы — как и зачем? +21

11:31

Экономический эффект DBaaS за пределами сервера: руководство для топ‑менеджеров +20

08:57

Pyra: краткий обзор и первые впечатления +19

19:58

anton@gmail.com, anton+habr@gmail.com, an.ton@gmail.com — почему всё это один и тот же имейл +18

13:01

Как устроен стадион во Владивостоке: некоторые особенности края мира, айтишечки и про перекупов +17

13:30

Cron в Linux: полное руководство для админов + скрытые проблемы +15

11:23

Как спрятать сontrol plane Kubernetes от любопытных глаз +15

08:48

8 полезных промтов, как улучшить текст и удержать внимание читателя +15

ОБСУЖДАЕМОЕ

  • Если вам звонят из службы безопасности банка — будьте осторожны. Это может быть служба безопасности банка +312

    • 431   40000

    Головоломка на 1000 BTC +85

    • 140   21000

    Серьезные проблемы Интернета последних лет, уничтожающее его как кладезь знаний и информации +87

    • 117   12000

    Экономика будущего: управляемая экономика +25

    • 89   1400

    IT Волчата: как кандидаты с фейковым опытом взламывают найм и что с этим делать? +20

    • 68   4400

    Как я перевёл команду в таск-трекер, а в итоге меня решили уволить +99

    • 66   58000

    Самые дикие налоговые проблемы эмигрантов (и возвращантов) из РФ в 2025 году +93

    • 59   26000

    anton@gmail.com, anton+habr@gmail.com, an.ton@gmail.com — почему всё это один и тот же имейл +18

    • 55   5100

    Почему работать эскортницей лучше, чем дизайнером? +11

    • 55   5000

    Отдел работал идеально, но начальника уволили. Почему? 15 загадок про управление +12

    • 47   15000

    МММ — прошлый век. Сейчас в тренде ППП — Психологи Платят Психологам (критика волчистой психологии) +41

    • 42   12000

    Гайд — как стать сверхчеловеком с помощью нейросетей +2

    • 33   17000

    Как воссоздать код DOS-игры: пошаговое дизассемблирование ретро-игр +16

    • 30   1500

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

    • 28   4600

    Большой интернет сломан +25

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