Промежуточное ПО BotFramework-Webchat: установка имен классов - PullRequest
1 голос
/ 11 ноября 2019

Я хотел бы добавить имена классов CSS в зависимости от типа карты в соответствующий элемент HTML.

Я уже сделал это, установив атрибут AdaptiveCard.customCssSelector. Например, вам просто нужно добавить builder.card.customCssSelector = "ac-thumbnail"; в этой строке , и полученный html-блок будет содержать class="ac-container ac-thumbnail".

Однако мне нравится быть независимым от обновлений Botframework-Webchat ипоместите эту логику в промежуточное ПО. Согласно документам BotFramework-Webchat можно добавить attachmentMiddleware к функции renderWebChat и манипулировать элементами html. На самом деле я получаю действия и вложения, но я не могу манипулировать html-блоками или добавлять селектор css.

Вот мой код промежуточного программного обеспечения:

export const cardCssSelector = ({ dispatch }) => next => action => {
    if (action.type === 'DIRECT_LINE/INCOMING_ACTIVITY') {
        const { activity } = action.payload;
         for (var index in activity.attachments) {       
            const card  = activity.attachments[index].content;
            if(card.tap && card.tap.value){
                card.customCssSelector = 'tap';
            }
        }
    }
    console.log(action);
    return next(action);
};

Конечно, это не такЭто не работает, поскольку вложения не имеют атрибута customCssSelector.

...