예제 #1
0
        public static async Task <MetalLUISResponse> ParseUserInput(string rawQuery)
        {
            IDialogContext  context = null;
            LuisResult      result  = new LuisResult();
            BasicLuisDialog luis    = new BasicLuisDialog();
            //luis.Grreting(context,result).RunSynchronously();

            var escapedQuery = Uri.EscapeDataString(rawQuery);

            using (var client = new HttpClient())
            {
                var    endpointAddress = ConfigurationManager.AppSettings["MetalQueryApiEndPoint"];
                string request         = $"{endpointAddress}{escapedQuery}";
                var    response        = await client.GetAsync(request);

                if (response.IsSuccessStatusCode)
                {
                    var jsonResponse = await response.Content.ReadAsStringAsync();

                    var deserializedResponse = JsonConvert.DeserializeObject <MetalLUISResponse>(jsonResponse);
                    return(deserializedResponse);
                }
            }
            return(null);
        }
예제 #2
0
        private async Task MessageReceivedAsync(IDialogContext context, IAwaitable <object> result)
        {
            var    activity       = await result as Activity;
            string userName       = "";
            bool   userNameExists = context.UserData.TryGetValue("UserName", out userName);
            string resetStatus    = "";
            bool   resetExists    = context.UserData.TryGetValue("reset", out resetStatus);

            if (!resetExists)
            {
                context.UserData.SetValue("reset", "");
            }

            if (activity.Text.ToLower().Equals("reset") || resetStatus.Equals("reset"))
            {
                context.UserData.SetValue("UserName", "");
                context.UserData.SetValue("reset", "");

                await context.PostAsync($"You have reset the data successfully. Please provide your name to re-start.");

                context.Wait(MessageReceivedAsync);
            }
            else if (activity.Text.ToLower().Equals("questions"))
            {
                var faqDialog = new BaseQnAMakerDialog();
                await context.Forward(faqDialog, AfterFAQDialog, activity, CancellationToken.None);
            }
            else if (activity.Text.ToLower().Equals("category"))
            {
                var faqDialog = new AzureSearchDialog();
                await context.Forward(faqDialog, AfterFAQDialog, activity, CancellationToken.None);
            }
            else
            {
                if (userNameExists && !(userName.Equals(string.Empty)))
                {
                    // calculate something for us to return
                    //int length = (activity.Text ?? string.Empty).Length;

                    //// return our reply to the user
                    //await context.PostAsync($"You sent {activity.Text} which was {length} characters");
                    var faqDialog = new RootDialog();
                    await context.Forward(faqDialog, AfterFAQDialog, activity, CancellationToken.None);
                }
                else
                {
                    var faqDialog = new BasicLuisDialog();
                    await context.Forward(faqDialog, AfterFAQDialog, activity, CancellationToken.None);
                }
            }
        }
예제 #3
0
        public async Task AfterCMSFormComplete(IDialogContext context, IAwaitable <CMSFormRequest> result)
        {
            CMSFormRequest cmsRequest = null;

            try
            {
                cmsRequest = await result;
            }
            catch (OperationCanceledException)
            {
                await context.PostAsync("You Cancelled the form!");

                return;
            }

            if (cmsRequest != null)
            {
                context.PrivateConversationData.SetValue("ProfileComplete", true);
                context.PrivateConversationData.SetValue("FullName", cmsRequest.FullName);
                context.PrivateConversationData.SetValue("Department", cmsRequest.Department);
                context.PrivateConversationData.SetValue("UserEmail", cmsRequest.userEmail);
                context.PrivateConversationData.SetValue("WebAddress", cmsRequest.WebAddress);
                if (cmsRequest.PhoneNumber == null)
                {
                    context.PrivateConversationData.SetValue("Phone", "");
                }
                else
                {
                    context.PrivateConversationData.SetValue("Phone", cmsRequest.PhoneNumber);
                }

                if (cmsRequest.ExtraNotes == null)
                {
                    context.PrivateConversationData.SetValue("ExtraNotes", "");
                }
                else
                {
                    context.PrivateConversationData.SetValue("ExtraNotes", cmsRequest.ExtraNotes);
                }

                context.PrivateConversationData.SetValue("SupervisorName", cmsRequest.SupervisorName);
                context.PrivateConversationData.SetValue("SupervisorEmail", cmsRequest.SupervisorEmail);

                BasicLuisDialog.SendEmail(cmsRequest, null);

                await context.PostAsync("A request for CMS Account is successfuly raised. You will receive a confirmation email.");

                Fullname_lan   = cmsRequest.FullName;
                Department_lan = cmsRequest.Department;
                UserEmail_lan  = cmsRequest.userEmail;

                PromptDialog.Choice(
                    context: context,
                    resume: AfterFurtherAssistance,
                    prompt: "Do you still require help with this issue? ",
                    options: (IEnumerable <YesOrNo>)Enum.GetValues(typeof(YesOrNo)),
                    retry: "Please select one of the choices.",
                    promptStyle: PromptStyle.Auto
                    );
            }
            else
            {
                await context.PostAsync("Form returned empty response!");
            }
        }