public FindMeetingRoomDialog( BotSettings settings, BotServices services, ConversationState conversationState, LocaleTemplateEngineManager localeTemplateEngineManager, IServiceManager serviceManager, FindContactDialog findContactDialog, IBotTelemetryClient telemetryClient, ISearchService searchService, MicrosoftAppCredentials appCredentials) : base(nameof(FindMeetingRoomDialog), settings, services, conversationState, localeTemplateEngineManager, serviceManager, telemetryClient, appCredentials) { TelemetryClient = telemetryClient; SearchService = searchService; // entry, get the name list var findMeetingRoom = new WaterfallStep[] { CollectStartDate, CollectStartTime, CollectDuration, CollectBuilding, CollectFloorNumber, GetMeetingRooms, GetAuthToken, AfterGetAuthToken, CheckRoomAvailable, CheckRoomRejected, AfterConfirmMeetingRoom }; var updateStartDate = new WaterfallStep[] { UpdateStartDateForCreate, AfterUpdateStartDateForCreate, }; var updateStartTime = new WaterfallStep[] { UpdateStartTimeForCreate, AfterUpdateStartTimeForCreate, }; var updateDuration = new WaterfallStep[] { UpdateDurationForCreate, AfterUpdateDurationForCreate, }; var collectBuilding = new WaterfallStep[] { CollectBuildingPrompt, AfterCollectBuildingPrompt }; var collectFloorNumber = new WaterfallStep[] { CollectFloorNumberPrompt, AfterCollectFloorNumberPrompt }; var recreatMeetingRoom = new WaterfallStep[] { RecreateMeetingRoomPrompt, AfterRecreateMeetingRoomPrompt }; AddDialog(new WaterfallDialog(Actions.FindMeetingRoom, findMeetingRoom) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.UpdateStartDateForCreate, updateStartDate) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.UpdateStartTimeForCreate, updateStartTime) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.UpdateDurationForCreate, updateDuration) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.CollectBuilding, collectBuilding) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.CollectFloorNumber, collectFloorNumber) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.RecreateMeetingRoom, recreatMeetingRoom) { TelemetryClient = telemetryClient }); AddDialog(new DatePrompt(Actions.DatePromptForCreate)); AddDialog(new TimePrompt(Actions.TimePromptForCreate)); AddDialog(new DurationPrompt(Actions.DurationPromptForCreate)); AddDialog(new GetBuildingPrompt(Actions.BuildingPromptForCreate, services, searchService)); AddDialog(new GetFloorNumberPrompt(Actions.FloorNumberPromptForCreate, services)); AddDialog(new GetRecreateMeetingRoomInfoPrompt(Actions.RecreateMeetingRoomPrompt, services)); AddDialog(findContactDialog ?? throw new ArgumentNullException(nameof(findContactDialog))); InitialDialogId = Actions.FindMeetingRoom; }
public CheckPersonAvailableDialog( BotSettings settings, BotServices services, ConversationState conversationState, LocaleTemplateEngineManager localeTemplateEngineManager, FindContactDialog findContactDialog, IServiceManager serviceManager, IBotTelemetryClient telemetryClient, MicrosoftAppCredentials appCredentials) : base(nameof(CheckPersonAvailableDialog), settings, services, conversationState, localeTemplateEngineManager, serviceManager, telemetryClient, appCredentials) { TelemetryClient = telemetryClient; var checkAvailable = new WaterfallStep[] { GetAuthToken, AfterGetAuthToken, CollectContacts, CollectTime, GetAuthToken, AfterGetAuthToken, CheckAvailable, }; var collectTime = new WaterfallStep[] { AskForTimePrompt, AfterAskForTimePrompt }; var findNextAvailableTime = new WaterfallStep[] { FindNextAvailableTimePrompt, AfterFindNextAvailableTimePrompt, }; var createMeetingWithAvailableTime = new WaterfallStep[] { CreateMeetingPrompt, AfterCreateMeetingPrompt }; // Define the conversation flow using a waterfall model. AddDialog(new WaterfallDialog(Actions.CheckAvailable, checkAvailable) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.FindNextAvailableTime, findNextAvailableTime) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.CollectTime, collectTime) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.CreateMeetingWithAvailableTime, createMeetingWithAvailableTime) { TelemetryClient = telemetryClient }); AddDialog(findContactDialog ?? throw new ArgumentNullException(nameof(findContactDialog))); // Set starting dialog for component InitialDialogId = Actions.CheckAvailable; }
public CreateEventDialog( BotSettings settings, BotServices services, ConversationState conversationState, LocaleTemplateEngineManager localeTemplateEngineManager, FindContactDialog findContactDialog, IServiceManager serviceManager, IBotTelemetryClient telemetryClient, MicrosoftAppCredentials appCredentials) : base(nameof(CreateEventDialog), settings, services, conversationState, localeTemplateEngineManager, serviceManager, telemetryClient, appCredentials) { TelemetryClient = telemetryClient; var createEvent = new WaterfallStep[] { GetAuthToken, AfterGetAuthToken, CollectAttendees, CollectTitle, CollectContent, CollectStartDate, CollectStartTime, CollectDuration, CollectLocation, GetAuthToken, AfterGetAuthToken, ShowEventInfo, ConfirmBeforeCreatePrompt, AfterConfirmBeforeCreatePrompt, GetAuthToken, AfterGetAuthToken, CreateEvent, }; var collectTitle = new WaterfallStep[] { CollectTitlePrompt, AfterCollectTitlePrompt }; var collectContent = new WaterfallStep[] { CollectContentPrompt, AfterCollectContentPrompt }; var updateStartDate = new WaterfallStep[] { UpdateStartDateForCreate, AfterUpdateStartDateForCreate, }; var updateStartTime = new WaterfallStep[] { UpdateStartTimeForCreate, AfterUpdateStartTimeForCreate, }; var collectLocation = new WaterfallStep[] { CollectMeetingRoomPrompt, AfterCollectMeetingRoomPrompt, CollectLocationPrompt, AfterCollectLocationPrompt }; var updateDuration = new WaterfallStep[] { UpdateDurationForCreate, AfterUpdateDurationForCreate, }; var getRecreateInfo = new WaterfallStep[] { GetRecreateInfo, AfterGetRecreateInfo, }; var showRestParticipants = new WaterfallStep[] { ShowRestParticipantsPrompt, AfterShowRestParticipantsPrompt, }; // Define the conversation flow using a waterfall model. AddDialog(new WaterfallDialog(Actions.CreateEvent, createEvent) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.CollectTitle, collectTitle) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.CollectContent, collectContent) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.CollectLocation, collectLocation) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.UpdateStartDateForCreate, updateStartDate) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.UpdateStartTimeForCreate, updateStartTime) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.UpdateDurationForCreate, updateDuration) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.GetRecreateInfo, getRecreateInfo) { TelemetryClient = telemetryClient }); AddDialog(new WaterfallDialog(Actions.ShowRestParticipants, showRestParticipants) { TelemetryClient = telemetryClient }); AddDialog(new DatePrompt(Actions.DatePromptForCreate)); AddDialog(new TimePrompt(Actions.TimePromptForCreate)); AddDialog(new DurationPrompt(Actions.DurationPromptForCreate)); AddDialog(new GetRecreateInfoPrompt(Actions.GetRecreateInfoPrompt)); AddDialog(findContactDialog ?? throw new ArgumentNullException(nameof(findContactDialog))); // Set starting dialog for component InitialDialogId = Actions.CreateEvent; }