public void ClickEventReplyTextTest() { string xml = @"<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[CLICK]]></Event> <EventKey><![CDATA[TestKey]]></EventKey> </xml>"; IMessage message = MessageParser.ParseMessage(xml); IDebugMode debugMode = new DebugMode(true); ICache cache = new RedisCache(new Microsoft.Extensions.Caching.Redis.RedisCache(new Microsoft.Extensions.Caching.Redis.RedisCacheOptions() { Configuration = "127.0.0.1:6379,password=123456" })); IMessageRepetHandler messageRepetHandler = new MessageRepetHandler(cache, debugMode); IMessageReply <TextMessage> messageReply = new TextMessageReply(); ClickEvtMessageHandlerBase clickEvtMessageHandler = new ClickEventReplyTextHandler(messageReply); IMessageRepetValidUsage messageRepetValidUsage = new MessageRepetValidUsage(true); IMessageProcesser processer = new MessageProcesser(messageRepetHandler, messageRepetValidUsage, new TextMessageHandlerBase(), new ImageMessageHandlerBase(), new VoiceMessageHandlerBase(), new VideoMessageHandlerBase(), new ShortVideoMessageHandlerBase(), new LocationMessageHandlerBase(), new LinkMessageHandlerBase(), new SubscribeEvtMessageHandlerBase(), new UnsubscribeEvtMessageHandlerBase(), new ScanEvtMessageHandlerBase(), new LocationEvtMessageHandlerBase(), clickEvtMessageHandler); Console.WriteLine(processer.ProcessMessage(message)); }
/// <summary> /// 服务器配置 /// </summary> /// <param name="signature"></param> /// <param name="timestamp"></param> /// <param name="nonce"></param> /// <param name="echostr"></param> /// <param name="encrypt_type"></param> /// <param name="msg_signature"></param> /// <returns></returns> public async Task <IActionResult> Index(string signature, string timestamp, string nonce, string echostr, string encrypt_type, string msg_signature) { try { if (!string.IsNullOrEmpty(echostr)) { //服务器认证 if (_verifyer.VerifySignature(signature, timestamp, nonce, _baseSettings.Token)) { return(Content(echostr)); } else { return(Content("success")); } } else { //消息接收 using (var sr = new StreamReader(Request.Body)) { string data = await sr.ReadToEndAsync(); _logger.LogInformation(data); //接收消息中间处理 data = _messageMiddleware.ReceiveMessageMiddle(signature, msg_signature, timestamp, nonce, data); IMessage message = MessageParser.ParseMessage(data); string reply = _processer.ProcessMessage(message); //回复消息中间处理 reply = _messageMiddleware.ReplyMessageMiddle(reply); return(Content(reply)); } } } catch (Exception ex) { _logger.LogError("Error", ex); return(Content("success")); } }