Я хотел бы добавить имена классов 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.