真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

asp.net微信開發(fā)消息應(yīng)答方法的示例

這篇文章將為大家詳細(xì)講解有關(guān)asp.net微信開發(fā)消息應(yīng)答方法的示例,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)的客戶來自各行各業(yè),為了共同目標(biāo),我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領(lǐng)域包括網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺開發(fā)。

當(dāng)普通微信用戶向公眾賬號發(fā)消息時(shí),微信服務(wù)器將POST消息的XML數(shù)據(jù)包到開發(fā)者填寫的URL上。

請注意:

1、關(guān)于重試的消息排重,推薦使用msgid排重。
2、微信服務(wù)器在五秒內(nèi)收不到響應(yīng)會斷掉連接,并且重新發(fā)起請求,總共重試三次。假如服務(wù)器無法保證在五秒內(nèi)處理并回復(fù),可以直接回復(fù)空串,微信服務(wù)器不會對此作任何處理,并且不會發(fā)起重試。詳情請見“發(fā)送消息-被動(dòng)回復(fù)消息”。
3、為了保證更高的安全保障,開發(fā)者可以在公眾平臺官網(wǎng)的開發(fā)者中心處設(shè)置消息加密。開啟加密后,用戶發(fā)來的消息會被加密,公眾號被動(dòng)回復(fù)用戶的消息也需要加密(但開發(fā)者通過客服接口等API調(diào)用形式向用戶發(fā)送消息,則不受影響)。關(guān)于消息加解密的詳細(xì)說明,請見“消息加解密說明”。

各消息類型的推送XML數(shù)據(jù)包結(jié)構(gòu)如下:

文本消息

 
  
 1348831860
 
 
 1234567890123456
 
參數(shù)描述
ToUserName開發(fā)者微信號
FromUserName發(fā)送方帳號(一個(gè)OpenID)
CreateTime消息創(chuàng)建時(shí)間 (整型)
MsgTypetext
Content文本消息內(nèi)容
MsgId消息id,64位整型

圖片消息

 
 
 
 1348831860
 
 
 
 1234567890123456
 
參數(shù)描述
ToUserName開發(fā)者微信號
FromUserName發(fā)送方帳號(一個(gè)OpenID)
CreateTime消息創(chuàng)建時(shí)間 (整型)
MsgTypeimage
PicUrl圖片鏈接
MediaId圖片消息媒體id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。
MsgId消息id,64位整型

語音消息




1357290913



1234567890123456
參數(shù)描述
ToUserName開發(fā)者微信號
FromUserName發(fā)送方帳號(一個(gè)OpenID)
CreateTime消息創(chuàng)建時(shí)間 (整型)
MsgType語音為voice
MediaId語音消息媒體id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。
Format語音格式,如amr,speex等
MsgID消息id,64位整型

請注意,開通語音識別后,用戶每次發(fā)送語音給公眾號時(shí),微信會在推送的語音消息XML數(shù)據(jù)包中,增加一個(gè)Recongnition字段 (注:由于客戶端緩存,開發(fā)者開啟或者關(guān)閉語音識別功能,對新關(guān)注者立刻生效,對已關(guān)注用戶需要24小時(shí)生效。開發(fā)者可以重新關(guān)注此帳號進(jìn)行測試)。開啟 語音識別后的語音XML數(shù)據(jù)包如下:




1357290913




1234567890123456

多出的字段中,F(xiàn)ormat為語音格式,一般為amr,Recognition為語音識別結(jié)果,使用UTF8編碼。

視頻消息




1357290913



1234567890123456
參數(shù)描述
ToUserName開發(fā)者微信號
FromUserName發(fā)送方帳號(一個(gè)OpenID)
CreateTime消息創(chuàng)建時(shí)間 (整型)
MsgType視頻為video
MediaId視頻消息媒體id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。
ThumbMediaId視頻消息縮略圖的媒體id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。
MsgId消息id,64位整型

小視頻消息




1357290913



1234567890123456
參數(shù)描述
ToUserName開發(fā)者微信號
FromUserName發(fā)送方帳號(一個(gè)OpenID)
CreateTime消息創(chuàng)建時(shí)間 (整型)
MsgType小視頻為shortvideo
MediaId視頻消息媒體id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。
ThumbMediaId視頻消息縮略圖的媒體id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。
MsgId消息id,64位整型

地理位置消息




1351776360

23.134521
113.358803
20

1234567890123456
參數(shù)描述
ToUserName開發(fā)者微信號
FromUserName發(fā)送方帳號(一個(gè)OpenID)
CreateTime消息創(chuàng)建時(shí)間 (整型)
MsgTypelocation
Location_X地理位置維度
Location_Y地理位置經(jīng)度
Scale地圖縮放大小
Label地理位置信息
MsgId消息id,64位整型

鏈接消息




1351776360

<![CDATA[公眾平臺官網(wǎng)鏈接]]>


1234567890123456
參數(shù)描述
ToUserName接收方微信號
FromUserName發(fā)送方微信號,若為普通用戶,則是一個(gè)OpenID
CreateTime消息創(chuàng)建時(shí)間
MsgType消息類型,link
Title消息標(biāo)題
Description消息描述
Url消息鏈接
MsgId

消息id,64位整型

asp.net微信開發(fā)消息應(yīng)答方法的示例

接上篇,看ResponseXML(postString);方法如下

///


       /// 獲取用戶發(fā)送的消息
       ///

       ///
       private void ResponseXML(string postString)
       {
           //使用XMLDocument加載信息結(jié)構(gòu)                    
           XmlDocument xmlDoc = new XmlDocument();
           xmlDoc.LoadXml(postString);
           XmlElement rootElement = xmlDoc.DocumentElement;//獲取文檔的根
           XmlNode MsgType = rootElement.SelectSingleNode("MsgType"); //獲取消息的文本類型
           RequestXML requestXML = new RequestXML();//聲明實(shí)例,獲取各個(gè)屬性并賦值
           requestXML.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText;//公眾號
           requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;//用戶
           requestXML.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText;//創(chuàng)建時(shí)間
           requestXML.MsgType = MsgType.InnerText;//消息類型


           ///對消息的不同類型進(jìn)行賦值
           if (requestXML.MsgType == "text")
           {
               //賦值文本信息內(nèi)容
               requestXML.Content = rootElement.SelectSingleNode("Content").InnerText;
           }
           if (requestXML.MsgType.Trim() == "location")
           {
               ///賦值地理位置緯度,經(jīng)度,地圖縮放比例,地理位置說明
               requestXML.Location_X = rootElement.SelectSingleNode("Location_X").InnerText;
               requestXML.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText;
               requestXML.Scale = rootElement.SelectSingleNode("Scale").InnerText;
               requestXML.Label = rootElement.SelectSingleNode("Label").InnerText;
           }
           if (requestXML.MsgType.Trim().ToLower() == "event")
           {
               ///賦值事件名稱和事件key值
               requestXML.EventName = rootElement.SelectSingleNode("Event").InnerText;
               requestXML.EventKey = rootElement.SelectSingleNode("EventKey").InnerText;
           }

if (requestXML.MsgType.Trim().ToLower() == "voice")
           {
               ///賦值語音識別結(jié)果,賦值之前一定要記得在開發(fā)者模式下,把語音識別功能開啟,否則獲取不到
               requestXML.Recognition = rootElement.SelectSingleNode("Recognition").InnerText;
           }
           ResponseMsg(requestXML);

}

語音識別功能開啟如下:

asp.net微信開發(fā)消息應(yīng)答方法的示例

requestXML是我單獨(dú)創(chuàng)建的一個(gè)類,該類聲明了消息中常用的屬性字段,如下:

///


   /// 接收消息的實(shí)體類
   ///

   public class RequestXML
   {
       private String toUserName = String.Empty;
       ///
       /// 本公眾號
       ///

       public String ToUserName{get;set;}
       ///
       /// 用戶微信號
       ///

       public String FromUserName{get;set;}
       ///
       /// 創(chuàng)建時(shí)間
       ///

       public String CreateTime{get;set;}
       ///
       /// 信息類型
       ///

       public String MsgType{get;set;}
       ///
       /// 信息內(nèi)容
       ///

       public String Content{get;set;}
       /*以下為事件類型的消息特有的屬性*/
       ///
       /// 事件名稱
       ///

       public String EventName{get;set;}
       ///
       /// 事件值
       ///

       public string EventKey { get; set; }
       /*以下為圖文類型的消息特有的屬性*/
       ///
       /// 圖文消息的個(gè)數(shù)
       ///

       public int ArticleCount { get; set; }
       ///
       /// 圖文消息的標(biāo)題
       ///

       public string Title { get; set; }
       ///
       /// 圖文消息的簡介
       ///

       public string Description { get; set; }
       ///
       /// 圖文消息圖片的鏈接地址
       ///

       public string PicUrl { get; set; }
       ///
       /// 圖文消息詳情鏈接地址
       ///

       public string Url { get; set; }
       ///
       /// 圖文消息集合
       ///

       public List Articles { get; set;}
       /*以下為地理位置類型的消息特有的屬性*/
       ///
       /// 地理位置緯度
       ///

       public String Location_X { get; set; }
       ///
       /// 地理位置經(jīng)度
       ///

       public String Location_Y { get; set; }
       ///
       /// 地圖縮放比例
       ///

       public String Scale { get; set; }
       ///
       /// 地圖位置說明
       ///

       public String Label { get; set; }

///


       /// 語音消息特有字段
       ///

       public String Recognition { get; set; }


   
   }

繼續(xù)關(guān)注  ResponseMsg(requestXML);方法如下,

private void ResponseMsg(RequestXML requestXML)
       {
           string MsgType = requestXML.MsgType;
           try
           {
               //根據(jù)消息類型判斷發(fā)送何種類型消息
               switch (MsgType)
               {
                   case "text":
                       SendTextCase(requestXML);//發(fā)送文本消息
                       break;
                   case "event"://發(fā)送事件消息
                       if (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName.ToString().Trim().Equals("subscribe"))
                       {
                           SendWelComeMsg(requestXML);//關(guān)注時(shí)返回的圖文消息
                       }
                       else if (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName.ToString().Trim().Equals("CLICK"))
                       {
                           SendEventMsg(requestXML);//發(fā)送事件消息
                       }
                       break;

case "voice":
                       SendVoiceMsg(requestXML);//發(fā)送語音消息
                       break;
                   case "location"://發(fā)送位置消息
                       SendMapMsg(requestXML);
                       break;
                   default:
                       break;
               }
           }
           catch (Exception ex)
           {
               HttpContext.Current.Response.Write(ex.ToString());
           }
       }

先來關(guān)注發(fā)送文本消息,SendTextCase(requestXML);//發(fā)送文本消息

///


       /// 發(fā)送文本
       ///

       ///
       private void SendTextCase(RequestXML requestXML)
       {
                   string responseContent = FormatTextXML(requestXML.FromUserName, requestXML.ToUserName, requestXML.Content);
                   HttpContext.Current.Response.ContentType = "text/xml";
                   HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
                   HttpContext.Current.Response.Write(responseContent);
                   HttpContext.Current.Response.End();
       }

FormatTextXML方法制定格式

///


       /// 返回格式化的Xml格式內(nèi)容
       ///

       /// 公眾號
       /// 用戶號
       /// 回復(fù)內(nèi)容
       ///
       private string FormatTextXML(string p1, string p2, string p3)
       {
           return "" + DateTime.Now.Subtract(new DateTime(1970, 1, 1, 8, 0, 0)).TotalSeconds.ToString() + "1";
       }

這樣就能實(shí)現(xiàn)消息的應(yīng)答,如果用戶點(diǎn)擊的按鈕,如下代碼:

case "event"://發(fā)送事件消息
                       if (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName.ToString().Trim().Equals("subscribe"))
                       {
                           SendWelComeMsg(requestXML);//關(guān)注時(shí)返回的圖文消息
                       }
                      else if (!string.IsNullOrWhiteSpace(requestXML.EventName) && requestXML.EventName.ToString().Trim().Equals("CLICK"))
                       {
                           SendEventMsg(requestXML);//發(fā)送事件消息
                       }
                       break;

///


       /// 發(fā)送響應(yīng)事件消息
       ///

       ///
       private void SendEventMsg(RequestXML requestXML)
       {
           string keyStr = requestXML.EventKey.ToString();
           switch (keyStr)
           {
               case "mypay":
                   SendPayDetails(requestXML);//發(fā)送薪資賬單
                   break;
               case "tianqiyubao":
                   SendWeaterMessage(requestXML);//發(fā)送天氣預(yù)報(bào)
                   break;
               case "kaixinyixiao":
                   SendKaiXinMessage(requestXML);//發(fā)送開心一笑結(jié)果集
                   break;
               case  "updateMessage":
                   SendUpdateMessage(requestXML);//發(fā)送修改信息鏈接
                   break;
               case "yuangonghuodong":
                   SendYuanGongHuoDong(requestXML);//發(fā)送學(xué)生活動(dòng)
                   break;
               case "yuangongtongzhi":
                   SendYuanGongTongZhi(requestXML);//發(fā)送員工通知
                   break;
               case "youwenbida":
                   SendWenti(requestXML);//發(fā)送員工提交問題鏈接
                   break;
              case "mywen":
                   SendWentiList(requestXML);//發(fā)送問題列表鏈接
                   break;
              case "PhoneSerices":
                   SendKeFuMessage(requestXML);//接入客服
                   break;
               default:
                   String responseContent = String.Empty;
                   responseContent = FormatTextXML(requestXML.FromUserName, requestXML.ToUserName,"此功能暫未開放!敬請期待!");
                   HttpContext.Current.Response.ContentType = "text/xml";
                   HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
                   HttpContext.Current.Response.Write(responseContent);
                   HttpContext.Current.Response.End();
                   break;
           }
       }

SendWelComeMsg(requestXML);//關(guān)注時(shí)返回的圖文消息

///


       /// 發(fā)送關(guān)注時(shí)的圖文消息
       ///

       ///
       private void SendWelComeMsg(RequestXML requestXML)
       {
           String responseContent = String.Empty;
           string newdate = DateTime.Now.Subtract(new DateTime(1970, 1, 1, 8, 0, 0)).TotalSeconds.ToString();
           string PUrlfileName = "http://www.deqiaohr.com.cn/weixin/welcome.jpg";
           responseContent = string.Format(Message_News_Main, requestXML.FromUserName, requestXML.ToUserName, newdate, "1",
               string.Format(Message_News_Item, "歡迎關(guān)注德橋員工服務(wù)中心", "蘇州德橋人力資源創(chuàng)立于2002年...", PUrlfileName, "http://www.deqiaohr.com.cn/weixin/WxGsjianjie.aspx"));
           HttpContext.Current.Response.ContentType = "text/xml";
           HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
           HttpContext.Current.Response.Write(responseContent);
           HttpContext.Current.Response.End();
       }

Message_News_Main 和Message_News_Item是圖文消息格式化

///


       /// 返回圖文消息主體
       ///

       public static string Message_News_Main
       {
           get
           {
               return @"
                           
                           
                           {2}
                           
                            {3}
                           
                            {4}
                         

                         
";
           }
       }
       ///
       /// 返回圖文消息項(xiàng)
       ///

       public static string Message_News_Item
       {
           get
           {
               return @"
                           <![CDATA[{0}]]>
                           
                           
                           
                           
";
           }
       }

///


       /// 發(fā)送響應(yīng)語音識別結(jié)果
       ///

       ///
       private void SendVoiceMsg(RequestXML requestXML)
       {
           string responseContent = FormatTextXML(requestXML.FromUserName, requestXML.ToUserName, "您剛才說的語音消息識別結(jié)果為:" + requestXML.Recognition.ToString());
           HttpContext.Current.Response.ContentType = "text/xml";
           HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
           HttpContext.Current.Response.Write(responseContent);
           HttpContext.Current.Response.End();
       }

asp.net微信開發(fā)消息應(yīng)答方法的示例asp.net微信開發(fā)消息應(yīng)答方法的示例asp.net微信開發(fā)消息應(yīng)答方法的示例

點(diǎn)擊查看全文,直接跳轉(zhuǎn)至自己寫的網(wǎng)頁,關(guān)于網(wǎng)頁圖片自適應(yīng)的問題,把圖片的寬度設(shè)置為100%,即可,如果讓網(wǎng)頁在屏幕中自適應(yīng),記得在網(wǎng)頁中一定要添加

關(guān)于“asp.net微信開發(fā)消息應(yīng)答方法的示例”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。


本文名稱:asp.net微信開發(fā)消息應(yīng)答方法的示例
網(wǎng)站網(wǎng)址:http://weahome.cn/article/pjiche.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部