Общие сведения о концепциях агентов

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

Области агентов

Агенты в 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:

Пример кода

Название примера Описание TypeScript C# Python
Агент беседы Teams Это приложение демонстрирует основные события агента. Просмотр Просмотр Просмотр