C#微信開發之接納 / 前往文本音訊。本站提示廣大學習愛好者:(C#微信開發之接納 / 前往文本音訊)文章只能為提供參考,不一定能成為您想要的結果。以下是C#微信開發之接納 / 前往文本音訊正文
接納 / 前往文本音訊
①接納/前往文本音訊原理闡明
當普通微信譽戶向大眾賬號發音訊時,微服氣務器將POST音訊的XML數據包到開發者填寫的URL上,著手開發之前先行閱讀微信大眾平台接納普通音訊微信開發文檔,對微信的這種音訊處置機制有一定理解之後再著手開發(微信開發接納普通音訊開發文檔)
留意點:
1、關於重試的音訊排重,引薦運用msgid排重。
2、微服氣務器在五秒內收不到呼應會斷掉銜接,並且重新發起懇求,總共重試三次。假設服務器無法保證在五秒內處置並回復,可以直接回復空串,微服氣務器不會對此作任何處置,並且不會發起重試。概況請見“發送音訊-主動回復音訊”。
3、為了保證更高的平安保證,開發者可以在大眾平台官網的開發者中心處設置音訊加密。開啟加密後,用戶發來的音訊會被加密,大眾號主動回復用戶的音訊也需求加密(但開發者經過客服接口等API調用方式向用戶發送音訊,則不受影響)。關於音訊加解密的詳細闡明,請見“音訊加解密闡明”。
POST到開發者服務器上邊的XML格式為:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>
接納音訊數據包參數闡明:
前往文本音訊的XML格式:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[你好]]></Content> </xml>
前往文本音訊數據包參數闡明:
②接納/前往文本音訊代碼完成
開發者在自己服務器上邊接納微服氣務器POST過去的XML數據包接納代碼如下:
if(IsPostBack) { //*********************************自動應對代碼塊********************************* string postString = string.Empty; using (Stream stream = HttpContext.Current.Request.InputStream) { Byte[] postBytes = new Byte[stream.Length]; stream.Read(postBytes, 0, (Int32)stream.Length); //接納的音訊為GBK格式 postString = Encoding.GetEncoding("GBK").GetString(postBytes); string responseContent = help.ReturnMessage(postString ); //前往的音訊為UTF-8格式 HttpContext.Current.Response.ContentEncoding = Encoding.UTF8; HttpContext.Current.Response.Write(responseContent); } //********************************自動應對代碼塊end******************************* }
留意:接納音訊的時分要將音訊格式轉化為“GBK”格式,否則後邊停止音訊解析的時分沒方法停止無效解析。
ReturnMessage()處置辦法代碼如下:
/// <summary> /// 一致全局前往音訊處置辦法 /// </summary> /// <param name="postStr"></param> /// <returns></returns> public string ReturnMessage(string postStr) { string responseContent = ""; XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(new System.IO.MemoryStream(System.Text.Encoding.GetEncoding("GB2312").GetBytes(postStr))); XmlNode MsgType = xmldoc.SelectSingleNode("/xml/MsgType"); if (MsgType != null) { switch (MsgType.InnerText) { case "event": responseContent = EventHandle(xmldoc);//菜單事情處置 break; case "text": responseContent = TextHandle(xmldoc);//文本音訊處置 break; default: break; } } return responseContent; }
TextHandle(xmldoc)處置辦法代碼如下:
/// <summary> /// 承受文本音訊並回復自定義音訊 /// </summary> /// <param name="xmldoc"></param> /// <returns></returns> public string TextHandle(XmlDocument xmldoc) { string responseContent = ""; XmlNode ToUserName = xmldoc.SelectSingleNode("/xml/ToUserName"); XmlNode FromUserName = xmldoc.SelectSingleNode("/xml/FromUserName"); XmlNode Content = xmldoc.SelectSingleNode("/xml/Content"); if (Content != null) { if (Content.InnerText == "指定回復音訊的自定義文本") { responseContent = string.Format(XMLTemplate.Message_Text, FromUserName.InnerText, ToUserName.InnerText, DateTime.Now.Ticks, "自定義回復音訊內容"); } } return responseContent; }
到這裡完成功用的代碼演示已終了,後邊其他的音訊處置形式也是依據這種方式在做交互,比方:接納/回復文本音訊、圖片音訊、語音音訊、視頻音訊、小視頻音訊、天文地位音訊、鏈接音訊等都可以參照以上代碼停止功用完成。
以上就是本文的全部內容,希望本文的內容對大家的學習或許任務能帶來一定的協助,同時也希望多多支持!