微信應用如火如荼,不少公司都但願搭上信息快車,這個是一個商機,也是一個技術的方向,所以,有空研究下、學習下微信的相關開發,也就成爲計劃的安排事情之一了。本系列文章但願從一個按部就班的角度上,全面介紹微信的相關開發過程和相關經驗總結,但願給你們瞭解一下相關的開發歷程。html
在前面兩篇兩篇隨筆《C#開發微信門戶及應用(1)--開始使用微信接口》和《C#開發微信門戶及應用(2)--微信消息的處理和應答》裏面,大體介紹了我微信應用的框架構建,本隨筆繼續介紹這一主題,介紹消息應答裏面的文本應答和圖文應答的過程。安全
咱們知道,給手機用戶發送響應消息,它能夠分爲好多種方式,如回覆文本消息、回覆圖片消息、回覆語音消息、回覆視頻消息、回覆音樂消息、回覆圖文消息等,以下所示。服務器
而其中圖片、視頻、語音這三種方式,是須要開通微信認證才能夠向用戶發送存在微信服務器上的媒體信息,通常沒有認證的公衆號或者服務號,是不能發送這幾種內容的。微信
在上一篇微信開發的隨筆中,我展現了對接收消息和回覆消息的應用實體類,這些實體類是我根據須要,根據開發須要,在應用層面對它們進行了封裝,如回覆的消息關係以下所示。微信開發
消息基類BaseMessage的實體類定義以下所示,它對日期構造了一個整形數值,並具有了一些常規的屬性,而且還有一個重要的ToXML方法,用來給方法傳遞這些XML數據的。架構
/// <summary> /// 基礎消息內容 /// </summary> [XmlRoot(ElementName = "xml")] public class BaseMessage { /// <summary> /// 初始化一些內容,如建立時間爲整形, /// </summary> public BaseMessage() { this.CreateTime = DateTime.Now.DateTimeToInt(); } /// <summary> /// 開發者微信號 /// </summary> public string ToUserName { get; set; } /// <summary> /// 發送方賬號(一個OpenID) /// </summary> public string FromUserName { get; set; } /// <summary> /// 消息建立時間 (整型) /// </summary> public int CreateTime { get; set; } /// <summary> /// 消息類型 /// </summary> public string MsgType { get; set; } public virtual string ToXml() { this.CreateTime = DateTime.Now.DateTimeToInt();//從新更新 return MyXmlHelper.ObjectToXml(this); } }
回覆的文本消息實體類代碼以下所示,咱們能夠看到,它繼承了不少通用的實體屬性,而且還具有了一個ToXml的通用方法,咱們須要把它轉換爲響應的XML的時候,就使用這個方法就能夠了。框架
/// <summary> /// 回覆文本消息 /// </summary> [System.Xml.Serialization.XmlRoot(ElementName = "xml")] public class ResponseText : BaseMessage { public ResponseText() { this.MsgType = ResponseMsgType.Text.ToString().ToLower(); } public ResponseText(BaseMessage info) : this() { this.FromUserName = info.ToUserName; this.ToUserName = info.FromUserName; } /// <summary> /// 內容 /// </summary> public string Content { get; set; } }
而圖文消息對象類ResponseNews,它包含更多的信息定義post
/// <summary> /// 回覆圖文消息 /// </summary> [System.Xml.Serialization.XmlRoot(ElementName = "xml")] public class ResponseNews : BaseMessage { public ResponseNews() { this.MsgType = ResponseMsgType.News.ToString().ToLower(); this.Articles = new List<ArticleEntity>(); } public ResponseNews(BaseMessage info) : this() { this.FromUserName = info.ToUserName; this.ToUserName = info.FromUserName; } /// <summary> /// 圖文消息個數,限制爲10條之內 /// </summary> public int ArticleCount { get { return this.Articles.Count; } set { ;//增長這個步驟纔出來XML內容 } } /// <summary> /// 圖文列表。 /// 多條圖文消息信息,默認第一個item爲大圖,注意,若是圖文數超過10,則將會無響應 /// </summary> [System.Xml.Serialization.XmlArrayItem("item")] public List<ArticleEntity> Articles { get; set; } }
而其中的圖文列表集合中的對象,它也是一個實體類型,包含了一些圖文的連接,標題等信息,不在贅述。學習
如對於文本消息,咱們能夠用如下的方式進行處理。測試
ResponseText response = new ResponseText(info); response.Content = "抱歉,此功能暫未開通。"; result = response.ToXml();
對於圖文消息,咱們可能須要錄入更多的消息才能返回更好的效果。
注意圖文的消息,圖片的尺寸最好按照官方的標準,不然在手機上看起來很差看,官方的標準好像是寬高是(360,200)像素
/// <summary> /// 訂閱或者顯示公司信息 /// </summary> /// <param name="info"></param> /// <returns></returns> private string ShowCompanyInfo(BaseMessage info) { string result = ""; //使用在微信平臺上的圖文信息(單圖文信息) ResponseNews response = new ResponseNews(info); ArticleEntity entity = new ArticleEntity(); entity.Title = "廣州愛奇迪軟件科技有限公司"; entity.Description = "歡迎關注廣州愛奇迪軟件--專業的單位信息化軟件和軟件開發框架提供商,咱們立志於爲客戶提供最好的軟件及服務。\r\n"; entity.Description += "咱們是一家極富創新性的軟件科技公司,從事研究、開發並銷售最可靠的、安全易用的技術產品及優質專業的服務,幫助全球客戶和合做夥伴取得成功。\r\n......(此處省略1000字,哈哈)"; entity.PicUrl = "http://www.iqidi.com/WeixinImage/company.png"; entity.Url = "http://www.iqidi.com"; response.Articles.Add(entity); result = response.ToXml(); return result; }
咱們來看看我公司的微信門戶菜單,看起來是否是很酷呢。
對於這兩種(文本消息、圖文消息)用的地方是最多,不少微信門戶,都主要是使用這兩種方式進行響應。固然,咱們還能夠根據客戶手機提交上來的各類消息進行不一樣的處理,請求消息的類型我在上一篇的隨筆有介紹,以下所示。
須要關注瞭解總體效果,可使用微信直接掃描二維碼便可。
C#開發微信門戶及應用(23)-微信小店商品管理接口的封裝和測試
C#開發微信門戶及應用(21)-微信企業號的消息和事件的接收處理及解密
C#開發微信門戶及應用(19)-微信企業號的消息發送(文本、圖片、文件、語音、視頻、圖文消息等)
C#開發微信門戶及應用(18)-微信企業號的通信錄管理開發之成員管理
C#開發微信門戶及應用(17)-微信企業號的通信錄管理開發之部門管理
C#開發微信門戶及應用(15)-微信菜單增長掃一掃、發圖片、發地理位置功能
C#開發微信門戶及應用(14)-在微信菜單中採用重定向獲取用戶數據
C#開發微信門戶及應用(11)--微信菜單的多種表現方式介紹
C#開發微信門戶及應用(10)--在管理系統中同步微信用戶分組信息