Я работаю над ботом с Bot Framework v4 в C #.Теперь я хочу, чтобы после отправки пользователю Adaptive Card с помощью Actions я мог обновить эту карту после запуска Action.Например, эта кнопка исчезнет после щелчка.
Ссылка на решение NodeJS
здесь у меня есть решение в NodeJS, но я не могу передатьэто на C #.Кто-нибудь может помочь?
Подробнее о проекте: У меня есть Адаптивная карта, которая выглядит следующим образом:
Эта карта будет сгенерирована после того, как я произведу поиск с помощьюMS Graph из библиотеки SharePoint.
Основная цель заключается в том, чтобы я мог использовать Refiners для обновления Карты новой картой из JSON.Кнопка «ОК» - это действие «Отправить», которое можно отследить в методе OnMessageActivityAsync.Входные значения находятся в значении действия, поэтому можно создать метод фильтра.Моя проблема в том, что я не могу обновить Карту, которая уже отправлена Пользователю.
Прежде чем я отправил первую Карту с Результатами Пользователю, я записываю Операцию в состояние, чтобы я мог получить доступМетод OnMessageActivityAsync, но я не уверен, что это правильный подход.
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
Logger.LogInformation("Running dialog with Message Activity.");
var txt = turnContext.Activity.Text;
dynamic val = turnContext.Activity.Value;
// Check if the activity came from a submit action
if (string.IsNullOrEmpty(txt) && val != null)
{
await turnContext.SendActivityAsync(MessageFactory.Text($"Refiner Language: {val.id_language}"));
await turnContext.SendActivityAsync(MessageFactory.Text($"Refiner MachType: {val.id_type}"));
var r = new StreamReader("Cards/helloCard2.json");
string json = r.ReadToEnd();
AdaptiveCard card = AdaptiveCard.FromJson(json).Card;
var docSearchState = await StateAccessor.GetAsync(turnContext);
Activity activity = docSearchState.Activity;
activity.Attachments = new List<Attachment>() {
new Attachment()
{
Name = "Card",
ContentType = AdaptiveCard.ContentType,
Content = card,
}
};
await turnContext.UpdateActivityAsync(activity);
}
Этот код дает мне следующее сообщение об ошибке:
fail: Microsoft.Bot.Builder.Integration.AspNet.Core.BotFrameworkHttpAdapter[0]
Exception caught : Error reading JArray from JsonReader. Current JsonReader item is not an array: StartObject. Path 'DocumentSearchState.Activity.attachments.$values[0].content.body'.
У кого-нибудь есть хорошая идея, чтобы решитьэто?