Partilhar via


Notificar os agentes

Importante

É necessário fazer parte do programa de pré-visualização Frontier para obter acesso antecipado ao Microsoft Agent 365. A Frontier liga-o diretamente às mais recentes inovações de IA da Microsoft. As pré-visualizações da Frontier estão sujeitas aos termos de pré-visualização existentes dos seus contratos com clientes. Como estas funcionalidades ainda estão em desenvolvimento, a sua disponibilidade e capacidades podem mudar ao longo do tempo.

O módulo de Notificações permite aos programadores criar agentes capazes de responder a eventos e notificações das aplicações Microsoft 365. Com o suporte de notificações, os agentes podem receber e processar alertas quando os utilizadores interagem com eles através de email, comentários em documentos ou outros cenários colaborativos.

Fluxo de trabalho de notificações

Siga este fluxo de trabalho para ativar notificações para a sua aplicação de agente de IA:

  1. Instalar pacotes de notificações.

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

    • Classes e manipuladores de notificação de importação
    • Tipos de atividade de importação e identificadores de canal
  3. Manipuladores de notificações de registos

    • Utilizar métodos de notificação para registar rotas
    • Configure os handlers para tipos específicos de notificações (por exemplo: email, Word, Excel, PowerPoint)
  4. Notificações de processo no código do agente

    • O agente recebe notificações das aplicações Microsoft 365
    • Trate das notificações recebidas e responda adequadamente

Tipos de notificação

O suporta os seguintes tipos de notificação.

Tipo de Notificação Descrição ID de Subcanal
E-mail O agente recebe um email onde é mencionado ou endereçado email
Palavra O agente é mencionado num comentário num documento Word word
Excel O agente é mencionado num comentário num documento Excel excel
PowerPoint 2021 O agente é mencionado num comentário num documento PowerPoint powerpoint
Eventos do Ciclo de Vida Notificações do ciclo de vida do agente (identidade do utilizador criada, carga de trabalho a integrar, utilizador eliminado) N/A

Eventos do ciclo de vida do agente

Os eventos do ciclo de vida do agente permitem que o seu agente responda a eventos específicos do sistema relacionados com a gestão da identidade do utilizador agente. Atualmente, o SDK suporta três eventos do ciclo de vida:

Tipo de Evento ID do Evento Descrição
Identidade do Utilizador Criada agenticUserIdentityCreated Desencadeado quando é criada uma identidade de utilizador agente
Integração da Carga de Trabalho Atualizada agenticUserWorkloadOnboardingUpdated Desencadeado quando o estado de integração da carga de trabalho de um utilizador agente é atualizado
Utilizador Eliminado agenticUserDeleted Desencadeado quando a identidade de um utilizador agente é eliminada

Estes eventos permitem que os agentes realizem tarefas de inicialização, operações de limpeza ou gestão de estados em resposta a alterações no ciclo de vida do utilizador.

Adicione Notificações ao Seu Agente

Siga estes passos para ativar o tratamento de notificações no seu agente atual:

Componentes de notificação de importação

Adicione estas importações ao seu ficheiro 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 encaminhamento, gestão de estado e processamento de pedidos
  • AgentNotification: Classe para registar manipuladores de notificações com métodos de decoração. Fornece 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

Registe os responsáveis pelas 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.')

Implementar 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

Depois de configurar o encaminhamento básico das notificações, utilize métodos especializados de manipuladores para um controlo mais granular. Estes métodos permitem-lhe:

  • Registar múltiplos manipuladores para o mesmo tipo de notificação
  • Definir prioridade do handler com classificação
  • Configurar a autoautenticação por handler

Nota

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

Handler especializado para todas as notificações

Registe 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}")

Gestor especializado para notificações por email

Registe mais handlers especificamente para notificações por email:

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

Registe mais responsáveis 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

Registe mais handlers para eventos do ciclo de vida do agente, como criação de identidade de utilizador, integração de cargas de trabalho e eliminação de utilizadores:

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 secção aborda opções avançadas de configuração para afinar os seus manipuladores de notificações. Estas configurações permitem-lhe controlar a ordem de execução do handler, gerir os 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, pode especificar a ordem de prioridade usando valores de rank. Valores mais baixos indicam maior prioridade.

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

Manipuladores de autenticação

Configure handlers de login automático para notificações que requerem 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 monitorizar

Teste o seu agente com notificações

Depois de implementar os manipuladores de notificações, teste o seu agente para garantir que recebe e processa corretamente diferentes tipos de notificações. Siga o guia de testes para configurar o seu ambiente e depois concentre-se principalmente na secção de atividades de Teste com notificações para validar as notificações usando autenticação agente.

Monitorizar o tratamento de notificações

Monitorize o tratamento das notificações pelo seu agente adicionando capacidades de observabilidade. Acompanhe o processamento das notificações, os tempos de resposta e as taxas de erro para compreender o desempenho do agente. Saiba mais sobre a implementação do rastreio e monitorização