目錄
文字訊息
##語音訊息
影片訊息
地理位置消息
链接消息
首頁 微信小程式 微信開發 詳解asp.net微信開發訊息應答方法

詳解asp.net微信開發訊息應答方法

Mar 24, 2017 pm 02:43 PM

當一般微信用戶向公眾帳號發送訊息時,微信伺服器將POST訊息的XML封包到開發者填寫的URL上。

請注意:

1、关于重试的消息排重,推荐使用msgid排重。
2、微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。详情请见“发送消息-被动回复消息”。
3、为了保证更高的安全保障,开发者可以在公众平台官网的开发者中心处设置消息加密。开启加密后,用户发来的消息会被加密,公众号被动回复用户的消息也需要加密(但开发者通过客服接口等API调用形式向用户发送消息,则不受影响)。关于消息加解密的详细说明,请见“消息加解密说明”。
登入後複製

各訊息類型的推送XML封包結構如下:

 

文字訊息

 <xml>
 <tousername></tousername>
 <fromusername></fromusername> 
 <createtime>1348831860</createtime>
 <msgtype></msgtype>
 <content></content>
 <msgid>1234567890123456</msgid>
 </xml>
登入後複製
開發者微訊號傳送方帳號(一個OpenID)訊息建立時間(整數)##textContent文字訊息內容MsgId訊息id,64位元整數
#參數 描述
##ToUserName
#FromUserName
CreateTime
#MsgType

圖片訊息

 <xml>
 <tousername></tousername>
 <fromusername></fromusername>
 <createtime>1348831860</createtime>
 <msgtype></msgtype>
 <picurl></picurl>
 <mediaid></mediaid>
 <msgid>1234567890123456</msgid>
 </xml>
登入後複製
#參數描述 ToUserName微訊號FromUserName#發送方帳號(一個OpenID)#CreateTime訊息建立時間(整數)#MsgTypeimagePicUrl圖片連結MediaId圖片訊息媒體id,可以呼叫多媒體檔案下載介面來拉取資料。 MsgId訊息id,64位元整數
開發者

##語音訊息

<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1357290913</createtime>
<msgtype></msgtype>
<mediaid></mediaid>
<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></tousername>
<fromusername></fromusername>
<createtime>1357290913</createtime>
<msgtype></msgtype>
<mediaid></mediaid>
<format></format>
<recognition></recognition>
<msgid>1234567890123456</msgid>
</xml>
登入後複製

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

影片訊息

<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1357290913</createtime>
<msgtype></msgtype>
<mediaid></mediaid>
<thumbmediaid></thumbmediaid>
<msgid>1234567890123456</msgid>
</xml>
登入後複製
登入後複製
#參數 描述
ToUserName 開發者微訊號
FromUserName #發送方帳號(一個OpenID)
#CreateTime 訊息建立時間(整數)
#MsgType 影片為video
MediaId 視訊訊息媒體id,可以呼叫多媒體檔案下載介面拉取資料。
ThumbMediaId 視訊訊息縮圖的媒體id,可以呼叫多媒體檔案下載介面拉取資料。
MsgId 訊息id,64位元整數

小視訊訊息

<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1357290913</createtime>
<msgtype></msgtype>
<mediaid></mediaid>
<thumbmediaid></thumbmediaid>
<msgid>1234567890123456</msgid>
</xml>
登入後複製
登入後複製
##影片訊息媒體id,可以呼叫多媒體檔案下載介面拉取資料。 ThumbMediaId視訊訊息縮圖的媒體id,可以呼叫多媒體檔案下載介面拉取資料。 MsgId訊息id,64位元整數

地理位置消息

<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1351776360</createtime>
<msgtype></msgtype>
<location_x>23.134521</location_x>
<location_y>113.358803</location_y>
<scale>20</scale>
<label></label>
<msgid>1234567890123456</msgid>
</xml>
登入後複製
參數 描述
ToUserName 開發者微訊號
FromUserName 發送方帳號(一個OpenID)
CreateTime #訊息創建時間(整數)
MsgType 小影片為shortvideo
MediaId
参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType location
Location_X 地理位置维度
Location_Y 地理位置经度
Scale 地图缩放大小
Label 地理位置信息
MsgId 消息id,64位整型

链接消息

<xml>
<tousername></tousername>
<fromusername></fromusername>
<createtime>1351776360</createtime>
<msgtype></msgtype>
<title></title>
<description></description>
<url></url>
<msgid>1234567890123456</msgid>
</xml>
登入後複製
参数 描述
ToUserName 接收方微信号
FromUserName 发送方微信号,若为普通用户,则是一个OpenID
CreateTime 消息创建时间
MsgType 消息类型,link
Title 消息标题
Description 消息描述
Url 消息链接
MsgId

消息id,64位整型

詳解asp.net微信開發訊息應答方法

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

  ///


        /// 取得使用者傳送的訊息
        ///

        /// ## post    {
            //使用XMLDocument載入資訊結構                   #            xmlDoc.LoadXml(postString);
            XmlElement rootElement = xmlDoc.DocumentElement;////取得文件的根
XmlNode MsgType = rootElement.SelectSingleNode("MsgType"); //取得訊息的文字類型
            RequestXML requestXML = new RequestXML( ingleNode ("ToUserName").InnerText;//公號
            requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;//使用者
 Time").InnerText ;//建立時間
            requestXML.MsgType = MsgType.InnerText;//訊息類型

   
            ///對訊息的不同類型進行賦值
                         //賦值文字訊息內容
               與已回復XML.Contentent = rootElement.SelectSingleNode("Content").InnerText;
            }
                           ///賦值以地理位置緯度,經度,地圖縮放比例,地理位置說明
                requestXML.Location_X = rootElement.SelectSingleNode("Location_X").InnerText ("Location_Y").InnerText;
                requestXML.Scale = rootElement.SelectSingleNode("Scale").InnerText;
                requestXML.Label = rootElement.SelectSingleNode("Lab     if (requestXML.MsgType.Trim().ToLower() = = "event")
            {
                ////都會使用問題與事件 ("Event").InnerText;
                requestXML.EventKey = rootElement.SelectSingleNode ("EventKey").InnerText;
            }

      if (requestXML.MsgType.Trim,             ///賦值以語音識別}               requestXML.Recognition = rootElement.Select         ResponseMsg( requestXML);

}


 語音辨識功能開啟如下:



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

 ///


    /// 接收訊息的實體類別
    ///

    public class RequestXML° .Empty;
        ///
        /// 本公編號
             // /
        /// 使用者微訊號
        ///

   ## /// 建立時間
        ///

        public String CreateTime{get;set;}
        / //
        public String MsgType{get;set;}
        /// ##  #        public String Content{get;set;}
        /*以下為事件類型的訊息特有的屬性*/
         ///

        public String EventName{get;set;}
        ///
          public string EventKey { get; ///

        public int ArticleCount { get; set; }
        /// < summary>
        public string Title { get; set; }
        ///
           public string Description { get; set; }
        ///
        /// 圖片訊息圖片的連結位址
  get ; set; }
        ///
        /// 圖文訊息詳情連結位址
      ##        ///
        /// 圖文訊息集合
        ///
#o      / #        /*以下為地理位置類型的訊息特有的屬性*/
        ///
        /// 地理位置緯度
    ; set; }
        ///
/// 地理位置經度
        ///

        public String Location_Y {get; set; }
  #        ///

        public String Scale { get; set; }
         ///
> ;
        public String Label { get; set; }

    ///
     public String Recognition { get; set; }

     
    }

#繼續專注於  ResponseMsg(requestXML);方法如下,

##繼續關注  ResponseMsg(requestXML);方法如下,
#ML# private voidoid Responsequest(RequestXMLMLsML )
        {

            string MsgType = requestXML.MsgType;

                   //根據訊息類型訊息使用何種類型訊息

                  #                    case "text":

                                         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);//傳送事件訊息
                        }
            

         case "voice":
                                  break;
                        SendMapMsg(requestXML);
break;
                    default:
                  }
            }
            catch (Exception ex     HttpContext.Current.Response.Write(ex.ToString());
            }
        }

先追蹤發送簡訊,SendTextCase(requestXML);///寄件文字
        ///
        ///                      HttpContext.Current.Response.ContentType = "text/xml";

                   HttpContext.Current.Response.Cont      HttpContext.Current.Response.Cont ;

                            地End();

        }


FormatTextXML方法制定格式

  ///


        /// 回傳已格式化的Xml格式內容
        ///
#lt o;公號
        /// 用戶號碼
       /param>
        ///
        private string Format       return "" + DateTime.Now.Subtract(new DateTime(1970, 1, 1, 8, 0, 0)).TotalSeconds.ToString() + "1& </xml>";
#>

這樣就能實現訊息的回應,如果使用者點擊的按鈕,以下程式碼:

    case "event              (!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;

 ///


        /// 傳送回應事件訊息
        ///
## param>
        private void SendEventMsg(RequestXML requestXML)
        {
          switch (keyStr)
            {
              ##                           case "tianqiyubao":
                       break;
                case "kaixinyixiao" :
                    SendKaiXinMessage(requestXML);//送開心一笑結果集            case  "updateMessage":
                         break;
                case "yuangonghuodong":
                    SendYuanGongHuoDong(requestXML);//發送學生活動
                    break;
                case "yuangongtongzhi":
                    SendYuanGongTongZhi(requestXML);//發送員工通知
                    break;
                case "youwenbida":
                         break;
               case "mywen":
     選項順2ase "mywen":##.    
                    break;
               SendKeFuMessage(requestXML);//接取客服
                                String responseContent = String.Empty;
responseContent = FormatTextXML(requestXML.FromUserName, requestXML.ToUserName,"此功能暫未開放!敬請期待!");
                             HttpContext.Current. Response.ContentEncoding = Encoding.UTF8;
                      }  HttpContext.Current.Response.End();
                    break;
   
#SendWelComeMsg(requestXML);//關注時回傳的圖文訊息

  ///

        ///   

        ///

                String responseContent = String.Empty;

            string newdate = DateTime.Now.Subtract(new DateTime(1970, 1, 1, 8, 0, 0)).Total 或者iaohr. com.cn/weixin/welcome.jpg";
              string.Format(Message_News_Item, "歡迎追蹤德橋員工服務中心", "蘇州德橋人力資源創立於2002年...", PUrlfileName, "http://www.deqiaohr.com.cn/weixin/WxGsjianjie.aspx"));
        .Response.ContentType = "text/xml";
            HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;# #            HttpContext.Current.Response.End ();
        }

Message_News_Main 與Message_News_Item是圖文訊息格式化

  ///


        /// 返回圖片訊息主體
        ///

              get
{
                return @"
                                                
                                      >& lt;/訊息類型>
            
                           
                            {4 }
                           文章>
                         
}
        }
        ///
        ///回圖片訊息項目
        ///

        public static string Message_News_Item
           {
                return @"
          ![CDATA[{0}]]>標題>
                            網址>
                    }![CDATA[{3}]]>
                          ##

   ///


        /// 傳送回應性語音辨識結果
        ///
#lto&foo; /param>
        private void SendVoiceMsg(RequestXML requestXML)
        {
    Name, "您剛才說的語音訊息辨識結果為:" + requestXML.Recognition. ToString());
            HttpContext.Current.Response.ContentType = "text/xml";
               HttpContext.Current.Response.Write(responseContent) ;
            HttpContext.Current.Response.End();
        }

詳解asp.net微信開發訊息應答方法詳解asp.net微信開發訊息應答方法詳解asp.net微信開發訊息應答方法

11網頁,關於網頁圖片自適應的問題,把圖片的寬度設定為100%,即可,如果讓網頁在螢幕中自適應,記得在網頁中一定要加上

######

以上是詳解asp.net微信開發訊息應答方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)