Actualización y eliminación de mensajes enviados desde el bot

Importante

Los ejemplos de código de esta sección se basan en la versión 4.6 y versiones posteriores del SDK de Bot Framework. Si busca documentación para versiones anteriores, consulte la sección bots - v3 SDK en la carpeta SDK heredados de la documentación.

Su bot puede actualizar dinámicamente los mensajes después de enviarlos en lugar de tenerlos como instantáneas estáticas de datos. Los mensajes también se pueden eliminar mediante el método DeleteActivity de Bot Framework.

Actualizar mensajes

Puede usar actualizaciones de mensajes dinámicos para escenarios como las actualizaciones de sondeo, la modificación de las acciones disponibles después de presionar un botón o cualquier otro cambio de estado asincrónico.

No es necesario que el nuevo mensaje coincida con el tipo original. Por ejemplo, si el mensaje original contenía datos adjuntos, el nuevo mensaje puede ser un mensaje de texto simple.

Para actualizar un mensaje existente, pase un nuevo objeto Activity con el identificador de actividad existente al método UpdateActivityAsync de la clase 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);

Ahora que ha actualizado los mensajes, actualice la tarjeta existente en la selección de botón para las actividades entrantes.

Actualizar tarjetas

Para actualizar la tarjeta existente en la selección de botón, puede usar ReplyToId de actividad entrante.

Para actualizar la tarjeta existente en una selección de botón, pase un nuevo objeto Activity con tarjeta actualizada y ReplyToId como identificador de actividad al método UpdateActivityAsync de la clase 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);

Ahora que ha actualizado las tarjetas, puede eliminar mensajes mediante Bot Framework.

Eliminar mensajes

En Bot Framework, cada mensaje tiene su identificador de actividad único. Los mensajes se pueden eliminar mediante el método DeleteActivity de Bot Framework.

Para eliminar un mensaje, pase el identificador de esa actividad al método DeleteActivityAsync de la clase TurnContext.

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

Ejemplo de código

En el ejemplo de código siguiente se muestran los datos básicos de las conversaciones:

Ejemplo de nombre Descripción .NET Node.js Python Manifiesto
Conceptos básicos de conversación de Teams En este ejemplo se muestra cómo usar diferentes eventos de conversación de bot disponibles en bot framework v4 para el ámbito personal y de teams. View View View View

Paso siguiente

Consulte también