Compartilhar via


Notifique os agentes

Importante

Você precisa fazer parte do programa de prévia Frontier para obter acesso antecipado ao Microsoft Agent 365. A Frontier conecta você diretamente às mais recentes inovações de IA da Microsoft. Prévias da Frontier estão sujeitas aos termos de pré-visualização existentes dos seus contratos com clientes. Como esses recursos ainda estão em desenvolvimento, sua disponibilidade e capacidades podem mudar ao longo do tempo.

O módulo de Notificações permite que desenvolvedores criem agentes que respondam a eventos e notificações de aplicativos do Microsoft 365. Com suporte a notificações, os agentes podem receber e processar alertas quando os usuários interagem com eles por e-mail, comentários em documentos ou outros cenários colaborativos.

Fluxos de trabalho de notificação

Siga este fluxo de trabalho para habilitar notificações para seu aplicativo de agente de IA:

  1. Instalar pacotes de notificação.

  2. Componentes de notificação de importação

    • Importação de classes e manipuladores de notificação
    • Tipos de atividade de importação e identificadores de canal
  3. Manipuladores de notificações de registradores

    • Use métodos de notificação para registrar rotas
    • Configure os manipuladores para tipos específicos de notificação (por exemplo: e-mail, Word, Excel, PowerPoint)
  4. Notificações de processo no código do agente

    • O agente recebe notificações de aplicativos do Microsoft 365
    • Gerencie as notificações recebidas e responda adequadamente

Tipos de notificações

O oferece suporte aos seguintes tipos de notificação:

Tipo de Notificação Description ID de Subcanal
Email O agente recebe um e-mail onde é mencionado ou abordado email
Word O agente é mencionado em um comentário em um documento do Word word
Excel O agente é mencionado em um comentário em um documento do Excel excel
e PowerPoint O agente é mencionado em um comentário em um documento do PowerPoint powerpoint
Eventos de ciclo de vida Notificações do ciclo de vida do agente (identidade do usuário criada, integração da carga de trabalho, usuário excluído) N/A

Eventos do ciclo de vida do agente

Eventos do ciclo de vida do agente permitem que seu agente responda a eventos específicos do sistema relacionados ao gerenciamento de identidade de usuário agente. Atualmente, o SDK suporta três eventos do ciclo de vida:

Tipo de evento ID do evento Description
Identidade do Usuário Criada agenticUserIdentityCreated Ativado quando uma identidade de usuário agente é criada
Integração da Carga de Trabalho Atualizada agenticUserWorkloadOnboardingUpdated Ativado quando o status de onboarding da carga de trabalho de um usuário agente é atualizado
Usuário Excluído agenticUserDeleted Ativado quando a identidade de um usuário agente é excluída

Esses eventos permitem que agentes realizem tarefas de inicialização, operações de limpeza ou gerenciamento de estado em resposta a mudanças no ciclo de vida do usuário.

Adicione Notificações ao seu Agente

Siga estes passos para habilitar o gerenciamento de notificações no seu agente atual:

Componentes de notificação de importação

Adicione essas importações ao seu arquivo de agente:

from microsoft_agents_a365 import AgentApplication
from microsoft_agents_a365.notifications import (
    AgentNotification,
    AgentNotificationActivity,
    NotificationTypes
)
from microsoft_agents.activity import ChannelId
from microsoft_agents.hosting.core import Authorization, TurnContext
  • AgentApplication: Classe base para construir aplicações Agent365; fornece funcionalidade central para atividades de roteamento, gerenciamento de estado e processamento de solicitações
  • AgentNotification: Classe para registrar manipuladores de notificação com métodos de decoração. Oferece on_agent_notification(), on_email(), on_word(), e outros decoradores de conveniência
  • AgentNotificationActivity: Wrapper contendo dados de notificações analisadas com propriedades digitadas como email_notification e wpx_comment_notification que contêm metadados específicos da notificação (IDs, detalhes de conversa, referências de documentos)
  • NotificationTypes: Enum dos tipos de notificação suportados (EMAIL_NOTIFICATION, WPX_COMMENT, AGENT_LIFECYCLE)
  • ChannelId: Usado para especificar canais de notificação (por exemplo, ChannelId(channel="agents", sub_channel="*"))
  • Autorização: Contexto de autorização para processar notificações
  • TurnContext: Contexto atual da conversa do turno do SDK Agents

Registre os manipuladores de notificações no seu agente

Adicione manipuladores de notificações à inicialização do seu agente:

class YourAgent(AgentApplication):
    def __init__(self, app):
        # Create notification handler
        agent_notification = AgentNotification(app)
        
        # Register handler for all notifications
        @agent_notification.on_agent_notification(
            ChannelId(channel="agents", sub_channel="*")
        )
        async def handle_all_notifications(context, state, notification):
            # Route based on notification type
            if notification.notification_type == NotificationTypes.EMAIL_NOTIFICATION:
                await self.handle_email_notification(context, state, notification)
            elif notification.notification_type == NotificationTypes.WPX_COMMENT:
                await self.handle_comment_notification(context, state, notification)
            else:
                await context.send_activity('Notification type not yet implemented.')

Implemente manipuladores de notificações específicos

Adicionar métodos handler para cada tipo de notificação:

class YourAgent(AgentApplication):
    # ... __init__ from above ...
    
    async def handle_email_notification(self, context, state, notification):
        """Handle email notifications"""
        email = notification.email_notification
        
        if not email:
            await context.send_activity('No email data found')
            return
        
        # Process the email
        await context.send_activity(
            f'Received email notification. Email ID: {email.id}'
        )
        
        # Your email processing logic here
    
    async def handle_comment_notification(self, context, state, notification):
        """Handle document comment notifications"""
        comment = notification.wpx_comment_notification
        
        if not comment:
            await context.send_activity('No comment data found')
            return
        
        # Process the comment
        await context.send_activity(
            f'Received comment notification. Document ID: {comment.document_id}'
        )
        
        # Your comment processing logic here

Manipuladores Especializados de Notificações

Após configurar o roteamento básico de notificações, use métodos especializados de handler para um controle mais detalhado. Os aplicativos permitem:

  • Registrar múltiplos manipuladores para o mesmo tipo de notificação
  • Defina prioridade do handler com ranking
  • Configure a autoautenticação por manipulador

Observação

Para a maioria dos casos de uso, o padrão genérico de handler é suficiente. Use esses manipuladores especializados quando precisar de roteamento avançado ou múltiplos manipuladores para o mesmo tipo de notificação.

Manipulador especializado para todas as notificações

Registre mais manipuladores que processem todos os tipos de notificações:

from microsoft_agents_a365.notifications import (
    AgentNotification,
    NotificationTypes
)
from microsoft_agents.activity import ChannelId

# Create notification handler
agent_notification = AgentNotification(app)

# Register handler for all notifications
@agent_notification.on_agent_notification(
    ChannelId(channel="agents", sub_channel="*")
)
async def handle_all_notifications(context, state, notification):
    if notification.notification_type == NotificationTypes.EMAIL_NOTIFICATION:
        if notification.email_notification:
            await context.send_activity(f"Received email: {notification.email_notification.id}")
    elif notification.notification_type == NotificationTypes.WPX_COMMENT:
        if notification.wpx_comment_notification:
            await context.send_activity(f"Received comment: {notification.wpx_comment_notification.comment_id}")

Manipulador especializado para notificações por e-mail

Registre mais manipuladores especificamente para notificações por e-mail:

from microsoft_agents_a365.notifications import AgentNotification
from microsoft_agents.activity import ChannelId, AgentSubChannel

# Create notification handler
agent_notification = AgentNotification(app)

# Use the convenience method for email notifications
@agent_notification.on_email()
async def handle_email(context, state, notification):
    email = notification.email_notification
    
    if not email:
        await context.send_activity('No email found')
        return
    
    # Process the email
    email_id = email.id
    conversation_id = email.conversation_id
    
    # Send response
    await context.send_activity('Thank you for your email!')

Manipuladores especializados para comentários de documentos

Registre mais manipuladores para notificações de comentários em Word, Excel e PowerPoint:

from microsoft_agents_a365.notifications import AgentNotification

# Create notification handler
agent_notification = AgentNotification(app)

# Use convenience methods for document notifications
@agent_notification.on_word()
async def handle_word(context, state, notification):
    comment = notification.wpx_comment_notification
    
    if comment:
        document_id = comment.document_id
        comment_id = comment.comment_id
        await context.send_activity(f'Processing Word comment: {comment_id}')

@agent_notification.on_excel()
async def handle_excel(context, state, notification):
    comment = notification.wpx_comment_notification
    
    if comment:
        await context.send_activity('Processing Excel comment')

@agent_notification.on_powerpoint()
async def handle_powerpoint(context, state, notification):
    comment = notification.wpx_comment_notification
    
    if comment:
        await context.send_activity('Processing PowerPoint comment')

Manipuladores especializados para eventos do ciclo de vida

Registre mais manipuladores para eventos do ciclo de vida do agente, como criação de identidade de usuário, integração de carga de trabalho e exclusão de usuários:

from microsoft_agents_a365.notifications import AgentNotification

# Create notification handler
agent_notification = AgentNotification(app)

# Handle all lifecycle events
@agent_notification.on_agent_lifecycle_notification("*")
async def handle_lifecycle(context, state, notification):
    lifecycle_notification = notification.agent_lifecycle_notification
    if lifecycle_notification:
        event_type = lifecycle_notification.lifecycle_event_type
        
        if event_type == "agenticUserIdentityCreated":
            await context.send_activity('User identity created')
        elif event_type == "agenticUserWorkloadOnboardingUpdated":
            await context.send_activity('Workload onboarding completed')
        elif event_type == "agenticUserDeleted":
            await context.send_activity('User identity deleted')

Configuração avançada

Esta seção aborda opções avançadas de configuração para ajustar seus manipuladores de notificações. Essas configurações permitem controlar a ordem de execução do handler, gerenciar requisitos de autenticação e otimizar o processamento de notificações para cenários complexos.

Prioridade e classificação do manipulador

Ao usar múltiplos manipuladores especializados, você pode especificar a ordem de prioridade usando valores de patente. Valores mais baixos indicam prioridade mais alta.

from microsoft_agents_a365.notifications import AgentNotification
from microsoft_agents.activity import ChannelId, AgentSubChannel

# Create notification handler
agent_notification = AgentNotification(app)

# Higher priority handler (processed first)
@agent_notification.on_email(rank=100)
async def high_priority_email(context, state, notification):
    # Handle with high priority
    pass

# Lower priority handler (processed after higher priority)
@agent_notification.on_email(rank=200)
async def low_priority_email(context, state, notification):
    # Handle with lower priority
    pass

Manipulador de autenticação

Configure handlers de login automático para notificações que exigem autenticação:

from microsoft_agents_a365.notifications import AgentNotification
from microsoft_agents.activity import ChannelId, AgentSubChannel

# Create notification handler
agent_notification = AgentNotification(app)

# Handler with automatic authentication
@agent_notification.on_email(auto_sign_in_handlers=['agentic'])
async def authenticated_email(context, state, notification):
    # Authentication is handled automatically
    pass

Testar e monitorar.

Teste seu agente com notificações

Após implementar os manipuladores de notificações, teste seu agente para garantir que ele receba e processe corretamente diferentes tipos de notificações. Siga o guia de testes para configurar seu ambiente e depois foque principalmente na seção de atividades de Teste com notificações para validar suas notificações usando autenticação agente.

Monitorar o gerenciamento de notificações

Monitore o tratamento das notificações pelo seu agente adicionando capacidades de observabilidade. Acompanhe o processamento de notificações, tempos de resposta e taxas de erro para entender o desempenho do agente. Saiba mais sobre a implementação de rastreamento e monitoramento