Основные понятия бота
Бот может взаимодействовать с текстом, речью, изображениями или видео. Он обрабатывает входные данные пользователя для понимания его запроса и оценивает входные данные для выполнения соответствующих задач. Бот может запросить информацию или разрешить доступ к службам и ответить пользователю.
Области бота
Боты в Microsoft Teams могут быть частью личной беседы, группового чата или канала в команде. Каждая область предлагает уникальные возможности и задачи для вашего чат-бота
В канале | В групповом чате | В индивидуальном чате |
---|---|---|
Огромный охват | Меньше участников | Традиционный способ |
Краткие индивидуальные взаимодействия | @mention к боту | Боты для вопросов и ответов |
@mention к боту | Похожий на канал | Боты, которые рассказывают анекдоты и делают заметки |
В канале
Каналы содержат потоковые беседы между несколькими людьми даже до 2000. Это потенциально дает вашему боту огромный охват, но отдельные взаимодействия должны быть краткими. Традиционные многоэтапные взаимодействия не работают. Вместо этого необходимо использовать интерактивные карточки или диалоги (называемые модулями задач в TeamsJS версии 1.x) или переместить беседу в беседу "один к одному" для сбора большого количества сведений. Ваш бот имеет доступ только к сообщениям, где это @mentioned
. Вы можете получить дополнительные сообщения из беседы с помощью Microsoft Graph и разрешений на уровне организации.
Боты лучше работают в канале в следующих случаях:
- Уведомления, где вы предоставляете пользователям интерактивную карту для получения дополнительной информации.
- Сценарии обратной связи, такие как опросы и исследования.
- Взаимодействия, решения которых можно получить в одном цикле из запроса и ответа, и результаты которых будут полезны для нескольких участников беседы.
- Социальные или забавные боты, где вы получаете классное изображение кота, случайным образом выбираете победителя и так далее.
В групповом чате
Групповые чаты — это не потоковые беседы между тремя или более пользователями. Как правило, у них меньше участников, чем у канала, и они более временные. Как и в случае с каналом, бот имеет доступ только к сообщениям, где он находится @mentioned
непосредственно.
Боты, которые лучше работают в канале, также лучше работают в групповом чате.
В индивидуальном чате
Индивидуальный чат — это традиционный способ общения бота с пользователем. Вот несколько примеров диалоговых ботов для индивидуальной беседы:
- Боты для вопросов и ответов
- боты, инициирующие рабочие процессы в других системах.
- боты, которые говорят шутки.
- боты, которые принимают заметки. Прежде чем создавать чат-боты "один к одному", подумайте, является ли интерфейс на основе беседы лучшим способом представить свои функции.
Обработчик действий и логика бота
Чтобы создать приложение бота, соответствующее вашим потребностям, важно понимать обработчик действий Microsoft Teams и логику бота. Эти два ключевых компонента работают вместе для организации логики беседы.
Обработчик действий Teams. Обработчики действий Teams расширяют функциональные возможности стандартных ботов, добавляя поддержку событий и взаимодействий, относящихся к Teams. Эти события могут включать создание канала, добавление участников команды и другие действия, уникальные для среды Teams. Используя обработчики действий Teams, боты могут обеспечить более интегрированный и удобный пользовательский интерфейс на платформе Teams.
Логика бота. Объект бота, в котором хранится логика бесед бота, отвечает за принятие решений на основе входных данных пользователя. Он предоставляет обработчик поворота, который является методом, который принимает входящие действия из адаптера бота. Логика бота гарантирует, что каждый шаг беседы обрабатывается надлежащим образом, что способствует общей согласованности и эффективности бота.
Эти два компонента работают вместе, чтобы создать увлекательный диалоговый интерфейс. Обработчик действий обрабатывает то, что говорит пользователь, в то время как логика бота определяет наилучший ответ. Вместе они обеспечивают:
- Общие сведения о контексте беседы
- Персонализация взаимодействий
- Эффективный получение информации
- Поддержка адаптивного потока общения
Понимая логику обработчика действий и бота, вы можете разработать и реализовать интеллектуальный, удобный для общения ИИ и обычные решения ботов.
Обработчик действий Teams
Обработчик действий — это ядро функциональных возможностей бота, управление и обработка взаимодействия с пользователем. Он основан на обработчике действий Microsoft Bot Framework и направляет все действия Teams перед обработкой любых действий, не относящихся к Teams. Он выступает в качестве посредника между входными данными пользователя и ответом бота:
- Получает входящие сообщения.
- Извлекает ключевые данные из введенных пользователем данных.
- Определяет намерение пользователя с помощью обработки естественного языка (NLP).
- Поддерживает контекст и состояние беседы.
- Создает ответы на основе введенных пользователем данных и намерений.
Обработчик действий улучшает взаимодействие с пользователем, повышает эффективность, точность, масштабируемость и гибкость.
Когда бот Teams получает действие, оно направляется через обработчики действий. Все действия проходят через базовый обработчик, называемый обработчиком поворота, который затем вызывает соответствующий обработчик действия. Бот Teams является производным TeamsActivityHandler
от класса , который поступает из класса Bot Framework ActivityHandler
.
Примечание.
Если обработка действия бота занимает более 15 секунд, Teams отправляет запрос на повторную попытку в конечную точку бота, поэтому вы можете увидеть повторяющиеся запросы.
Боты создаются с помощью Bot Framework. Когда бот получает сообщение, обработчик поворота получает уведомление и отправляет его обработчику OnMessageActivityAsync
. Это работает так же в Teams. Если бот получает обновление беседы, обработчик поворота отправляет его в OnConversationUpdateActivityAsync
. Обработчик действий Teams сначала ищет события, относящиеся к Teams. Если их нет, они передаются в обработчик действий Bot Framework.
В классе обработчика действий Teams есть два основных обработчика действий Teams:
-
OnConversationUpdateActivityAsync
маршрутизирует все действия по обновлению диалога. -
OnInvokeActivityAsync
маршрутизирует все действия вызова Teams.
Чтобы реализовать логику для конкретных обработчиков действий Teams, необходимо переопределить методы в боте, как показано в разделе Логика бота. Для этих обработчиков нет базовой реализации. Поэтому добавьте в переопределение нужную логику.
Чтобы настроить логику для обработчиков действий, зависящих от Teams, необходимо переопределить методы в боте, как показано в разделе Логика бота . Для этих обработчиков нет реализации по умолчанию, поэтому просто добавьте в переопределение нужную логику.
Фрагменты кода для обработчиков действий Teams:
OnTeamsChannelCreatedAsync
protected override Task OnTeamsChannelCreatedAsync(ChannelInfo channelInfo, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
OnTeamsChannelDeletedAsync
protected override Task OnTeamsChannelDeletedAsync(ChannelInfo channelInfo, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
OnTeamsChannelRenamedAsync
protected override Task OnTeamsChannelRenamedAsync(ChannelInfo channelInfo, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
OnTeamsTeamRenamedAsync
protected override Task OnTeamsTeamRenamedAsync(TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
OnTeamsMembersAddedAsync
protected override Task OnTeamsMembersAddedAsync(IList<TeamsChannelAccount> teamsMembersAdded, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
OnTeamsMembersRemovedAsync
protected override Task OnTeamsMembersRemovedAsync(IList<TeamsChannelAccount> teamsMembersRemoved, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken);
{
// Code logic here
}
OnTeamsMessageEditAsync
protected override async Task OnTeamsMessageEditAsync(ITurnContext<IMessageUpdateActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
OnTeamsMessageUndeleteAsync
protected override async Task OnTeamsMessageUndeleteAsync(ITurnContext<IMessageUpdateActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
OnTeamsMessageSoftDeleteAsync
protected override async Task OnTeamsMessageSoftDeleteAsync(ITurnContext<IMessageDeleteActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
Пример обработчика действий бота
В следующем коде приведен пример действий бота для команды канала область:
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var mention = new Mention
{
Mentioned = turnContext.Activity.From,
// EncodeName: Converts the name to a valid XML name.
Text = $"<at>{XmlConvert.EncodeName(turnContext.Activity.From.Name)}</at>",
};
// MessageFactory.Text(): Specifies the type of text data in a message attachment.
var replyActivity = MessageFactory.Text($"Hello {mention.Text}.");
replyActivity.Entities = new List<Entity> { mention };
// Sends a message activity to the sender of the incoming activity.
await turnContext.SendActivityAsync(replyActivity, cancellationToken);
}
В следующем коде показан пример активности бота для индивидуального чата:
// Handle message activity
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
// Remove recipient mention text from Text property.
// Use with caution because this function is altering the text on the Activity.
turnContext.Activity.RemoveRecipientMention();
var text = turnContext.Activity.Text.Trim().ToLower();
// Sends a message activity to the sender of the incoming activity.
await turnContext.SendActivityAsync(MessageFactory.Text($"Your message is {text}."), cancellationToken);
}
Логика бота
Логика бота включает в себя основные правила и платформы принятия решений, которые определяют действия и взаимодействия бота. В ней показано, как бот интерпретирует входные данные пользователя, формулирует ответы и участвует в беседах.
В Teams логика бота обрабатывает входящие действия из одного или нескольких каналов бота и в ответ создает исходящие действия. Это по-прежнему относится к ботам, производным от класса обработчика действий Teams, который сначала проверяет действия Teams. После проверки действий Teams все остальные действия передается в обработчик действий Bot Framework.
Основные обработчики Bot Framework
Примечание.
- За исключением добавленных и удаленных действий участников, все обработчики действий, описанные в этом разделе, продолжают работать так же, как и с ботом, не относящимся к Teams.
- Метод
onInstallationUpdateActivityAsync()
используется для получения языкового стандарты Teams при добавлении бота в Teams.
Обработчики действий отличаются в контексте команды, где в команду добавляется новый участник, а не цепочка сообщений.
Список обработчиков, определенных в , ActivityHandler
включает следующие события:
Событие | Метод обработчика или пакета SDK | Описание |
---|---|---|
Любой полученный тип действия | OnTurnAsync() |
Этот метод вызывает один из других обработчиков в зависимости от типа полученного действия. |
Получено действий с сообщением | OnMessageActivityAsync() |
Этот метод можно переопределить для обработки Message действия. |
Получено действие обновления сообщения | OnMessageUpdateActivityAsync() |
Этот метод можно переопределить для обработки действия обновления сообщений. |
Получено действие удаления сообщения | OnMessageDeleteActivityAsync() |
Этот метод можно переопределить для обработки действия удаления сообщения. |
Получено действие обновления беседы | OnConversationUpdateActivityAsync() |
Этот метод вызывает обработчик для действия ConversationUpdate , если участники, кроме бота, присоединяются к беседе или выходят из нее. |
К беседе присоединились участники, не являющиеся ботами | OnMembersAddedAsync() |
Этот метод может быть переопределен для обработки присоединения участников к беседе. |
Участники, не боты, покинули беседу | OnMembersRemovedAsync() |
Этот метод может быть переопределен для обработки выхода участников из беседе. |
Получено действие события | OnEventActivityAsync() |
Этот метод вызывает для действия Event определенный обработчик для типа события. |
Получено действие события токена-ответа | OnTokenResponseEventAsync() |
Этот метод может быть переопределен для обработки событий ответа маркера. |
Получено действие события, не относящегося к токену-ответу | OnEventAsync() |
Этот метод может быть переопределен для обработки других типов событий. |
Получен другой тип действия | OnUnrecognizedActivityTypeAsync() |
Этот метод может быть переопределен для обработки любого типа действия, для которого в противном случае обработка была недоступна. |
Обработчики действий для Teams
Расширяет TeamsActivityHandler
список обработчиков в разделе основные обработчики Bot Framework, включив в него следующие события:
Событие | Метод обработчика или пакета SDK | Описание |
---|---|---|
channelCreated |
OnTeamsChannelCreatedAsync() |
Этот метод может быть переопределен для обработки создания канала Teams. Дополнительные сведения см. в разделе Канал, созданный в разделе События обновления беседы. |
channelDeleted |
OnTeamsChannelDeletedAsync() |
Этот метод может быть переопределен для обработки удаления канала Teams. Дополнительные сведения см. в разделе Канал удален в разделе События обновления беседы. |
channelRenamed |
OnTeamsChannelRenamedAsync() |
Этот метод может быть переопределен для обработки переименования канала Teams. Дополнительные сведения см. в разделе Переименование канала в разделе События обновления беседы. |
teamRenamed |
OnTeamsTeamRenamedAsync() |
return Task.CompletedTask; Этот метод может быть переопределен для обработки переименования команды Teams. Дополнительные сведения см. в разделе Команда переименована в разделе События обновления беседы. |
MembersAdded |
OnTeamsMembersAddedAsync() |
Этот метод вызывает метод OnMembersAddedAsync в ActivityHandler . Этот метод может быть переопределен для обработки присоединения участников к команде. Дополнительные сведения см. в разделе Участники команды, добавленные в раздел События обновления беседы. |
MembersRemoved |
OnTeamsMembersRemovedAsync() |
Этот метод вызывает метод OnMembersRemovedAsync в ActivityHandler . Этот метод может быть переопределен для обработки выхода участников из команды. Дополнительные сведения см. в разделе Участники команды удалены в разделе События обновления беседы. |
messageEdit |
OnTeamsMessageEditAsync() |
Этот метод можно переопределить для обработки события изменения сообщений Teams. |
messageUndelete |
OnTeamsMessageUndeleteAsync() |
Этот метод можно переопределить для обработки события отмены отмены сообщения Teams. |
messageSoftDelete |
OnTeamsMessageSoftDeleteAsync() |
Этот метод можно переопределить для обработки события обратимого удаления сообщений Teams. |
Запуск действий Teams
Список обработчиков действий Teams, вызываемых из OnInvokeActivityAsync
обработчика действий Teams, включает следующие типы вызовов:
Типы вызовов | Метод обработчика или пакета SDK | Описание |
---|---|---|
CardAction.Invoke |
OnTeamsCardActionInvokeAsync() |
Когда соединитель получает действие вызова действия карта, вызывается этот метод. |
fileConsent/invoke | OnTeamsFileConsentAcceptAsync() |
Когда пользователь принимает согласие на использование файла карта, вызывается этот метод. |
fileConsent/invoke | OnTeamsFileConsentAsync() |
Когда соединитель получает согласие файла карта действие, вызывается этот метод. |
fileConsent/invoke | OnTeamsFileConsentDeclineAsync() |
Когда пользователь отклоняет согласие на использование файла карта, вызывается этот метод. |
actionableMessage/executeAction | OnTeamsO365ConnectorCardActionAsync() |
Когда соединитель получает карта соединителя для действия действия Группы Microsoft 365, вызывается этот метод. |
signin/verifyState | OnTeamsSigninVerifyStateAsync() |
Когда соединитель получает signIn действие проверки состояния, вызывается этот метод. |
task/fetch | OnTeamsTaskModuleFetchAsync() |
Этот метод можно переопределить в производном классе, чтобы предоставить логику при получении диалогового окна (называемого модулем задач в TeamsJS версии 1.x). |
task/submit | OnTeamsTaskModuleSubmitAsync() |
Этот метод можно переопределить в производном классе, чтобы предоставить логику при отправке диалогового окна. |
Действия вызова, перечисленные в этом разделе, предназначены для диалоговых ботов в Teams. Пакет SDK Bot Framework также поддерживает вызов действий, характерных для расширений для сообщений. Дополнительные сведения см. в статье о том, что такое расширения для сообщений.
Теперь, когда вы ознакомились с обработчиками действий ботов, давайте посмотрим, как боты ведут себя по-разному в зависимости от беседы и сообщений, которые они получают или отправляют.
Рекомендации
Подробный диалог между вашим ботом и пользователем — это медленный и сложный способ выполнения задачи. Бот, который поддерживает чрезмерные команды, особенно широкий спектр команд, не является успешным и не просматривается пользователями положительно.
Избегайте многоэтапных взаимодействий в чате Для расширенного диалога требуется, чтобы разработчик поддерживал состояние. Чтобы выйти из этого состояния, пользователь должен либо истекать время ожидания, либо нажать кнопку Отмена. К тому же процесс утомительный. Рассмотрим следующий сценарий разговора:
ПОЛЬЗОВАТЕЛЬ: назначь встречу с Меган.
БОТ: Я нашел 200 результатов, включая имя и фамилию.
ПОЛЬЗОВАТЕЛЬ: назначь встречу с Меган Боуэн.
БОТ: хорошо, в какое время вы хотели бы встретиться с Меган Боуэн?
ПОЛЬЗОВАТЕЛЬ: 13:00.
БОТ: в какой день?
Поддержка шести или менее частых команд Так как в текущем меню бота есть только шесть видимых команд, больше ничего больше вряд ли будет использоваться с какой-либо частотой. Боты, которые углубляются в конкретную область, а не пытаются стать общим помощником, работают намного лучше.
Оптимизация размера базы знаний для более быстрого взаимодействия Один из недостатков ботов заключается в том, что трудно поддерживать большой база знаний получения с неотделимыми ответами. Боты лучше всего подходят для коротких и быстрых взаимодействий, а не для просеивания длинных списков в поисках ответа.
Примечание.
Платформа Teams поддерживает только tls версии 1.2. Убедитесь, что вы настраиваете среду бота соответствующим образом.
Изучение других функций бота
Помимо обычных функций бота, вы также можете изучить дополнительные функции, доступные в приложении бота Teams:
- Api бота Teams изменяется для получения участников команды или чата.
- Боты для звонков и собраний по сети.
- Включите единый вход для приложения.
Пример кода
Название примера | Описание | .NET | Node.js | Python |
---|---|---|---|---|
Бот для беседы в Teams | В этом примере приложения показано, как использовать различные события бесед бота, доступные в Bot Framework версии 4. | Просмотр | Просмотр | Просмотр |
Образцы бота | Набор примеров Bot Framework версии 4. | Просмотр | Просмотр | Просмотр |
Следующий этап
См. также
Platform Docs