Обновление и удаление сообщений, отправленных ботом

Важно!

Примеры кода в этом разделе основаны на версии 4.6 и более поздних версиях пакета SDK Bot Framework. Если вы ищете документацию по более ранним версиям, см. раздел пакет SDK для ботов версии 3 в папке Устаревшие пакеты SDK документации.

Бот может динамически обновлять сообщения после их отправки, а не сохранять их в виде статических снимков данных. Сообщения также можно удалить с помощью метода DeleteActivity Bot Framework.

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

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

Новое сообщение не обязательно должно совпадать по типу с исходным. Например, если исходное сообщение содержит вложение, новое сообщение может быть простым текстовым сообщением.

Чтобы обновить существующее сообщение, передайте новый объект Activity с существующим идентификатором действия в метод UpdateActivityAsync класса TurnContext.

// Send initial message
var response = await turnContext.SendActivityAsync(MessageFactory.Attachment(card.ToAttachment()), cancellationToken);
var activityId = response.Id; // Fetch activity id.

// MessageFactory.Text(): Specifies the type of text data in a message attachment.
var newActivity = MessageFactory.Text("The new text for the activity");
newActivity.Id = activityId;

// UpdateActivityAsync(): A method that can participate in update activity events for the current turn.
await turnContext.UpdateActivityAsync(newActivity, cancellationToken);

Теперь, когда вы обновили сообщения, обновите существующую карточку при выборе кнопки для входящих действий.

Обновить карточки

Чтобы обновить существующую карточку при выборе кнопки, вы можете использовать ReplyToId входящую активность.

Чтобы обновить существующую карточку при выборе кнопки, передайте новый объект Activity с обновленной карточкой и ReplyToId как идентификатор действия для метода UpdateActivityAsync класса TurnContext.

// Returns a message activity that contains an attachment.
var activity = MessageFactory.Attachment(card.ToAttachment());
activity.Id = turnContext.Activity.ReplyToId;

// A method that can participate in update activity events for the current turn.
await turnContext.UpdateActivityAsync(activity, cancellationToken);

Теперь, когда у вас есть обновленные карточки, вы можете удалять сообщения с помощью Bot Framework.

Удаление сообщений

В Bot Framework каждое сообщение имеет уникальный идентификатор действия. Сообщения можно удалить с помощью метода DeleteActivity Bot Framework.

Чтобы удалить сообщение, передайте идентификатор этого действия методу DeleteActivityAsync класса TurnContext.

foreach (var activityId in _list)
{
    // When overridden in a derived class, deletes an existing activity in the conversation.
    await turnContext.DeleteActivityAsync(activityId, cancellationToken);
}

Пример кода

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

Название примера Описание .NET Node.js Python Манифест
Основы бесед в Teams В этом примере показано, как использовать различные события бесед бота, доступные в bot framework версии 4 для личных и командных область. Просмотр Просмотр Просмотр Просмотр

Следующий этап

См. также