Enviar e receber mensagens de texto

APLICA-SE A: SDK v4

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

Markdown é suportado para a maioria dos campos de texto, mas o suporte pode variar de acordo com o canal.

Para um bot em execução enviando e recebendo mensagens, siga os inícios rápidos na parte superior do sumário ou confira o artigo sobre como os bots funcionam, que também contém links para exemplos disponíveis para você executar.

Nota

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

Os bots existentes construídos com o Java SDK continuarão a funcionar.

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

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

Enviar uma mensagem de texto

Para enviar uma mensagem de texto, especifique a cadeia de caracteres que deseja enviar como atividade:

Nos manipuladores de atividade do bot, use o método do SendActivityAsync objeto de contexto turn para enviar uma única resposta de mensagem. Você também pode usar o método do SendActivitiesAsync objeto para enviar várias respostas de uma só vez.

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

Receber uma mensagem de texto

Para manipular uma mensagem de texto, use a propriedade text do objeto activity.

Nos manipuladores 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 utilizadores esperam uma resposta atempada às suas mensagens. Se o 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 os ouviu, o usuário pode ficar impaciente e enviar mensagens adicionais ou apenas presumir que o bot está quebrado.

Os bots de canal do Web Chat e da Linha Direta podem suportar 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, seu bot precisa deixar a volta terminar dentro de 15 segundos ou o serviço Connector expirará. 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óximos passos