public async Task Filter(IDialogContext context, IAwaitable <IMessageActivity> message, LuisResult result) { FilterIntentScore(context, result); List <Filter> filter_luis = FilterLogic.GetEntitiesFilter(result); StateHelper.SetFilters(new List <Filter>(), context); foreach (Filter f in filter_luis) { if (StateHelper.AddFilter(f, context) == true) { StateHelper.AddFilterCount(context, f); } } FilterDialog.State state = FilterDialog.State.INIT; if (filter_luis.Count != 0) { state = FilterDialog.State.FILTER; } else { state = FilterDialog.State.INIT; } context.Call(new FilterDialog(state), ResumeAfterDialogueCall); }
public async Task EventHandler(IDialogContext context, Activity activity) { JObject json = activity.Value as JObject; List <InputData> data = getReplyData(json); //has the mandatory info if (data.Count >= 2) { //json structure is correct if (data[0].attribute == REPLY_ATR && data[1].attribute == DIALOG_ATR) { ClickType event_click = getClickType(data[0].value); DialogType event_dialog = getDialogType(data[1].value); //event of this dialog if (event_dialog == DialogType.FILTER && event_click != ClickType.NONE) { switch (event_click) { case ClickType.PAGINATION: page++; await StartAsync(context); break; case ClickType.FILTER: data.RemoveAt(0); //remove reply_type data.RemoveAt(0); //remove dialog StateHelper.SetFilters(FilterLogic.GetFilterFromForm(data), context); foreach (Filter f in StateHelper.GetFilters(context)) { StateHelper.AddFilterCount(context, f); } this.state = State.FILTER; await StartAsync(context); break; case ClickType.FILTER_AGAIN: this.state = State.FILTER_AGAIN; await StartAsync(context); break; } } // event of other dialog else { context.Done(new CODE(DIALOG_CODE.PROCESS_EVENT, activity, event_dialog)); } } else { context.Done(new CODE(DIALOG_CODE.DONE)); } } else { context.Done(new CODE(DIALOG_CODE.DONE)); } }