Example #1
0
 public void Push(string user, WeixinRequest request)
 {
     if (!mCache.ContainsKey(user))
     {
         mCache[user] = new FixedSizedQueue<RequestPing>(4);
     }
 }
Example #2
0
        private ContentResult onWeixinRequestReceived(WeixinRequest reqMsg)
        {
            var user = reqMsg.FromUserName;
            if (reqMsg is TextRequest)
            {
                var req = reqMsg as TextRequest;
                var keyword = req.Content;

                //ping测试
                if (keyword == "@p")
                {
                    return Content(new TextResponse(user, reqMsg.HowMuchSecondsPassedAfterCreated.ToString()).ToString());
                }
                //web界面登录
                else if (keyword == "?")
                {
                    var rsp = getWebAppRsp(user, Request).ToString();
                    Console.WriteLine(rsp);
                    return Content(rsp);
                }
                //表情的过滤
                else if (keyword.StartsWith("/:"))
                {
                    return Content(new TextResponse(user, keyword).ToString());
                }
                //留言建议
                else if (keyword.StartsWith("@"))
                {
                    return Content(new TextResponse(user, " /::)") { FuncFlag = 1 }.ToString());
                }
                //关注
                else if (keyword == "Hello2BizUser")
                {
                    return onSubscribed(reqMsg);
                }

                LibrarySearchOption option;
                string errMsg;

                ContentResult result = null;
                var stopWatch = Stopwatch.StartNew();
                if (UserCommand.GetInstance().OnMessage(user, keyword, out option, out errMsg))
                {
                    result = Content(Library.GetInstance().GetRspForSearch(Session, Request, option).ToString());
                }
                else
                {
                    result = Content(new TextResponse(user, errMsg).ToString());
                }
                stopWatch.Stop();
                ApplicationLogger.GetLogger().Info("(" + Session.SessionID + ")" +
                    user + " search for " + keyword + " consume " + stopWatch.ElapsedMilliseconds);
                return result;
            }
            else if (reqMsg is EventRequest)
            {
                var req = reqMsg as EventRequest;
                if (req.Event == "subscribe")
                {
                    return onSubscribed(req);
                }
                else if (req.Event == "unsubscribe")
                {
                    return onUnsubscribed(req);
                }
                else
                {
                    return Content(new TextResponse(user, "暂未支持,敬请期待").ToString());
                }
            }
            else
            {
                return Content(new TextResponse(user, "暂未支持,敬请期待").ToString());
            }
        }
Example #3
0
 private ContentResult onSubscribed(WeixinRequest reqMsg)
 {
     return Content(new TextResponse(reqMsg.FromUserName, Consts.WELCOME).ToString());
 }