C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)
C#/ASP.NET MVC微信接口开发文章目录:
1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台
2.C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)
一、拼凑回复的XML字符串
微信被动回复的形式有一下六种:
- 1 回复文本消息
- 2 回复图片消息
- 3 回复语音消息
- 4 回复视频消息
- 5 回复音乐消息
- 6 回复图文消息
分别对应不同的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/
微信开发群
完整源码下载:https://github.com/xiejun-net/weixin
转载于:https://www.cnblogs.com/net-xiejun/p/4661111.html
C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)相关推荐
- 微信公众号接口之自动回复,根据接收文本回复消息(二)
根据微信公众号设置的回调地址,设置的文件名字,把当前代码当进去,改成回调地址的文件名,即可完成,具体内容以下有注释. <?php header('content-type:text/html;c ...
- HTML5期末大作业:学生网页设计——微信公众号6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计
HTML5期末大作业:学生网页设计--微信公众号6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计 HTML+CSS+JavaScript(毕业设计) 常见网页设计作业题材有 ...
- ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境
首先你得注册并认证一个个人或企业的微信公众号===服务号从而确保获得以下接口权限: 然后打开公众号设置里的功能设置里找到业务域名和网页授权域名分别填上你的域名(注:已备案的域名),如下图所示: 到这里 ...
- 微信公众号-接口配置信息url和tokken
一.接入指南 https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html 接入概述 ...
- 云服务器有token_配置node服务器并且链接微信公众号接口配置
配置node服务器并且链接微信公众号接口配置 配置node服务器 在购买好服务器后,用Xshell链接到服务器. 1.安装nvm curl -o- https://raw.githubusercont ...
- 配置node服务器并且链接微信公众号接口配置(超详细)
配置node服务器 在购买好服务器后,用Xshell链接到服务器. 1.安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.3 ...
- 微信公众号接口类(PHP版本)
[项目需求] 通过微信提供的接口,实现微信公众号与后端的应用程序数据交互.消息响应等功能. [项目疑难点] 理解接口工作方式,统一接口API,响应速度.安全性等 [代码举例] WeixinApi.cl ...
- 微信支付、微信公众号接口认证方案
1 微信公众号接口认证方案 1.1 认证流程 安全API接口认证方案 流程图模板_ProcessOn思维导图.流程图www.processon.com/view/link/636e05a21e085 ...
- C# 调用微信公众号接口发送客服消息示例
客服消息发送比较简单 注:指定openid和消息内容使用Post发送就可以,很多时候需要在触发事件或相应的情况下发送 官方文档:https://mp.weixin.qq.com/wiki?t=reso ...
- 微信公众号php发送图片素材,php版微信公众号接口实现发红包的方法
本文实例讲述了php版微信公众号接口实现发红包的方法.分享给大家供大家参考,具体如下: 最近接到一个任务,需要用微信来给用户自动发红包.要完成这个任务需要这么已经一些物料 微信商户号,已申请微信支付 ...
最新文章
- Android官方开发文档Training系列课程中文版:通知用户之构建通知
- makefile中使用变量
- python调用系统api_Python调用系统底层API播放wav文件的方法
- 多线程 空值线程数_【开发者成长】深入理解多线程编程
- Android之滑动事件冲突解决 Touch事件处理机制总结
- CentOS 7 yum 安装php5.6
- sleep(),wait(),yield(),notify()
- 数据归一化处理方法_科研常用的实验数据分析与处理方法
- js 返回上一页和刷新以及页面跳转
- 随机取出若干条记录的SQL语句
- 练手|常见近30种NLP任务的练手项目
- python-获取当前文件名
- 第五章 事务 视图 索引 备份和恢复
- 金庸年度双十佳广告爆笑版 (1)
- 幼儿抽象逻辑思维举例_什么是幼儿的逻辑思维能力?训练好逻辑思维,让孩子学习事半功倍...
- nba球员数据分析和可视化_可视化NBA球员统计
- GBase 8a MPP Cluster 维护-日志篇
- 计算机专业大一期末总结
- Android 适配 64 位架构
- 基于Java的宿舍管理系统
热门文章
- 原生Django常用API 参数
- 数据通信与计算机网络第2版,数据通信与计算机网络(第2版)习题1
- libSM.so.6: cannot open shared object file: No such file or directoryapt-file search libSM.so.6
- model.load_state_dict(checkpoint[‘state_dict‘]) KeyError: ‘state_dict‘
- Caffe傻瓜系列(4):其它常用层及参数
- 面试必会 InnoDB的多版本并发控制(MVCC)
- android多线程中更新ui,Android 在子线程中更新UI
- 如何用BootStrap栅格系统实现响应式布局
- 区块链 solidity 快排
- 并发(concurrent)、并行(parallel)、顺序(sequential)、串行(serial)是什么 区别