C#开发微信公众号之消息自动回复

2024-08-22 03:18

本文主要是介绍C#开发微信公众号之消息自动回复,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作为计算机学院的学生的学生,时刻在打计算机学院官网的主意,前段时间我的一个好基友在我面前炫耀他的能够查课表的公众号(服务模拟登录返回数据),把我眼红得,所以我暗自下决心,自己一定要弄个微信公众号来玩玩儿。经过各种网上查资料,各种走弯路,还是实现了微信公众号机器人聊天功能。虽然这个很简单,但是网上完善而又详细的资料很难找,而且官网的开发文档只针对php语言发布了Demo,开发者文档简直坑爹,不过我还是忍不住分享出来,嘿嘿,下面我就开始分享我的经验了。

1、开发准备:你需要一台服务器或者虚拟主机,一个微信号,然后到微信公众平台注册一个账号,并且申请一个订阅号。PS:订阅号可以每天群发消息,服务号一个月只能发一次。所以首选订阅号,不要问我为什么,一个字,爽。

2、当你申请公众号成功了就可以群发消息了,不过这些只能手动群发,还有就是针对用户回复的消息不能做出只能的响应,要响应的话必须手动添加关键字回复,所以这样肯定是不行的,这个时候就需要进入开发这中心进行相关的配置,如下图:
这里写图片描述
具体详情点击我

很多人会卡在服务器验证这关,因为总是显示taken验证失败,那是因为开发者服务器没有返回数据或者返回的数据微信服务器不能识别,大家仔细看红框里的:
这里写图片描述
如果你很久都没有验证成功,你可以直接返回echostr参数内容,这样达到欺骗微信服务器的效果(不建议这样做,因为没有验证taken,安全性非常低,但是作为初学者,咱先把功能实现了再说,嘿嘿)。当然我整熟了后也是验证了的。

3、当你验证服务器成功了后,就可以开始开发服务器端了。

我先来一段服务器欺骗的接口代码(我用的是.ashx一般处理文件):

<%@ WebHandler Language="C#" Class="Login" %>using System;
using System.Web;public class Login : IHttpHandler
{public void ProcessRequest(HttpContext context){context.Response.ContentType = "text/plain";string echoString = HttpContext.Current.Request.QueryString["echoStr"];context.Response.Write(echoString);}public bool IsReusable{get{return false;}}}

直接撂到服务器上运行,不过你会发现网页会报错,不过不用担心,你按照报错的来修改web.config文件,就成功了。


好了,以上就是开发准备,接下来我将开始进入开发微信公众号服务端正题。

思路:
1、首先你得有一个图灵机器人的接口,这个时候你就要到图灵机器人官网注册账号,申请账号(希望你自己申请一个接口,不要用博主的,谢谢合作)。

2、服务器端接受到微信服务器发送过来的消息后,开发者写的接口直接爬取图灵接口所返回的数据,然后解析,转化成微信服务能够识别的数据格式,最后返回给微信服务器,这样微信服务器就会自动转发给指定openId的用户。

一、weixinapi.ashx(我用的是明文模式,所以把加密的代码注释了):

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Xml;
using WeiXinApi.Util;namespace WeiXinApi
{/// <summary>/// weixinapi 的摘要说明/// </summary>public class weixinapi : IHttpHandler{string sToken = null;string sAppID = null;string sEncodingAESKey = null;public void ProcessRequest(HttpContext context){try{Stream stream = context.Request.InputStream;byte[] byteArray = new byte[stream.Length];stream.Read(byteArray, 0, (int)stream.Length);string postXmlStr = System.Text.Encoding.UTF8.GetString(byteArray);if (!string.IsNullOrEmpty(postXmlStr)){XmlDocument doc = new XmlDocument();doc.LoadXml(postXmlStr);//if (string.IsNullOrWhiteSpace(sToken))//{//    DataTable dt = ConfigDal.GetConfig(WXMsgUtil.GetFromXML(do

这篇关于C#开发微信公众号之消息自动回复的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095084

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

C#从XmlDocument提取完整字符串的方法

《C#从XmlDocument提取完整字符串的方法》文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,... 方法1:通过XMLDocument的OuterXml属性,见XmlDocument类该方法获得的xm

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每