public ConversationContext Execute(ConversationState state, string message) { return new ConversationContext() { ResponseMessage = "Please send us your license or ticket number", Context = state.PhoneNumber }; }
public ConversationContext Execute(ConversationState state, string message) { return new ConversationContext() { ResponseMessage = "Please enter your license or ticket number followed by the pound or hash key", Context = state.PhoneNumber, Gather = true }; }
public HttpResponseMessage ProcessVoiceTicketRequest(SmsRequest twilioRequest) { var invalidRequestMessage = "We could not understand the key you entered."; var error = false; var message = default(String); var responseContext = default(ConversationContext); var conversationState = ConvoCookieHelper.Parse<ConversationState>(ConvoCookieHelper.CONVO_COOKIE_NAME_PHONE, Request.Headers); if (conversationState == null) conversationState = new ConversationState() { ConversationStep = 1, ConversationName = twilioRequest.Body ?? "voice" }; var conversation = ConversationRegistry.Get(conversationState.ConversationName); if(conversation != null) { try { responseContext = conversation.RunStep(conversationState, twilioRequest.Body ?? "voice"); message = responseContext.ResponseMessage; } catch(Exception ex) { message = invalidRequestMessage; error = true; //clearCookie = true; } } else { message = invalidRequestMessage; error = true; } var twilioResponse = new TwilioResponse(); if (responseContext.Gather) { twilioResponse.BeginGather(new { finishOnKey = "#", action = "/api/twilio/voicecontinuation" }) .Say(message) .EndGather(); } else { twilioResponse.Say(message); } var response = TwilioHelper.WrapTwilioResponseInHttpResponse(this, twilioResponse); if(conversation.ConvoEnded(conversationState.ConversationStep)) { ConvoCookieHelper.EndConvoCookie(ConvoCookieHelper.CONVO_COOKIE_NAME_PHONE, response.Headers); } else if (!error) { // update cookie var newCookie = ConvoCookieHelper.GetCookieHeaderValue(ConvoCookieHelper.CONVO_COOKIE_NAME_PHONE, new ConversationState() { Context = responseContext, ConversationName = conversationState.ConversationName, ConversationStep = conversationState.ConversationStep + 1 }); response.Headers.AddCookies(new CookieHeaderValue[] { newCookie }); } return response; }
public HttpResponseMessage ProcessTicketRequest(SMSMessage twilioRequest) { var invalidRequestMessage = "We could not understand your text."; var error = false; var message = default(String); var responseContext = default(ConversationContext); var conversationState = ConvoCookieHelper.Parse<ConversationState>(ConvoCookieHelper.CONVO_COOKIE_NAME_SMS, Request.Headers); if (conversationState == null) conversationState = new ConversationState() { ConversationStep = 1, ConversationName = twilioRequest.Body }; // Get Conversation by name var conversation = ConversationRegistry.Get(conversationState.ConversationName); if (conversation != null) { try { responseContext = conversation.RunStep(conversationState, twilioRequest.Body); message = responseContext.ResponseMessage; } catch(Exception ex) { // Invalid request message = invalidRequestMessage; error = true; } } else { // Invalid request message = invalidRequestMessage; } var twilioResponse = new TwilioResponse(); twilioResponse.Sms(message); var response = TwilioHelper.WrapTwilioResponseInHttpResponse(this, twilioResponse); if (conversation.ConvoEnded(conversationState.ConversationStep)) { // clear cookie ConvoCookieHelper.EndConvoCookie(ConvoCookieHelper.CONVO_COOKIE_NAME_SMS, response.Headers); } else if(!error) { // update cookie var newCookie = ConvoCookieHelper.GetCookieHeaderValue(ConvoCookieHelper.CONVO_COOKIE_NAME_SMS, new ConversationState() { Context = responseContext, ConversationName = conversationState.ConversationName, ConversationStep = conversationState.ConversationStep + 1 }); response.Headers.AddCookies(new CookieHeaderValue[] { newCookie }); } return response; }
public ConversationContext Execute(ConversationState state, string message) { var responseMessage = new StringBuilder(); var citations = Enumerable.Empty<Citation>(); using (var context = new GHVEntities()) { citations = context.Citations.Where(citation => citation.DriversLicenseNumber == message || citation.CitationNumber == message).ToList(); } if (citations.Count() < 1) { responseMessage.Append("We could not find any tickets that match that license or ticket number"); } else { responseMessage.AppendLine("We found the following citations."); var count = 1; foreach (var citation in citations) { responseMessage.AppendLine(); responseMessage.AppendFormat("Press {0} for the citation with the court date on {1:dddd MMMM d}", count, citation.CourtDateDate); responseMessage.AppendLine(); count++; } responseMessage.AppendLine(); } return new ConversationContext() { ResponseMessage = responseMessage.ToString(), Gather = true }; }
public ConversationContext Execute(ConversationState state, string message) { var responseMessage = new StringBuilder(); var citations = Enumerable.Empty<Citation>(); using (var context = new GHVEntities()) { citations = context.Citations.Where(citation => citation.DriversLicenseNumber == message || citation.CitationNumber == message).ToList(); } if (citations.Count() < 1) { responseMessage.Append("We could not find any tickets that match that license or ticket number"); } else { responseMessage.AppendLine("We found the following citation(s)"); var count = 1; foreach (var citation in citations) { responseMessage.AppendLine(); responseMessage.AppendFormat("{0}) Date: {1:MM/dd/yyyy} Fine: {2:C}", count, citation.CourtDateDate, citation.TotalFees); responseMessage.AppendLine(); count++; } responseMessage.AppendLine(); responseMessage.Append("Select a ticket to see more information"); } return new ConversationContext() { ResponseMessage = responseMessage.ToString() }; }