怎样用电脑做网站,网页设计入门教程电子书下载,东台网页定制,网站建设目标的文字开篇语在6月5号#xff0c;我报名去参加了微软举办的一个线下分享的技术市集#xff0c;分享人是苏老师和赵老师(非常感谢)#xff0c;其中苏老师讲述了关于一些容器的部署等操作(也可以观看我的历史文章)#xff0c;其中关于部署的示例代码是使用盛派微信SDK做了一个对接微… 开篇语在6月5号我报名去参加了微软举办的一个线下分享的技术市集分享人是苏老师和赵老师(非常感谢)其中苏老师讲述了关于一些容器的部署等操作(也可以观看我的历史文章)其中关于部署的示例代码是使用盛派微信SDK做了一个对接微信回复消息的动能又一次引起了我的好奇(之前是自己看微信文档对接、进行配置验证保存access_token等操作)通过该sdk可以帮助我们省下不少事情来让我们少加班。下面我就通过该sdk来实现两个简单的功能。介绍Senparc.Weixin SDK 是由盛派网络Senparc团队自主研发的针对微信各模块的开发套件C# SDK已全面支持微信公众号、小程序、微信支付、企业号、开放平台、JSSDK、摇一摇周边等模块。有一些东西都已经封住在sdk里面不需要我们再进行那些繁琐的操作。示例要对接微信公众号我们首先得有一个微信公众号(我本来是使用我自己公众号奈何好多好玩的功能没有权限需要微信认证)我们可以通过微信申请测试号来学习使用申请地址 该测试号可以直接体验和测试公众平台的所有高级接口。https://mp.weixin.qq.com/debug/cgi-bin/sandbox?tsandbox/login通过测试号我可以可以得到我们想要的微信公众号参数信息image.png通过VS2019(好想尽快体验VS2022)新建一个.Net5 WebApi程序安装组件 PackageReference IncludeRestSharp Version106.11.7 / PackageReference IncludeSenparc.Weixin.MP Version16.12.101-preview2 /PackageReference IncludeSenparc.Weixin.MP.Middleware Version0.3.100.1-preview2 /PackageReference IncludeSwashbuckle.AspNetCore Version5.6.3 /
为了方便(偷懒)我直接使用了postman生成的RestSharp请求代码因此装了该包。添加配置 //CO2NET SenparcSetting: {IsDebug: true,DefaultCacheNamespace: DefaultCache //缓存通过前缀区分},//Senparc.Weixin SDKSenparcWeixinSetting: {IsDebug: true,Token: token,EncodingAESKey: EncodingAESKey,WeixinAppId: appid,WeixinAppSecret: secret}
通过配置IsDebug可以配置是否以Debug模式运行。关于SenparcWeixinSetting为何叫做这个名字是因为配置中写死的image.pngConfigureServices中注册服务 services.AddMemoryCache()//使用本地缓存必须添加.AddSenparcWeixinServices(Configuration);//Senparc.Weixin 注册必须
也可以采用redis等其他方法存储配置信息等Configure中启用服务 //注册 Senparc.Weixin 及基础库app.UseSenparcGlobal(env, senparcSetting.Value, _ { }, true).UseSenparcWeixin(senparcWeixinSetting.Value,weixinRegister weixinRegister.RegisterMpAccount(senparcWeixinSetting.Value));
通过这些配置我们可以获取accesstokenvar accessToken await AccessTokenContainer.GetAccessTokenAsync(_configuration[SenparcWeixinSetting:WeixinAppId]).ConfigureAwait(false);
自定义消息回复要实现接受用户的消息并且做出回应我们需要继承MessageHandler新建CustomerMessageHandler类该类中实现了网上说的价值一个亿的AI核心代码看到就是赚到。 /// summary/// 自定义消息处理器/// /summarypublic class CustomerMessageHandler : MessageHandlerDefaultMpMessageContext{public CustomerMessageHandler(Stream inputStream, PostModel postModel, int maxRecordCount 0, IServiceProvider serviceProvider null): base(inputStream, postModel, maxRecordCount, false, null){}/// summary/// 回复以文字形式发送的信息可选/// /summarypublic override async TaskIResponseMessageBase OnTextRequestAsync(RequestMessageText requestMessage){var responseMessage base.CreateResponseMessageResponseMessageText();// await Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendTextAsync(Config.SenparcWeixinSetting.MpSetting.WeixinAppId, OpenId,);//注意只有测试号或部署到正式环境的正式服务号可用此接口//responseMessage.Content $你发送了文字{requestMessage.Content}\r\n\r\n你的OpenId{OpenId};//以文字类型消息回复responseMessage.Content requestMessage.Content.Replace(吗, ).Replace(?, !).Replace(, !);return responseMessage;}/// summary/// 默认消息/// /summarypublic override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage){var responseMessage base.CreateResponseMessageResponseMessageText();responseMessage.Content 欢迎来到我的公众号;return responseMessage;}}
启用消息处理器 //使用中间件注册 MessageHandler指定 CustomMessageHandler 为自定义处理方法app.UseMessageHandlerForMp(/weixinmsg,(stream, postModel, maxRecordCount, serviceProvider) new CustomerMessageHandler(stream, postModel, maxRecordCount, serviceProvider),options { options.AccountSettingFunc context senparcWeixinSetting.Value; });
这个时候我们已经实现了用户消息的接收和回复代码不过还需要在微信平台进行配置(为了可以让微信发送消息到该代码我使用了内网穿透功能供微信访问该地址)image.png如果你修改接口配置信息提交成功说明微信可以调通该接口这个时候就可以关注微信测试号发送消息查看结果。image.png自定义菜单通过编写接口来实现自定义菜单配置 [HttpGet]public async Taskstring GetAsync(){var accessToken await AccessTokenContainer.GetAccessTokenAsync(_configuration[SenparcWeixinSetting:WeixinAppId]).ConfigureAwait(false);var bg new ButtonGroup();var oneSubButton new SubButton{name 基础知识,sub_button new ListSingleButton{new SingleViewButton{name 日志,url https://XXXXXX/appmsgalbum?__bizMzU4MjU4NjgyOQactiongetalbumalbum_id1841538022157172741#wechat_redirect,}}};bg.button.Add(oneSubButton);bg.button.Add(new SingleViewButton{name 文章目录,url https://www.yuque.com/docs/share/9aed821e-9115-41c7-a0cd-6b691ad7e400});var result CommonApi.CreateMenu(accessToken, bg);return 成功 result;}
参考地址https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html通过调用该接口实现自定义菜单配置显示下面的菜单image.png参考文档GitHubhttps://github.com/JeffreySu/WeiXinMPSDKsdk文档地址https://www.cnblogs.com/szw/p/weixin-course-index.html