Настройка внешнего вида адаптивной карты с использованием RenderedAdaptiveCards внутри SDK бот-фреймворка - PullRequest
0 голосов
/ 21 сентября 2018

Я занимаюсь разработкой бота с использованием Microsoft Bot Framework.Я использую адаптивные карты для отображения рейсов для пользователей, но у них много ограничений по внешнему виду.Я пытаюсь визуализировать адаптивную карту из одного из диалогов в рамках моего бота, создавая адаптивное средство визуализации карты, используя мой собственный hostconfig.json, а затем присоединяю Html моей адаптивной карты обратно к окну чата.Но это не работает: (

    public static Attachment CreateFlight(Flight flight)
    {
        var renderedAdaptiveCard = AdaptiveCardRenderer
            .RenderCard(new AdaptiveCard
            {
                Body = new List<AdaptiveElement>
                {
                    new AdaptiveContainer {Items = CreateFlightAdaptiveElements(flight)}
                },
                Actions = new List<AdaptiveAction>
                {
                    new AdaptiveShowCardAction
                    {
                        Card = new AdaptiveCard
                        {
                            Body = new List<AdaptiveElement>
                            {   

                            },
                            Actions = new List<AdaptiveAction>
                            {
                                new AdaptiveSubmitAction
                                {
                                    Title = "Select",
                                    Data = flight.Segments.Select(x => $"{x.Airline} {x.FlightNo}")
                                        .Aggregate((i, j) => i + "/" + j),

                                }
                            },
                            BackgroundImage = new Uri($"{DomainUrl}/Images/ac_background.jpg")
                        },
                        Title = "Select"
                    },

                },
                BackgroundImage = new Uri($"{DomainUrl}/Images/ECEFF1.png")
            });

        var attachment = new Attachment
        {   
            ContentType = "application/html",
            Content = renderedAdaptiveCard.Html
        };

        return attachment;
    }

Я пытаюсь сделать что-то невозможное здесь? Как изменить серый цвет моего бота по умолчанию? Мои основные каналы - Skype, Slack и т. Д., Поэтому у меня нетпланирует интегрировать это в веб-чат. Пожалуйста, помогите мне с этим.

1 Ответ

0 голосов
/ 25 сентября 2018

Идея Adaptive Cards состоит в том, чтобы каждый канал отображал карты так, как это определено для этого канала.Карта «адаптируется» к любой среде, которая может ее поддерживать.В то время как адаптивные карты предлагают большую гибкость, бот может делать только многое, потому что в конечном итоге именно канал отвечает за рендеринг карты.

Авторы карт описывают свой контент как простой объект JSON.Затем этот контент может быть воспроизведен непосредственно внутри хост-приложения, автоматически адаптируясь к внешнему виду хоста.

Например, Contoso Bot может создавать адаптивную карту через Bot Framework, а при доставке в Skype,это будет выглядеть и ощущаться как карта Skype.Когда эта же полезная нагрузка отправляется в Microsoft Teams, она будет выглядеть и чувствовать себя как Microsoft Teams.По мере того, как все больше хост-приложений начинают поддерживать Adaptive Cards, та же полезная нагрузка автоматически загорается внутри этих приложений, но при этом все еще ощущается полностью как приложение.

Пользователи выигрывают, потому что все кажется знакомым.Хост-приложения выигрывают, потому что они контролируют пользовательский интерфейс.И авторы карт выигрывают, потому что их контент расширяется без какой-либо дополнительной работы.

Как вы, вероятно, знаете, тип RenderedAdaptiveCard предназначен для использования в клиентском коде.Это означает, что он может помочь вам, например, если вы хотите создать свой собственный канал, но на самом деле он не предназначен для использования в ботах.Ваш код не работает, потому что нет типа вложения HTML, и большинство каналов вообще не поддерживают HTML.Вы можете найти больше информации в этом вопросе и этом выпуске GitHub .

Надеемся, что вы сможете добиться того, что вам нужно, с помощью доступных вам инструментов, таких каккак изображения и ссылки.

...