Отправка и получение текстовых сообщенийSend and receive text message

применимо к: Пакет SDK v4APPLIES TO: SDK v4

Основным способом взаимодействия бота с пользователями будут действия с сообщениями.The primary way your bot will communicate with users, and likewise receive communication, is through message activities. Некоторые сообщения будут состоять из обычного текста, а другие — включать расширенное содержимое, такое как карточки или вложения.Some messages may simply consist of plain text, while others may contain richer content such as cards or attachments. Обработчик этапа бота получает сообщения от пользователя, и вы можете отправлять ответы пользователю из него.Your bot's turn handler receives messages from the user, and you can send responses to the user from there. Объект контекста этапа предоставляет методы для отправки сообщений обратно пользователю.The turn context object provides methods for sending messages back to the user. В этой статье объясняется, как отправлять простые текстовые сообщения.This article describes how to send simple text messages.

Markdown поддерживается для большинства текстовых полей, но особенности поддержки зависят от канала.Markdown is supported for most text fields, but support may vary by channel.

Для выполняющегося бота, отправляющего и получающего сообщения, выполните краткие инструкции в верхней части содержания или ознакомьтесь со статьей о работе ботов, в которой также содержатся ссылки на простые примеры, которые вы можете выполнить самостоятельно.For a running bot sending and receiving messages, follow the quickstarts at the top of the table of contents or check out the article on how bots work, which also links to simple samples available for you to run yourself.

Отправка текстового сообщенияSend a text message

Для отправки простого текстового сообщения укажите строку, которую вы хотите отправить как действие:To send a simple text message, specify the string you want to send as the activity:

В обработчиках действий бота используйте метод SendActivityAsync для объекта контекста шага, чтобы отправить ответ в виде одного сообщения.In the bot's activity handlers, use the turn context object's SendActivityAsync method to send a single message response. Кроме того, вы можете использовать метод SendActivitiesAsync объекта для отправки нескольких ответов за раз.You can also use the object's SendActivitiesAsync method to send multiple responses at once.

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

Получение текстового сообщенияReceive a text message

Чтобы получить простое текстовое сообщение, используйте свойство text объекта activity.To receive a simple text message, use the text property of the activity object.

В обработчиках действий бота используйте следующий код для получения сообщения.In the bot's activity handlers, use the following code to receive a message.

var responseMessage = turnContext.Activity.Text;

Отправка индикатора вводаSend a typing indicator

Пользователи ожидают своевременный ответ на сообщения.Users expect a timely response to their messages. Если бот выполняет какую-то длительную задачу, например, вызывает сервер или выполняет запрос, не давая пользователю никаких указаний на то, что его запрос принят во внимание, нетерпеливый пользователь может отправить дополнительные сообщения, предполагая, что бот сломан.If your bot performs some long-running task like calling a server or executing a query without giving the user some indication that the bot heard them, the user could get impatient and send additional messages or just assume the bot is broken.

Боты в каналах Web Chat и Direct Line могут поддерживать отправку индикатора ввода, указывающего пользователю, что сообщение получено и обрабатывается.Web Chat and Direct Line channel bots can support the sending of a typing indication to show the user that the message was received and is being processed. Имейте в виду, что бот должен завершить реплику в течение 15 секунд, иначе для службы Connector истечет времени ожидания.Be aware that your bot needs to let the turn end within 15 seconds or the Connector service will timeout. Чтобы реализовать длительную обработку, см. дополнительные сведения об упреждающих сообщениях.For longer processes read more about sending proactive messages.

В следующем примере показана отправка индикатора ввода.The following example demonstrates how to send a typing indication.

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);
    }
}

Дополнительные ресурсыAdditional resources

Дальнейшие действияNext steps