Ответьте на сообщение и дождитесь адаптивного действия карты - PullRequest
0 голосов
/ 24 октября 2018

На странице беседы в Документах разработчиков команд описывается сценарий, который я пытаюсь реализовать:

Обновление сообщений

Вместо того, чтобы ваши сообщения были статическими снимками данных, вашиБот может динамически обновлять сообщения в строке после их отправки.Вы можете использовать динамические обновления сообщений для таких сценариев, как обновления опросов, изменение доступных действий после нажатия кнопки или любое другое асинхронное изменение состояния.

В моем коде я создаюсообщение и прикрепите адаптивную карту.

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?

1 Ответ

0 голосов
/ 31 октября 2018

Сообщение об активности, сгенерированное пользователем, нажав кнопку Submit, полученное вашим ботом, будет иметь поле replyToId - это идентификатор сообщения, которое вы хотите обновить.

Если вам нужноЧтобы отличить эти сообщения активности от других, вы можете дать кнопке Action.Submit id или использовать ее поле data - объект действия value сообщит вам об этом.

...