Exemplo n.º 1
0
        public void DeseriableToXML()
        {
            var model = new TextResponseMessage
            {
                Content = "6666",
                //CreateTime = 123423,
                //FromUserName = "******",
                MsgType    = "fff",
                ToUserName = "******"
            };

            //string result = new WxTextResponse().Response(model);
        }
Exemplo n.º 2
0
 /// <summary>
 /// 响应消息
 /// </summary>
 /// <param name="response">请求消息</param>
 /// <param name="param">请求参数</param>
 /// <returns></returns>
 public string Execute(BaseRequestMessage request, EnterParamEntity param)
 {
     string result = string.Empty;
     var requestType = (MsgTypeRequestEnum)Enum.Parse(typeof(MsgTypeRequestEnum), request.MsgType.ToUpperInvariant());
     BaseResponseMessage responseModel = null;
     switch (requestType)
     {
         //文本消息
         case MsgTypeRequestEnum.TEXT:
             responseDelegate = CreateResponseMessageFromText;
             result = responseDelegate(request, param);
             break;
         #region MyRegion
         //图片消息
         case MsgTypeRequestEnum.IMAGE:
             responseModel = new TextResponseMessage
                 {
                     FromUserName = request.ToUserName,
                     ToUserName = request.FromUserName,
                     MsgType = MsgTypeResponseEnum.TEXT.ToString().ToLower(),
                     Content = "您好,您发送了一张图片!"
                 };
             result = MessageFactory.CreateResponseType(responseModel, param, MsgTypeResponseEnum.TEXT);
             break;
         //视频消息
         case MsgTypeRequestEnum.VIDEO:
             return "";
         //链接消息
         case MsgTypeRequestEnum.LINK:
             return "";
         //地理消息
         case MsgTypeRequestEnum.LOCATION:
             return "";
         //短视频消息
         case MsgTypeRequestEnum.SHORTVIDEO:
             return "";
         //音频消息
         case MsgTypeRequestEnum.VOICE:
             return "";
         default: return "";
         #endregion
     }
     return result;
 }
Exemplo n.º 3
0
        public CommandResult ProcessMessage(Update inUpdate)
        {
            ResponseMessage resMes = null;

            if (inUpdate.Type == Telegram.Bot.Types.Enums.UpdateType.EditedMessage)
            {
                resMes = new QuoteTextResponseMessage(inUpdate.EditedMessage, "Не хорошо править старые сообщения");
            }
            else if (inUpdate.Type == Telegram.Bot.Types.Enums.UpdateType.MessageUpdate)
            {
                Message message = inUpdate.Message ?? inUpdate.EditedMessage;
                if ((message != null) && (!string.IsNullOrEmpty(message?.Text)))
                {
                    resMes = new TextResponseMessage(message, $"Эхо: {message.Text?.Substring(0, Math.Min(255, message.Text?.Length ?? 0))}");
                }
                else
                {
                    resMes = new TextResponseMessage(message, "Ничего не понимаю");
                }
            }
            return(new CommandResult(resMes, false));
        }
Exemplo n.º 4
0
        /// <summary>
        /// Process messages
        /// </summary>
        /// <param name="inUpd"></param>
        /// <returns></returns>
        private async Task <bool> ProcessTgUpdate(Telegram.Bot.TelegramBotClient bot, Update inUpd)
        {
            CommandResult comRes  = null;
            Message       message = inUpd.Message ?? inUpd.EditedMessage;

            if (message == null)
            {
                Log("$Ошибка обработка Update");
                return(false);
            }

            if ((message?.Entities?.FirstOrDefault()?.Type == MessageEntityType.BotCommand) &&
                (commandDictionary.ContainsKey(message?.Text)))
            {
                // change command
                comRes = commandDictionary[message?.Text].ProcessInitialMessage(inUpd);
                userInCommandProcessing[message.From.Id] = message.Text;    // change command for user
            }
            else if (userInCommandProcessing.ContainsKey(message.From.Id))
            {
                comRes = commandDictionary[userInCommandProcessing[message.From.Id]].ProcessMessage(inUpd);
            }

            if (comRes == null)
            {
                var tm = new TextResponseMessage(message, "Необходимо выбрать команду");
                await tm.ApplyToBot(bot);
            }
            else
            {
                if ((comRes.CommandCompleted) && (userInCommandProcessing.ContainsKey(message.From.Id)))
                {
                    userInCommandProcessing.Remove(message.From.Id);
                }
                await comRes.ResultMessage.ApplyToBot(bot);
            }
            return(true);
        }
Exemplo n.º 5
0
        public CommandResult ProcessMessage(Update inUpdate)
        {
            //ResponseMessage resMes = null;
            //if (inUpdate.Type == Telegram.Bot.Types.Enums.UpdateType.EditedMessage)
            //    resMes = new QuoteTextResponseMessage(inUpdate.EditedMessage, "Не хорошо править старые сообщения");
            //else
            //{
            //    resMes = new TextResponseMessage(inUpdate.Message, $"Echo: {inUpdate.Message.Text.Substring(0, Math.Min(255, inUpdate.Message.Text?.Length ?? 0))}");
            //}
            //return new CommandResult(resMes, false);

            CurrentWeatherResponse weather = null;

            if (inUpdate.Message.Type == Telegram.Bot.Types.Enums.MessageType.TextMessage)
            {
                // try to get weather base on place name
                weather = GetWeatherByName(inUpdate.Message.Text);
            }
            if (inUpdate.Message.Type == Telegram.Bot.Types.Enums.MessageType.LocationMessage)
            {
                weather = GetWeatherByLocation(inUpdate.Message.Location.Longitude, inUpdate.Message.Location.Latitude);
            }

            ResponseMessage resMes = null;

            // Подготовка результата
            if (weather == null)
            {
                resMes = new TextResponseMessage(inUpdate.Message, "Не удалось определить погоду");
            }
            else
            {
                resMes = new TextResponseMessage(inUpdate.Message, weather.ConvertWeatherInText());
            }

            return(new CommandResult(resMes, true));
        }
Exemplo n.º 6
0
        public CommandResult ProcessInitialMessage(Update inUpdate)
        {
            var message = new TextResponseMessage(inUpdate.Message ?? inUpdate.EditedMessage, "Сообщи, где находишься?");

            return(new CommandResult(message, false));
        }
Exemplo n.º 7
0
        public CommandResult ProcessInitialMessage(Update inUpdate)
        {
            var message = new TextResponseMessage(inUpdate.Message ?? inUpdate.EditedMessage, "Привет! Пиши всё, что хочешь!");

            return(new CommandResult(message, false));
        }
Exemplo n.º 8
0
        /// <summary>
        ///  处理来自文本类消息
        /// </summary>
        /// <param name="request"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public string CreateResponseMessageFromText(BaseRequestMessage request, EnterParamEntity param)
        {
            string result = string.Empty;
            BaseResponseMessage responseModel = null;

            var requestModel = request as TextRequestMessage;
            if (requestModel.Content.Equals("您好"))
            {
                responseModel = new TextResponseMessage
                  {
                      FromUserName = request.ToUserName,
                      ToUserName = request.FromUserName,
                      MsgType = MsgTypeResponseEnum.TEXT.ToString().ToLower(),
                      Content = GetContent("")
                  };
                result = MessageFactory.CreateResponseType(responseModel, param, MsgTypeResponseEnum.TEXT);
            }
            else if (requestModel.Content.Equals("图文"))
            {
                responseModel = new NewsResponseMessage
                {
                    FromUserName = request.ToUserName,
                    ToUserName = request.FromUserName,
                    MsgType = MsgTypeResponseEnum.NEWS.ToString().ToLower(),
                    ArticleCount = "1",
                    Articles = new List<Article>
                    {
                      new Article{
                       Title ="测试图文标题1",
                        Description="测试图文描述",
                         PicUrl="http://hn5ery.natappfree.cc/Content/images/pic1.png",
                          Url="http://m.flm365.com/member/Index"
                      },
                      new Article{
                       Title ="测试图文标题2",
                        Description="测试图文描述2",
                         PicUrl="http://hn5ery.natappfree.cc/Content/images/img1.jpg",
                          Url="http://m.flm365.com/Member/Store"
                      },
                       new Article{
                       Title ="测试图文标题3",
                        Description="测试图文描述3",
                         PicUrl="http://hn5ery.natappfree.cc/Content/images/img2.jpg",
                          Url="http://m.flm365.com/Member/LoanList"
                      },
                    }
                };
                result = MessageFactory.CreateResponseType(responseModel, param, MsgTypeResponseEnum.NEWS);
            }
            else
            {
                responseModel = new TextResponseMessage
                {
                    FromUserName = request.ToUserName,
                    ToUserName = request.FromUserName,
                    MsgType = MsgTypeResponseEnum.TEXT.ToString().ToLower(),
                    Content = GetContent(requestModel.Content)
                };
                result = MessageFactory.CreateResponseType(responseModel, param, MsgTypeResponseEnum.TEXT);
            }


            return result;
        }