Beispiel #1
0
 public ConversationContext Execute(ConversationState state, string message)
 {
     return new ConversationContext()
     {
         ResponseMessage = "Please send us your license or ticket number",
         Context = state.PhoneNumber
     };
 }
Beispiel #2
0
 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
     };
 }
Beispiel #3
0
        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;
        }
Beispiel #4
0
        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;
        }
Beispiel #5
0
        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
            };
        }
Beispiel #6
0
        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()
            };
        }