Ejemplo n.º 1
0
        private async Task <bool> ValidateReservationDate(PromptValidatorContext <string> prompt, CancellationToken cancellationToken)
        {
            var state = await Accessor.GetAsync(prompt.Context);

            var reservation = state.Booking;

            var luisDataTimeEntity = state.LuisResult?.Entities[LuisEntities.BuiltInDateTime];
            var dateTimeEntity     = LuisEntityHelper.TryGetDateTimeFromEntity(luisDataTimeEntity, true);

            if (dateTimeEntity.HasValue)
            {
                reservation.Date = dateTimeEntity.Value;
                reservation.Time = dateTimeEntity.Value;
                await RenderSelectedDateTimeMessage(prompt.Context, reservation);
            }
            else
            {
                dateTimeEntity = LuisEntityHelper.TryGetDateFromEntity(luisDataTimeEntity, true);
                if (dateTimeEntity.HasValue)
                {
                    reservation.Date = dateTimeEntity.Value;
                }
            }

            if (reservation.Date == null)
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Initializes the reservation instance with values found in the LUIS entities.
        /// </summary>
        private void UpdateReservationInfoFromEntities(ReservationBooking reservation, RecognizerResult recognizerResult)
        {
            if (recognizerResult == null)
            {
                return;
            }

            foreach (var entity in recognizerResult.Entities)
            {
                switch (entity.Key)
                {
                case LuisEntities.Cuisine:
                    reservation.Category = LuisEntityHelper.TryGetNormalizedValueFromListEntity(entity.Value);
                    break;

                case LuisEntities.City:
                    reservation.Location = LuisEntityHelper.TryGetValueFromEntity(entity.Value);
                    break;

                case LuisEntities.BuiltInDateTime:
                    var dateTimeEntity = LuisEntityHelper.TryGetDateTimeFromEntity(entity.Value, true);
                    if (dateTimeEntity != null)
                    {
                        reservation.Date = dateTimeEntity.Value;
                        reservation.Time = dateTimeEntity.Value;
                    }
                    else
                    {
                        var dateEntity = LuisEntityHelper.TryGetDateFromEntity(entity.Value, true);
                        if (dateEntity.HasValue)
                        {
                            reservation.Date = dateEntity.Value;
                        }
                        else
                        {
                            var timeEntity = LuisEntityHelper.TryGetTimeFromEntity(entity.Value, true);
                            if (timeEntity.HasValue)
                            {
                                reservation.Time = timeEntity.Value;
                            }
                        }
                    }

                    break;
                }
            }
        }