上述代码中的CustomMessageHandler是一个自定义的类,继承自Senparc.Weixin.MP.MessageHandler.cs 。MessageHandler是一个抽象类,包含了执行各种不同请求类型的抽象方法(如文字,语音,位置、图片等等),我们只需要在自己创建的CustomMessageHandler中逐个实现这些方法就可以了 。刚建好的CustomMessageHandler.cs如下:
using System;using System.IO;using Senparc.Weixin.MP.MessageHandlers;using Senparc.Weixin.MP.Entities;namespace Senparc.Weixin.MP.Sample.CustomerMessageHandler{public class CustomMessageHandler : MessageHandler<MessageContext>{public public CustomMessageHandler(Stream inputStream, PostModel postModel, int maxRecordCount = 0): base(inputStream, postModel, maxRecordCount){}public override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage){//ResponseMessageText也可以是News等其他类型var responseMessage = CreateResponseMessage<ResponseMessageText>();responseMessage.Content = "这条消息来自DefaultResponseMessage 。";return responseMessage;}public override IResponseMessageBase OnTextRequest(RequestMessageText requestMessage){//...}public override IResponseMessageBase OnVoiceRequest(RequestMessageVoice requestMessage){//...}//更多没有重写的OnXX方法,将默认返回DefaultResponseMessage中的结果 。....}}其中OnTextRequest、OnVoiceRequest等分别对应了接收文字、语音等不同的请求类型 。
比如我们需要对文字类型请求做出回应,只需要完善OnTextRequest方法:
public override IResponseMessageBase OnTextRequest(RequestMessageText requestMessage){//TODO:这里的逻辑可以交给Service处理具体信息,参考OnLocationRequest方法或/Service/LocationSercice.csvar responseMessage = CreateResponseMessage<ResponseMessageText>();responseMessage.Content = string.Format("您刚才发送了文字信息:{0}", requestMessage.Content);return responseMessage;}这样CustomMessageHandler在执行messageHandler.Execute()的时候,如果发现请求信息的类型是文本,会自动调用以上代码,并返回代码中的responseMessage作为返回信息 。responseMessage可以是IResponseMessageBase接口下的任何类型(包括文字、新闻、多媒体等格式) 。
推荐阅读
- 黑客如何通过防火墙规则和IP安全策略关闭危险端口
- 好用的企业邮箱怎么选择?可用邮箱大全
- 物业安全管理处罚种类的相关规定
- 路摊油炸饼的做法大全
- 菩提树图片,芦荟图片芦荟品种辨别图片大全
- 电动车|这些错误的电动车充电方式:90%的人全中
- 北京旅行全攻略‖吃住行游购娱,一篇搞定
- 牛膝煲汤做法大全,雪莲果煲汤的做法功效
- 速勃壮阳药品牌大全,男杏使用壮阳药好吗
- 微信额度提升怎么操作?
