es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Bot de Teams – El markdown en las tarjetas no se muestra correctamente.

Tengo un problema con el formato de texto en las tarjetas de mi bot de Teams.

  • Cuando envío texto formateado en mensajes de texto, el mensaje se muestra correctamente formateado.
  • Cuando envío texto formateado en tarjetas, el mensaje se muestra correctamente formateado al probarlo con el emulador de bots.
  • Cuando envío texto formateado en tarjetas, el mensaje no se muestra formateado al probarlo con mi cliente normal de Teams en el escritorio.

Ejemplo de envío de un mensaje de texto formateado:

await turnContext.SendActivityAsync(MessageFactory.Text("prueba **con** _formato_"), cancellationToken);

Ejemplo de envío de una tarjeta con texto formateado:

var welcomeCard = new HeroCard
{
    Title = "Bienvenido",
    Text = "prueba **con** _formato_"
};
var welcomeActivity = MessageFactory.Attachment(new Attachment
{
    ContentType = HeroCard.ContentType,
    Content = welcomeCard
});
await turnContext.SendActivityAsync(welcomeActivity, cancellationToken);

Al probarlo con mi cliente de Teams, el markdown se muestra de forma literal: prueba **con** _formato_.

Un detalle adicional que debo mencionar es que estoy “instalando” el bot a través del portal de desarrolladores haciendo clic en el botón “Vista previa en Teams”.

¿Alguien ha tenido este problema? ¿Cómo puedo solucionarlo?

Ten en cuenta que también intenté usar HTML pero tampoco funcionó.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el formato de texto en las tarjetas no se está analizando correctamente por el cliente de Teams. Una posible solución es utilizar Tarjetas Adaptativas en lugar de Tarjetas de Héroe. Las Tarjetas Adaptativas ofrecen una forma más sólida de formatear texto y otro contenido en las tarjetas.

    Para usar Tarjetas Adaptativas en tu bot, necesitarás instalar el paquete NuGet de Adaptive Cards y crear un objeto de Tarjeta Adaptativa en lugar de un objeto de Tarjeta de Héroe. Aquí tienes un ejemplo:

    var card = new AdaptiveCard(new AdaptiveSchemaVersion(1, 0))
    {
        Body = new List<adaptiveelement>()
        {
            new AdaptiveTextBlock()
            {
                Text = "prueba **con** _formato_",
                Wrap = true,
                Weight = AdaptiveTextWeight.Bolder
            }
        }
    };
    var attachment = new Attachment()
    {
        ContentType = AdaptiveCard.ContentType,
        Content = card
    };
    var activity = MessageFactory.Attachment(attachment);
    await turnContext.SendActivityAsync(activity, cancellationToken);
    

    Esto creará una Tarjeta Adaptativa con un único bloque de texto que tiene formato en negrita e itálica. La propiedad Wrap asegura que el texto se ajuste si excede el ancho de la tarjeta.

    Ten en cuenta que al utilizar Tarjetas Adaptativas, deberás utilizar el cliente de Teams para probar tu bot. El emulador de bot no admite Tarjetas Adaptativas.

    Si aún prefieres utilizar Tarjetas de Héroe, puedes intentar codificar el texto utilizando entidades HTML. Por ejemplo, puedes reemplazar ** con <b></b> y _ con <i></i>. Esto asegurará que el formato se conserve incluso en el cliente de Teams. Sin embargo, este enfoque puede volverse engorroso si tienes mucho formato de texto en tus tarjetas.

Comments are closed.