C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)

时间:2022-08-28 08:21:33

C#/ASP.NET MVC微信接口开发文章目录:

1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台

2.C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)

一、拼凑回复的XML字符串

微信被动回复的形式有一下六种:

分别对应不同的XML形式,这里以文本消息和图文为例,读者举一反三其他的类似,不再赘述:

回复的文本消息:

 /// <summary>
/// 回复文本
/// </summary>
/// <param name="FromUserName">发送给谁(openid)</param>
/// <param name="ToUserName">来自谁(公众账号ID)</param>
/// <param name="Content">回复类型文本</param>
/// <returns>拼凑的XML</returns>
public static string ReText(string FromUserName, string ToUserName,string Content)
{
string XML = "<xml><ToUserName><![CDATA[" + FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + ToUserName + "]]></FromUserName>";//发送给谁(openid),来自谁(公众账号ID)
XML += "<CreateTime>" + sohovan.com.common.CommonMethod.ConvertDateTimeInt(DateTime.Now) + "</CreateTime>";//回复时间戳
XML += "<MsgType><![CDATA[text]]></MsgType>";//回复类型文本
XML += "<Content><![CDATA["+ Content + "]]></Content><FuncFlag>0</FuncFlag></xml>";//回复内容 FuncFlag设置为1的时候,自动星标刚才接收到的消息,适合活动统计使用
return XML;
}

回复单图文:

 /// <summary>
/// 回复单图文
/// </summary>
/// <param name="FromUserName">发送给谁(openid)</param>
/// <param name="ToUserName">来自谁(公众账号ID)</param>
/// <param name="Title">标题</param>
/// <param name="Description">详情</param>
/// <param name="PicUrl">图片地址</param>
/// <param name="Url">地址</param>
/// <returns>拼凑的XML</returns>
public static string ReArticle(string FromUserName, string ToUserName, string Title, string Description, string PicUrl, string Url)
{
string XML = "<xml><ToUserName><![CDATA[" + FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + ToUserName + "]]></FromUserName>";//发送给谁(openid),来自谁(公众账号ID)
XML += "<CreateTime>" + sohovan.com.common.CommonMethod.ConvertDateTimeInt(DateTime.Now) + "</CreateTime>";//回复时间戳
XML += "<MsgType><![CDATA[news]]></MsgType><Content><![CDATA[]]></Content><ArticleCount>1</ArticleCount><Articles>";
XML += "<item><Title><![CDATA[" + Title + "]]></Title><Description><![CDATA[" + Description + "]]></Description><PicUrl><![CDATA[" + PicUrl + "]]></PicUrl><Url><![CDATA[" + Url + "]]></Url></item>";
XML += "</Articles><FuncFlag>0</FuncFlag></xml>";
return XML;
}

多图文可以根据项目需求举一反三,这里给个例子:

 /// <summary>
/// 多图文回复
/// </summary>
/// <param name="FromUserName">发送给谁(openid)</param>
/// <param name="ToUserName">来自谁(公众账号ID)</param>
/// <param name="ArticleCount">图文数量</param>
/// <param name="dtArticle"></param>
/// <returns></returns>
public static string ReArticle(string FromUserName, string ToUserName, int ArticleCount, System.Data.DataTable dtArticle)
{
string XML = "<xml><ToUserName><![CDATA[" + FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + ToUserName + "]]></FromUserName>";//发送给谁(openid),来自谁(公众账号ID)
XML += "<CreateTime>" + sohovan.com.common.CommonMethod.ConvertDateTimeInt(DateTime.Now) + "</CreateTime>";//回复时间戳
XML += "<MsgType><![CDATA[news]]></MsgType><Content><![CDATA[]]></Content><ArticleCount>" + ArticleCount + "</ArticleCount><Articles>";
foreach (System.Data.DataRow Item in dtArticle.Rows)
{
XML += "<item><Title><![CDATA[" + Item["Title"] + "]]></Title><Description><![CDATA[" + Item["Description"] + "]]></Description><PicUrl><![CDATA[" + Item["PicUrl"] + "]]></PicUrl><Url><![CDATA[" + Item["Url"] + "]]></Url></item>";
}
XML += "</Articles><FuncFlag>0</FuncFlag></xml>";
return XML;
}

二、回复消息即在微信请求我们地址的时候根据请求的情况回复我们想给的XML字符串

这里情况比较多,可以根据项目需求做对于的设置,编写一个网站后台管理关键字、图片、语音回复等等

这里以文本为例,根据文本的内容(即关键字)回复文本还是回复图文消息:

根据文本得到XML:

 public static string GetText(string FromUserName, string ToUserName, string Content)
{
sohovan.com.common.CommonMethod.WriteTxt(Content);//接收的文本消息
string XML = "";
switch (Content) {
case "关键字":
XML = ReText(FromUserName, ToUserName, "关键词回复测试");
break;
case"单图文":
XML = ReArticle(FromUserName, ToUserName, "测试标题", "测试详情——百度搜索链接", "http://pic.cnblogs.com/avatar/743013/20150521120816.png", "http://www.baidu.com");
break;
default:
XML = ReText(FromUserName, ToUserName, "无对应关键字");
break;
}
return XML;
}

根据接收的消息WxXmlModel回复消息:

 private void ResponseXML(WxXmlModel WxXmlModel)
{
string XML = "";
switch (WxXmlModel.MsgType)
{
case "text"://文本回复
XML = sohovan.com.wxapi.ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.Content);
break;
default://默认回复
break;
}
HttpContext.Current.Response.Write(XML);
HttpContext.Current.Response.End();
}

本文版权归作者(谢俊)和博客园所有,欢迎转载,转载请标明出处。

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

微信开发群C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)

完整源码下载:https://github.com/xiejun-net/weixin

C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)的更多相关文章

  1. C&num;&sol;ASP&period;NET MVC微信公众号接口开发之从零开发(四) 微信自定义菜单&lpar;附源码&rpar;

    C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...

  2. C&num;&sol;ASP&period;NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML&lpar;附源码&rpar;

    文章导读: C#微信公众号接口开发之从零开发(一) 接入微信公众平台 微信接入之后,微信通过我们接入的地址进行通信,其中的原理是微信用户发送消息给微信公众账号,微信服务器将消息以xml的形式发送到我们 ...

  3. C&num;&sol;ASP&period;NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台

    微信公众平台接入:其实很简单,把两个参数(地址和token)填入微信公众平台后台,暂时选择明文模式 ,其中token自己定义.微信服务器会根据后台填写的地址访问,并且带上对于的参数 如 url+&am ...

  4. ASP&period;NET MVC 微信公众号支付,微信公众平台配置

    微信公众号支付,首先要登录微信公众号进行配置: 第一步:配置网页授权域名

  5. asp&period;net mvc 微信公众号token验证

    本人的公众号要申请成为开发者,必须经过token认证.微信公众号的官方代码只列出了PHP代码的实例,明显是歧视.net用户.我用的asp.net mvc中的web api,结果调了好久都没有成功,最后 ...

  6. C&num;微信公众号接口开发,灵活利用网页授权、带参数二维码、模板消息,提升用户体验之完成用户绑定个人微信及验证码获取

    一.前言 当下微信公众号几乎已经是每个公司必备的,但是大部分微信公众账号用户体验都欠佳,特别是涉及到用户绑定等,需要用户进行复杂的操作才可以和网站绑定,或者很多公司直接不绑定,而是每次都让用户填写账号 ...

  7. ASP&period;NET MVC4 微信公众号开发之网页授权(一):搭建基础环境

    首先你得注册并认证一个个人或企业的微信公众号===服务号从而确保获得以下接口权限: 然后打开公众号设置里的功能设置里找到业务域名和网页授权域名分别填上你的域名(注:已备案的域名),如下图所示: 到这里 ...

  8. ASP&period;NET MVC4 微信公众号开发之网页授权(二):通过公众号AppID&lpar;应用ID&rpar;和AppSecret&lpar;应用密钥&rpar;取得网页授权openid

    ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境 通过了上一篇文章我们已经搭建好了基础开发大环境,现在打开开发环境这里我用的是 vs2013,通过如下方式: 拼接请求链接重定向到 ...

  9. 微信公众号接口类&lpar;PHP版本&rpar;

    [项目需求] 通过微信提供的接口,实现微信公众号与后端的应用程序数据交互.消息响应等功能. [项目疑难点] 理解接口工作方式,统一接口API,响应速度.安全性等   [代码举例]   WeixinAp ...

随机推荐

  1. linux install StarDict

    1. sudo apt-get install stardict 2. Downloads from: http://abloz.com/huzheng/stardict-dic/zh_CN/ 3. ...

  2. 电脑设置固定ip

  3. config windows virtual machine on mac

    1.download virtualbox  and related extension pack from http://www.oracle.com/technetwork/server-stor ...

  4. Why is celsius &equals; 5 &ast; &lpar;fahr - 32&rpar; &sol; 9 &quest;

    Go to my personal blog There is a program to print Fahrenheit-Celsius table as below. #include <s ...

  5. Linux 特殊用户权限 suid&comma;sgid&comma; sticky

    每个进程会维护有如下6个ID: 真实身份 : real UID, readl GID --> 登录 shell 使用的身份 有效身份 : effective UID, effective GID ...

  6. PyCharmMarkdown插件的方法

    arkdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 从github下载的代码一般都会带有README.md文件,该文件是一个Markdo ...

  7. Alpha&lpar;9&sol;10&rpar;

    鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...

  8. k8s部署spring-boot项目失败

    现象:spring-boot项目启动到某个地方停止,然后容器重启 解决:扩大内存和核心数

  9. 得到一个Object的属性

    private static object GetPropertyValue(object obj, string property) { System.Reflection.PropertyInfo ...

  10. 评审other&&num;39&semi;s意见

    评审意见 1.组 a.界面不友好 b.没连数据库 2.组 a.没连数据库 b.无智能匹配当前时间 3.组 a.基本功能实现 b.界面未优化 4.组 ourselves 5.组 a.各反面较为完善 6. ...