protected ToDoLuis GetToDoIntent( string userInput = null, ToDoLuis.Intent intents = ToDoLuis.Intent.None, double[] ordinal = null, double[] number = null, string[] containsAll = null, string[] listType = null, string[] taskContentML = null, string[] shopContent = null, string[] taskContentPattern = null, string[][] foodOfGrocery = null, string[][] shopVerb = null) { var intent = new ToDoLuis(); intent.Text = userInput; intent.Intents = new Dictionary <ToDoLuis.Intent, IntentScore>(); intent.Intents.Add(intents, new IntentScore() { Score = TopIntentScore }); intent.Entities = new ToDoLuis._Entities(); intent.Entities._instance = new ToDoLuis._Entities._Instance(); intent.Entities.ordinal = ordinal; intent.Entities.ContainsAll = containsAll; intent.Entities.ListType = listType; intent.Entities.TaskContent = taskContentML; intent.Entities.FoodOfGrocery = foodOfGrocery; intent.Entities.ShopVerb = shopVerb; return(intent); }
private ToDoLuis GetBaseShowTasksIntent( string userInput, ToDoLuis.Intent intents = ToDoLuis.Intent.ShowToDo, string[] listType = null) { return(GetToDoIntent( userInput, intents, listType: listType)); }
private ToDoLuis GetBaseMarkToDoIntent( string userInput, ToDoLuis.Intent intents = ToDoLuis.Intent.MarkToDo, double[] ordinal = null, double[] number = null, string[] listType = null, string[] containsAll = null, string[] taskContentPattern = null, string[] taskContentML = null) { return(GetToDoIntent( userInput, intents, ordinal: ordinal, number: number, listType: listType, containsAll: containsAll, taskContentPattern: taskContentPattern, taskContentML: taskContentML)); }
private ToDoLuis GetBaseAddTaskIntent( string userInput, ToDoLuis.Intent intents = ToDoLuis.Intent.AddToDo, string[] listType = null, string[] taskContentML = null, string[] shopContent = null, string[] taskContentPattern = null, string[][] foodOfGrocery = null, string[][] shopVerb = null) { return(GetToDoIntent( userInput, intents, listType: listType, taskContentML: taskContentML, shopContent: shopContent, taskContentPattern: taskContentPattern, foodOfGrocery: foodOfGrocery, shopVerb: shopVerb)); }
public async Task <DialogTurnResult> ShowTasksAsync(WaterfallStepContext sc, CancellationToken cancellationToken = default(CancellationToken)) { try { var state = await ToDoStateAccessor.GetAsync(sc.Context, cancellationToken : cancellationToken); state.ListType = state.ListType ?? ToDoStrings.ToDo; var service = await InitListTypeIdsAsync(sc, cancellationToken); if (state.IsAction) { state.AllTasks = await service.GetTasksAsync(state.ListType); var todoList = new List <string>(); if (state.AllTasks != null && state.AllTasks.Any()) { state.AllTasks.ForEach(x => todoList.Add(x.Topic)); } return(await sc.EndDialogAsync(new TodoListInfo { ActionSuccess = true, ToDoList = todoList }, cancellationToken)); } state.LastListType = state.ListType; ToDoLuis.Intent topIntent = ToDoLuis.Intent.ShowToDo; var luisResult = sc.Context.TurnState.Get <ToDoLuis>(StateProperties.ToDoLuisResultKey); if (luisResult != null && luisResult.TopIntent().intent != ToDoLuis.Intent.None) { topIntent = luisResult.TopIntent().intent; } General.Intent generalTopIntent = General.Intent.None; var generalLuisResult = sc.Context.TurnState.Get <General>(StateProperties.GeneralLuisResultKey); if (generalLuisResult != null) { generalTopIntent = generalLuisResult.TopIntent().intent; } if (topIntent == ToDoLuis.Intent.ShowToDo || state.GoBackToStart) { state.AllTasks = await service.GetTasksAsync(state.ListType); } var allTasksCount = state.AllTasks.Count; var currentTaskIndex = state.ShowTaskPageIndex * state.PageSize; state.Tasks = state.AllTasks.GetRange(currentTaskIndex, Math.Min(state.PageSize, allTasksCount - currentTaskIndex)); if (state.Tasks.Count <= 0) { var activity = TemplateManager.GenerateActivityForLocale(ShowToDoResponses.NoTasksMessage, new { ListType = state.ListType }); await sc.Context.SendActivityAsync(activity, cancellationToken); return(await sc.EndDialogAsync(true, cancellationToken)); } else { var cardReply = sc.Context.Activity.CreateReply(); if (topIntent == ToDoLuis.Intent.ShowToDo || state.GoBackToStart) { var toDoListCard = ToAdaptiveCardForShowToDosByLG( sc.Context, state.Tasks, state.AllTasks.Count, state.ListType); await sc.Context.SendActivityAsync(toDoListCard, cancellationToken); if (allTasksCount <= state.Tasks.Count) { var activity = TemplateManager.GenerateActivityForLocale(ShowToDoResponses.AskAddOrCompleteTaskMessage); await sc.Context.SendActivityAsync(activity, cancellationToken); } } else if (topIntent == ToDoLuis.Intent.ShowNextPage || generalTopIntent == General.Intent.ShowNext) { if (state.IsLastPage) { state.IsLastPage = false; return(await sc.ReplaceDialogAsync(Actions.CollectGoBackToStartConfirmation, cancellationToken : cancellationToken)); } else { var toDoListCard = ToAdaptiveCardForReadMoreByLG( sc.Context, state.Tasks, state.AllTasks.Count, state.ListType); await sc.Context.SendActivityAsync(toDoListCard, cancellationToken); if ((state.ShowTaskPageIndex + 1) * state.PageSize >= state.AllTasks.Count) { return(await sc.ReplaceDialogAsync(Actions.CollectGoBackToStartConfirmation, cancellationToken : cancellationToken)); } } } else if (topIntent == ToDoLuis.Intent.ShowPreviousPage || generalTopIntent == General.Intent.ShowPrevious) { if (state.IsFirstPage) { state.IsFirstPage = false; return(await sc.ReplaceDialogAsync(Actions.CollectRepeatFirstPageConfirmation, cancellationToken : cancellationToken)); } else { var toDoListCard = ToAdaptiveCardForPreviousPageByLG( sc.Context, state.Tasks, state.AllTasks.Count, state.ShowTaskPageIndex == 0, state.ListType); await sc.Context.SendActivityAsync(toDoListCard, cancellationToken); } } if ((topIntent == ToDoLuis.Intent.ShowToDo || state.GoBackToStart) && allTasksCount > state.Tasks.Count) { state.GoBackToStart = false; return(await sc.NextAsync(cancellationToken : cancellationToken)); } else { state.GoBackToStart = false; return(await sc.EndDialogAsync(true, cancellationToken)); } } } catch (SkillException ex) { await HandleDialogExceptionsAsync(sc, ex, cancellationToken); return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs)); } catch (Exception ex) { await HandleDialogExceptionsAsync(sc, ex, cancellationToken); return(new DialogTurnResult(DialogTurnStatus.Cancelled, CommonUtil.DialogTurnResultCancelAllDialogs)); } }