/// <summary> /// Connects for Verification. /// </summary> /// <param name="context"></param> /// <param name="result"></param> /// <returns></returns> private async Task CheckForVarificationSms(IDialogContext context, IAwaitable <object> result) { var activity = await result as Activity; bool success = false; if (activity != null && activity.Attachments != null) { foreach (var attachment in activity.Attachments) { var unused = attachment; var attachmentUrl = unused.ContentUrl; var httpClient = new HttpClient(); var attachmentData = await httpClient.GetByteArrayAsync(attachmentUrl); Stream stream = new MemoryStream(attachmentData); await ImageUploadTask(stream, ChatModel.CustomerId); try { var request = (HttpWebRequest)WebRequest.Create( "http://visiloanapi.azurewebsites.net/api/customer/PostImageData"); var postData = $"CustomerId={ChatModel.CustomerId}"; postData += $"&Url={UrlEndpoints.BlobBaseUrl}"; var data = Encoding.ASCII.GetBytes(postData); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = data.Length; using (var steam = request.GetRequestStream()) { steam.Write(data, 0, data.Length); } var response = (HttpWebResponse)request.GetResponse(); var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); var modelResult = JsonConvert.DeserializeObject <PostImageDataModel>(responseString); if (modelResult.Code.Trim().Equals("200")) { success = true; ChatModel.StateCode = modelResult.State; } //using (var client = new HttpClient()) //{ // client.BaseAddress = new Uri(UrlEndpoints.BaseUrl); // var content = new FormUrlEncodedContent(new[] // { // new KeyValuePair<string, string>("CustomerId", ChatModel.CustomerId), // new KeyValuePair<string, string>("Url", // $"{UrlEndpoints.BlobBaseUrl}{ChatModel.CustomerId}"), // }); // var apiResponseMessage = await client.PostAsync("/api/customer/PostImageData", content); // string resultContent = await apiResponseMessage.Content.ReadAsStringAsync(); // Console.WriteLine(resultContent); //} } catch (Exception exception) { Console.WriteLine(exception.Message); } break; //TODO: Push This data to server and refactor the code. } } else { if (activity != null && (activity.Text.ToLower().Equals("reset") || activity.Text.ToLower().Equals("stop"))) { await context.PostAsync(BotResponses.BotReset); context.Wait(MessageReceivedAsync); } //Hook Implementation } if (success.Equals(true)) { string jsonString = await ParseJson(UrlEndpoints.ValidationUrl + $"?cid={ChatModel.CustomerId}"); var res = JsonConvert.DeserializeObject <VerificationObject>(jsonString); _retainedObj = res; Thread.Sleep(1000); if (_retainedObj.License.Verified.Equals("Yes")) { //TODO: Implement State Check var stateName = States.GetName(ChatModel.StateCode); await context.PostAsync($"{BotResponses.PreStatePrompt} {stateName.ToUpper()} {BotResponses.PostStatePrompt}"); AddMessagetoHistory($"{BotResponses.PreStatePrompt} {stateName.ToUpper()} {BotResponses.PostStatePrompt}", "Bot", timestamp: DateTime.Now); context.Wait(VerifyState); } else if (_retainedObj.License.Verified.Equals("No")) { await context.PostAsync(BotResponses.UnableToVerifyText); AddMessagetoHistory(BotResponses.UnableToVerifyText, "Bot", timestamp: DateTime.Now); context.Wait(CheckForVarificationSms); } } else { if (activity != null && !String.IsNullOrEmpty(activity.Text)) { if ((activity.Text.ToLower().Equals("reset") || activity.Text.ToLower().Equals("stop"))) { await context.PostAsync(BotResponses.BotReset); context.Wait(MessageReceivedAsync); return; } else if (activity.Text.ToLower().Contains("help")) { await context.PostAsync(BotResponses.HelpText); AddMessagetoHistory(BotResponses.HelpText, "Bot", timestamp: DateTime.Now); context.Wait(LoanAmountReceivedAsync); } else if (activity.Text.ToLower().Contains("terms")) { await context.PostAsync(BotResponses.TermsText); AddMessagetoHistory(BotResponses.TermsText, "Bot", timestamp: DateTime.Now); context.Wait(LoanAmountReceivedAsync); } else { await context.PostAsync(BotResponses.imageSuggestPrompt); AddMessagetoHistory(BotResponses.imageSuggestPrompt, "Bot", timestamp: DateTime.Now); //Check for hook or image } } else { await context.PostAsync(BotResponses.UnableToVerifyText); AddMessagetoHistory(BotResponses.UnableToVerifyText, "Bot", timestamp: DateTime.Now); } //display respective message and wait for response } }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <param name="result"></param> /// <returns></returns> private async Task HowToSentImage(IDialogContext context, IAwaitable <object> result) { var activity = await result as Activity; bool success = false; if (activity != null && activity.Text.ToLower().Contains("help")) { await context.PostAsync(BotResponses.HelpText); AddMessagetoHistory(BotResponses.HelpText, "Bot", timestamp: DateTime.Now); context.Wait(TypeOfCarReceivedAsync); } else if (activity != null && activity.Text.ToLower().Contains("terms")) { await context.PostAsync(BotResponses.TermsText); AddMessagetoHistory(BotResponses.TermsText, "Bot", timestamp: DateTime.Now); context.Wait(TypeOfCarReceivedAsync); } else if (activity != null && (activity.Text.ToLower().Equals("reset") || activity.Text.ToLower().Equals("stop"))) { await context.PostAsync(BotResponses.BotReset); context.Wait(MessageReceivedAsync); } else { if (activity != null && activity.Text.Equals("2")) { AddMessagetoHistory($"{activity.Text}", "User", timestamp: DateTime.Now); await context.PostAsync($"{BotResponses.PreWebUpload} {ChatModel.URL} {BotResponses.WebUpload}"); AddMessagetoHistory($"{BotResponses.PreWebUpload} {ChatModel.URL} {BotResponses.WebUpload}", "Bot", timestamp: DateTime.Now); success = await CheckForUpload(false); if (success.Equals(true)) { string jsonString = await ParseJson(UrlEndpoints.ValidationUrl + $"?cid={ChatModel.CustomerId}"); var res = JsonConvert.DeserializeObject <VerificationObject>(jsonString); _retainedObj = res; Thread.Sleep(1000); if (_retainedObj.License.Verified.Equals("Yes")) { //TODO: Implement State Check await context.PostAsync($"{BotResponses.PreStatePrompt} {States.GetName(ChatModel.StateCode.ToUpper()).ToUpper()} {BotResponses.PostStatePrompt}"); context.Wait(VerifyState); } else if (_retainedObj.License.Verified.Equals("No")) { await context.PostAsync(BotResponses.UnableToVerifyText); AddMessagetoHistory(BotResponses.UnableToVerifyText, "Bot", timestamp: DateTime.Now); context.Wait(CheckForVarificationSms); } } else { await context.PostAsync(BotResponses.unclearImagePrompt); AddMessagetoHistory(BotResponses.unclearImagePrompt, "Bot", timestamp: DateTime.Now); await context.PostAsync(BotResponses.SesssionExpired); context.Wait(MessageReceivedAsync); } } else if (activity != null && activity.Text.Equals("1")) { AddMessagetoHistory($"{activity.Text}", "User", timestamp: DateTime.Now); await context.PostAsync($"{BotResponses.SmsUpload}"); AddMessagetoHistory($"{BotResponses.SmsUpload}", "Bot", timestamp: DateTime.Now); context.Wait(CheckForVarificationSms); } else { //invalid text } } }