예제 #1
0
        /// <summary>
        /// Receives the Files message
        /// </summary>
        /// <param name="message">The message.</param>
        private void Execute(FilesMessage message)
        {
            using (new DynamicCredentialManager(Repository))
            {
                var serverList = Repository.Server.GetServerList();
                for (int index = 0; index < serverList.Count; index++)
                {
                    var server   = serverList[index];
                    var fileList = Repository.File.GetFileList(server.ServerId);
                    var context  = new MessageContext
                    {
                        ServerName = server.ServerName,
                        ServerId   = server.ServerId,
                        ServerPort = server.ServerPort
                    };

                    QueryRunner.SendTextMessage(Repository.Settings.Control.Files.Target,
                                                Repository.Settings.Control.Files.TargetId > 0 ? Repository.Settings.Control.Files.TargetId : message.SenderClientId,
                                                Repository.Settings.Control.Files.MessagePerServer.ToMessage(context));
                    if (fileList.Count == 0)
                    {
                        QueryRunner.SendTextMessage(Repository.Settings.Control.Files.Target,
                                                    Repository.Settings.Control.Files.TargetId > 0 ? Repository.Settings.Control.Files.TargetId : message.SenderClientId,
                                                    Repository.Settings.Control.Files.MessageNoFilesFound.ToMessage(context));
                        continue;
                    }

                    QueryRunner.SendTextMessage(Repository.Settings.Control.Files.Target,
                                                Repository.Settings.Control.Files.TargetId > 0 ? Repository.Settings.Control.Files.TargetId : message.SenderClientId,
                                                Repository.Settings.Control.Files.MessageFilesFound.ToMessage(context));
                    fileList.ForEach(f => QueryRunner.SendTextMessage(
                                         Repository.Settings.Control.Files.Target,
                                         Repository.Settings.Control.Files.TargetId > 0 ? Repository.Settings.Control.Files.TargetId : message.SenderClientId,
                                         Repository.Settings.Control.Files.MessageFile.ToMessage(new MessageContext
                    {
                        Index       = index + 1,
                        ServerName  = server.ServerName,
                        ServerId    = server.ServerId,
                        ServerPort  = server.ServerPort,
                        ChannelId   = f.ChannelId,
                        ChannelName = f.ChannelName,
                        FileName    = f.Name,
                        FileCreated =
                            f.Created.ToLocalTime().ToString(Repository.Static.DateTimeFormat),
                        FileSize = f.Size
                    })));
                }
            }

            var clientEntry = Repository.Client.GetClientInfo(message.SenderClientId);

            Log(Repository.Settings.Control.Files,
                string.Format("Client '{1}'(id:{2}) used {0}.", Repository.Settings.Control.Files.Command,
                              clientEntry.Nickname, clientEntry.DatabaseId));
        }
예제 #2
0
        //发送消息
        public static string SendMessage(Receiver receiver, string msgtype, Content content, string media_id, int safe, string token)
        {
            int             agentid     = Convert.ToInt32(ConfigurationManager.AppSettings["agentid"]);
            string          result      = "";
            string          messagejson = "";
            Text            text;
            TextMessage     textmessage;
            Articles        articles;
            List <Articles> listarticle;

            switch (msgtype)
            {
            case "text":
                text                = new Text();
                textmessage         = new TextMessage();
                text.content        = content.text;
                textmessage.touser  = receiver.touser;
                textmessage.toparty = receiver.toparty;
                textmessage.totag   = receiver.totag;
                textmessage.msgtype = msgtype;
                textmessage.agentid = agentid;
                textmessage.text    = text;
                messagejson         = JsonConvert.SerializeObject(textmessage);
                result              = PostJson(token, messagejson);
                break;

            case "image":
                Image image = new Image();
                image.media_id = media_id;
                ImageMessage imagemessage = new ImageMessage();
                imagemessage.touser  = receiver.touser;
                imagemessage.msgtype = msgtype;
                imagemessage.agentid = agentid;
                imagemessage.image   = image;
                messagejson          = JsonConvert.SerializeObject(imagemessage);
                result = PostJson(token, messagejson);
                break;

            case "voice":
                Voice voice = new Voice();
                voice.media_id = media_id;
                VoiceMessage voicemessage = new VoiceMessage();
                voicemessage.touser  = receiver.touser;
                voicemessage.msgtype = msgtype;
                voicemessage.agentid = agentid;
                voicemessage.voice   = voice;
                messagejson          = JsonConvert.SerializeObject(voicemessage);
                result = PostJson(token, messagejson);
                break;

            case "file":
                Files file = new Files();
                file.media_id = media_id;
                FilesMessage filemessage = new FilesMessage();
                filemessage.touser  = receiver.touser;
                filemessage.msgtype = msgtype;
                filemessage.agentid = agentid;
                filemessage.file    = file;
                messagejson         = JsonConvert.SerializeObject(filemessage);
                result = PostJson(token, messagejson);
                break;

            case "video":
                Video video = new Video();
                video.media_id    = media_id;
                video.title       = content.title;
                video.description = content.description;
                VideoMessage videomessage = new VideoMessage();
                videomessage.touser  = receiver.touser;
                videomessage.msgtype = msgtype;
                videomessage.agentid = agentid;
                videomessage.video   = video;
                messagejson          = JsonConvert.SerializeObject(videomessage);
                result = PostJson(token, messagejson);
                break;

            case "textcard":
                TextCard textcard = new TextCard();
                textcard.title       = content.title;
                textcard.description = content.description;
                textcard.url         = content.url;
                textcard.btntxt      = content.btntxt;
                TextCardMessage textcardmessage = new TextCardMessage();
                textcardmessage.touser   = receiver.touser;
                textcardmessage.msgtype  = msgtype;
                textcardmessage.agentid  = agentid;
                textcardmessage.textcard = textcard;
                messagejson = JsonConvert.SerializeObject(textcardmessage);
                result      = PostJson(token, messagejson);
                break;

            case "news":
                News news = new News();
                articles             = new Articles();
                articles.title       = content.title;
                articles.description = content.description;
                articles.url         = content.url;
                articles.picurl      = content.picurl;
                articles.btntxt      = content.btntxt;
                listarticle          = new List <Articles>();
                listarticle.Add(articles);
                news.articles = listarticle;
                NewsMessage newsmessage = new NewsMessage();
                newsmessage.touser  = receiver.touser;
                newsmessage.msgtype = msgtype;
                newsmessage.agentid = agentid;
                newsmessage.news    = news;
                messagejson         = JsonConvert.SerializeObject(newsmessage);
                result = PostJson(token, messagejson);
                break;

            case "mpnews":
                MpNews mpnews = new MpNews();
                articles                    = new Articles();
                articles.title              = content.title;
                articles.thumb_media_id     = media_id;
                articles.author             = content.author;
                articles.content_source_url = content.url;
                articles.content            = content.content;
                articles.digest             = content.description;
                listarticle                 = new List <Articles>();
                listarticle.Add(articles);
                mpnews.articles = listarticle;
                MpNewsMessage mpnewsmessage = new MpNewsMessage();
                mpnewsmessage.touser  = receiver.touser;
                mpnewsmessage.msgtype = msgtype;
                mpnewsmessage.agentid = agentid;
                mpnewsmessage.mpnews  = mpnews;
                messagejson           = JsonConvert.SerializeObject(mpnewsmessage);
                result = PostJson(token, messagejson);
                break;

            default:
                text                = new Text();
                textmessage         = new TextMessage();
                text.content        = content.text;
                textmessage.touser  = receiver.touser;
                textmessage.msgtype = msgtype;
                textmessage.agentid = agentid;
                textmessage.text    = text;
                messagejson         = JsonConvert.SerializeObject(textmessage);
                result              = PostJson(token, messagejson);
                break;
            }
            return(result);
        }
        /// <summary>
        /// Receives the Files message
        /// </summary>
        /// <param name="message">The message.</param>
        private void Execute(FilesMessage message)
        {
            using (new DynamicCredentialManager(Repository))
            {
                var serverList = Repository.Server.GetServerList();
                for (int index = 0; index < serverList.Count; index++)
                {
                    var server = serverList[index];
                    var fileList = Repository.File.GetFileList(server.ServerId);
                    var context = new MessageContext
                                      {
                                          ServerName = server.ServerName,
                                          ServerId = server.ServerId,
                                          ServerPort = server.ServerPort
                                      };

                    QueryRunner.SendTextMessage(Repository.Settings.Control.Files.Target,
                                                Repository.Settings.Control.Files.TargetId > 0 ? Repository.Settings.Control.Files.TargetId : message.SenderClientId,
                                                Repository.Settings.Control.Files.MessagePerServer.ToMessage(context));
                    if (fileList.Count == 0)
                    {
                        QueryRunner.SendTextMessage(Repository.Settings.Control.Files.Target,
                                                    Repository.Settings.Control.Files.TargetId > 0 ? Repository.Settings.Control.Files.TargetId : message.SenderClientId,
                                                    Repository.Settings.Control.Files.MessageNoFilesFound.ToMessage(context));
                        continue;
                    }

                    QueryRunner.SendTextMessage(Repository.Settings.Control.Files.Target,
                                                Repository.Settings.Control.Files.TargetId > 0 ? Repository.Settings.Control.Files.TargetId : message.SenderClientId,
                                                Repository.Settings.Control.Files.MessageFilesFound.ToMessage(context));
                    fileList.ForEach(f => QueryRunner.SendTextMessage(
                        Repository.Settings.Control.Files.Target,
                        Repository.Settings.Control.Files.TargetId > 0 ? Repository.Settings.Control.Files.TargetId : message.SenderClientId,
                        Repository.Settings.Control.Files.MessageFile.ToMessage(new MessageContext
                                           {
                                               Index = index + 1,
                                               ServerName = server.ServerName,
                                               ServerId = server.ServerId,
                                               ServerPort = server.ServerPort,
                                               ChannelId = f.ChannelId,
                                               ChannelName = f.ChannelName,
                                               FileName = f.Name,
                                               FileCreated =
                                                   f.Created.ToLocalTime().ToString(Repository.Static.DateTimeFormat),
                                               FileSize = f.Size
                                           })));
                }
            }

            var clientEntry = Repository.Client.GetClientInfo(message.SenderClientId);
            Log(Repository.Settings.Control.Files,
                string.Format("Client '{1}'(id:{2}) used {0}.", Repository.Settings.Control.Files.Command,
                              clientEntry.Nickname, clientEntry.DatabaseId));
        }