Varsle agenter

Ved å bruke varslingsmodulen kan du utvikle agenter som svarer på hendelser og varsler fra Microsoft 365-programmer. Ved å bruke varslingsstøtte kan agenter motta og behandle varsler når brukere samhandler med dem via e-post, dokumentkommentarer eller andre samarbeidsscenarioer.

Varslingsarbeidsflyt

Følg denne arbeidsflyten for å aktivere varsling for KI-agenten din:

  1. Installer varlingspakker.

  2. Importer varslingskomponenter

    • Importer varslingsklasser og håndterere.
    • Importer aktivitetstyper og kanalidentifikatorer.
  3. Registrer varslingshåndterere

    • Bruk varslingshåndteringsmetoder for å registrere ruter.
    • Konfigurer håndterere for spesifikke varslingstyper, som e-post, Word, Excel eller PowerPoint.
  4. Behandle varsler i agentkoden

    • Agenten mottar varsler fra Microsoft 365-programmer.
    • Håndter innkommende varsler og svar på riktig måte.

Varslingstyper

SDK for Agent 365 støtter nå følgende varslingstyper:

Varslingstype Description Underkanal-ID
E-post Agenten mottar en e-post der agenten blir nevnt eller adressert email
Word Agenten nevnes i en kommentar i et Word-dokument word
Excel Agenten nevnes i en kommentar i et Excel-dokument excel
PowerPoint Agenten nevnes i en kommentar i et PowerPoint-dokument powerpoint
Livssyklushendelser Agentlivssyklusvarsler (brukeridentitet opprettet, arbeidsbelastningspålasting, bruker slettet) Ikke tilgjengelig

Agentlivssyklushendelser

Agentlivssyklushendelser gjør det mulig for agenten din å svare på spesifikke systemhendelser knyttet til håndtering av agentbrukeridentitet. SDK-en støtter for øyeblikket tre livssyklushendelser:

Hendelsestype Hendelses-ID Description
Brukeridentitet opprettet agenticUserIdentityCreated Utløses når en agentbrukeridentitet opprettes
Pålasting av arbeidsbelastning oppdatert agenticUserWorkloadOnboardingUpdated Utløses når en agentbrukers pålastingsstatus for arbeidsbelastning oppdateres
Bruker slettet agenticUserDeleted Utløses når en agentbrukeridentitet slettes

Ved å bruke disse hendelsene kan agenter utføre initialiseringsoppgaver, oppryddingsoperasjoner eller tilstandshåndtering i forbindelse med endringer i brukerens livssyklus.

Varslingsnyttelastreferanse

Når agenten din mottar et varsel, inneholder nyttelasten strukturert data tilpasset varslingstypen. Å forstå disse nyttelastene hjelper deg å hente ut informasjonen du trenger for å behandle varslinger effektivt.

E-postvarslingsnyttelast

Når en bruker sender en e-post til agenten din eller nevner agenten din i en e-post, mottar agenten en e-postvarsling med følgende struktur:

{
  "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
  "timestamp": "2026-02-06T17:45:20.740Z",
  "channelId": "agents",
  "serviceUrl": "http://localhost:56150/_connector",
  "recipient": {
    "id": "AgentName@contoso.onmicrosoft.com",
    "name": "My Agent",
    "agenticUserId": "<agentic-user-id>",
    "agenticAppId": "<agentic-app-id>",
    "tenantId": "<tenant-id>",
    "role": "agenticUser"
  },
  "conversation": {
    "id": "<conversation-id>",
    "conversationType": "personal",
    "tenantId": "<tenant-id>"
  },
  "from": {
    "id": "sender@contoso.onmicrosoft.com",
    "name": "Sender Name",
    "role": "user"
  },
  "type": "message",
  "channelData": {
    "tenant": {
      "id": "<tenant-id>"
    }
  },
  "locale": "en-US",
  "name": "emailNotification",
  "entities": [
    {
      "type": "clientInfo",
      "locale": "en-US",
      "timezone": null
    },
    {
      "id": "email",
      "type": "productInfo"
    },
    {
      "type": "emailNotification",
      "id": "<email-id>",
      "conversationId": "<conversation-id>",
      "htmlBody": "<body dir=\"ltr\">\n<div class=\"elementToProof\">Your email message content here</div>\n</body>"
    }
  ]
}

Varslingsnyttelast for dokumentkommentarer (Word, Excel, PowerPoint)

Når en bruker nevner agenten din i en kommentar i et Word-, Excel- eller PowerPoint-dokument, mottar agenten din en WPX-kommentarvarslingsnyttelast:

{
  "id": "bbbbbbbb-1111-2222-3333-cccccccccccc",
  "timestamp": "2026-02-06T17:46:02.248Z",
  "channelId": "agents",
  "serviceUrl": "http://localhost:56150/_connector",
  "recipient": {
    "id": "AgentName@contoso.onmicrosoft.com",
    "name": "My Agent",
    "agenticUserId": "<agentic-user-id>",
    "agenticAppId": "<agentic-app-id>",
    "tenantId": "<tenant-id>",
    "role": "agenticUser"
  },
  "conversation": {
    "id": "<conversation-id>",
    "conversationType": "personal",
    "tenantId": "<tenant-id>",
    "topic": "<document-topic>"
  },
  "from": {
    "id": "sender@contoso.onmicrosoft.com",
    "name": "Sender Name",
    "role": "user"
  },
  "type": "message",
  "channelData": {
    "tenant": {
      "id": "<tenant-id>"
    },
    "productContext": "Word"
  },
  "locale": "en-US",
  "textFormat": "plain",
  "text": "<at>My Agent</at> - Please review this section\n",
  "attachments": [
    {
      "contentUrl": "<document-url>",
      "name": "<document-name>",
      "content": {
        "uniqueId": "<document-unique-id>",
        "fileType": "docx"
      },
      "contentType": "application/vnd.microsoft.teams.file.download.info"
    }
  ],
  "entities": [
    {
      "type": "clientInfo",
      "locale": "en-US",
      "timezone": null
    },
    {
      "mentioned": {
        "id": "AgentName@contoso.onmicrosoft.com",
        "name": "@My Agent"
      },
      "text": "<at>My Agent</at>",
      "type": "mention"
    },
    {
      "id": "Word",
      "type": "productInfo"
    },
    {
      "parentCommentId": "<parent-comment-id>",
      "commentId": "<comment-id>",
      "documentId": "<document-id>",
      "type": "wpxcomment"
    }
  ]
}

Legg til varslinger i agenten

Følg disse trinnene for å aktivere varslingshåndtering i din eksisterende agent:

Importer varslingskomponenter

Legg til disse importene i agentfilen din:

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: Basisklasse for å bygge Agent365-programmer. Den gir kjernefunksjonalitet for ruting av aktiviteter, tilstandshåndtering og behandling av forespørsler.
  • AgentNotification: Klasse for registrering av varslingshåndterere med dekoratørmetoder. Den tilbyr on_agent_notification(), on_email(), on_word() og andre praktiske dekoratører.
  • AgentNotificationActivity: Wrapper som inneholder tolket varslingsdata med typede egenskaper som email_notification og wpx_comment_notification, som inneholder varslingsspesifikke metadata som ID-er, samtaledetaljer og dokumentreferanser.
  • NotificationTypes: Opplisting over støttede varslingstyper, som EMAIL_NOTIFICATION og WPX_COMMENT.
  • ChannelId: Brukes til å angi varslingskanaler, f.eks. ChannelId(channel="agents", sub_channel="*").
  • Autorisasjon: Autorisasjonskontekst for behandling av varslinger.
  • TurnContext: Nåværende kontekst for samtalerunde fra SDK for agenter.

Registrer varslingshåndterere i agenten din

Legg til varslingshåndterere i agentens oppsett:

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.')

Implementer spesifikke varslingshåndterere

Legg til metoder for håndtering av hver varslingstype:

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

Identifiser avsenderen

Hver varslingsaktivitet inkluderer Activity.From. A365-plattformen fyller denne egenskapen med avsenderens grunnleggende identitet, så du trenger ingen API-kall eller tokeninnhenting. Få tilgang til den i enhver varslingshandler:

async def handle_email_notification(self, context, state, notification):
    from_prop = context.activity.from_property
    logger.info(
        "Notification from — DisplayName: '%s', UserId: '%s', AadObjectId: '%s'",
        getattr(from_prop, "name", None) or "(unknown)",
        getattr(from_prop, "id", None) or "(unknown)",
        getattr(from_prop, "aad_object_id", None) or "(none)",
    )
    display_name = getattr(from_prop, "name", None) or "unknown"
    # Use display_name in your response or LLM prompt

Activity.from_property er en ChannelAccount-klasseforekomst som har følgende egenskaper:

Egenskap Description
name Visningsnavn
id Kanalbruker-ID
aad_object_id Objekt-ID for Entra

Viktig!

Visningsnavnet er brukerstyrt tekst. Rens den (fjern kontrolltegn, begrens lengden) før du injiserer den i LLM-systemspørsmål for å forhindre instruksinjeksjonsangrep.

Tips

Bruk aadObjectId sammen med Microsoft Graph API for å hente utvidede profildata (stillingstittel, leder, avdeling) når agenten din har nødvendige tillatelser.

Spesialiserte varslingshåndterere

Når du har satt opp grunnleggende varslingsruting, bruker du spesialiserte håndteringsmetoder for mer granulær kontroll. Ved å bruke disse metodene kan du:

  • Registrer flere håndterere for samme varslingstype.
  • Sett handlerprioritet ved å bruke rangering.
  • Konfigurer automatisk autentisering for hvert behandlingsprogram.

Notat

For de fleste brukstilfeller er det generiske behandlingsprogrammønsteret tilstrekkelig. Bruk disse spesialiserte håndtererne når du trenger avansert ruting eller flere håndterere for samme varslingstype.

Spesialisert behandlingsprogram for alle varsler

Registrer flere behandlingsprogrammer som behandler alle varslingstyper:

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

Spesialisert behandlingsprogram for e-postvarslinger

Registrer flere behandlingsprogrammer spesielt for e-postvarslinger:

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!')

Spesialiserte behandlingsprogrammer for dokumentkommentarer

Registrer flere behandlingsprogrammer for kommentarvarsler fra Word, Excel og 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')

Spesialiserte behandlingsprogrammer for livssyklushendelser

Registrer flere behandlingsprogrammer for agentlivssyklushendelser, slik som opprettelse av brukeridentitet, innføring av arbeidsområde og sletting av bruker:

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')

Avansert konfigurasjon

Denne delen tar for seg avanserte konfigurasjonsalternativer for finjustering av varslingsbehandlingsprogrammer. Ved å bruke disse innstillingene kan du kontrollere handlernes kjørerekkefølge, håndtere autentiseringskrav og optimalisere varslingsbehandlingen for komplekse scenarioer.

Prioritet og rangering for handlere

Når du bruker flere spesialiserte behandlingsprogrammer, angir du prioritet ved å bruke rangverdier. Lavere rangverdier indikerer høyere prioritet:

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

Godkjenningsbehandlere

Konfigurer behandlingsprogrammer for automatisk pålogging for varsler som krever autentisering:

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

Eksempelkode

Se Agent 365-eksempler for fullstendige eksempler på varslingsbehandlingsprogram på tvers av alle støttede rammeverk.

Test agenten din med varsler

Etter å ha implementert varslingsbehandlingsprogrammer, tester du agenten din for å sikre at den mottar og behandler ulike varslingstyper korrekt. Følg testveiledning for å sette opp miljøet ditt, og fokuser hovedsakelig på økten Test med varslingsaktiviteter for å validere varslene dine ved hjelp av agentisk autentisering.

Overvåk håndtering av varsler

Legg til observasjonsfunksjoner for å overvåke håndtering av varsler hos agenten. Overvåk prosessering av varsler, responstider og feilrater for å forstå agentens ytelse. Les mer om implementering av sporing og overvåking.