RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 609865
Accepted
Flerry
Flerry
Asked:2020-01-01 18:29:16 +0000 UTC2020-01-01 18:29:16 +0000 UTC 2020-01-01 18:29:16 +0000 UTC

如何通过 VK API 发送语音消息?

  • 772

这里什么也没说。在“调查”期间,我下载了各种客户端。凯特手机可以发这样的信息,但有一次我看到他“全裸”。假设一个扩展名为 . 从那一刻起,我开始在这个地方挖掘文档,在我看来,message.send 和 docs 是相关联的。在实践中如何只发送这样的消息?

P.的。我能够挖掘出的东西:

一切都写进了文书工作。在docs.getUploadServer方法接收到的URL中,增加了一个参数,...现在不说什么(不记得了,好像是type)等于audio_msg

更新: 通过流量嗅探,Kate 能够通过传递隐藏参数发现正在下载音频消息。例子:

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

现在是问题的新阶段: 如何以 multipart / form-data 格式传输语音文件

更新:来自 Tostera 的回答(这个问题上也有维权人士):

我试图实现同样的事情,但在 python 中,结果,在尝试了所有方法后,我得出的结论是,绊脚石是出现在“boundary =”标头中的 UUID,并且也在紧接在文件飞走了。加载其他文档时没有这种重复,UUID 传输一次。[发送音频消息时从官方应用程序捕获的数据包的屏幕截图]

顺便说一下,如果它很重要——我从包中得到了文件格式: Kate:.3gp 官方客户端:.ogg/.mp3

java
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    Flerry
    2020-01-02T00:44:24Z2020-01-02T00:44:24Z

    三声欢呼!找到答案!因此,为了将音频消息上传到 VK 服务器,您需要:

    • 我们得到一个上传到服务器的链接。注意参数:

      类型=audio_message

         https://api.vk.com/method/docs.getUploadServer?access_token=your_token&type=audio_message&v=5.38
      
    • 作为响应,我们将收到以下JSON:

         {"response":{"upload_url":"https:\/\/pu.vk.com\/c806630\/upload.php?act=add_doc&mid=151665536&aid=0&gid=0&type=audio_message&hash=a171e6bf246f389425f23a62ba4165d4&rhash=6e0e444008a2186f484af9f02c2ac49f&api=1"}}
      
    • 我们从中获取下载 URL:

      https://pu.vk.com/c806630/upload.php?act=add_doc&mid=151665536&aid=0&gid=0&type=audio_message&hash=a171e6bf246f389425f23a62ba4165d4&rhash=6e0e444008a2186f484af9f02c2ac49f&api=1
      
    • 我们从这里借用代码:

    http://www.codejava.net/java-se/networking/upload-files-by-sending-multipart-request-programmatically

    让我解释一下:这里我们使用一段代码来帮助我们以multipart/form-data格式将文件上传到 VK 服务器,这是 VK 所要求的。可能的文件格式: mp3(使用官方客户端)、3gp(使用Kate)

    • 在MultipartFileUploader类中,根据 VK 的要求添加“文件”字段:

      以file字段组成POST请求,将文件上传至上段获取的upload_url地址。该字段必须包含一个 multipart/form-data 文件。

      multipart.addFilePart("file", uploadFile1);
      
    • 我们满足要求,利润! 我们得到这个JSON作为响应:

      "file":"123456|65421|0|415317|20ee43693a|jpg|81897|Document.jpg|6798bc4fe908cc476cb1c13ce844a985|105d984a920fe7ee9042681bb6d30fbd|m_20ee43693a||m:130x72,s:100x55,x:604x331,y:807x442,o:748x409" 
      
    • 接下来,我们将文档保存在 VK 服务器上:

      https://api.vk.com/method/docs.save?file=ЗДЕСЬ_ПОЛУЧЕННЫЙ_ПАРАМЕТР_ФАЙЛ&access_token=your_token&v=5.60
      

    我们得到这个JSON作为响应:

    "response": [{
    "**id**": 440531838,
    "**owner_id**": 151665536,
    "title": "comm",
    "size": 467756,
    "ext": "ogg",
    "url": "https://vk.com/do...90e2afaa7&api=1",
    "date": 1483295228,
    "type": 5,
    "preview": {
    "audio_msg": {
    "duration": 292,
    "waveform": [0, 0, 0, 0, 0, 0, 1, 5, 1, 6, 0, 2, 5, 20, 10, 8, 7, 12, 24, 16, 5, 4, 8, 8, 4, 6, 2, 6, 5, 1, 9, 10, 4, 2, 7, 3, 16, 0, 6, 1, 11, 2, 7, 3, 3, 4, 3, 5, 2, 8, 2, 7, 13, 5, 8, 9, 5, 3, 2, 13, 20, 6, 7, 8, 13, 2, 13, 1, 5, 14, 1, 2, 16, 12, 10, 5, 21, 31, 15, 7, 16, 19, 19, 9, 13, 1, 4, 10, 10, 4, 2, 11, 5, 5, 2, 8, 2, 8, 1, 3, 0, 1, 5, 4, 2, 5, 3, 7, 5, 0, 3, 3, 2, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    "link_ogg": "https://cs540102....udio/b70049db92.ogg",
    "link_mp3": "https://cs540102....udio/b70049db92.mp3"
    }
    }
    }]
    
    • 使用messages.send方法,我们将上传的文件作为doc发送:

      https://api.vk.com/method/messages.send?user_id=111111&attachment=doc<owner_id>_<media_id>&access_token=your_token&v=5.60
      

    我们从上一段中得到owner_id和media_id数据

    我们在 PM 中安全地收到了一条音频消息。感谢您的关注!

    P/s 顺便说一句,5.60 版也可以(已检查),因此您可以在查询中使用它。


    更新: 这里出现了一个新问题——如何在社区消息中用音频消息回复用户?我们回答...


    对于一组:

    • 首先,我们开放管理员对分组文档的访问权限(“受限”模式)
    • 然后我们进入社区设置并在那里获取社区密钥

    • 接下来,我们发出以下下载请求:

      https://api.vk.com/method/docs.getWallUploadServer?group_id=<gorup_id>&access_token=<group_token>&v=5.60
      
    • 下载我上面显示的文件并以相同的方式保存

    • 我们代表社区向用户发送一条消息,如下所示:

      https://api.vk.com/method/messages.send?user_id=<user_id>&attachment=doc<owner_id>_<audio_id>&access_token=<group_token>&v=5.60
      

      利润!


    对于公共页面:
    似乎一切都会如此简单,公共页面,但事实并非如此。由于没有公共语音消息并且您会收到授权错误,我们将使用一个小技巧..

    • 我们将我们的公众转化为一个组,并确保获得一个可以访问文档和音频的新组密钥
    • 将组移回公共

    • 在菜单社区管理 -> 设置 -> 版块中,勾选“链接”和“录音”

    • 安全地使用我为小组编写的所有内容


    好吧,一些乐趣:

    • 在评论/墙上/讨论中(事实证明),您可以发送音频消息 (请再读一遍)。做起来非常简单。通常要求发送评论/在墙上/在讨论中。我们在附件中附上我们的音频(它真的看起来像一条音频消息,在我测试它的公众中引起了一阵惊讶的嚎叫)
    • 另一件好事是空的音频消息实体。 要发送,而不是doc格式,在附件描述中写音频看起来像这样。 新的有趣功能!
    • 又是一个新的错误。您可以发送空音频(只需删除读取标志并发送“无”。已在 Python 中测试):
      在此处输入图像描述
    • 空评论....魔术!

    在此处输入图像描述
    它以相同的方式完成。发送评论时,不要使用doc格式,而是在附件描述中写入音频。然而,我注意到,在不同的评论中,错误看起来不同。某处内部没有空位,某处有空位...
    P / s 顺便说一句,我检查了它,它也在讨论中滚动。我在 vk api 组中留下了提醒:) 在此处输入图像描述


    更新:
    除了文档或音频附件格式,您几乎可以插入任何内容。至少维基。也许有用的东西。没错,照片没有插入......


    更新:不要 上传大文件!我们收到一个错误:504 网关超时


    更新: 支持回复: 新回复: 在此处输入图像描述
    在此处输入图像描述


    好吧,实际上,表演结束了:
    在此处输入图像描述


    更新: 好吧,既然技术支持正在谈论封闭的 AudioAPI,为什么在它关闭之前不使用它呢?我最近匆忙写了一篇关于它的使用的小文字。如此轻松的访问令人惊讶……最后,顺便说一下,有一些有趣的网站仍在使用 VK。

    http://telegra.ph/Working-with-closed-VK-API-12-31

    • 31
  2. Andrei Karushev
    2020-03-14T20:16:21Z2020-03-14T20:16:21Z

    大家好!API 已更新,某些内容已更改。首先,现在禁止将 mp3 加载到文档中。看起来答案是:

    { error: 'unknown error' }
    

    其次,群发地址缺字:

    https://api.vk.com/method/docs.getWallUploadServer?group_id=<GID>&access_token=<TOKEN>&v=5.62
    

    最后,第三个问题。我做了一切,一切正常,但结果是 - 文件本身,而不是语音消息(我将其加载为.ogg或.opus)。我请求你的帮助!

    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5