Ejemplo n.º 1
0
 public void Enqueue(List <ChatId> chatIds, KidsNoteNotifyMessage message)
 {
     lock (Locker)
     {
         ResponseQueue.Enqueue(new ResponseMessage(chatIds, message));
     }
 }
Ejemplo n.º 2
0
        private void SendResponse(List <ChatId> receivers, KidsNoteNotifyMessage kidsNoteMessage)
        {
            foreach (var each in kidsNoteMessage.NewContents)
            {
                foreach (var eachContent in each.Value)
                {
                    string text = FormatContent(each.Key, eachContent);
                    //TheClient.SendTextMessageAsync(text).Wait();

                    List <Task <Message> > taskList = new List <Task <Message> >();
                    foreach (var user in receivers)
                    {
                        taskList.Add(TheClient.SendTextMessageAsync(user, text));
                    }

                    // 메시지 순서가 섞이지 않도록 모두 보내질 때까지 대기.
                    foreach (var task in taskList)
                    {
                        task.Wait();
                    }

                    LinkedList <InputMediaPhoto> photoAlbum = new LinkedList <InputMediaPhoto>();
                    //LinkedList<InputMediaDocument> otherAttachments = new LinkedList<InputMediaDocument>();
                    if (eachContent.Attachments != null && eachContent.Attachments.Count > 0)
                    {
                        taskList.Clear();

                        System.Diagnostics.Trace.WriteLine(String.Format("Title : {0}", eachContent.Title));

                        int no = 0;
                        foreach (var attach in eachContent.Attachments)
                        {
                            if (attach.Data == null)
                            {
                                // TODO: 관리 사용자에게 통지.
                            }
                            InputMedia media = new InputMedia(attach.Data, String.Format("{0}_{1}", ++no, attach.Name));
                            if (attach.Type == AttachmentType.IMAGE)
                            {
                                photoAlbum.AddLast(new InputMediaPhoto(media));
                                System.Diagnostics.Trace.WriteLine(String.Format("Attachment {0} : {1}", no, attach.Name));
                            }
                            else
                            {
                                // Telegram 으로는 Image 만 보낸다.
                                // otherAttachments.AddLast(new InputMediaDocument(media));
                            }
                        }
                    }

                    if (photoAlbum.Count > 0)
                    {
                        List <Task <Message[]> > mediaTaskList = new List <Task <Message[]> >();
                        foreach (var user in receivers)
                        {
                            mediaTaskList.Add(TheClient.SendMediaGroupAsync(photoAlbum, user));
                        }

                        // 메시지 순서가 섞이지 않도록 모두 보내질 때까지 대기.
                        foreach (var task in mediaTaskList)
                        {
                            task.Wait();
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
 public ResponseMessage(List <ChatId> chatIds, KidsNoteNotifyMessage message)
 {
     Type            = MessageType.KIDS_NOTE_MESSAGE;
     ChatIds         = chatIds;
     KidsNoteMessage = message;
 }
Ejemplo n.º 4
0
 public void SendNewContents(List <ChatId> receivers, KidsNoteNotifyMessage message)
 {
     ResponseQueue.Enqueue(receivers, message);
 }