


C# .net微信開發(fā),開發(fā)認(rèn)證,關(guān)注觸發(fā)訊息,自動(dòng)應(yīng)答,事件回應(yīng),自訂選單
Feb 13, 2017 pm 12:00 PM成為開發(fā)者
string[]?ArrTmp?=?{?"token",? Request["timestamp"],? Request["nonce"]?}; Array.Sort(ArrTmp);????? //字典排序string?tmpStr?=?string.Join("",?ArrTmp); tmpStr?=?FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr,?"SHA1"); tmpStr?=?tmpStr.ToLower();if?(tmpStr?!=?Request["signature"].ToLower()) { ???Response.Write(Request["echostr"]); }
關(guān)注帳號(hào),訊息,自動(dòng)應(yīng)答,事件回應(yīng)
?
reee
namespace ElegantWM.WebUI.Areas.WeiXin.Controllers
{
/// <summary>
/// 微信公共服務(wù)類
/// </summary>
public class RobotController : BaseController
{
/// <summary>
/// 接收微信請(qǐng)求接口,認(rèn)證的接口
/// </summary>
/// <returns></returns>
public ContentResult Index()
{
string result = AnalyzeXmlFromWeiXin();
return Content(result);
}
/// <summary>
/// 分析微信POST到本服務(wù)器的XML數(shù)據(jù)
/// </summary>
/// <param name="xmlStream"></param>
/// <returns></returns>
private string AnalyzeXmlFromWeiXin()
{
StreamReader reader = new StreamReader(Request.InputStream);
string xml = reader.ReadToEnd();
//獲取MsgType
log.Info(xml);
string msgType = XmlHelper.ReadXmlStr(xml, "/xml/MsgType", "");
switch (msgType)
{
case "event"://如果是事件
return OnAttention(xml);
case "text"://如果是文本消息
return OnReceiveTextMsg(xml);
default:
return "不被支持的關(guān)鍵字!";
}
}
/// <summary>
/// 響應(yīng)文本消息
/// </summary>
/// <param name="xml"></param>
/// <returns></returns>
private string OnReceiveTextMsg(string xml)
{
WxTextMsg msg = XmlEntityExchange<WxTextMsg>.ConvertXml2Entity(xml);
//返回消息,互換收發(fā)用戶
string toUser = msg.FromUserName;
msg.FromUserName = msg.ToUserName;
msg.ToUserName = toUser;
switch (msg.Content.Trim())
{
case "?":
msg.Content = HelpDocument();
break;
case "?":
msg.Content = HelpDocument();
break;
case "1":
msg.Content = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
break;
case "2":
msg.Content = Tools.HttpCrossDomain.Get("http://www.weather.com.cn/data/sk/101210301.html");
break;
case "3":
msg.Content = "來(lái)吧,想嘮點(diǎn)什么呢? [偷笑]";
break;
case "你是男的女的":
msg.Content = "姑娘一枚 [偷笑]";
break;
default:
msg.Content = "抱歉哦,我不認(rèn)識(shí)您輸入的命令。/害羞 /:,@-D";
break;
}
return XmlEntityExchange<WxTextMsg>.ConvertEntity2Xml(msg);
}
/// <summary>
/// 獲取幫助菜單文檔
/// </summary>
/// <returns></returns>
private string HelpDocument()
{
StringBuilder sb = new StringBuilder();
sb.Append("HI,請(qǐng)回復(fù)數(shù)字,選擇服務(wù)").Append("\n\n");
sb.Append("1. 當(dāng)前時(shí)間").Append("\n");
sb.Append("2. 天氣信息").Append("\n");
sb.Append("3. 聊天嘮嗑").Append("\n");
sb.Append("n. 更多服務(wù)開發(fā)中...").Append("\n");
sb.Append("回復(fù)【?】顯示此幫助菜單");
return sb.ToString();
}
/// <summary>
/// 當(dāng)用戶關(guān)注微信帳號(hào)的時(shí)候觸發(fā),事件響應(yīng)
/// </summary>
/// <param name="xml"></param>
private string OnAttention(string xml)
{
WxEvent wxevent = XmlEntityExchange<WxEvent>.ConvertXml2Entity(xml);
WxTextMsg msg = new WxTextMsg();
msg.ToUserName = wxevent.FromUserName;
msg.FromUserName = wxevent.ToUserName;
msg.CreateTime = DateTime.Now.Ticks;
msg.MsgType = "text";
//如果是關(guān)注,則發(fā)送歡迎消息
switch (wxevent.Event)
{
case "subscribe":
msg.Content = System.Configuration.ConfigurationManager.AppSettings["DefaultWxMsg"];
break;
case "CLICK":
msg.Content = "您單擊的是:" + wxevent.EventKey;
break;
default:
msg.Content = "暫未處理的事件:Event" + wxevent.Event + ";EventKey:" + wxevent.EventKey;
break;
}
string rst = XmlEntityExchange<WxTextMsg>.ConvertEntity2Xml(msg);
log.Info(rst);
return rst;
}
}
}
基礎(chǔ)類:http請(qǐng)求
//實(shí)體 public class WxEvent { /// <summary> /// 接收人 /// </summary> public string ToUserName { get; set; } /// <summary> /// 發(fā)送人 /// </summary> public string FromUserName { get; set; } /// <summary> /// 時(shí)間 /// </summary> public string CreateTime { get; set; } /// <summary> /// 類型 /// </summary> public string MsgType { get; set; } /// <summary> /// 事件 /// </summary> public string Event { get; set; } public string EventKey { get; set; } } public class WxTextMsg { /// <summary> /// 接收人 /// </summary> public string ToUserName { get; set; } /// <summary> /// 發(fā)送人 /// </summary> public string FromUserName { get; set; } /// <summary> /// 時(shí)間 /// </summary> public long CreateTime { get; set; } /// <summary> /// 類型 /// </summary> public string MsgType { get; set; } /// <summary> /// 內(nèi)容 /// </summary> public string Content { get; set; } }
獲取Token:
//XML和實(shí)體對(duì)象間的相互轉(zhuǎn)化 namespace ElegantWM.WebUI.Areas.WeiXin { public class XmlEntityExchange<T> where T : new() { /// <summary> /// 將XML轉(zhuǎn)換為對(duì)象 /// </summary> /// <param name="xml"></param> /// <returns></returns> public static T ConvertXml2Entity(string xml) { XmlDocument doc = new XmlDocument(); PropertyInfo[] propinfos = null; doc.LoadXml(xml); XmlNodeList nodelist = doc.SelectNodes("/xml"); T entity = new T(); foreach (XmlNode node in nodelist) { //初始化propertyinfo if (propinfos == null) { Type objtype = entity.GetType(); propinfos = objtype.GetProperties(); } //填充entity類的屬性 foreach (PropertyInfo pi in propinfos) { XmlNode cnode = node.SelectSingleNode(pi.Name); pi.SetValue(entity, Convert.ChangeType(cnode.InnerText, pi.PropertyType), null); } } return entity; } /// <summary> /// 構(gòu)造微信消息 /// </summary> /// <param name="t">對(duì)象實(shí)體</param> /// <returns>返回微信消息xml格式</returns> public static string ConvertEntity2Xml(T t) { StringBuilder builder = new StringBuilder(); builder.Append("<xml>"); Type objtype = t.GetType(); //填充entity類的屬性 foreach (PropertyInfo pi in objtype.GetProperties()) { object obj = pi.GetValue(t); string value = obj == null ? "" : obj.ToString(); if (pi.PropertyType.Name.ToLower() == "int64") builder.Append("<" + pi.Name + ">" + value + "</" + pi.Name + ">"); else builder.Append("<" + pi.Name + "><![CDATA[" + value + "]]></" + pi.Name + ">"); } builder.Append("</xml>"); return builder.ToString(); } } }
獲取和更新選單
事件回應(yīng),自訂選單?相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!
熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

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

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)