public async Task <Product[]> GetRecommendationsAsync(Model.Recommendations.RecommendationEvalContext context) { var cognitiveContext = context as CognitiveRecommendationEvalContext; if (cognitiveContext == null) { throw new InvalidCastException(nameof(context)); } var result = new List <Product>(); var recommendedProductIds = await _productRecommendationsApi.Recommendations.GetRecommendationsAsync(cognitiveContext.ToContextDto()); if (recommendedProductIds != null) { result.AddRange(await _catalogSearchService.GetProductsAsync(recommendedProductIds.ToArray(), ItemResponseGroup.Seo | ItemResponseGroup.Outlines | ItemResponseGroup.ItemWithPrices | ItemResponseGroup.ItemWithDiscounts | ItemResponseGroup.Inventory)); } return(result.ToArray()); }
public async Task <Product[]> GetRecommendationsAsync(Model.Recommendations.RecommendationEvalContext context) { var cognitiveContext = context as CognitiveRecommendationEvalContext; if (cognitiveContext == null) { throw new InvalidCastException(nameof(context)); } var cacheKey = CacheKey.With(GetType(), "GetRecommendationsAsync", context.GetHashCode().ToString()); return(await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { cacheEntry.AddExpirationToken(RecommendationsCacheRegion.CreateChangeToken()); var result = new List <Product>(); var recommendedProductIds = await _recommendationsApi.GetRecommendationsAsync(cognitiveContext.ToContextDto()); if (recommendedProductIds != null) { result.AddRange(await _catalogService.GetProductsAsync(recommendedProductIds.ToArray(), ItemResponseGroup.Seo | ItemResponseGroup.Outlines | ItemResponseGroup.ItemWithPrices | ItemResponseGroup.ItemWithDiscounts | ItemResponseGroup.Inventory)); } return result.ToArray(); })); }