Compartir a través de


Obtención de datos de usuario con formularios

Anterior: Mostrar contenido de Markdown

Ahora que sabemos cómo presentar contenido básico de Markdown, vamos a intentar mostrar algo más elaborado aprovechando la eficacia de las tarjetas adaptables. Esto es útil para crear formularios o para mostrar contenido más complejo.

Trabajar con formularios

La paleta de comandos admite tarjetas adaptables, que son una manera de crear contenido enriquecido e interactivo. Esto puede ser útil para crear formularios o para mostrar contenido más complejo.

Puede crear una tarjeta en la paleta de comandos con la interfaz IFormContent (consulte FormContent para la implementación del kit de herramientas). Esto le permite proporcionar el JSON de tarjeta adaptable y la paleta de comandos la representará automáticamente. Cuando el usuario envíe el formulario, la Paleta de Comandos llamará al método SubmitForm de tu formulario, con la carga JSON y las entradas del formulario.

Las cargas de tarjetas adaptables se pueden crear mediante el Diseñador de tarjetas adaptables. Puede diseñar la tarjeta allí y, a continuación, copiar la carga JSON en la extensión.

Para obtener un ejemplo completo del uso de formularios y páginas de contenido, vaya a SamplePagesExtension/Pages/SampleContentPage.cs. Algunos aspectos breves que se deben tener en cuenta:

  • Establezca la propiedad TemplateJson de su formulario en el payload JSON de su Adaptive Card. (este es el valor "EDITOR DE CARGA DE TARJETA" en el Diseñador de tarjeta adaptable)
  • Establezca la propiedad DataJson de FormContent en los datos que desea usar para rellenar la plantilla de tarjeta. (Este es el valor "EDITOR DE DATOS DE MUESTRA" en el Diseñador de tarjeta adaptable). Esto es opcional, pero puede facilitar la creación de tarjetas.
  • Implemente el método SubmitForm para controlar el envío del formulario. Se llamará a este método cuando el usuario envíe el formulario y se pasará la carga JSON del formulario.
public override CommandResult SubmitForm(string payload)
{
    var formInput = JsonNode.Parse(payload)?.AsObject();
    if (formInput == null)
    {
        return CommandResult.GoHome();
    }

    // retrieve the value of the input field with the id "name"
    var name = formInput["name"]?.AsString();
        
    // do something with the data

    // and eventually
    return CommandResult.GoBack();
}

Por supuesto, puedes mezclar y hacer coincidir IContent de la manera que quieras. Por ejemplo, podría usar primero un markdown de bloque para el cuerpo de una publicación y tener un FormContent junto a responder a la publicación.