栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

实例:用C#.NET手把手教你做微信公众号开发(5)--普通消息处理之语音

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实例:用C#.NET手把手教你做微信公众号开发(5)--普通消息处理之语音

本篇讲解微信客户端向公众号发送语音的处理方式。

语音消息常见应用:

在线翻译,不同语言之间的翻译;

代替文本输入方式;

语音处理,比如变更声调、插入或剪辑语音片段等;

收集客户的语音教学或说书录音,打造自己的在线语音教学等等。

反正是能对语音做处理的,你都能做,只要你有足够的语音处理知识。

用户发送的图片,经微信服务器处理后,形成如下XML格式发到你的服务器:


  
  
  1357290913
  
  
  
  1234567890123456

上面信息中各个关键字解释如下:

注意,开通语音识别后,用户每次发送语音给公众号时,微信会在推送的语音消息XML数据包中,增加一个Recognition字段,内容是微信服务器对语音翻译后的文字(注:由于客户端缓存,开发者开启或者关闭语音识别功能,对新关注者立刻生效,对已关注用户需要24小时生效。开发者可以重新关注此帐号进行测试)。开启语音识别后的语音XML数据包如下:

微信公众号开通语音识别功能操作截图如下:

 开启后微信服务器发送的xml消息格式如下:

在接收到微信服务器发来的内容之后,首先由指定的接口网页AccessWx.aspx对信息类型进行判别,然后交给指定的消息处理类处理和回应。在本系列文章第1篇介绍的AccessWx.aspx.cs中完善下面这一段,增加本篇给出的语音消息处理环节。  

			else if(MsgType == "voice")
			{
				//对用户发送的语音消息处理,使用QinMing.Weixin.MessageHandlerVoice命名空间下的VoiceMessageDeal类
				VoiceMessageDeal imd = new VoiceMessageDeal();
				Response.Write(imd.DealResult(weixinXML));
			}

在命名空间QinMing.Weixin.MessageHandlerVoice下新建一个类VoiceMessageDeal,用来处理微信服务器发来的语音消息。记得类源码文件要放在App_Code目录下!
QinMingWeixinMessageHandlerVoice.cs文件内容如下:

using System;
using System.Web;
using System.Xml;
using System.Text;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Net;
using QinMing.Config;
using QinMing.Weixin.ReturnContent;
using QinMing.WeixinContainer;
//using QinMing.WeixinSendTemplateMessage;
//using QinMing.Tools;

namespace QinMing.Weixin.MessageHandlerVoice
{
	//图片消息处理
    public class VoiceMessageDeal :System.Web.UI.Page
    {

		public string DealResult(string weixinXML)
        {
            string content = DealVoice(weixinXML);  
            return content;
        }
        
        public string DealVoice(string weixinXML)
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(weixinXML);
            XmlNodeList list = doc.GetElementsByTagName("xml");
            XmlNode xn = list[0];
            string FromUserName = xn.SelectSingleNode("//FromUserName").InnerText;   //关注用户的加密后openid
            string ToUserName = xn.SelectSingleNode("//ToUserName").InnerText;       //公众微信号原始ID
            string MsgType = xn.SelectSingleNode("//MsgType").InnerText;
			string MediaId = xn.SelectSingleNode("//MediaId").InnerText.ToString().Trim();
			string Format = xn.SelectSingleNode("//Format").InnerText.ToString().Trim();
			string Recognition = xn.SelectSingleNode("//Recognition").InnerText.ToString().Trim();
            string strresponse = "";

			//保存用户发来的语音文件,并把发送记录写入数据库用于后期分析
			DownloadFileByMediaId(FromUserName, MediaId, Format); 
			
			//引用QinMing.Weixin.ReturnContent命名空间下的ReturnMsg类来生成固定格式的回应消息
			ReturnMsg rm = new ReturnMsg();
			strresponse = rm.ReturnText(FromUserName, ToUserName, "您刚发的语音翻译后的文字为:" + Recognition);
            //strresponse = rm.ReturnVoice(FromUserName, ToUserName, MediaId);   //向微信用户发送其自己发的语音内容
			
			//告知客服人员有新的留言,或者启动客服消息管理工单流程
			//QinMingWeixinSendTemplateMessage SendTempMsg = new QinMingWeixinSendTemplateMessage();
			//SendTempMsg.SendTempMsgRemind("管理员的openid", "客户发送语音内容:" + Recognition, "");  
			
            return strresponse; 
        }
		
		//使用MediaId加基础access_token从微信服务器下载语音文件
		public void DownloadFileByMediaId(string FromUserName, string MediaId, string Format)
		{
			//获取普通基础access_token
			QinMingWeixinContainer wc = new QinMingWeixinContainer();
			string access_token = wc.GetAccessToken();
			
			string imgurl = "";
			string TmpDir = "E:\web\Voice\Upload\";
			string TmpFileName = FromUserName + DateTime.Now.Ticks.ToString() + "." + Format;
			
			//从微信服务器下载语音文件到本地
            string strUrl = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=" + access_token + "&media_id=" + MediaId; 
			System.Net.WebClient webClient = new System.Net.WebClient();
			webClient.DownloadFile(strUrl, TmpDir + TmpFileName);
			//QinMingTools.WriteLog("用mediaid从微信服务器获取语音", strUrl);
			
			//此处可以添加用户发送语音保存到数据库记录处理,用于对粉丝进行行为分析,以及使用客户发送的语音文件
		}
    }
}

 演示结果如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/904296.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号