Beispiel #1
0
        private void TextMessageRequestHandler(TextMessageRequest request)
        {
            var encryptionkey = clientPublicEncryptionkeys[request.SenderClient];

            request.Message = UtilityFunction.DecryptString(request.Message, encryptionkey.FirstX, encryptionkey.U, encryptionkey.SelectChoas);
            OnTextMessageReceived(request, request.Message);
        }
Beispiel #2
0
        /// <summary>
        /// Send a text message to the remote client.
        /// </summary>
        /// <param name="message"></param>
        public void SendTextMessage(String message)
        {
            TextMessageRequest request = new TextMessageRequest();

            request.Message = message;
            SendMessage(request);
        }
Beispiel #3
0
 protected virtual void OnTextMessageReceived(TextMessageRequest request, String txt)
 {
     if (TextMessageReceived != null)
     {
         TextMessageReceived(this, request, txt);
     }
 }
Beispiel #4
0
        public override void Test_ToJson()
        {
            var msg = new TextMessageRequest();

            msg.Content = "hello world";

            OutputJson(msg);
        }
Beispiel #5
0
        /// <summary>
        /// Send a text message to the remote client.
        /// </summary>
        /// <param name="message"></param>
        public void SendTextMessage(String message, String clientName)
        {
            checkReceiver(clientName);
            var encryptionkey          = clientPublicEncryptionkeys[clientName];
            TextMessageRequest request = new TextMessageRequest();

            request.ReceiverClient = clientName;
            request.Message        = UtilityFunction.EncryptString(message, encryptionkey.FirstX, encryptionkey.U, encryptionkey.SelectChoas);
            SendMessage(request);
        }
Beispiel #6
0
        public void Test_RemindUser()
        {
            var msg = new TextMessageRequest();

            msg.Content = "广州今日天气:29度,大部分多云,降雨概率:60%";
            msg.Add("wangqing", "13800001111");
            msg.AddPhoneWithAll();
            msg.AddUserWithAll();

            OutputJson(msg);
        }
Beispiel #7
0
        public async Task <IActionResult> SendTextMessage([FromRoute] Guid id, [FromBody] TextMessageRequest request)
        {
            var response = await _messageManager.SendTextMessageAsync(request, id, GetUserId());

            if (response.Error != null)
            {
                return(StatusCode(response.Error.ErrorCode, response));
            }

            return(Ok(response));
        }
Beispiel #8
0
        public async Task Test_SendTextAsync()
        {
            var msg = new TextMessageRequest();

            msg.Content = "hello world";

            OutputRequest(msg);

            var resp = await Provider.SendAsync(AppId, msg);

            OutputResponse(resp);
        }
Beispiel #9
0
        public Task <MessageResponse> Processed(TextMessageRequest request)
        {
            MessageResponse response = new TextMessageResponse
            {
                ToUserName   = request.ToUserName,
                FormUserName = request.FormUserName,
                CreateTime   = request.CreateTime,
                Content      = "回复"
            };

            return(Task.FromResult(response));
        }
Beispiel #10
0
        private void btnSendMessage_Click(object sender, RoutedEventArgs e)
        {
            if (_channelCollection.Count <= 0)
            {
                MessageBox.Show("No channel!");
            }

            try
            {
                TextMessageRequest textMsg = new TextMessageRequest();
                textMsg._msg      = "test"; // tbSendText.Text;
                textMsg._targetID = 20;     // (uint)int.Parse(tbTargetID.Text);

                OptionCode messageOpcode = new OptionCode();
                //if (cboxCallType.SelectedIndex == 0)
                //{
                //    //发送呼叫消息,均需要回复。
                //    messageOpcode = OptionCode.TMP_PRIVATE_NEED_ACK_REQUEST;
                //}
                //else
                //{
                //    messageOpcode = OptionCode.TMP_GROUP_REQUEST;
                //}
                messageOpcode = OptionCode.TMP_PRIVATE_NEED_ACK_REQUEST;

                uint channelId = GetChannel(1).channelId;

                int requestID = _adk.GetService(ServiceType.TMP).SendCommand(textMsg, messageOpcode, channelId);
                if (requestID == -1)
                {
                    return;
                }

                if (_msgRequesetIdMsgItemInfoDict.ContainsKey((uint)requestID))
                {
                    return;
                }

                _msgRequesetIdMsgItemInfoDict.Add((uint)requestID, textMsg._targetID.ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "UTech", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Beispiel #11
0
        public async Task <ResponseDTO <bool> > SendTextMessageAsync(TextMessageRequest request, Guid roomId, Guid userId)
        {
            var response = new ResponseDTO <bool>();
            var room     = await _context.Rooms.FirstOrDefaultAsync(r => r.Id == roomId);

            if (room == null)
            {
                response.Error = new Error(404, "Room not found");
                return(response);
            }
            if (!room.Participants.Select(p => p.UserId).Contains(userId))
            {
                response.Error = new Error(409, "You can't send message here, because you are not participant");
                return(response);
            }

            var message = new MessageEntity()
            {
                Id          = Guid.NewGuid(),
                SenderId    = userId,
                RoomId      = room.Id,
                Content     = request.Content,
                Type        = MessageTypes.Text,
                SendingTime = DateTime.UtcNow
            };

            await _context.Messages.AddAsync(message);

            await _context.SaveChangesAsync();

            var socketDTO = new SocketResponseDTO <MessageDTO>
            {
                Type = SocketMessageTypes.NewMessage, Model = new MessageDTO(message)
            };

            foreach (var participantId in room.Participants.Select(p => p.UserId))
            {
                await _chatHandler.SendMessageByUserId(participantId, socketDTO);
            }

            response.Data = true;
            return(response);
        }
 void client_TextMessageReceived(Client sender, TextMessageRequest request, string message)
 {
     try
     {
         if (ConfigurationManager.AppSettings.AllKeys.Contains(message))
         {
             if (ConfigurationManager.AppSettings.AllKeys.Contains($"{message}ValidClient"))
             {
                 if (!ConfigurationManager.AppSettings[$"{message}ValidClient"].Split(',').Contains(request.SenderClient))
                 {
                     return;
                 }
             }
             var script = GetScriptRunner(ConfigurationManager.AppSettings[message], typeof(Globals));
             script(new Globals {
                 client = client, sender = request.SenderClient, utility = new UtilityForServiceUse()
             });
         }
     }
     catch
     {
     }
 }
Beispiel #13
0
        private Task <bool> FetchEmailsAndForward()
        {
            List <Message> msg_list = null;

            try
            {
                msg_list = email_service.FetchUnseenMessages(PopServerHost, port, true, username, password, seenUids);
                //List<Message> msg_list = email_service.FetchUnseenMessages(PopServerHost, port, true, username, password, seenUids);
                //List<Message> msg_list = email_service.FetchAllMessages();
                //lvSendLog.Items.Clear();

                //log file info
                string fpath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                string fname = "email.log";
                // This file will have a new line at the end.
                FileInfo info = new FileInfo(fpath + "\\" + fname);

                if (msg_list.Count == 0)
                {
                    return(Task <bool> .Factory.StartNew(() => false));
                }
                foreach (Message msg in msg_list)
                {
                    FromUserEmail = msg.Headers.From.Address;
                    if (!(msg.Headers.From.Address.Contains("@hyt.com") ||
                          msg.Headers.From.Address.Equals("*****@*****.**")))
                    {
                        continue;
                    }
                    StringBuilder builder      = new StringBuilder();
                    string        strEmailInfo = string.Empty;
                    strEmailInfo += msg.Headers.Date;
                    strEmailInfo += CRLF;
                    strEmailInfo += msg.Headers.From.Address;
                    strEmailInfo += CRLF;
                    strEmailInfo += msg.MessagePart.Body;
                    strEmailInfo += CRLF;

                    MessagePart plainText = msg.FindFirstPlainTextVersion();
                    if (plainText != null)
                    {
                        // We found some plaintext!
                        builder.Append(plainText.GetBodyAsText());
                    }
                    else
                    {
                        // Might include a part holding html instead
                        MessagePart html = msg.FindFirstHtmlVersion();
                        if (html != null)
                        {
                            // We found some html!
                            builder.Append(html.GetBodyAsText());
                        }
                    }

                    //save email into log file
                    using (StreamWriter writer = info.AppendText())
                    {
                        //writer.WriteLine(tbSendText.Text);
                        writer.WriteLine(strEmailInfo);
                    }

                    sendlog_items.Add(new SendLog()
                    {
                        FromName         = msg.Headers.From.DisplayName + msg.Headers.From.Address,
                        ReceivedDatetime = msg.Headers.Date,
                        MailSubject      = msg.Headers.Subject,
                        MailBody         = Regex.Replace(builder.ToString(), @"^\s*$\n|\r", "", RegexOptions.Multiline).TrimEnd()
                                           //MailBody = msg.MessagePart.Body == null ? "" : msg.MessagePart.Body.ToString()
                    });


                    AddSendItem(new SendLog()
                    {
                        FromName = msg.Headers.From.ToString(),
                        //FromName = msg.Headers.Sender == null ? "" : msg.Headers.Sender.ToString(),
                        ReceivedDatetime = msg.Headers.Date,
                        MailSubject      = msg.Headers.Subject,
                        MailBody         = Regex.Replace(builder.ToString(), @"^\s*$\n|\r", "", RegexOptions.Multiline).TrimEnd()
                    });
                    string tmp = builder.ToString();
                    FromUserEmail = tmp.Substring(tmp.IndexOf("Email:") + 7, tmp.IndexOf("Telephone") - tmp.IndexOf("Email:") - 8);
                }
                // delete message loop doesn't overlap with message handling loop
                // in order to avoid read/delete conflict on server
                foreach (Message msg in msg_list)
                {
                    //delete email after fetch, otherwise will be fetched next time
                    if (email_service.DeleteMessageByMessageId(msg.Headers.MessageId))
                    {
                        //MessageBox.Show("The message " + msg.Headers.MessageId + " has been deleted");
                    }
                }
            }
            // Catch these exceptions but don't do anything
            catch (PopServerLockedException psle)
            {
                return(Task <bool> .Factory.StartNew(() => false));
            }
            catch (PopServerNotAvailableException psnae)
            {
                return(Task <bool> .Factory.StartNew(() => false));
            }
            catch (PopServerException psle)
            {
                return(Task <bool> .Factory.StartNew(() => false));
            }


            //send to mobile
            #region send_to_mobile
            if (_channelCollection.Count <= 0)
            {
                //MessageBox.Show("No channel!");
                AutoClosingMessageBox msgBox = new AutoClosingMessageBox("No channel available!", "UTech Demo", 2000);
                return(Task <bool> .Factory.StartNew(() => false));
            }

            try
            {
                foreach (Message msg in msg_list)
                {
                    TextMessageRequest textMsg   = new TextMessageRequest();
                    StringBuilder      builder   = new StringBuilder();
                    MessagePart        plainText = msg.FindFirstPlainTextVersion();
                    if (plainText != null)
                    {
                        // We found some plaintext!
                        builder.Append(plainText.GetBodyAsText());
                    }
                    else
                    {
                        // Might include a part holding html instead
                        MessagePart html = msg.FindFirstHtmlVersion();
                        if (html != null)
                        {
                            // We found some html!
                            builder.Append(html.GetBodyAsText());
                        }
                    }
                    textMsg._msg      = builder.ToString(); //should be from email somewhere
                    textMsg._targetID = 20;                 //hardcode
                    OptionCode messageOpcode = new OptionCode();
                    messageOpcode = OptionCode.TMP_PRIVATE_NEED_ACK_REQUEST;
                    uint channelId = GetChannel(1).channelId;

                    int requestID = _adk.GetService(ServiceType.TMP).SendCommand(textMsg, messageOpcode, channelId);
                    if (requestID == -1)
                    {
                        return(Task <bool> .Factory.StartNew(() => false));
                    }
                    if (_msgRequesetIdMsgItemInfoDict.ContainsKey((uint)requestID))
                    {
                        return(Task <bool> .Factory.StartNew(() => false));
                    }
                    _msgRequesetIdMsgItemInfoDict.Add((uint)requestID, textMsg._targetID.ToString());
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "UTech Demo", MessageBoxButton.OK, MessageBoxImage.Error);
            }

            #endregion

            return(Task <bool> .Factory.StartNew(() => true));
        }
Beispiel #14
0
        private Task <bool> FetchEmailsAndForward()
        {
            //send to mobile
            #region send_to_mobile
            if (_channelCollection.Count <= 0)
            {
                //MessageBox.Show("No channel!");
                AutoClosingMessageBox msgBox = new AutoClosingMessageBox("Retrying ...", "Not connected!", 2000);
                return(Task <bool> .Factory.StartNew(() => false));
            }

            List <Message> msg_list = null;
            try
            {
                msg_list = email_service.FetchUnseenMessages(seenUids);
                if (msg_list.Count == 0)
                {
                    return(Task <bool> .Factory.StartNew(() => false));
                }
            }
            // Catch these exceptions but don't do anything
            catch (PopServerLockedException psle)
            {
                return(Task <bool> .Factory.StartNew(() => false));
            }
            catch (PopServerNotAvailableException psnae)
            {
                return(Task <bool> .Factory.StartNew(() => false));
            }
            catch (PopServerException psle)
            {
                return(Task <bool> .Factory.StartNew(() => false));
            }

            try
            {
                //log file info
                //string fpath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                string fpath = Directory.GetCurrentDirectory();
                string fname = "email.log";
                // This file will have a new line at the end.
                FileInfo info = new FileInfo(fpath + "\\" + fname);

                foreach (Message msg in msg_list)
                {
                    var    to_addr = msg.Headers.To[0].Address;
                    Person p       = contactList.Find(x => x.Email.TrimEnd().Equals(to_addr));
                    if (p == null)
                    {
                        if (email_service.DeleteMessageByMessageId(msg.Headers.MessageId))
                        {
                            //MessageBox.Show("The message " + msg.Headers.MessageId + " has been deleted");
                            WriteMessageLog(info, msg);
                        }
                        continue;
                    }

                    TextMessageRequest textMsg = new TextMessageRequest();
                    StringBuilder      builder = new StringBuilder();
                    builder.Append(msg.Headers.Subject);

                    textMsg._msg      = builder.ToString().TrimEnd() + CRLF;
                    textMsg._targetID = uint.Parse(p.TargetID);
                    OptionCode messageOpcode = new OptionCode();
                    messageOpcode = OptionCode.TMP_PRIVATE_NEED_ACK_REQUEST;
                    uint channelId = GetChannel(1).channelId;

                    int requestID = _adk.GetService(ServiceType.TMP).SendCommand(textMsg, messageOpcode, channelId);
                    if (requestID == -1)
                    {
                        continue;                  // return Task<bool>.Factory.StartNew(() => false);
                    }
                    if (_msgRequesetIdMsgItemInfoDict.ContainsKey((uint)requestID))
                    {
                        return(Task <bool> .Factory.StartNew(() => false));
                    }
                    _msgRequesetIdMsgItemInfoDict.Add((uint)requestID, textMsg._targetID.ToString());


                    sendlog_items.Add(new SendLog()
                    {
                        ID               = requestID,
                        EmailID          = msg.Headers.MessageId,
                        FromName         = (string.IsNullOrEmpty(msg.Headers.From.DisplayName) ? "" : "<" + msg.Headers.From.DisplayName + ">") + msg.Headers.From.Address,
                        ReceivedDatetime = DateTime.Now.ToString(), //msg.Headers.Date,
                        MailSubject      = msg.Headers.Subject,
                        MailBody         = Regex.Replace(builder.ToString(), @"^\s*$\n|\r", "", RegexOptions.Multiline).TrimEnd()
                    });
                    WriteMessageLog(info, msg);
                    //string strEmailInfo = string.Empty;
                    //strEmailInfo += "Date: " + DateTime.Now; // msg.Headers.Date;
                    //strEmailInfo += CRLF;
                    //string display_name = msg.Headers.From.DisplayName == null ? "" : "<" + msg.Headers.From.DisplayName + ">";
                    //strEmailInfo += "From: " + display_name + msg.Headers.From.Address;
                    //strEmailInfo += CRLF;
                    //display_name = msg.Headers.To.FirstOrDefault().DisplayName == null ? "" : "<" + msg.Headers.To.FirstOrDefault().DisplayName + ">";
                    //strEmailInfo += "To: " + display_name + msg.Headers.To.FirstOrDefault().Address;
                    //strEmailInfo += CRLF;
                    //strEmailInfo += "Subject: " + msg.Headers.Subject;
                    //strEmailInfo += CRLF;
                    //string mail_body = msg.FindFirstPlainTextVersion() != null ? msg.FindFirstPlainTextVersion().GetBodyAsText() : msg.FindFirstHtmlVersion().GetBodyAsText();
                    //strEmailInfo += "Body: " + mail_body;
                    //strEmailInfo += CRLF;

                    ////save email into log file
                    //using (StreamWriter writer = info.AppendText())
                    //{
                    //    //writer.WriteLine(tbSendText.Text);
                    //    writer.WriteLine(strEmailInfo);
                    //}
                }
            }
            catch (Exception ex)
            {
                AutoClosingMessageBox msgBox = new AutoClosingMessageBox(ex.Message, "UTech Email Gateway", 5000);
                //MessageBox.Show(ex.Message, "UTech Demo", MessageBoxButton.OK, MessageBoxImage.Error);
            }

            #endregion

            return(Task <bool> .Factory.StartNew(() => true));
        }
Beispiel #15
0
        static void Main(string[] args)
        {
            string[]            dest     = new string[2];
            SmsGatewayService   sms      = new SmsGatewayService();
            TextMessageRequest  request  = new TextMessageRequest();
            Credentials         cr       = new Credentials();
            TextMessage         tm       = new TextMessage();
            TextMessageResponse response = new TextMessageResponse();

// Tiempo maximo de respuesta en milisegundos
            sms.Timeout = 60000; //milisec

// XX, YY y ZZ se corresponden con los valores de identificación del usuario en el sistema
//domainId solo es necesario si el login no es un email
//cr.domainId = "XX";
            cr.login  = "******";
            cr.passwd = "ZZ";

            tm.encoding = "UTF-8";
            tm.msg      = "Mensaje de prueba";
//No es posible utilizar el remitente en América pero sí en España y Europa
//Descomentar la línea solo si se cuenta con un remitente autorizado por Altiria
//tm.senderId = "remitente";

            dest[0] = "346xxxxxxxx";
            dest[1] = "346yyyyyyyy";

            request.credentials = cr;
            request.destination = dest;
            request.message     = tm;

            try {
                response = sms.sendSms(request);

                if (response.status != "000")
                {
                    Console.WriteLine("Código de error de Altiria: " + response.status);
                }
                else
                {
                    Console.WriteLine("Código de Altiria: " + response.status);
                    foreach (TextDestination rd in response.details)
                    {
                        Console.WriteLine("  " + rd.destination + ": Código de respuesta " + rd.status);
                    }
                }
            }
            catch (WebException e) {
                if (e.Status == WebExceptionStatus.Timeout)
                {
                    Console.WriteLine("Error TimeOut");
                }
                else
                {
                    Console.WriteLine("ERROR " + e.Message);
                }
            }
            catch (Exception e) {
                Console.WriteLine("ERROR: " + e.Message);
            }
        }
 public Task SendTextMessageAsync(TextMessageRequest request)
 {
     return(SendApiRequest(MessagesEndpoint, request));
 }
Beispiel #17
0
 private void TextMessageRequestHandler(TextMessageRequest request)
 {
     OnTextMessageReceived(request.Message);
 }
 void client_TextMessageReceived(Client sender, TextMessageRequest request, string message)
 {
     Status("Message received: " + message);
 }