博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET 微信公众平台模板消息推送功能完整开发
阅读量:4588 次
发布时间:2019-06-09

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

  最近公众平台的用户提出了新需求,他们希望当收到新的邮件或者日程的时候,公众平台能主动推送一条提醒给用户。看了看平台提供的接口,似乎只有【模板消息】能尽量满足这一需求,但不得不说微信提供的实例太少,而且只有PHP的,不过摸索了一下还是成功的实现了。

  首先是准备工作,需要申请开通【模板消息】功能,网上教程很多。然后申请通过之后,用户可以从现有的模板里选择15个使用,也可以自己添加模板使用。这里吐槽一下:申请添加新的模板时,微信出于保护用户的目的禁止了一些“看起来会很频繁”的消息类型,比如这图里的——

  

  明明是客户的需求,结果微信认为会引起用户反感所以不通过 =L=

  后台代码:

  

///         /// 功能: 模板消息推送        ///         ///         /// 
public string ModelMessageSend(string data) { CancelView(); string url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + AccessToken; string result = RequestPost(data, url); if (result.Contains("ok")) { return "OK"; } else { return "result"; } }
     ///         /// 功能: 模拟Post请求        ///         /// json        /// url        /// 
public string RequestPost(string postData, string url) { byte[] data = Encoding.UTF8.GetBytes(postData); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "Post"; request.ContentType = "application/json"; request.ContentLength = data.Length; request.KeepAlive = true; Stream stream = request.GetRequestStream(); stream.Write(data, 0, data.Length); HttpWebResponse response; try { response = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { response = (HttpWebResponse)ex.Response; } StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); string content = reader.ReadToEnd(); request.Abort(); response.Close(); reader.Dispose(); stream.Close(); stream.Dispose(); return content; }

然后是关于传入的json数据需要注意,不能使用单引号!

Ex:{\"touser\":\"oHWXst6bEayYb0m91RtdU4FzxfKY\",\"template_id\":\"Gyi3hZCDK6Y8CmAubONfxoHW7VADuwxz9mO_dObWsE0\",\"url\":\"http://www.baidu.com\",\"topcolor\":\"#FF0000\",\"data\":{\"first\": {\"value\":\"新的通知\",\"color\":\"#173177\"},\"keyword1\":{\"value\":\"吃饭!\",\"color\":\"#173177\"},\"keyword2\":{\"value\":\"2015.03.16中午\",\"color\":\"#173177\"},\"keyword3\":{\"value\":\"食堂\",\"color\":\"#173177\"},\"keyword4\":{\"value\":\"张三李四王二麻子\",\"color\":\"#173177\"},\"remark\":{\"value\":\"爱吃吃不吃滚\",\"color\":\"#173177\"}}}

之前为了省事使用了单引号,结果一直提示data格式错误,把单引号换成\"后就成功了……

转载于:https://www.cnblogs.com/chyansblog/p/4341450.html

你可能感兴趣的文章
《Cracking the Coding Interview》——第5章:位操作——题目1
查看>>
类EF框架Chloe.ORM升级:只为更完美
查看>>
c++文件操作
查看>>
nodejs实现新闻爬虫
查看>>
关于left join (本文出处:http://www.cnblogs.com/aces/ )
查看>>
解决WebService 测试窗体只能用于来自本地计算机的请求
查看>>
Linux 用户和用户组详解
查看>>
深入理解DIP、IoC、DI以及IoC容器
查看>>
赋值文件
查看>>
Vue 数组 字典 template v-for 的使用
查看>>
蓝牙模块选择经验谈
查看>>
java中==和equals
查看>>
CCActionPageTurn3D
查看>>
python random
查看>>
esp32-智能语音-cli(调试交互命令)
查看>>
netty与MQ使用心得
查看>>
格式化输入1.%s占位输入法
查看>>
WinForm中的ListBox组件编程
查看>>
matplotlib柱状图
查看>>
jfinal初接触,一个简单的文件上传例子
查看>>