亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

asp.net微信開發消息應答方法的示例

發布時間:2021-01-30 09:57:09 來源:億速云 閱讀:186 作者:小新 欄目:移動開發

這篇文章將為大家詳細講解有關asp.net微信開發消息應答方法的示例,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

當普通微信用戶向公眾賬號發消息時,微信服務器將POST消息的XML數據包到開發者填寫的URL上。

請注意:

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

各消息類型的推送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>
參數描述
ToUserName開發者微信號
FromUserName發送方帳號(一個OpenID)
CreateTime消息創建時間 (整型)
MsgTypetext
Content文本消息內容
MsgId消息id,64位整型

圖片消息

 <xml>
 <ToUserName><![CDATA[toUser]]></ToUserName>
 <FromUserName><![CDATA[fromUser]]></FromUserName>
 <CreateTime>1348831860</CreateTime>
 <MsgType><![CDATA[image]]></MsgType>
 <PicUrl><![CDATA[this is a url]]></PicUrl>
 <MediaId><![CDATA[media_id]]></MediaId>
 <MsgId>1234567890123456</MsgId>
 </xml>
參數描述
ToUserName開發者微信號
FromUserName發送方帳號(一個OpenID)
CreateTime消息創建時間 (整型)
MsgTypeimage
PicUrl圖片鏈接
MediaId圖片消息媒體id,可以調用多媒體文件下載接口拉取數據。
MsgId消息id,64位整型

語音消息

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<Format><![CDATA[Format]]></Format>
<MsgId>1234567890123456</MsgId>
</xml>
參數描述
ToUserName開發者微信號
FromUserName發送方帳號(一個OpenID)
CreateTime消息創建時間 (整型)
MsgType語音為voice
MediaId語音消息媒體id,可以調用多媒體文件下載接口拉取數據。
Format語音格式,如amr,speex等
MsgID消息id,64位整型

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

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<Format><![CDATA[Format]]></Format>
<Recognition><![CDATA[騰訊微信團隊]]></Recognition>
<MsgId>1234567890123456</MsgId>
</xml>

多出的字段中,Format為語音格式,一般為amr,Recognition為語音識別結果,使用UTF8編碼。

視頻消息

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[video]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
<MsgId>1234567890123456</MsgId>
</xml>
參數描述
ToUserName開發者微信號
FromUserName發送方帳號(一個OpenID)
CreateTime消息創建時間 (整型)
MsgType視頻為video
MediaId視頻消息媒體id,可以調用多媒體文件下載接口拉取數據。
ThumbMediaId視頻消息縮略圖的媒體id,可以調用多媒體文件下載接口拉取數據。
MsgId消息id,64位整型

小視頻消息

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[shortvideo]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
<MsgId>1234567890123456</MsgId>
</xml>
參數描述
ToUserName開發者微信號
FromUserName發送方帳號(一個OpenID)
CreateTime消息創建時間 (整型)
MsgType小視頻為shortvideo
MediaId視頻消息媒體id,可以調用多媒體文件下載接口拉取數據。
ThumbMediaId視頻消息縮略圖的媒體id,可以調用多媒體文件下載接口拉取數據。
MsgId消息id,64位整型

地理位置消息

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[location]]></MsgType>
<Location_X>23.134521</Location_X>
<Location_Y>113.358803</Location_Y>
<Scale>20</Scale>
<Label><![CDATA[位置信息]]></Label>
<MsgId>1234567890123456</MsgId>
</xml>
參數描述
ToUserName開發者微信號
FromUserName發送方帳號(一個OpenID)
CreateTime消息創建時間 (整型)
MsgTypelocation
Location_X地理位置維度
Location_Y地理位置經度
Scale地圖縮放大小
Label地理位置信息
MsgId消息id,64位整型

鏈接消息

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[link]]></MsgType>
<Title><![CDATA[公眾平臺官網鏈接]]></Title>
<Description><![CDATA[公眾平臺官網鏈接]]></Description>
<Url><![CDATA[url]]></Url>
<MsgId>1234567890123456</MsgId>
</xml>
參數描述
ToUserName接收方微信號
FromUserName發送方微信號,若為普通用戶,則是一個OpenID
CreateTime消息創建時間
MsgType消息類型,link
Title消息標題
Description消息描述
Url消息鏈接
MsgId

消息id,64位整型

asp.net微信開發消息應答方法的示例

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

/// <summary>
       /// 獲取用戶發送的消息
       /// </summary>
       /// <param name="postString"></param>
       private void ResponseXML(string postString)
       {
           //使用XMLDocument加載信息結構                    
           XmlDocument xmlDoc = new XmlDocument();
           xmlDoc.LoadXml(postString);
           XmlElement rootElement = xmlDoc.DocumentElement;//獲取文檔的根
           XmlNode MsgType = rootElement.SelectSingleNode("MsgType"); //獲取消息的文本類型
           RequestXML requestXML = new RequestXML();//聲明實例,獲取各個屬性并賦值
           requestXML.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText;//公眾號
           requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;//用戶
           requestXML.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText;//創建時間
           requestXML.MsgType = MsgType.InnerText;//消息類型

   
           ///對消息的不同類型進行賦值
           if (requestXML.MsgType == "text")
           {
               //賦值文本信息內容
               requestXML.Content = rootElement.SelectSingleNode("Content").InnerText;
           }
           if (requestXML.MsgType.Trim() == "location")
           {
               ///賦值地理位置緯度,經度,地圖縮放比例,地理位置說明
               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")
           {
               ///賦值語音識別結果,賦值之前一定要記得在開發者模式下,把語音識別功能開啟,否則獲取不到
               requestXML.Recognition = rootElement.SelectSingleNode("Recognition").InnerText;
           }
           ResponseMsg(requestXML);

}

語音識別功能開啟如下:

asp.net微信開發消息應答方法的示例

requestXML是我單獨創建的一個類,該類聲明了消息中常用的屬性字段,如下:

/// <summary>
   /// 接收消息的實體類
   /// </summary>
   public class RequestXML
   {
       private String toUserName = String.Empty;
       /// <summary>
       /// 本公眾號
       /// </summary>
       public String ToUserName{get;set;}
       /// <summary>
       /// 用戶微信號
       /// </summary>
       public String FromUserName{get;set;}
       /// <summary>
       /// 創建時間
       /// </summary>
       public String CreateTime{get;set;}
       /// <summary>
       /// 信息類型
       /// </summary>
       public String MsgType{get;set;}
       /// <summary>
       /// 信息內容
       /// </summary>
       public String Content{get;set;}
       /*以下為事件類型的消息特有的屬性*/
       /// <summary>
       /// 事件名稱
       /// </summary>
       public String EventName{get;set;}
       /// <summary>
       /// 事件值
       /// </summary>
       public string EventKey { get; set; }
       /*以下為圖文類型的消息特有的屬性*/
       /// <summary>
       /// 圖文消息的個數
       /// </summary>
       public int ArticleCount { get; set; }
       /// <summary>
       /// 圖文消息的標題
       /// </summary>
       public string Title { get; set; }
       /// <summary>
       /// 圖文消息的簡介
       /// </summary>
       public string Description { get; set; }
       /// <summary>
       /// 圖文消息圖片的鏈接地址
       /// </summary>
       public string PicUrl { get; set; }
       /// <summary>
       /// 圖文消息詳情鏈接地址
       /// </summary>
       public string Url { get; set; }
       /// <summary>
       /// 圖文消息集合
       /// </summary>
       public List<RequestXML> Articles { get; set;}
       /*以下為地理位置類型的消息特有的屬性*/
       /// <summary>
       /// 地理位置緯度
       /// </summary>
       public String Location_X { get; set; }
       /// <summary>
       /// 地理位置經度
       /// </summary>
       public String Location_Y { get; set; }
       /// <summary>
       /// 地圖縮放比例
       /// </summary>
       public String Scale { get; set; }
       /// <summary>
       /// 地圖位置說明
       /// </summary>
       public String Label { get; set; }

  /// <summary>
       /// 語音消息特有字段
       /// </summary>
       public String Recognition { get; set; }


   
   }

繼續關注  ResponseMsg(requestXML);方法如下,

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

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

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

/// <summary>
       /// 發送文本
       /// </summary>
       /// <param name="requestXML"></param>
       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方法制定格式

/// <summary>
       /// 返回格式化的Xml格式內容
       /// </summary>
       /// <param name="p1">公眾號</param>
       /// <param name="p2">用戶號</param>
       /// <param name="p3">回復內容</param>
       /// <returns></returns>
       private string FormatTextXML(string p1, string p2, string p3)
       {
           return "<xml><ToUserName><![CDATA[" + p1 + "]]></ToUserName><FromUserName><![CDATA[" + p2 + "]]></FromUserName><CreateTime>" + DateTime.Now.Subtract(new DateTime(1970, 1, 1, 8, 0, 0)).TotalSeconds.ToString() + "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[" + p3 + "]]></Content><FuncFlag>1</FuncFlag></xml>";
       }

這樣就能實現消息的應答,如果用戶點擊的按鈕,如下代碼:

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

/// <summary>
       /// 發送響應事件消息
       /// </summary>
       /// <param name="requestXML"></param>
       private void SendEventMsg(RequestXML requestXML)
       {
           string keyStr = requestXML.EventKey.ToString();
           switch (keyStr)
           {
               case "mypay":
                   SendPayDetails(requestXML);//發送薪資賬單
                   break;
               case "tianqiyubao":
                   SendWeaterMessage(requestXML);//發送天氣預報
                   break;
               case "kaixinyixiao":
                   SendKaiXinMessage(requestXML);//發送開心一笑結果集
                   break;
               case  "updateMessage":
                   SendUpdateMessage(requestXML);//發送修改信息鏈接
                   break;
               case "yuangonghuodong":
                   SendYuanGongHuoDong(requestXML);//發送學生活動
                   break;
               case "yuangongtongzhi":
                   SendYuanGongTongZhi(requestXML);//發送員工通知
                   break;
               case "youwenbida":
                   SendWenti(requestXML);//發送員工提交問題鏈接
                   break;
              case "mywen":
                   SendWentiList(requestXML);//發送問題列表鏈接
                   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);//關注時返回的圖文消息

/// <summary>
       /// 發送關注時的圖文消息
       /// </summary>
       /// <param name="requestXML"></param>
       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, "歡迎關注德橋員工服務中心", "蘇州德橋人力資源創立于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是圖文消息格式化

/// <summary>
       /// 返回圖文消息主體
       /// </summary>
       public static string Message_News_Main
       {
           get
           {
               return @"<xml>
                           <ToUserName><![CDATA[{0}]]></ToUserName>
                           <FromUserName><![CDATA[{1}]]></FromUserName>
                           <CreateTime>{2}</CreateTime>
                            <MsgType><![CDATA[news]]></MsgType>
                            <ArticleCount>{3}</ArticleCount>
                            <Articles>
                            {4}
                          </Articles>
                          </xml> ";
           }
       }
       /// <summary>
       /// 返回圖文消息項
       /// </summary>
       public static string Message_News_Item
       {
           get
           {
               return @"<item>
                           <Title><![CDATA[{0}]]></Title>
                           <Description><![CDATA[{1}]]></Description>
                           <PicUrl><![CDATA[{2}]]></PicUrl>
                           <Url><![CDATA[{3}]]></Url>
                           </item>";
           }
       }

/// <summary>
       /// 發送響應語音識別結果
       /// </summary>
       /// <param name="requestXML"></param>
       private void SendVoiceMsg(RequestXML requestXML)
       {
           string responseContent = FormatTextXML(requestXML.FromUserName, requestXML.ToUserName, "您剛才說的語音消息識別結果為:" + 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微信開發消息應答方法的示例asp.net微信開發消息應答方法的示例asp.net微信開發消息應答方法的示例

點擊查看全文,直接跳轉至自己寫的網頁,關于網頁圖片自適應的問題,把圖片的寬度設置為100%,即可,如果讓網頁在屏幕中自適應,記得在網頁中一定要添加

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;"/>

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泌阳县| 离岛区| 福安市| 水城县| 江门市| 凤山县| 吉首市| 岳阳县| 长葛市| 凤城市| 三河市| 镇远县| 衡东县| 苏尼特右旗| 武安市| 西盟| 南乐县| 肃北| 全州县| 富裕县| 墨脱县| 泰安市| 横山县| 宿松县| 长沙县| 西青区| 伊金霍洛旗| 钦州市| 革吉县| 民乐县| 军事| 阿尔山市| 铅山县| 古田县| 克什克腾旗| 蓬莱市| 东乡县| 长汀县| 吉安市| 浮山县| 西吉县|