public SmsResponseMessage ProcessUserSmsMessage(string smsNumber, string body) { var response = new SmsResponseMessage(); var parsedResult = SmsParser.Parse(body); if (parsedResult.UserCommand == UserCommandType.Join) { var joinResult = Join(smsNumber, parsedResult.SessionToJoin); response.Success = joinResult.Item1; response.Body = joinResult.Item2; } else if (parsedResult.UserCommand == UserCommandType.Leave) { var leaveResult = Leave(smsNumber); response.Success = leaveResult.Item1; response.Body = leaveResult.Item2; } else if (parsedResult.UserCommand == UserCommandType.Response) { var session = GetSessionIdBySms(smsNumber); var sessionResponse = session.AddResponse(smsNumber, parsedResult.FormattedString); //var sessionResponse = session.Response //determine if we want to send a message back to the user } return(response); }
public SmsParserTests() { var logger = new Mock <ILogger>(); var fieldParser = new SmsFieldParser(); _smsParser = new SmsParser(logger.Object, fieldParser); }
public void Join(string smsBody) { var result = SmsParser.Parse(smsBody); Assert.Equal(UserCommandType.Join, result.UserCommand); Assert.Equal("one-two", result.SessionToJoin); }
public TwiMLResult Index(TwilioSmsHookModel twilioSmsHookModel) { var body = twilioSmsHookModel.Body; var receivedFrom = twilioSmsHookModel.From; Debug.WriteLine($"Message received {body}"); try { if (body.ToLower().Contains("enable")) { if (SendDeviceMessage(body)) { return(SendMessagingResponse("Theft protection successfully enabled.")); } else { return(SendMessagingResponse("We're really sorry, but your device isn't registered in our system.")); } } else if (body.ToLower().Contains("disable")) { if (SendDeviceMessage(body)) { return(SendMessagingResponse("Theft protection successfully disabled.")); } else { return(SendMessagingResponse("We're really sorry, but your device isn't registered in our system.")); } } else if (body.ToLower().Contains("register")) { return(RegisterDevice(twilioSmsHookModel)); } var commandReceived = SmsParser.ParseSmsBody(body); commandReceived.TrackerId = _db.Trackers.First(x => x.DevicePhoneNumber == receivedFrom).Id; return(HandleSmsCommandReceived(commandReceived)); } catch (Exception ex) { _db.Logs.Add(new Log { Error = ex.Message, Time = DateTime.Now }); return(SendMessagingResponse("I'm sorry, we did not quite catch that.")); } }
public void Test() { //nothing sent.. probably can't happen. var result1 = SmsParser.Parse(""); Assert.Null(result1); //join with no session id supplied var result2 = SmsParser.Parse("join"); Assert.Null(result2); //join with half a session id? var result3 = SmsParser.Parse("join invalid"); Assert.Null(result3); }
/// <inheritdoc /> public AsteriskAriSmsService(ILogger logger, IQueueSender queueSender, SmsParser smsParser) { _logger = logger; _queueSender = queueSender; _smsParser = smsParser; }
public void Responses(string smsBody) { var result = SmsParser.Parse(smsBody); Assert.Equal(UserCommandType.Response, result.UserCommand); }
public void DontAccidentallyLeave(string smsBody) { var result = SmsParser.Parse(smsBody); Assert.Equal(UserCommandType.Response, result.UserCommand); }
public void Leave(string smsBody) { var result = SmsParser.Parse(smsBody); Assert.Equal(UserCommandType.Leave, result.UserCommand); }