В настоящее время я работаю над ботом LUIS, который создает проекты в VSTS.Прямо сейчас вы просто пишете имя боту, например «Create Projekt abcd», и он создает проект для вас.Я хотел, чтобы это выглядело лучше, добавив адаптивные карты для ввода, но когда я нажимаю кнопку отправки, он просто говорит, что в бот-коде есть ошибка.Я провел некоторое исследование, и проблема, похоже, в том, что бот LUIS не знает, как обрабатывать объект, возвращаемый в виде сообщения.
Адаптивная карта: `
using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Connector;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using AdaptiveCards;
using AdaptiveCards.Rendering;
using AdaptiveCards.Rendering.Html;
using Microsoft.Bot.Builder.FormFlow;
namespace LuisBot.Dialogs
{
public class ProjektInputCard
{
public static Attachment GetCard(String pName)
{
String projektname = pName;
if (projektname.Equals("(Name not found)"))
{
projektname = "";
}
AdaptiveCard Card = new AdaptiveCard()
{
Body = new List<AdaptiveElement>()
{
new AdaptiveContainer()
{
Items = new List<AdaptiveElement>()
{
new AdaptiveTextBlock()
{
Text = "Projekterstellung",
Weight = AdaptiveTextWeight.Bolder,
Size = AdaptiveTextSize.Large
},
new AdaptiveTextBlock()
{
Text = "Projektname:",
Weight = AdaptiveTextWeight.Bolder,
Size = AdaptiveTextSize.Default
},
new AdaptiveTextInput()
{
Type = "Input.Text",
Id = "ID_projekt",
Value = projektname
},
new AdaptiveTextBlock()
{
Text = "Beschreibung:",
Weight = AdaptiveTextWeight.Bolder,
Size = AdaptiveTextSize.Default
},
new AdaptiveTextInput()
{
Type = "Input.Text",
Id = "ID_description",
Value = "",
IsMultiline = true
}
}
}
}
};
Card.Actions = new List<AdaptiveAction>()
{
new AdaptiveSubmitAction()
{
Type = "Action.Submit",
Title = "Erstellen"
}
};
Attachment Attach = new Attachment()
{
ContentType = AdaptiveCard.ContentType,
Content = Card
};
return Attach;
}
}
}`
Метод, который вызываетКарточка: `
private async Task Test(IDialogContext context)
{
var createprompt = context.MakeMessage();
createprompt.Attachments.Add(ProjektInputCard.GetCard(GetProjectName()));
await context.PostAsync(createprompt);
context.Wait(MessageReceivedAsync);
}`
Метод получения сообщения:
public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
{
var message = await result;
InputValues data;
if (message.Value != null)
{
// Got an Action Submit
dynamic value = message.Value;
string submitType = value.Type.ToString();
if (value != null)
{
data = Newtonsoft.Json.JsonConvert.DeserializeObject<InputValues>(submitType);
_projectname = data.Name;
_description = data.Description;
await this.ShowLuisResult(context);
}
}
}