Update and delete messages sent from bot
Important
The code samples in this section are based on version 4.6 and later versions of the Bot Framework SDK. If you are looking for documentation for earlier versions, see the bots - v3 SDK section in the Legacy SDKs folder of the documentation.
Your bot can dynamically update messages after sending them instead of having them as static snapshots of data. Messages can also be deleted using the Bot Framework's DeleteActivity
method.
Note
A bot can't update or delete messages sent by the user in Microsoft Teams.
Update messages
You can use dynamic message updates for scenarios, such as poll updates, modifying available actions after a button press, or any other asynchronous state change.
It is not necessary for the new message to match the original in type. For example, if the original message contains an attachment, the new message can be a simple text message.
To update an existing message, pass a new Activity
object with the existing activity ID to the UpdateActivityAsync
method of the TurnContext
class.
// 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);
Now that you have updated messages, update the existing card on button selection for incoming activities.
Update cards
To update the existing card on button selection, you can use ReplyToId
of incoming activity.
To update existing card on a button selection, pass a new Activity
object with updated card and ReplyToId
as activity ID to the UpdateActivityAsync
method of the TurnContext
class.
// 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);
Now that you have updated cards, you can delete messages using the Bot Framework.
Delete messages
In the Bot Framework, every message has its unique activity identifier. Messages can be deleted using the Bot Framework's DeleteActivity
method.
To delete a message, pass that activity's ID to the DeleteActivityAsync
method of the TurnContext
class.
foreach (var activityId in _list)
{
// When overridden in a derived class, deletes an existing activity in the conversation.
await turnContext.DeleteActivityAsync(activityId, cancellationToken);
}
Code sample
The following code sample demonstrates basics of conversations:
Sample name | Description | .NET | Node.js | Python | Manifest |
---|---|---|---|---|---|
Teams Conversation Basics | This sample shows how to use different bot conversation events available in bot framework v4 for personal and teams scope. | View | View | View | View |
Next step
See also
Platform Docs
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor