Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Агент может взаимодействовать с помощью текста, речи, изображений или видео. Он обрабатывает вводимые пользователем данные, чтобы понять их запросы, и оценивает вводимые данные для выполнения соответствующих задач. Агент может запрашивать информацию или предоставлять доступ к службам, а также отвечает пользователю.
Области агентов
Агенты в Microsoft Teams могут участвовать в индивидуальных беседах, групповых чатах и каналах команд. Каждый область предоставляет уникальные возможности и проблемы для вашего разговорного агента.
| В канале | В групповом чате | В индивидуальном чате |
|---|---|---|
| Огромный охват | Меньше участников | Традиционный способ |
| Краткие индивидуальные взаимодействия | @mention к агенту | Агенты Q&A |
| @mention к агенту | Похожий на канал | Агенты, которые рассказывают анекдоты и делают заметки |
В канале
Каналы содержат цепочки бесед между несколькими людьми, даже до 2000. Это потенциально дает вашему оператору огромный охват, но индивидуальные взаимодействия должны быть лаконичными. Традиционные взаимодействия с несколькими поворотами не работают. Вместо этого вы должны использовать интерактивные карточки или диалоговые окна (называемые модулями задач в TeamsJS v1.x) или перевести разговор в индивидуальную беседу, чтобы собрать много информации. Ваш агент имеет доступ только к тем сообщениям, в которых он @mentioned. Вы можете получить дополнительные сообщения из беседы с помощью Microsoft Graph и разрешений на уровне организации.
Агенты лучше работают в канале в следующих случаях:
- Уведомления, где вы предоставляете пользователям интерактивную карту для получения дополнительной информации.
- Сценарии обратной связи, такие как опросы и исследования.
- Взаимодействия, решения которых можно получить в одном цикле из запроса и ответа, и результаты которых будут полезны для нескольких участников беседы.
- Социальные или веселые агенты, где вы получаете потрясающий образ кота, случайным образом выбираете победителя и так далее.
В групповом чате
Групповые чаты — это не потоковые беседы между тремя или более пользователями. Как правило, у них меньше участников, чем у канала, и они более временные. Как и в канале, ваш агент имеет доступ только к сообщениям, где он находится @mentioned напрямую.
Агенты, которые лучше работают в канале, также лучше работают в групповом чате.
В индивидуальном чате
Индивидуальный чат — это традиционный способ взаимодействия агента беседы с пользователем. Вот несколько примеров индивидуальных разговорных агентов.
- Агенты Q&A
- Агенты, инициирующие рабочие процессы в других системах.
- Агенты, которые рассказывают анекдоты.
- Агенты, которые делают заметки. Прежде чем создавать индивидуальных агентов, подумайте, является ли интерфейс на основе беседы лучшим способом представить ваши функциональные возможности.
Обработчик действий и логика агента
Чтобы создать приложение агента, отвечающее вашим потребностям, важно понимать обработчик действий Microsoft Teams и логику агента. Эти два ключевых компонента работают вместе, чтобы организовать логику диалога.
Обработчик действий Teams: обрабатывает события и взаимодействия, относящиеся к Teams, такие как создание канала, добавление участников команды и другие действия, уникальные для среды Teams. В пакете SDK для Teams версии 2 обработчики регистрируются непосредственно в экземпляре
App, а не через наследование классов.Логика агента:
Appобъект содержит логику разговора агента и отвечает за принятие решений на основе ввода данных пользователем. Входящие действия направляются в соответствующий обработчик на основе типа действия и необязательного совпадения в шаблоне.
Обработчик действий Teams
Обработчик действий — это основа функциональности агента, управляющая и обрабатывающая взаимодействия с пользователем. В пакете SDK для Teams версии 2:
- Вы создаете
Appэкземпляр объекта и регистрируете для него обработчики. - Обработчики получают типизированный объект контекста (
IActivityContextв TypeScript,IContext<TActivity>C#,ActivityContext[TActivity]Python). - Ответы и упреждающие сообщения отправляются с помощью
ctx.reply()илиctx.send().
Когда агент Teams получает действие, пакет SDK направляет его через зарегистрированный обработчик. События, относящиеся к Teams (жизненный цикл канала, изменения участников и т. д.), отображаются в виде событий с отдельными именами, поэтому вам не нужно проверять их channelData.eventType вручную.
Примечание.
Если обработка действия агента занимает более 15 секунд, Teams отправляет запрос на повторную попытку в конечную точку агента, поэтому вы можете увидеть повторяющиеся запросы.
Фрагменты кода обработчика действий
В следующих фрагментах показаны обработчики действий Teams для событий жизненного цикла канала и команды.
Агенты создаются с помощью этого пакета Microsoft.Teams.Apps . Вы создаете экземпляр регистрации обработчика и App цепочки с помощью методов расширения, таких как OnMessage(), OnChannelCreated(), и т. д. Все обработчики получают IContext<TActivity> объект.
OnChannelCreated
using Microsoft.Teams.Apps;
WebApplicationBuilder builder = WebApplication.CreateSlimBuilder(args);
builder.Services.AddTeamsBotApplication();
WebApplication app = builder.Build();
TeamsBotApplication teams = app.UseTeamsBotApplication();
teams.OnChannelCreated(async (context, cancellationToken) =>
{
var channel = context.Activity.ChannelData.Channel;
var team = context.Activity.ChannelData.Team;
// Code logic here
});
OnChannelDeleted
teams.OnChannelDeleted(async (context, cancellationToken) =>
{
// Code logic here
});
OnChannelRenamed
teams.OnChannelRenamed(async (context, cancellationToken) =>
{
// Code logic here
});
OnTeamRenamed
teams.OnTeamRenamed(async (context, cancellationToken) =>
{
// Code logic here
});
OnMembersAdded
teams.OnMembersAdded(async (context, cancellationToken) =>
{
foreach (var member in context.Activity.MembersAdded)
{
// Code logic here
}
});
OnMembersRemoved
teams.OnMembersRemoved(async (context, cancellationToken) =>
{
foreach (var member in context.Activity.MembersRemoved)
{
// Code logic here
}
});
OnMessageUpdate / OnMessageDelete
Редактирование сообщений осуществляется с помощью OnMessageUpdate. Обратимое удаление осуществляется с помощью OnMessageDelete.
teams.OnMessageUpdate(async (context, cancellationToken) =>
{
// Code logic here
});
teams.OnMessageDelete(async (context, cancellationToken) =>
{
// Code logic here
});
Пример обработчика действий агента
В приведенном ниже коде приведен пример действия агента:
using Microsoft.Teams.Apps;
WebApplicationBuilder builder = WebApplication.CreateSlimBuilder(args);
builder.Services.AddTeamsBotApplication();
WebApplication app = builder.Build();
TeamsBotApplication teams = app.UseTeamsBotApplication();
teams.OnMessage(async (context, cancellationToken) =>
{
var senderName = context.Activity.From.Name;
await context.SendAsync($"Hello <at>{senderName}</at>.", cancellationToken);
});
app.Run();
Логика агента
Логика агента включает в себя фундаментальные правила и структуры принятия решений, которые диктуют действия и взаимодействия агента. В нем описано, как агент интерпретирует вводимые пользователем данные, формулирует ответы и участвует в беседах.
В пакете SDK для Teams версии 2 логика агента обрабатывает входящие действия из одного или нескольких каналов агента и создает исходящие действия. Вся маршрутизация активности обрабатывается инстансом App — вы регистрируете обработчиков, и SDK автоматически отправляет им действия.
Обработчики основных действий
Класс App предоставляет методы расширения для регистрации обработчиков. Методы возвращаются App для беглой цепочки.
| Событие | Метод расширения | Описание |
|---|---|---|
| Любой полученный тип действия | OnActivity(handler) |
Универсальный обработчик, вызываемый для каждого действия. |
| Получено действий с сообщением | OnMessage(handler) |
Обработка входящих SMS. Передайте строку регулярного выражения в качестве первого аргумента для сопоставления с шаблоном. |
| Получено обновление беседы | OnConversationUpdate(handler) |
Необработанные действия обновления беседы. |
| Присоединение неагентных участников | OnMembersAdded(handler) |
Срабатывает, когда MembersAdded.Length > 0. |
| Ушли пользователи, не являющиеся агентами | OnMembersRemoved(handler) |
Срабатывает, когда MembersRemoved.Length > 0. |
| Установка добавлена | OnInstall(handler) |
Агент установлен. |
Обработчики действий, специфичные для Teams
| Событие | Метод расширения | Описание |
|---|---|---|
| Канал создан | OnChannelCreated(handler) |
Создан канал Teams. |
| Канал удален | OnChannelDeleted(handler) |
Удален канал Teams. |
| Канал переименован | OnChannelRenamed(handler) |
Канал Teams переименован. |
| Команда переименована | OnTeamRenamed(handler) |
Команда была переименована. |
| Сообщение изменено | OnMessageUpdate(handler) |
Сообщение было отредактировано. |
| Сообщение обратимо удалено | OnMessageDelete(handler) |
Сообщение было обратимо удалено. |
Запуск действий Teams
| Тип вызова | Метод расширения | Описание |
|---|---|---|
CardAction.Invoke |
OnExecuteAction(handler) |
Получено действие вызова действия карт. |
task/fetch |
OnTaskFetch(handler) |
Получено диалоговое окно (модуль задач). |
task/submit |
OnTaskSubmit(handler) |
Диалоговое окно (модуль задач) было отправлено. |
fileConsent/invoke |
OnFileConsent(handler) |
Получен файл согласия карта действие. |
signin/verifyState |
Автоматическая обработка пакетом SDK (поток OAuth) | Войдите и проверьте действия штата. |
Теперь, когда вы ознакомились с обработчиками действий агентов, давайте посмотрим, как агенты ведут себя по-разному в зависимости от беседы и сообщений, которые она получает или отправляет.
Рекомендации
Продолжительный диалог между агентом и пользователем — это медленный и сложный способ выполнить задачу. Агент, поддерживающий лишние команды, особенно широкий спектр команд, не будет успешным или не будет положительно воспринят пользователями.
Избегайте многооборотных интерфейсов в чате Обширное диалоговое окно требует от разработчика поддержания состояния. Чтобы выйти из этого состояния, пользователь должен либо выйти из него, либо выбрать команду "Отмена". К тому же процесс утомительный. Рассмотрим следующий сценарий разговора:
ПОЛЬЗОВАТЕЛЬ: назначь встречу с Меган.
АГЕНТ: Я нашел 200 результатов, включая имя и фамилию.
ПОЛЬЗОВАТЕЛЬ: назначь встречу с Меган Боуэн.
АГЕНТ: Хорошо, в какое время вы хотели бы встретиться с Меган Боуэн?
ПОЛЬЗОВАТЕЛЬ: 13:00.
АГЕНТ: В какой день?
Поддержка шести или менее частых команд Поскольку в текущем меню агента всего шесть видимых команд, что-либо еще вряд ли будет использоваться с какой-либо частотой. Агенты, которые углубляются в определенную область, а не пытаются быть широкими помощниками, работают и чувствуют себя лучше.
Оптимизация размера базы знаний для более быстрого взаимодействия Одним из недостатков агентов является то, что трудно поддерживать большую извлеченную базу знаний с неранжированными ответами. Операторы лучше всего подходят для коротких и быстрых взаимодействий, а не для поиска ответа по длинным спискам.
Примечание.
Платформа Teams поддерживает только протокол TLS версии 1.2. Настройте среду агента соответствующим образом.
Ознакомьтесь с другими функциями агента
Помимо обычных функций агента, можно также изучить дополнительные функции, доступные в приложении агента Teams:
- Получите контекст Teams для вашего агента.
- Агенты звонков и собраний по сети.
- Включите единый вход для приложения.
Пример кода
| Название примера | Описание | TypeScript | C# | Python |
|---|---|---|---|---|
| Агент беседы Teams | Это приложение демонстрирует основные события агента. | Просмотр | Просмотр | Просмотр |
Platform Docs