Инициируйте действие с сообщением в командах MS и прочитайте содержимое сообщения

#botframework #microsoft-teams #adaptive-cards

Вопрос:

У меня есть рабочее расширение composeExtension (расширение сообщения) в командах Microsoft.

Одна из команд есть query , и при выборе элемента в списке вы опубликуете карточку героя в чате.

Следующее, что я ищу, — это запуск action команды для сообщения и создание адаптивной карты с предварительно загруженной информацией из самого сообщения.

Ответ №1:

После проведения некоторых исследований и изучения документации MS — Определите команды действий расширения обмена сообщениями

Ниже приведено решение в NodeJS

Шаг 1. Обновите файл Манифеста

 ...

"composeExtensions": [
   ...
   "commands": [
       ...
       {
          "id": "Action",
          "type": "action",
          "title": "Action",
          "description": "Test command to run action on message context (message sharing)",
          "context": [ "message" ]
       }
       ...
   ]
   ...
]
...
 

Шаг 2: Обработка запроса

 async handleTeamsMessagingExtensionFetchTask(context, action) {

   ...
   if( action.commandId === 'Action') {

       // here you can return anything eg: adaptive card
     
       // below helper function will read the content of the message

       let cardContent = await this.getAdaptiveCardContent(context);
       let CardData = JSON.parse(cardContent);

   }
   ...

}

async getAdaptiveCardContent(context) {
   if (!context.hasOwnProperty("_activity") || !context._activity.hasOwnProperty("value")) {
            return null;
   }

   let messagePayload = context._activity.value.messagePayload;

   if (messagePayload) {
       for (let i = 0, attachment; i < messagePayload.attachments.length; i  ) {
         attachment = messagePayload.attachments[i];
         if (attachment.contentType === "application/vnd.microsoft.card.hero") { // In my case its a adaptive card
                    return attachment.content;
                }
            }
        }
        return null;
    }
 

Комментарии:

1. Ваша проблема решена с помощью вышеуказанного решения или вы все еще ищете какую-либо помощь?

2. @ChetanSharma-msft, да, это решается с помощью вышеупомянутого решения.