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

ОБЛАСТЬ ПРИМЕНЕНИЯ: ПАКЕТ SDK версии 4

Основным способом взаимодействия бота с пользователями будут действия с сообщениями. Некоторые сообщения могут содержать только обычный текст, а другие могут содержать более богатое содержимое, например карта или вложения. Обработчик этапа бота получает сообщения от пользователя, и вы можете отправлять ответы пользователю из него. Объект контекста реплик предоставляет методы для отправки сообщений обратно пользователю. В этой статье описывается, как отправлять обычные текстовые сообщения.

Markdown поддерживается для большинства текстовых полей, но особенности поддержки зависят от канала.

Для запускающего бота, отправляющего и получающего сообщения, следуйте кратким руководствам в верхней части оглавление или проверка статьи о работе ботов, которые также ссылаются на примеры, доступные для запуска самостоятельно.

Примечание.

Пакеты SDK для JavaScript, C# и Python для Bot Framework по-прежнему будут поддерживаться, однако пакет SDK java отменяется с окончательной долгосрочной поддержкой, заканчивающейся в ноябре 2023 года. В этом репозитории будут выполняться только критически важные исправления безопасности и ошибок.

Существующие боты, созданные с помощью пакета SDK для Java, будут продолжать функционировать.

Для создания нового бота рекомендуется использовать Power Virtual Agent и ознакомиться с выбором подходящего решения чат-бота.

Дополнительные сведения см. в статье "Будущее создания бота".

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

Чтобы отправить текстовое сообщение, укажите строку, которую вы хотите отправить в качестве действия:

В обработчиках действий бота используйте метод SendActivityAsync объекта контекста поворота для отправки одного ответа на сообщение. Кроме того, вы можете использовать метод SendActivitiesAsync объекта для отправки нескольких ответов за раз.

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

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

Для обработки текстового сообщения используйте текстовое свойство объекта действия.

В обработчиках действий бота используйте следующий код для получения сообщения.

var responseMessage = turnContext.Activity.Text;

Отправка индикатора ввода

Пользователи ожидают своевременный ответ на сообщения. Если бот выполняет какую-то длительную задачу, например, вызывает сервер или выполняет запрос, не давая пользователю никаких указаний на то, что его запрос принят во внимание, нетерпеливый пользователь может отправить дополнительные сообщения, предполагая, что бот сломан.

Боты в каналах Web Chat и Direct Line могут поддерживать отправку индикатора ввода, указывающего пользователю, что сообщение получено и обрабатывается. Тем не менее, боту необходимо разрешить завершение поворота в течение 15 секунд или время ожидания службы Подключение or. Дополнительные сведения о отправке упреждающих сообщений см. в более длительных процессах.

В следующем примере показана отправка индикатора ввода.

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

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

Следующие шаги