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