前两天在 冰剑 大哥的博客里看到将语音发送到博客的功能,很好奇,和大哥微信聊了半天。
和我想象中的实现方法差不多,网上又看了看文档啥的,然后周末有时间折腾了下。
首先我是基于之前的公众号发送到时光机功能,点击详情了解,主要分几步吧:
1.在原有公众号服务器搭建端新增 voice 参数,并获取到用户发送到公众号的语音 mediaid;
2.通过服务器请求获取公众号 access_token 用于请求资源 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET;
3.然后通过公众号官方获取临时语音 https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIAID;
4.下载临时语音到服务器上,并将原始的 amr 格式转码为 mp3;
5.删除原始 amr 格式文件,并将转码后的 mp3 文件获取到时光机页面并进行输出;
6.同时因为公众号自带有混合发送的功能,需要在混合模式下也调用此方法即可;
基本上所有的流程就是这样,当然同理,发送视频等资源也可以实现这样的功能。
同时还有个样式暂时还没有调整,后期有时间想完善成类似微信语音播放的效果。
在语音文件转码时,冰剑大哥使用的是直接抓取资源存储到又拍云转码回传,我是在服务器本地进行的转码,使用的 ffmpeg,两种方法都可以实现。
有个比较坑的地方,刚开始测试的时候可以通过官方临时资源获取到,后期正式部署使用的时候死活发现下载不了语音资源,最后换了个公众号解决了。
貌似是官方对未认证的公众号不允许下载临时资源,尴尬!还有个办法是可以申请测试公众号,里面开放所有的功能,虽然有配额,但是足够使用。
后期有时间折腾的话,想和冰剑大哥一样转到企业微信,自由度比未认证的公众号高太多了,更适合折腾,哈哈。
又是一个折腾的周末,哈哈,周一好,各位!
- 新增:已增加视频发送功能,原理基本类似,加了一个获取视频封面图即可!