自从微信出来后,语音消息和语音留言变得很是流行,按下一个键说话,比打字要方便多了。GG在V3.6版本增长了对语音消息和语音留言(或称为离线语音消息)的支持。这两个功能的实现已经很完整,只是比较遗憾的一点是:GG所使用的文本框控件,尚未办法像微信的聊天窗口的文本框那样嵌入表示语音消息的控件,因此,我不得不把接收到的语音消息使用一个下拉列表罗列出来,实在很无奈。html
1.语音消息服务器
2.语音留言微信
3.离线消息分类:离线文字消息、离线语音消息。post
4.修复bug:V3.5版本中出现了收不到离线文字消息的bug,已被修复。url
废话很少说,仍是先上图。spa
发送语音消息:3d
说明:点击菜单栏的麦克风按钮,窗口右侧将出现一个记录语音的Panel,按下“请按住说话”按钮便可开始记录语音,松开后,将完成记录,并将语音消息发送给对方。orm
接收语音消息、播放语音消息:htm
说明:点击下拉列表中的条目,便可播放相应的语音消息。blog
虽然提供了源代码,可是,我仍是想将主要的思路列一下,这样,你们理解起源码来,会节省更多的时间。
1. 在项目源码中搜索“V3.6”,既能够看到本次修改所涉及到的主要源码部分。
2. 客户端增长AudioMessagePanel控件,用于记录语音消息。
3. 语音消息的采集是使用OMCS的IMultimediaManager的微信控制器模块MicroMessageController来实现的。
4. 语音消息的播放使用的是MicroMessagePlayer组件。
5. 在MainForm的Initialize方法中,预约MicroMessageController的MicroMessageReceived事件,以接收全部在线语音消息。
6. InformationTypes增长OfflineAudioMessage消息类型,用于表示离线的语音消息。
7. 在MainFormPartial.cs文件的HandleInformation方法中,在处理离线消息时,区分离线的文字消息和离线的语音消息,并分别处理。
8. 在服务端OfflineMessageController中,预约了IMultimediaServer的MicroMessagePostFailed事件,以捕获全部转发失败的语音消息,并将其与离线文字消息同样的方式存储、以及后续处理过程也一致。
下载最新版本,请转到这里。
注意:若是要将GG部署到广域网,则能够在服务端的配置文件中设置监听的端口;而在客户端的配置文件中,则能够指定服务器的IP和Port。
关于GG的最新全貌介绍、以及如何部署、试用账号等问题,我单独写了一篇文章,做为汇总,可参见 可在广域网部署运行的QQ高仿版 -- GG2013概要。
欢迎和我探讨关于GG2013的一切,个人QQ:2027224508,多多交流!
你们有什么问题和建议,能够留言,也能够发送email到我邮箱:ggim2013@163.com。
若是你以为还不错,请粉我,顺便再顶一下啊,呵呵