Compartilhar via


Obter a entrada do usuário com formulários

Anterior: Exibir conteúdo de markdown

Agora que sabemos como apresentar conteúdo básico de markdown, vamos tentar exibir algo mais elaborado aproveitando o poder dos Cartões Adaptáveis. Isso é útil para criar formulários ou para exibir conteúdo mais complexo.

Trabalhando com formulários

A Paleta de Comandos dá suporte a Cartões Adaptáveis, que são uma maneira de criar conteúdo interativo e avançado. Isso pode ser útil para criar formulários ou para exibir conteúdo mais complexo.

Você pode criar um cartão na Paleta de Comandos com a interface IFormContent (consulte FormContent para a implementação do kit de ferramentas). Isso permite que você forneça o JSON do Cartão Adaptável e a Paleta de Comandos o renderizará para você. Quando o usuário envia o formulário, a Paleta de Comandos chamará o método SubmitForm em seu formulário, com o conteúdo JSON e as entradas do formulário.

Cargas de cartão adaptáveis podem ser criadas usando o Designer de Cartão Adaptável. Você pode projetar seu cartão por lá e em seguida copiar a carga JSON para sua extensão.

Para obter um exemplo completo de como usar as páginas Formulários e Conteúdo, vá para SamplePagesExtension/Pages/SampleContentPage.cs. Algumas coisas breves a serem observadas:

  • Defina a propriedade TemplateJson do seu formulário como o conteúdo JSON do cartão adaptável. (esse é o valor "CARD PAYLOAD EDITOR" no Adaptive Card Designer)
  • Defina a propriedade DataJson do FormContent para os dados que você deseja usar para preencher o modelo de cartão. (Este é o valor "EDITOR DE DADOS DE AMOSTRA" no Designer de Cartão Adaptável). Isso é opcional, mas pode facilitar a criação de cartões.
  • Implemente o método SubmitForm para lidar com o envio do formulário. Esse método será chamado quando o usuário enviar o formulário e receberá o payload JSON do formulário.
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();
}

Claro, você pode misturar e combinar IContent da maneira que quiser. Por exemplo, você pode usar um markdown de bloco primeiro para o corpo de uma postagem e ter um FormContent ao lado para responder à postagem.