Enviar e receber mensagens de texto

APLICA-SE A: SDK v4

A principal maneira que o bot se comunicará com usuários e, da mesma forma, receberá comunicação, é por meio de atividades de mensagem. Algumas mensagens podem conter somente texto sem formatação, enquanto outras podem conter conteúdo mais elaborado, como cartões ou anexos. O manipulador do turno do bot recebe mensagens do usuário e, a partir daí, é possível enviar respostas ao usuário. O objeto de contexto do turno fornece métodos para enviar mensagens de volta ao usuário. Este artigo descreve como enviar mensagens de texto sem formatação.

O markdown tem suporte na maioria dos campos de texto, mas o suporte pode variar por canal.

Para fazer um bot em execução enviar e receber mensagens, siga os guias de início rápido na parte superior do sumário ou confira o artigo sobre como os bots funcionam, que também contém links para amostras que estão disponíveis para você executar.

Observação

Os SDKs JavaScript, C# e Python do Bot Framework continuarão a ser compatíveis. No entanto, o SDK Java está sendo desativado, com o suporte final de longo prazo terminando em novembro de 2023.

Os bots existentes criados com o SDK para Java continuarão a funcionar.

Para a criação de novos bots, considere usar o Power Virtual Agents e ler sobre como escolher a solução de chatbot correta.

Para obter mais informações, confira O futuro da criação de bots.

Enviar uma mensagem de texto

Para enviar uma mensagem de texto, especifique a sequência que deseja enviar como a atividade:

Nos manipuladores de atividades do bot, alterne o método de contexto do objeto SendActivityAsync para enviar uma única resposta de mensagem. Também é possível usar o método SendActivitiesAsync do objeto para enviar várias respostas ao mesmo tempo.

await turnContext.SendActivityAsync($"Welcome!");

Receber uma mensagem de texto

Para lidar com uma mensagem de texto, use a propriedade text do objeto da atividade.

Nos manipulares de atividade do bot, use o código a seguir para receber uma mensagem.

var responseMessage = turnContext.Activity.Text;

Enviar um indicador de digitação

Os usuários esperam uma resposta em tempo hábil às suas mensagens. Se o seu bot executar alguma tarefa de longa duração, como chamar um servidor ou executar uma consulta sem dar ao usuário alguma indicação de que o bot ouviu, o usuário pode ficar impaciente e enviar mensagens adicionais ou simplesmente assumir que o bot está quebrado.

Os canais de bot de Webchat e Direct Line são compatíveis com o envio de uma indicação de digitação para mostrar ao usuário que a mensagem foi recebida e está sendo processada. No entanto, o bot precisa deixar o turno ser encerrado em 15 segundos ou o serviço do Connector atingirá o tempo limite. Para processos mais longos, leia mais sobre como enviar mensagens proativas.

O exemplo a seguir demonstra como enviar uma indicação de digitação.

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
    if (string.Equals(turnContext.Activity.Text, "wait", System.StringComparison.InvariantCultureIgnoreCase))
    {
        await turnContext.SendActivitiesAsync(
            new Activity[] {
                new Activity { Type = ActivityTypes.Typing },
                new Activity { Type = "delay", Value= 3000 },
                MessageFactory.Text("Finished typing", "Finished typing"),
            },
            cancellationToken);
    }
    else
    {
        var replyText = $"Echo: {turnContext.Activity.Text}. Say 'wait' to watch me type.";
        await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
    }
}

Recursos adicionais

Próximas etapas