コード例 #1
0
        // Helpers
        protected async Task GetPointOfInterestLocationViewCards(DialogContext sc, LocationSet locationSet)
        {
            var locations = locationSet.Locations;
            var state     = await Accessor.GetAsync(sc.Context);

            var cardsData = new List <LocationCardModelData>();
            var service   = ServiceManager.InitMapsService(GetAzureMapsKey());

            if (locations != null && locations.Count > 0)
            {
                var optionNumber = 1;
                state.FoundLocations = locations.ToList();

                foreach (var location in locations)
                {
                    var imageUrl = service.GetLocationMapImageUrl(location);

                    var locationCardModel = new LocationCardModelData()
                    {
                        ImageUrl     = imageUrl,
                        LocationName = location.Name,
                        Address      = location.Address.FormattedAddress,
                        SpeakAddress = location.Address.AddressLine,
                        OptionNumber = optionNumber,
                    };

                    cardsData.Add(locationCardModel);
                    optionNumber++;
                }

                if (cardsData.Count() > 1)
                {
                    if (sc.ActiveDialog.Id.Equals(Action.FindAlongRoute) && state.ActiveRoute != null)
                    {
                        var replyMessage = sc.Context.Activity.CreateAdaptiveCardGroupReply(POISharedResponses.MultipleLocationsFoundAlongActiveRoute, "Dialogs/Shared/Resources/Cards/PointOfInterestViewCard.json", AttachmentLayoutTypes.Carousel, cardsData, ResponseBuilder);
                        await sc.Context.SendActivityAsync(replyMessage);
                    }
                    else
                    {
                        var replyMessage = sc.Context.Activity.CreateAdaptiveCardGroupReply(POISharedResponses.MultipleLocationsFound, "Dialogs/Shared/Resources/Cards/PointOfInterestViewCard.json", AttachmentLayoutTypes.Carousel, cardsData, ResponseBuilder);
                        await sc.Context.SendActivityAsync(replyMessage);
                    }
                }
                else
                {
                    state.ActiveLocation = state.FoundLocations.Single();

                    if (sc.ActiveDialog.Id.Equals(Action.FindAlongRoute) && state.ActiveRoute != null)
                    {
                        var replyMessage = sc.Context.Activity.CreateAdaptiveCardReply(POISharedResponses.SingleLocationFoundAlongActiveRoute, "Dialogs/Shared/Resources/Cards/PointOfInterestViewNoDrivingButtonCard.json", cardsData.SingleOrDefault(), ResponseBuilder);
                        await sc.Context.SendActivityAsync(replyMessage);
                    }
                    else
                    {
                        var replyMessage = sc.Context.Activity.CreateAdaptiveCardReply(POISharedResponses.SingleLocationFound, "Dialogs/Shared/Resources/Cards/PointOfInterestViewNoDrivingButtonCard.json", cardsData.SingleOrDefault(), ResponseBuilder);
                        await sc.Context.SendActivityAsync(replyMessage);
                    }
                }
            }
            else
            {
                var replyMessage = sc.Context.Activity.CreateReply(POISharedResponses.NoLocationsFound, ResponseBuilder);
                await sc.Context.SendActivityAsync(replyMessage);
            }
        }
コード例 #2
0
        // Helpers
        protected async Task GetPointOfInterestLocationViewCards(DialogContext sc, LocationSet locationSet)
        {
            var locations = locationSet.Locations;
            var state     = await Accessor.GetAsync(sc.Context);

            var cardData = new List <LocationCardModelData>();
            var service  = ServiceManager.InitMapsService(GetAzureMapsKey());

            if (locations != null && locations.Count > 0)
            {
                var optionNumber = 1;
                state.FoundLocations = locations.ToList();

                foreach (var location in locations)
                {
                    var imageUrl = service.GetLocationMapImageUrl(location);

                    var locationCardModel = new LocationCardModelData()
                    {
                        ImageUrl     = imageUrl,
                        LocationName = location.Name,
                        Address      = location.Address.FormattedAddress,
                        SpeakAddress = location.Address.AddressLine,
                        OptionNumber = optionNumber,
                    };

                    cardData.Add(locationCardModel);
                    optionNumber++;
                }

                if (cardData.Count() > 1)
                {
                    var templateId = string.Empty;
                    var cards      = new List <Card>();

                    if (sc.ActiveDialog.Id.Equals(Action.FindAlongRoute) && state.ActiveRoute != null)
                    {
                        templateId = POISharedResponses.MultipleLocationsFoundAlongActiveRoute;
                    }
                    else
                    {
                        templateId = POISharedResponses.MultipleLocationsFound;
                    }

                    foreach (var data in cardData)
                    {
                        cards.Add(new Card("PointOfInterestViewCard", data));
                    }

                    var replyMessage = ResponseManager.GetCardResponse(templateId, cards);
                    await sc.Context.SendActivityAsync(replyMessage);
                }
                else
                {
                    state.ActiveLocation = state.FoundLocations.Single();
                    var templateId = string.Empty;

                    if (sc.ActiveDialog.Id.Equals(Action.FindAlongRoute) && state.ActiveRoute != null)
                    {
                        templateId = POISharedResponses.SingleLocationFoundAlongActiveRoute;
                    }
                    else
                    {
                        templateId = POISharedResponses.SingleLocationFound;
                    }

                    var card         = new Card("PointOfInterestViewNoDrivingButtonCard", cardData.SingleOrDefault());
                    var replyMessage = ResponseManager.GetCardResponse(templateId, card);
                    await sc.Context.SendActivityAsync(replyMessage);
                }
            }
            else
            {
                var replyMessage = ResponseManager.GetResponse(POISharedResponses.NoLocationsFound);
                await sc.Context.SendActivityAsync(replyMessage);
            }
        }