Beispiel #1
0
        /// <summary>
        /// Retrieve Normalised entity value.
        /// </summary>
        /// <param name="context">Turn Context.</param>
        /// <returns>Entities mapped to data structure.</returns>
        private async Task <Dictionary <string, string> > GetNormalizedEntityValue(ITurnContext context)
        {
            var state = await Accessor.GetAsync(context);

            var recognizerResult = state.LuisResult;

            var normalizedValue = new Dictionary <string, string>();

            // Try to get the Cuisine
            var normalizedEntityValue = LuisEntityHelper.TryGetNormalizedValueFromListEntity(recognizerResult?.Entities?[LuisEntities.Cuisine]);

            if (normalizedEntityValue != null)
            {
                normalizedValue.Add(LuisEntities.Cuisine, normalizedEntityValue);
            }
            else
            {
                // See if the user provided an ordinal (i.e. the first one, the second one, etc.)
                normalizedEntityValue = LuisEntityHelper.TryGetValueFromEntity(recognizerResult?.Entities?[LuisEntities.BuiltInOrdinal]);
                if (normalizedEntityValue != null)
                {
                    normalizedValue.Add(LuisEntities.BuiltInOrdinal, normalizedEntityValue);
                }
                else
                {
                    normalizedEntityValue = LuisEntityHelper.TryGetValueFromEntity(recognizerResult?.Entities?[LuisEntities.BuiltInNumber]);
                    if (normalizedEntityValue != null)
                    {
                        normalizedValue.Add(LuisEntities.BuiltInNumber, normalizedEntityValue);
                    }
                }
            }

            return(normalizedValue);
        }
Beispiel #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;
                }
            }
        }