C#/ASP.NET MVC微信公眾號接口開發之從零開發(三)回復消息 (附源碼)


C#/ASP.NET MVC微信接口開發文章目錄:

1.C#/ASP.NET MVC微信公眾號接口開發之從零開發(一) 接入微信公眾平台

2.C#/ASP.NET MVC微信公眾號接口開發之從零開發(二) 接收微信消息並且解析XML(附源碼)

 

 

 一、拼湊回復的XML字符串

微信被動回復的形式有一下六種:

分別對應不同的XML形式,這里以文本消息和圖文為例,讀者舉一反三其他的類似,不再贅述:

回復的文本消息:

 1 /// <summary>
 2 /// 回復文本
 3 /// </summary>
 4 /// <param name="FromUserName">發送給誰(openid)</param>
 5 /// <param name="ToUserName">來自誰(公眾賬號ID)</param>
 6 /// <param name="Content">回復類型文本</param>
 7 /// <returns>拼湊的XML</returns>
 8 public static string ReText(string FromUserName, string ToUserName,string Content)
 9 {
10     string XML = "<xml><ToUserName><![CDATA[" + FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + ToUserName + "]]></FromUserName>";//發送給誰(openid),來自誰(公眾賬號ID)
11     XML += "<CreateTime>" + sohovan.com.common.CommonMethod.ConvertDateTimeInt(DateTime.Now) + "</CreateTime>";//回復時間戳
12     XML += "<MsgType><![CDATA[text]]></MsgType>";//回復類型文本
13     XML += "<Content><![CDATA["+ Content + "]]></Content><FuncFlag>0</FuncFlag></xml>";//回復內容 FuncFlag設置為1的時候,自動星標剛才接收到的消息,適合活動統計使用
14     return XML;
15 }

回復單圖文:

 1 /// <summary>
 2 /// 回復單圖文
 3 /// </summary>
 4 /// <param name="FromUserName">發送給誰(openid)</param>
 5 /// <param name="ToUserName">來自誰(公眾賬號ID)</param>
 6 /// <param name="Title">標題</param>
 7 /// <param name="Description">詳情</param>
 8 /// <param name="PicUrl">圖片地址</param>
 9 /// <param name="Url">地址</param>
10 /// <returns>拼湊的XML</returns>
11 public static string ReArticle(string FromUserName, string ToUserName, string Title, string Description, string PicUrl, string Url)
12 {
13     string XML = "<xml><ToUserName><![CDATA[" + FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + ToUserName + "]]></FromUserName>";//發送給誰(openid),來自誰(公眾賬號ID)
14     XML += "<CreateTime>" + sohovan.com.common.CommonMethod.ConvertDateTimeInt(DateTime.Now) + "</CreateTime>";//回復時間戳
15     XML += "<MsgType><![CDATA[news]]></MsgType><Content><![CDATA[]]></Content><ArticleCount>1</ArticleCount><Articles>";
16     XML += "<item><Title><![CDATA[" + Title + "]]></Title><Description><![CDATA[" + Description + "]]></Description><PicUrl><![CDATA[" + PicUrl + "]]></PicUrl><Url><![CDATA[" + Url + "]]></Url></item>";
17     XML += "</Articles><FuncFlag>0</FuncFlag></xml>";
18     return XML;
19 }

多圖文可以根據項目需求舉一反三,這里給個例子:

 1 /// <summary>
 2 /// 多圖文回復
 3 /// </summary>
 4 /// <param name="FromUserName">發送給誰(openid)</param>
 5 /// <param name="ToUserName">來自誰(公眾賬號ID)</param>
 6 /// <param name="ArticleCount">圖文數量</param>
 7 /// <param name="dtArticle"></param>
 8 /// <returns></returns>
 9 public static string ReArticle(string FromUserName, string ToUserName, int ArticleCount, System.Data.DataTable dtArticle)
10 {
11     string XML = "<xml><ToUserName><![CDATA[" + FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + ToUserName + "]]></FromUserName>";//發送給誰(openid),來自誰(公眾賬號ID)
12     XML += "<CreateTime>" + sohovan.com.common.CommonMethod.ConvertDateTimeInt(DateTime.Now) + "</CreateTime>";//回復時間戳
13     XML += "<MsgType><![CDATA[news]]></MsgType><Content><![CDATA[]]></Content><ArticleCount>" + ArticleCount + "</ArticleCount><Articles>";
14     foreach (System.Data.DataRow Item in dtArticle.Rows)
15     {
16         XML += "<item><Title><![CDATA[" + Item["Title"] + "]]></Title><Description><![CDATA[" + Item["Description"] + "]]></Description><PicUrl><![CDATA[" + Item["PicUrl"] + "]]></PicUrl><Url><![CDATA[" + Item["Url"] + "]]></Url></item>";
17     }
18     XML += "</Articles><FuncFlag>0</FuncFlag></xml>";
19     return XML;
20 }

二、回復消息即在微信請求我們地址的時候根據請求的情況回復我們想給的XML字符串

這里情況比較多,可以根據項目需求做對於的設置,編寫一個網站后台管理關鍵字、圖片、語音回復等等

這里以文本為例,根據文本的內容(即關鍵字)回復文本還是回復圖文消息:

根據文本得到XML:

 1 public static string GetText(string FromUserName, string ToUserName, string Content)
 2 {
 3     sohovan.com.common.CommonMethod.WriteTxt(Content);//接收的文本消息
 4     string XML = "";
 5     switch (Content) { 
 6         case "關鍵字":
 7             XML = ReText(FromUserName, ToUserName, "關鍵詞回復測試");
 8             break;
 9         case"單圖文":
10             XML = ReArticle(FromUserName, ToUserName, "測試標題", "測試詳情——百度搜索鏈接", "http://pic.cnblogs.com/avatar/743013/20150521120816.png", "http://www.baidu.com");
11             break;
12         default:
13             XML = ReText(FromUserName, ToUserName, "無對應關鍵字");
14             break;
15     }
16     return XML;
17 }

根據接收的消息WxXmlModel回復消息:

 1 private void ResponseXML(WxXmlModel WxXmlModel)
 2 {
 3     string XML = "";
 4     switch (WxXmlModel.MsgType)
 5     { 
 6         case "text"://文本回復
 7             XML = sohovan.com.wxapi.ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.Content);
 8             break;
 9         default://默認回復
10             break;
11     }
12     HttpContext.Current.Response.Write(XML);
13     HttpContext.Current.Response.End();
14 }

 

本文版權歸作者(謝俊)和博客園所有,歡迎轉載,轉載請標明出處。

原文地址:http://www.cnblogs.com/net-xiejun/

微信開發群C#.NETWEB程序開發交流

完整源碼下載:https://github.com/xiejun-net/weixin


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM