示例#1
0
        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));
        }
示例#2
0
        /// <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"));
            }
        }