На странице беседы в Документах разработчиков команд описывается сценарий, который я пытаюсь реализовать:
Обновление сообщений
Вместо того, чтобы ваши сообщения были статическими снимками данных, вашиБот может динамически обновлять сообщения в строке после их отправки.Вы можете использовать динамические обновления сообщений для таких сценариев, как обновления опросов, изменение доступных действий после нажатия кнопки или любое другое асинхронное изменение состояния.
В моем коде я создаюсообщение и прикрепите адаптивную карту.
var cardReply = activity.CreateReply();
cardReply.AddAdaptiveCard(card);
Если я отвечаю пользователю, используя PostAsync
, то я не получаю ResponseResourceId
, который мне нужен, чтобы обновить ответ.
// PostAsync return Task, no ResourceResponse
await context.PostAsync(cardReply);
// OnDataItemInput is called when Action.Submit is triggered
context.Wait(this.OnDataItemInput);
Если вместо этого я отвечаю на действие, то делегат продолжения (context.Wait
) не вызывается.Продолжение, которое выполняется, - это предыдущий диалог в стеке.
// OnDataItemInput is never called
context.Wait(this.OnDataItemInput);
ConnectorClient connector =
new ConnectorClient(new Uri(activity.ServiceUrl));
var cardReplyResource = await connector
.Conversations
.ReplyToActivityAsync(cardReply);
Как отправить AdaptiveCard
с элементами ввода и заставить бот ждать ответа Action.Submit
?