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