public void ConnectToServer(IPAddress ip, int port) { if (_webSocketConnection != null) return; _webSocketConnection = new WebSocket($"ws://{ip}:{port}"); _webSocketConnection.OnOpen += (sender, args) => { Connected?.Invoke(); }; _webSocketConnection.OnClose += (sender, args) => { Disconnected?.Invoke(); }; _webSocketConnection.OnMessage += (sender, args) => { if (args.IsText) { ReceivedTextMessage?.Invoke(args.Data); } else if (args.IsBinary) { ReceivedByteArrayMessage?.Invoke(args.RawData); } }; _webSocketConnection.OnError += (sender, args) => { ReceivedError?.Invoke(); }; _webSocketConnection.Connect(); }
Result HandleTextMessage(Request pendingRequest) { if (!(pendingRequest is MessageRequest textMessageRequest)) { return(Result.Fail($"Request received is not valid for this operation ({pendingRequest.Type}).")); } ReceivedTextMessage?.Invoke(this, textMessageRequest); return(Result.Ok()); }
public void ParseContact_MobileWithForeignCountryCode_CountryCodePreserved() { var sut = new ContactsViewModel(null, null); var message = new ReceivedTextMessage() { Sender = "+67716475048", Text = "AGM Kavinda 9" }; var actual = sut.ParseContact(message); actual.Should().NotBeNull(); actual.Batch.Should().Be(9); actual.Mobile.Should().Be("+67716475048"); actual.Name.Should().Be("Kavinda"); }
public void ParseContact_NoBatch_ReadSenderAndName() { var sut = new ContactsViewModel(null, null); var message = new ReceivedTextMessage() { Sender = "0716475048", Text = "AGM Kavinda Gayashan " }; var actual = sut.ParseContact(message); actual.Should().NotBeNull(); actual.Batch.Should().Be(0); actual.Mobile.Should().Be("0716475048"); actual.Name.Should().Be("Kavinda Gayashan"); }
public void ParseContact_EmptyText_SenderRead() { var sut = new ContactsViewModel(null, null); var message = new ReceivedTextMessage() { Sender = "0716475048", Text = "" }; var actual = sut.ParseContact(message); actual.Should().NotBeNull(); actual.Batch.Should().Be(0); actual.Mobile.Should().Be("0716475048"); actual.Name.Should().BeEmpty(); }
//[InlineData("0716475048", " AgM Kavinda 09 Additional data")] //[InlineData("0716475048", " AgM Kavinda 09 Additional data 123")] public void ParseContact(string sender, string text) { var sut = new ContactsViewModel(null, null); var message = new ReceivedTextMessage() { Sender = sender, Text = text }; var actual = sut.ParseContact(message); actual.Should().NotBeNull(); actual.Batch.Should().Be(9); actual.Mobile.Should().Be("0716475048"); actual.Name.Should().Be("Kavinda"); }
public Contact ParseContact(ReceivedTextMessage message) { var text = message.Text.Trim(); if (string.IsNullOrEmpty(text)) { return new Contact { Mobile = message.Sender } } ; var name = string.Empty; int batch = 0; try { text = text.Remove(0, 3).Trim(); var indexOfBatch = text.IndexOfAny(_digits); if (indexOfBatch > 0) { name = text.Substring(0, indexOfBatch).Trim(); int.TryParse(text.Substring(indexOfBatch), out batch); } else { name = text; } } catch { // ignore Parse errors. Just use the sender } var contact = new Contact { Batch = batch, Mobile = message.Sender, Name = name }; return(contact); }
public async Task <bool> OnTextMessageReceived(object sender, TextMessageReceivedEventArgs e) { _logger.LogDebug(XmlConvert.SerializeObject(e)); var msg = new ReceivedTextMessage(); msg.Content = e.Content; msg.From = e.FromUserName; msg.To = e.ToUserName; msg.ReceivedTime = new DateTimeOffset(WeixinTimestampHelper.ToUtcTime(e.CreateTimeStr)); _db.ReceivedTextMessages.Add(msg); var saveResult = await _db.SaveChangesAsync(); if (saveResult > 0) { _logger.LogDebug($"已将微信文本消息存入数据库。Result:{saveResult}, From:{msg.From}, To:{msg.To}, Time:{msg.ReceivedTime}, Content:{msg.Content}"); } _logger.LogDebug($"微信文本消息在数据库中共{_db.ReceivedTextMessages.ToList().Count()}条记录。"); var messageHandler = sender as WeixinMessageHandler; var responseMessage = new ResponseMessageText(); { var result = new StringBuilder(); result.AppendFormat("您刚才发送了文本信息:{0}", e.Content); responseMessage.FromUserName = e.ToUserName; responseMessage.ToUserName = e.FromUserName; responseMessage.Content = result.ToString(); } await messageHandler.WriteAsync(responseMessage); _logger.LogDebug(XmlConvert.SerializeObject(responseMessage)); return(true); }