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 Microsoft Copilot Studio e leia sobre como escolher a solução de copiloto certa.
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);
}
}