예제 #1
0
        /// <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
            }
        }
예제 #2
0
        /// <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
                }
            }
        }