Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Ilmoitusmoduulin avulla voidaan kehittää agentteja, jotka vastaavat Microsoft 365 -sovelluksista peräisin oleviin tapahtumiin ja ilmoituksiin. Ilmoitustuen avulla agentit voivat vastaanottaa ja käsitellä hälytyksiä, kun käyttäjät käyttävät agentteja sähköpostitse, asiakirjojen kommenteissa tai muissa yhteistyöskenaarioissa.
Ilmoitustyönkulku
Tekoälyagenttisovelluksen ilmoitukset otetaan käyttöön seuraavan työnkulun mukaisesti:
Ilmoituskomponenttien tuonti
- Ilmoitusluokkien ja käsittelijöiden tuonti.
- Aktiviteettityyppien ja kanavatunnisteiden tuonti.
Ilmoitusten käsittelijöiden rekisteröinti
- Reittien rekisteröinti ilmoitusten käsittelijämenetelmien avulla.
- Ilmoitustyyppien, kuten sähköposti, Word, Excel tai PowerPoint, käsittelijöiden määritys.
Ilmoitusten käsittely agenttikoodissa
- Agentti vastaanottaa ilmoituksia Microsoft 365 -sovelluksista.
- Saapuvat ilmoitukset käsitellään ja vastataan asianmukaisesti.
Ilmoitustyypit
Agent 365 SDK tukee seuraavia ilmoitustyyppejä:
| Ilmoituksen tyyppi | Description | Alikanavan tunnus |
|---|---|---|
| Sähköposti | Agentti saa sähköpostiviestin, jossa se mainitaan, tai viesti on osoitettu agentille. | email |
| Word | Agentti mainitaan Word-asiakirjan kommentissa | word |
| Excel | Agentti mainitaan Excel-tiedoston kommentissa | excel |
| PowerPoint | Agentti mainitaan PowerPoint-tiedoston kommentissa | powerpoint |
| Elinkaaren tapahtumat | Agentin elinkaari-ilmoitukset (käyttäjätiedot luotu, työkuorma otettu käyttöön, käyttäjä poistettu) | Ei käytettävissä |
Agentin elinkaaritapahtumat
Agentin elinkaaritapahtumat antavat agentille mahdollisuuden reagoida tiettyihin agentin käyttäjätunnuksen hallintaan liittyviin järjestelmätapahtumiin. SDK tukee tällä hetkellä kolmea elinkaaritapahtumaa:
| Tapahtumatyyppi | Tapahtumatunnus | Description |
|---|---|---|
| Käyttäjätiedot luotu | agenticUserIdentityCreated |
Käynnistyy, kun agentin käyttäjätiedot luodaan |
| Työkuorman käyttöönotto päivitetty | agenticUserWorkloadOnboardingUpdated |
Käynnistyy, kun agentin käyttäjän työkuorman käyttöönottotila päivitetään |
| Käyttäjä poistettu | agenticUserDeleted |
Käynnistyy, kun agentin käyttäjätiedot poistetaan |
Agentit voivat suorittaa näiden tapahtumien avulla alustustehtäviä, puhdistustoimenpiteitä tai tilanhallintaa vastauksena käyttäjän elinkaaren muutoksiin.
Ilmoituksen tietoviittaus
Kun agenttisi saa ilmoituksen, tiedot sisältävät ilmoitustyypin mukaista jäsennettyä tietoa. Näiden tietojen ymmärtäminen auttaa sinua poimimaan tiedot, joita tarvitaan ilmoitusten tehokkaaseen käsittelyyn.
Sähköposti-ilmoituksen tiedot
Kun käyttäjä lähettää sähköpostin agentille tai mainitsee agentin sähköpostissa, agenttisi saa sähköposti-ilmoituksen, jonka rakenne seuraavanlainen:
{
"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>"
}
]
}
Asiakirjan kommentti-ilmoituksen tiedot (Word, Excel, PowerPoint)
Kun käyttäjä mainitsee agentin Word-, Excel- tai PowerPoint-asiakirjan kommentissa, agentti saa WPX (Word, PowerPoint, Excel) -kommentti-ilmoituksen:
{
"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"
}
]
}
Ilmoitusten lisääminen agenttiin
Ota ilmoituksen käsittely käyttöön aiemmin luodussa agentissa seuraavasti:
Ilmoituskomponenttien tuonti
Lisää seuraavat tuonnit agenttitiedostooni:
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: Agent365-sovellusten kehittämisen perusluokka. Sen avulla saadaan aktiviteettien reitityksen, tilan hallinnan ja pyyntöjen käsittelyn perustoiminnot.
-
AgentNotification: Luokka, jolla ilmoituskäsittelijöitä rekisteröidään somistemenetelmillä. Sen sisältönä on
on_agent_notification(),on_email(),on_word()ja muita käteviä somisteita. -
AgentNotificationActivity: Paketoija sisältää jäsennetyt ilmoitustiedot ja tyypitetyt ominaisuudet, kuten
email_notificationjawpx_comment_notification. Ne puolestaan sisältävät ilmoitukseen liittyviä metatietoja, kuten tunnisteita, keskustelutietoja ja asiakirjaviittauksia. -
NotificationTypes: tuettujen ilmoitustyyppien, kuten
EMAIL_NOTIFICATION,WPX_COMMENT, luetteloinnin. -
ChannelId: käytetään ilmoituskanavien määrittämiseen, esimerkiksi
ChannelId(channel="agents", sub_channel="*"). - Authorization: ilmoitusten käsittelyn valtuutuskonteksti.
- TurnContext: nykyisen keskusteluvuoron konteksti Agentti SDK:sta.
Ilmoitusten käsittelijöiden rekisteröinti agenttiin
Lisää ilmoitusten käsittelijät agentin alustukseen:
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.')
Tiettyjen ilmoitusten käsittelijöiden toteuttaminen
Lisää käsittelijämenetelmät kuhunkin ilmoitustyyppiin:
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
Lähettäjän tunnistaminen
Jokaiseen ilmoitusaktiviteettiin sisältyy Activity.From. A365-ympäristö täyttää tähän ominaisuuteen lähettäjän peruskäyttäjätiedot, joten ohjelmointirajapintakutsuja tai tunnuksen hakemista ei tarvita. Käyttö on mahdollista missä tahansa ilmoituksen käsittelijässä:
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 on ChannelAccount-luokan esiintymä, jolla on seuraavat ominaisuudet:
| Ominaisuus | Description |
|---|---|
name |
Näyttönimi |
id |
Kanavan käyttäjätunnus |
aad_object_id |
Entra-objektin tunnus |
Tärkeää
Näyttönimi on käyttäjän hallitsema teksti. Estä kehotteen injektiohyökkäykset siistimällä näyttönimi (poista ohjausmerkit, rajaa maksimipituuteen) ennen LLM-järjestelmän kehotteisiin syöttämistä.
Vinkki
Nouda laajennetut profiilitiedot (työnimike, esihenkilö, osasto) käyttämällä aadObjectId-ominaisuutta yhdessä Microsoft Graph API:n kanssa, kun agentilla soveltuvat oikeudet.
Erikoistuneet ilmoitusten käsittelijät
Kun ilmoitusten perusreititys on määritetty, käytä erikoistuneita käsittelijämenetelmiä, kun haluat tarkkarajaista hallintaa. Näiden menetelmien käyttö mahdollistaa seuraavat:
- Useiden saman ilmoitustyypin käsittelijöiden rekisteröinti.
- Käsittelijän prioriteetin määrittäminen luokittelun avulla.
- Automaattinen todennuksen määrittäminen kullekin käsittelijälle.
Muistiinpano
Useimmissa käyttötapauksissa yleinen käsittelijämalli on riittävä. Käytä näitä erikoistuneita käsittelijöitä, kun tarvitset reitityksen lisäasetuksia tai useita saman ilmoitustyypin käsittelijöitä.
Kaikkien ilmoitusten käsittelyyn erikoistunut käsittelijä
Rekisteröi lisää kaikkia ilmoitustyyppejä käsitteleviä käsittelijöitä:
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}")
Sähköposti-ilmoituksiin erikoistunut käsittelijä
Rekisteröi lisää sähköposti-ilmoituksiin erikoistuneita käsittelijöitä:
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!')
Asiakirjojen kommentteihin erikoistuneet käsittelijät
Rekisteröi lisää Wordin, Excelin ja PowerPointin kommentti-ilmoituksiin erikoistuneita käsittelijöitä:
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')
Elinkaaritapahtumiin erikoistuneet käsittelijät
Rekisteröi lisää agentin elinkaaritapahtumiin, kuten käyttäjätietojen luontiin, työkuorman käyttöönottoon ja käyttäjän poistoon, erikoistuneita käsittelijöitä:
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')
Lisämääritykset
Tässä osiossa käsitellään ilmoituskäsittelijöiden tarkentamiseen tarkoitettuja määritysten lisäasetuksia. Näiden määritysten avulla voit hallita käsittelijöiden suoritusjärjestystä ja todennusvaatimuksia sekä optimoida ilmoitusten käsittelyä monimutkaisissa skenaarioissa.
Käsittelijän prioriteetti ja luokittelu
Jos käytät useita erikoistuneita käsittelijöitä, määritä prioriteettijärjestys luokitteluarvojen avulla. Mitä pienempi luokitteluarvo on, sitä korkeampi on prioriteetti:
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
Todennuksen käsittelijät
Määritä automaattinen kirjautuminen sellaisten ilmoitusten käsittelijöille, joissa edellytetään todennusta:
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
Näytekoodi
Täydellisiä käytännön esimerkkejä ilmoitusten käsittelystä kaikissa tuetuissa kehyksissä on kohdassa Agent 365 -esimerkit.
Ilmoituksia sisältävien agenttien testaus
Testaa agentti ilmoituskäsittelijöiden toteutuksen jälkeen ja varmista, että erilaiset ilmoitustyypit vastaanotetaan ja käsitellään oikein. Määritä ympäristö testausoppaan mukaisesti ja keskity sen jälkeen ensisijaisesti Testaus ilmoitusaktiviteettien avulla -osioon, kun tarkistat ilmoitukset agenttipohjaisen todennuksen avulla.
Ilmoitusten käsittelyn valvonta
Lisää havaittavuusominaisuuksia agentin ilmoitusten käsittelyn valvontaa varten. Hahmota agentin suorituskyky seuraamalla ilmoitusten käsittelyä, vasteaikoja ja virheiden esiintyvyyttä. Lue lisää jäljityksen ja seurannan toteuttamisesta.