Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Genom att använda aviseringsmodulen kan du skapa agenter som svarar på händelser och aviseringar från Microsoft 365-applikationer. Genom att använda notifikationsstöd kan agenter ta emot och bearbeta aviseringar när användare interagerar med dem via e-post, dokumentkommentarer eller andra samarbetssituationer.
Arbetsflöde för notifieringar
Följ detta arbetsflöde för att aktivera aviseringar i din AI-agentapplikation:
Importnotifieringskomponenter
- Importera notifikationsklasser och hanterare.
- Importera aktivitetstyper och kanalidentifierare.
Registrera notifikationshanterare
- Använd notifikationshanteringsmetoder för att registrera rutter.
- Konfigurera hanterare för specifika notifikationstyper, såsom e-post, Word, Excel eller PowerPoint.
Bearbeta aviseringar i agentkod
- Agenten tar emot aviseringar från Microsoft 365-applikationer.
- Hantera inkommande aviseringar och svara på rätt sätt.
Meddelandetyper
Agent 365 SDK stöder nu följande aviseringstyper:
| Aviseringstyp | beskrivning | ID för underordnad kanal |
|---|---|---|
| E-post | Agenten får ett mejl där de nämns eller adresseras | email |
| Word | Agenten nämns i en kommentar i ett Word-dokument | word |
| Excel | Agenten nämns i en kommentar i ett Excel-dokument | excel |
| PowerPoint | Agenten nämns i en kommentar i ett PowerPoint-dokument. | powerpoint |
| Livscykelhändelser | Agentlivscykelnotiser (användaridentitet skapad, arbetsbelastning initierad, användare borttagen) | Inte tillämpligt |
Agentlivscykelhändelser
Agentlivscykelhändelser gör det möjligt för din agent att reagera på specifika systemhändelser kopplade till hanteringen av agentens användaridentitet. SDK:n stöder för närvarande tre livscykelhändelser:
| Händelsetyp | Händelse-ID | beskrivning |
|---|---|---|
| Användaridentitet skapad | agenticUserIdentityCreated |
Utlöses när en agents användaridentitet skapas |
| Onboarding för arbetsbelastning uppdaterad | agenticUserWorkloadOnboardingUpdated |
Utlöses när en agents arbetsbelastnings-onboardingstatus uppdateras |
| Användare raderad | agenticUserDeleted |
Utlöses när en agents användaridentitet tas bort |
Genom att använda dessa händelser kan agenter utföra initialiseringsuppgifter, rensningsåtgärder eller hantera tillstånd som svar på förändringar i användarens livscykel.
Referens för aviseringens nyttolast
När din agent tar emot en avisering innehåller nyttolasten strukturerad data som är specifik för typen av notifikation. Genom att förstå dessa nyttolaster kan du extrahera den information du behöver för att effektivt behandla aviseringar.
E-postnotifikationens nyttolast
När en användare skickar ett mejl till din agent eller nämner din agent i ett mejl, får din agent en e-postavisering med följande 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>"
}
]
}
Meddelandepaket för dokumentkommentarer (Word, Excel, PowerPoint)
När en användare nämner din agent i en kommentar i ett Word-, Excel- eller PowerPoint-dokument får din agent en WPX-notis (Word, PowerPoint, Excel) om kommentaren:
{
"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"
}
]
}
Lägga till aviseringar i agenten
Följ dessa steg för att aktivera hantering av aviseringar i din befintliga agent:
Importnotifieringskomponenter
Lägg till dessa importer i din agentfil:
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: Basklass för att skapa Agent365-applikationer. Den tillhandahåller kärnfunktionalitet för routing av aktiviteter, hantering av tillstånd och bearbetning av förfrågningar.
-
AgentNotification: Klass för registrering av aviseringshanterare med dekoratorer. Den tillhandahåller
on_agent_notification(),on_email(),on_word(), och andra bekvämlighetsdekoratörer. -
AgentNotificationActivity: Omslutning som innehåller tolkade aviseringsdata med typade egenskaper som
email_notificationochwpx_comment_notificationsom innehåller aviseringsspecifika metadata såsom ID:n, konversationsdetaljer och dokumentreferenser. -
NotificationTypes: Uppräkning av aviseringstyper som stöds såsom
EMAIL_NOTIFICATION,WPX_COMMENT. -
ChannelId: Ange kanaler för aviseringar, till exempel
ChannelId(channel="agents", sub_channel="*"). - Auktoriseringskontext: Auktoriseringskontext för bearbetning av aviseringar.
- TurnContext: Aktuell konversationskontext från Agents SDK.
Registrera aviseringshanterare i din agent
Lägg till aviseringshanterare vid initiering av din agent:
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.')
Implementera specifika notifikationshanterare
Lägg till hanteringsmetoder för varje aviseringstyp:
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
Identifiera avsändaren
Varje aviseringsaktivitet inkluderar Activity.From. A365-plattformen fyller i denna egenskap med avsändarens grundläggande identitet, så du behöver inga API-anrop eller hämta token. Du kan få åtkomst till den i en aviseringshanterare:
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 är en instans av ChannelAccount-klassen som har följande egenskaper:
| Egenskap | Description |
|---|---|
name |
Visningsnamn |
id |
Användar-ID för kanalen |
aad_object_id |
Objekt-ID för Entra |
Viktigt
Visningsnamnet är användarkontrollerad text. Rensa visningsnamnet (ta bort kontrolltecken, begränsa till en maximal längd) innan du matar in det i LLM-systemprompter för att förhindra promptinmatningsattacker.
Dricks
Använd aadObjectId Microsoft Graph API för att hämta utökad profildata (jobbtitel, chef, avdelning) när din agent har rätt behörigheter.
Specialiserade notifikationshanterare
Efter att ha konfigurerat grundläggande notifikationsrouting, använd specialiserade hanterarmetoder för mer granulär kontroll. Genom att använda dessa metoder kan du:
- Registrera flera hanterare för samma notifikationstyp.
- Ställ in prioritet för hanterare genom att använda rangordning.
- Konfigurera automatisk autentisering för varje hanterare.
Kommentar
För de flesta användningsfall räcker det generiska hanterarmönstret. Använd dessa specialiserade hanterare när du behöver avancerad routing eller flera hanterare för samma notifikationstyp.
Specialiserad hanterare för alla aviseringar
Registrera fler hanterare som hanterar alla notifikationstyper:
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}")
Specialiserad hanterare för e-postaviseringar
Registrera fler hanterare specifikt för e-postnotiser:
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!')
Specialiserade hanterare för dokumentkommentarer
Registrera fler hanterare för Word-, Excel- och PowerPoint-kommentarsaviseringar:
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')
Specialiserade hanterare för livscykelhändelser
Registrera fler hanterare för agentens livscykelhändelser, såsom skapande av användaridentitet, onboarding av arbetsuppgifter och borttagning av användare:
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')
Avancerad konfiguration
Detta avsnitt behandlar avancerade konfigurationsalternativ för att finjustera dina notifikationshanterare. Genom att använda dessa konfigurationer kan du styra hanterarnas exekveringsordning, hantera autentiseringskrav och optimera hanteringen av aviseringar för komplexa scenarier.
Prioritet och rangordning för hanterare
När du använder flera specialiserade hanterare, ange prioritetsordningen med hjälp av rangvärden. Ju lägre rankvärde, desto högre 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
Autentiseringshanterare
Konfigurera automatiska inloggningshanterare för aviseringar som kräver 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
Exempelkod
För kompletta exempel på hantering av aviseringar för alla stödda ramverk, se Agent 365-exempel.
Testa din agent med aviseringar
När du har implementerat notifikationshanterare, testa din agent för att säkerställa att den korrekt tar emot och bearbetar olika notifikationstyper. Följ testguiden för att konfigurera din miljö och fokusera sedan i första hand på avsnittet Test med notifikationsaktiviteter för att verifiera dina aviseringar med agentbaserad autentisering.
Övervaka notifikationshantering
Implementera observabilitetsfunktioner för att övervaka agentens notifikationshantering. Följ notishantering, svarstider och felfrekvenser för att förstå agentens prestation. Läs mer om hur du implementerar spårning och övervakning.