本文转载自微信公众号「鹏翔」,作者AZRNG。转载本文请联系鹏翔公众号。Senparc.WeixinSDK是Senparc团队自主研发的微信模块开发包(C#SDK)。全面支持微信公众号、小程序、微信支付、企业号、开放平台、JSSDK、摇一摇周边等模块。有些东西已经封装在sdk里面了,我们就不用再做那些繁琐的操作了。例子要连接微信公众号,首先要有一个微信帐号公众号(我本来用的是自己的公众号,但是很多好玩的功能没有权限,需要微信认证)。我们可以通过微信申请一个测试账号来学习如何使用,测试账号的申请地址可以直接体验和测试公众平台的所有高级接口。https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login通过测试账号可以通过VS2019获取我们想要的微信参数信息公众号(好想体验尽快VS2022)新建.Net5WebApi程序安装组件为了方便(偷懒),我直接用了邮递员代码生成的RestSharp请求,因此安装了包。添加配置//CO2NET"SenparcSetting":{"IsDebug":true,"DefaultCacheNamespace":"DefaultCache"//缓存以前缀区分},//Senparc.WeixinSDK"SenparcWeixinSetting":{"IsDebug":true,"Token":"token","EncodingAESKey":"EncodingAESKey","WeixinAppId":"appid","WeixinAppSecret":"secret"}通过配置IsDebug,可以配置是否以Debug模式运行。关于SenparcWeixinSetting为什么叫这个名字?是因为注册服务services.AddMemoryCache()//使用本地缓存必须在配置中写的ConfigureServices中添加。AddSenparcWeixinServices(Configuration);//Senparc.Weixin注册(必须)也可以使用redis等其他方法在Configure中存储配置信息和开启服务//注册Senparc.Weixin和基础库app.UseSenparcGlobal(env,senparcSetting.Value,_=>{},true).UseSenparcWeixin(senparcWeixinSetting.Value,weixinRegister=>weixinRegister.RegisterMpAccount(senparcWeixinSetting.Value));通过这些配置我们可以获取accesstokenvaraccessToken=awaitAccessTokenContainer.GetAccessTokenAsync(_configuration["SenparcWeixinSetting:WeixinAppId"]).ConfigureAwait(假);自定义消息回复要实现对用户消息的接受和回复,我们需要继承MessageHandler,新建一个CustomerMessageHandler类。这个类实现了网上说的价值1亿的AI核心代码,看到就赚到。//////自定义消息处理程序///publicclassCustomerMessageHandler:MessageHandler{publicCustomerMessageHandler(StreaminputStream,PostModelpostModel,intmaxRecordCount=0,IServiceProviderserviceProvider=null):base(inputCountStream,postModelpostModel,intmaxRecordCount=0,IServiceProviderserviceProvider=null):base(inputCountStream,postModel,maxRecord,false,null){}//////以文本形式回复发送的消息(可选)//publicoverrideasyncTaskOnTextRequestAsync(RequestMessageTextrequestMessage){varresponseMessage=base.CreateResponseMessage();//awaitSenparc.Weixin.MP.AdvancedAPIs.CustomApi.SendTextAsync(Config.SenparcWeixinSetting.MpSetting.WeixinAppId,OpenId,);//注意:只有测试account或者部署到官方环境的官方服务账号可以使用这个接口//responseMessage.Content=$"Yousenttext:{requestMessage.Content}\r\n\r\nYourOpenId:{OpenId}";//ResponseMessage.Content=requestMessage.Content.Replacewithtextmessage("?","").Replace('?','!').Replace('?','!');returnresponseMessage;}///<摘要>///默认消息///publicoverrideIResponseMessageBaseDefaultResponseMessage(IRequestMessageBaserequestMessage){varresponseMessage=base.CreateResponseMessage();responseMessage.Content="Welcometomy公众号!";returnresponseMessage;}}启用消息处理器//使用中间件注册MessageHandler,指定CustomMessageHandler为自定义处理方法=context=>senparcWeixinSetting.Value;});此时我们已经实现了接收和回复用户消息的代码,但是还需要在微信平台进行配置(为了让微信可以向这段代码发送消息,我使用了微信的内网穿透功能来accessthisaddress)如果修改接口配置信息并提交成功,则表示微信可以调用该接口。这个时候可以关注微信测试号,发消息查看结果自定义菜单通过编写接口[HttpGet]publicasyncTaskGetAsync(){varaccessToken=awaitAccessTokenContainer.GetAccessTokenAsync(_configuration["SenparcWeixinSetting:WeixinAppId"]).ConfigureAwait(false);varbg=newButtonGroup();实现自定义菜单配置。varoneSubButton=newSubButton{name="基础知识",sub_button=newList{newSingleViewButton{name="Log",url="https://XXXXXX/appmsgalbum?__biz=MzU4MjU4NjgyOQ==&action=getalbum&album_id=1841538022157172741#wechat_red",}}};bg.button.Add(oneSubButton);bg.button.Add(newSingleViewButton{name="文章目录",url="https://www.yuque.com/docs/share/9aed821e-9115-41c7-a0cd-6b691ad7e400"});varresult=CommonApi.CreateMenu(accessToken,bg);return"success"+result;}参考地址:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html通过调用该接口实现自定义菜单配置,显示如下菜单参考文档GitHub:https://github.com/JeffreySu/WeiXinMPSDKsdk文档地址:https://www.cnblogs.com/szw/p/weixin-合作社urse-index.html