Как реагировать на модуль задач или задачу / выборку в Bot framework v4, используя Node JS без TeamsActivityHandler? - PullRequest
1 голос
/ 29 мая 2020

В Teams мне нужно заполнить модуль задач веб-страницей, используя NodeJS и BotBuilder 4.8. Как только бот обнаружил вызов с AdaptiveCard с помощью "msteams": {"type": "task / fetch"}:

Screenshot

if (turnContext.activity.type === ActivityTypes.Invoke) { ...

Я не могу понять, как ответить статусом HTTP 200, с типом содержимого и телом, например:

{
    "task": {
      "type": "continue",
      "value": {
        "title": "My Title",
        "height": 200,
        "width": 500,
        "url": "[myURL]",
        "fallbackUrl": "[myURL]"
      }
    }
  }

, как описано в: https://docs.microsoft.com/en-us/microsoftteams/platform/messaging-extensions/how-to/action-commands/create-task-module?tabs=javascript

Я не могу продолжить с TeamsActivityHandler.

Я даже пробовал:

const botbuilder_core_1 = require("botbuilder-core");
return botbuilder_core_1.ActivityHandler.createInvokeResponse(myBody);

, который выдает [Adapter onTurnError]: Ошибка: ContentType вложения не установлен

Есть ли класс MessageFactory или аналогичный, который может просто отправить ответ обратно?

Образца по адресу https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/javascript_nodejs/54.teams-task-module/bots/teamsTaskModuleBot.js мне недостаточно.

Bot.js
if (turnContext.activity.type === ActivityTypes.Invoke) {
    // Handler for Adaptive Cards actions 
    if (turnContext.activity.value != undefined && turnContext.activity.value.id != undefined) {
    switch (turnContext.activity.value.id) {
        case "openOfficesMaps":
            await this.findOfficesAdressesDialog.displayMaps(turnContext);
            break;
        ...

class FindOfficesAdressesDialog extends SalesHubComponentDialog {
    async displayMaps(turnContext) {
        // If it were an adaptive card I would do this:
        return await turnContext.sendActivity({
            attachments: [CardFactory.adaptiveCard(officesMapTaskModule)]
        });

officesMapTaskModule.json
{
    "task": {
      "type": "continue",
      "value": {
        "title": "Offices Map",
        "height": 500,
        "width": "medium",
        "url": "[myURL]/$24web/officesMapTaskModule.html",
        "fallbackUrl": "[myURL]/%24web/officesMapTaskModule.html"
      }
    }
  }

class FindOfficesAdressesDialog extends SalesHubComponentDialog {
    async displayMaps(turnContext) {
        // This gives content type is missing
        const botbuilder_core_1 = require("botbuilder-core");
        return botbuilder_core_1.ActivityHandler.createInvokeResponse(body); 

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...