博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信公众平台接口,asp.net实现
阅读量:4979 次
发布时间:2019-06-12

本文共 8779 字,大约阅读时间需要 29 分钟。

原文:

我为自己的笑话网开发了一个微信公众平台的接口,在这里分享给大家,希望能对朋友们有帮助,如果有什么地方写的不好,好请大家指点!

首先是要进行认证,认证的时候,只需要在Page_Load事件里面单独去执行 认证的方法就可以了,具体代码见下面的RenZheng()

认证通过之后就可以对网友的消息进行处理,可以根据微信平台推送过来的数据进行分析!我相信大家在看到这篇文章的时候,在此之前肯定对平台都有所了解了,所以,废话不多说,直接上代码! 如果有什么疑问的欢迎加群:242384606 进行讨论!

protected void Page_Load(object sender, EventArgs e)        {            wxmessage wx = GetWxMessage();            string res = "";            //新用户添加            if (!string.IsNullOrEmpty(wx.EventName) && wx.EventName.Trim() == "subscribe")            {                string content = "";                content = "/:rose欢迎关注52冷笑话/:rose\n看笑话请直接回复“x”\n无聊时候还可以找我聊聊天哦!";                res = sendTextMessage(wx, content);            }            else            {                bool sendJoke = false;                //看笑话                List
xhList = new List
() { "x", "笑话", "笑話" }; foreach (string item in xhList) { if (wx.Content.Trim().ToLower().Contains(item)) { sendJoke = true; break; } } if (sendJoke) { JokeDemo joke = GetJoke(wx.FromUserName); if (string.IsNullOrEmpty(joke.Img)) { string title = string.Format("编号{0}:{1}\n-----------------\n", joke.ID, joke.Title); string content = joke.Content; if (content.Length > 300) { content = GetSubString(content, 300) + "\n-----------------\n点击连接阅读全文:URL" } res = sendTextMessage(wx, title + content); } else { res = sendPictureMessage(wx, joke); } } //智能学聊天 if (res == "" && Regex.IsMatch(wx.Content, "问(:|:)(.+?)答(:|:)(.+?)", RegexOptions.IgnoreCase)) { string content = ""; string key = Regex.Match(wx.Content, "问(:|:)(.+?)答(:|:)(.+?)", RegexOptions.IgnoreCase).Groups[2].Value.Trim(); int startIndex = wx.Content.IndexOf("答:") + 2; if (startIndex < 3) { startIndex = wx.Content.IndexOf("答:") + 2; } string rep = wx.Content.Substring(startIndex, wx.Content.Length - startIndex).Trim(); // Regex.Match(wx.Content, "问(:|:)(.+?)答(:|:)(.+?)", RegexOptions.IgnoreCase).Groups[4].Value; if ((new ChatBLL()).isExists(key)) { content = "/::)O啦!学会啦\n不信你问问!"; } else { if ((new ChatBLL()).Add(key, rep) > 0) { content = "好啦,这个问题我学会啦!\n你现在提问我吧!/::P"; } else { content = "糟糕了,系统出了点儿小意外!\n麻烦你再试一次!"; } } res = sendTextMessage(wx, content); } //未知情况 if (res == "") { string content = (new ChatBLL()).GetReplyByKey(wx.Content.Trim()); if (content == "") { content = "/:,@-D啊哦,你在说什么?\n你可以按照下面的格式告诉我:\n问:你说的话 答:你想让我说什么\n看笑话请直接回复“x”!"; } res = sendTextMessage(wx, content); } } Response.Write(res); } ///
/// 发送文字消息 /// ///
获取的收发者信息 ///
笑话内容 ///
private string sendTextMessage(wxmessage wx, string content) { string res = string.Format("
{2}
0
", wx.FromUserName, wx.ToUserName, DateTime.Now, 内容); return res; } ///
/// 发送图文消息 /// ///
获取的收发者信息 ///
笑话信息 ///
private string sendPictureMessage(wxmessage wx, JokeDemo joke) { StringBuilder sb = new StringBuilder(); sb.AppendFormat("
", wx.FromUserName); sb.AppendFormat("
", wx.ToUserName); sb.AppendFormat("
{0}
", DateTime.Now); sb.AppendFormat("
"); sb.AppendFormat("
1
"); sb.AppendFormat("
"); sb.AppendFormat("
<![CDATA[{0}]]>", 标题); sb.AppendFormat("
", 说明文字); sb.AppendFormat("
", 图片地址); sb.AppendFormat("
", 连接地址); sb.AppendFormat("
0
"); return sb.ToString(); } ///
/// 获取请求过来的微信信息 /// ///
private wxmessage GetWxMessage() { wxmessage wx = new wxmessage(); StreamReader str = new StreamReader(Request.InputStream, System.Text.Encoding.UTF8); XmlDocument xml = new XmlDocument(); xml.Load(str); wx.ToUserName = xml.SelectSingleNode("xml").SelectSingleNode("ToUserName").InnerText; wx.FromUserName = xml.SelectSingleNode("xml").SelectSingleNode("FromUserName").InnerText; wx.MsgType = xml.SelectSingleNode("xml").SelectSingleNode("MsgType").InnerText; if (wx.MsgType.Trim() == "text") { wx.Content = xml.SelectSingleNode("xml").SelectSingleNode("Content").InnerText; } if (wx.MsgType.Trim() == "event") { wx.EventName = xml.SelectSingleNode("xml").SelectSingleNode("Event").InnerText; } return wx; } ///
/// 微信认证 /// private void RenZheng() { #region 微信认证 //string res = ""; //string token = "52lxh"; //string signature = Request["signature"]; //string timestamp = Request["timestamp"]; //string nonce = Request["nonce"]; //string echostr = Request["echostr"]; //if (string.IsNullOrEmpty(token) || string.IsNullOrEmpty(signature) || string.IsNullOrEmpty(timestamp) || string.IsNullOrEmpty(nonce) || string.IsNullOrEmpty(echostr)) //{ // using (StreamWriter sw = new StreamWriter(Server.MapPath("wx.txt"))) // { // sw.Write("参数错误" + Request.Url); // } //} //else //{ // ArrayList arr = new ArrayList() { token, timestamp, nonce }; // arr.Sort(); // string signature1 = GetSHA1(arr[0].ToString() + arr[1].ToString() + arr[2].ToString()); // if (signature == signature1.ToLower()) // { // res = echostr; // } // else // { // res = "error"; // } // Response.Write(res); //} #endregion } ///
/// 加密字符串 /// ///
///
private string GetSHA1(string password) { string shh1string = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(password, "SHA1"); return shh1string; } ///
/// 截取字符串 /// ///
///
///
private string GetSubString(string content, int length) { if (content.Length >= length) { return content.Substring(0, length); } else { return content; } } //自定义一个微信消息实体类 class wxmessage { public string FromUserName { get; set; } public string ToUserName { get; set; } public string MsgType { get; set; } public string EventName { get; set; } public string Content { get; set; } }

   

随时欢迎您!

欢迎关注52冷笑话微信看笑话!

posted on
2014-12-24 17:23 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/4182883.html

你可能感兴趣的文章
软件工程-读书笔记(1-3章)
查看>>
iOS 电话在后台运行时,我的启动图片被压缩
查看>>
前端自动化测试之UI RECORDER(二、PC录制)
查看>>
Linq基本查询操作--帅选
查看>>
hdu 3496 二维费用的01背包
查看>>
poj 3159 差分约束+spfa
查看>>
Linux(Ubuntu)使用日记------tenserflow安装(pip安装法)
查看>>
《Linux权威指南》阅读笔记(2)
查看>>
高精度减法
查看>>
用css 实现凹陷的线条
查看>>
hadoop2.6.0实践:A03 例子验证
查看>>
Grails连接mysql数据库
查看>>
input-file 部分手机不能拍照问题
查看>>
C#面向对象编程
查看>>
ES6 随记(1)-- let 与 const
查看>>
Windows Server 2003中的网络负载平衡技术的实现方法
查看>>
Android 二维码 生成和识别(附Demo源码)
查看>>
[dt]世纪历史长河年代表
查看>>
DNS的域名/IP映射
查看>>
【转】C++ STL中常见容器的时间复杂度
查看>>