Mettre à jour et supprimer les messages envoyés à partir du bot
Article
Importante
Les exemples de code de cette section sont basés sur la version 4.6 et les versions ultérieures du Kit de développement logiciel (SDK) Bot Framework. Si vous recherchez de la documentation pour les versions antérieures, consultez la section bots - Kit de développement logiciel (SDK) v3 dans le dossier Kits de développement logiciel (SDK) hérités de la documentation.
Votre bot peut mettre à jour dynamiquement les messages après les avoir envoyés au lieu de les avoir en tant qu’instantanés statiques de données. Les messages peuvent également être supprimés à l’aide de la méthode DeleteActivity du Bot Framework.
Notes
Un bot ne peut pas mettre à jour ou supprimer les messages envoyés par l’utilisateur dans Microsoft Teams.
Mettre à jour les messages
Vous pouvez utiliser des mises à jour de messages dynamiques pour des scénarios tels que les mises à jour de sondage, la modification des actions disponibles après une pression sur un bouton ou tout autre changement d’état asynchrone.
Il n’est pas nécessaire que le nouveau message corresponde au type d’origine. Par exemple, si le message d’origine contient une pièce jointe, le nouveau message peut être un message texte simple.
Pour mettre à jour un message existant, transmettez un nouvel objet Activity avec l’ID d’activité existant à la méthode UpdateActivityAsync de la classe 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);
Pour mettre à jour un message existant, transmettez un nouvel objet Activity avec l’ID d’activité existant à la méthode updateActivity de l’objet TurnContext.
// Send initial message
var message = await context.sendActivity("<Your Message>");
var activityId = message.id; // Fetch activity id.
// MessageFactory.Text(): Specifies the type of text data in a message attachment.
const newActivity = MessageFactory.text('The new text for the activity');
newActivity.id = activityId;
// A method that can participate in update activity events for the current turn.
await turnContext.updateActivity(newActivity);
Pour mettre à jour un message existant, transmettez un nouvel objet Activity avec l’ID d’activité existant à la méthode update_activity de la classe TurnContext.
# Send initial message
message = await turn_context.send_activity("<Your Message>")
activityId = message.id # Fetch activity id.
# MessageFactory.Text(): Specifies the type of text data in a message attachment.
new_activity = MessageFactory.text("The new text for the activity")
new_activity.id = activity_id
# A method that can participate in update activity events for the current turn.
update_result = await context.update_activity(new_activity)
Notes
Vous pouvez développer des applications Teams dans n’importe quelle technologie de programmation web et appeler directement les API REST du service Bot Connector. Pour ce faire, vous devez mettre en œuvre des procédures de sécurité d'authentification avec vos demandes d'API.
Pour mettre à jour une activité existante dans une conversation, incluez les conversationId et activityId dans le point de terminaison de la requête. Pour effectuer ce scénario, vous devez mettre en cache l’ID d’activité retourné par l’appel de publication d’origine.
PUT /v3/conversations/{conversationId}/activities/{activityId}
Pour mettre à jour la carte existante sur une sélection de bouton, transmettez un nouvel objet Activity avec la carte mise à jour et ReplyToId comme ID d’activité à la méthode UpdateActivityAsync de la classe 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);
Pour mettre à jour la carte existante sur une sélection de bouton, transmettez un nouvel objet Activity avec la carte mise à jour et replyToId comme ID d’activité à la méthode updateActivity de l’objet TurnContext .
// MessageFactory.attachment(): Returns a message activity that contains an attachment.
const message = MessageFactory.attachment(card);
message.id = context.activity.replyToId;
// updateActivity(): A method that can participate in update activity events for the current turn.
await context.updateActivity(message);
Pour mettre à jour la carte existante sur un clic de bouton, passez un nouvel objet Activity avec la carte mise à jour et reply_to_id comme ID d’activité à la méthode update_activity de la classe TurnContext .
# MessageFactory.attachment(): Returns a message activity that contains an attachment.
updated_activity = MessageFactory.attachment(CardFactory.hero_card(card))
updated_activity.id = turn_context.activity.reply_to_id
# update_activity(): A method that can participate in update activity events for the current turn.
await turn_context.update_activity(updated_activity)
Pour mettre à jour une activité existante dans une conversation, incluez les conversationId et activityId dans le point de terminaison de la requête. Pour effectuer ce scénario, vous devez mettre en cache l’ID d’activité retourné par l’appel de publication d’origine.
PUT /v3/conversations/{conversationId}/activities/{activityId}
Maintenant que vous avez mis à jour les cartes, vous pouvez supprimer des messages à l’aide de la Bot Framework.
Suppression de messages
Dans le Bot Framework, chaque message a son identificateur d’activité unique. Les messages peuvent être supprimés à l’aide de la méthode DeleteActivity du Bot Framework.
Pour supprimer un message, transmettez l’ID de cette activité à la méthode DeleteActivityAsync de la classe TurnContext.
foreach (var activityId in _list)
{
// When overridden in a derived class, deletes an existing activity in the conversation.
await turnContext.DeleteActivityAsync(activityId, cancellationToken);
}
Pour supprimer un message, transmettez l’ID de cette activité à la méthode deleteActivity de l’objet TurnContext.
for (let i = 0; i < activityIds.length; i++) {
// deleteActivity(): deletes an existing activity in the conversation.
await turnContext.deleteActivity(activityIds[i]);
}
Code d’état HTTP indiquant le résultat de l’opération. Rien n’est spécifié dans le corps de la réponse.
Exemple de code
L’exemple de code suivant illustre les concepts de base des conversations :
Exemple de nom
Description
.NET
Node.js
Python
Manifeste
Informations de base des conversations Teams
Cet exemple montre comment utiliser différents événements de conversation de bot disponibles dans Bot Framework v4 pour l’étendue personnelle et teams.
La source de ce contenu se trouve sur GitHub, où vous pouvez également créer et examiner les problèmes et les demandes de tirage (pull requests). Pour plus d’informations, consultez notre guide du contributeur.