Bagikan melalui


Memberi tahu agen

Penting

Anda harus menjadi bagian dari program pratinjau Frontier untuk mendapatkan akses awal ke Microsoft Agent 365. Frontier menghubungkan Anda langsung dengan inovasi AI terbaru Microsoft. Pratinjau frontier tunduk pada ketentuan pratinjau yang ada dari perjanjian pelanggan Anda. Karena fitur-fitur ini masih dalam pengembangan, ketersediaan dan kemampuannya dapat berubah dari waktu ke waktu.

Modul Pemberitahuan memungkinkan pengembang untuk membangun agen yang dapat menanggapi peristiwa dan pemberitahuan dari aplikasi Microsoft 365. Dengan dukungan pemberitahuan, agen dapat menerima dan memproses pemberitahuan saat pengguna berinteraksi dengan mereka melalui email, komentar dokumen, atau skenario kolaboratif lainnya.

Alur kerja pemberitahuan

Ikuti alur kerja ini untuk mengaktifkan pemberitahuan untuk aplikasi agen AI Anda:

  1. Instal paket pemberitahuan.

  2. Mengimpor komponen pemberitahuan

    • Mengimpor kelas pemberitahuan dan handler
    • Mengimpor jenis aktivitas dan pengidentifikasi saluran
  3. Mendaftarkan penangan pemberitahuan

    • Menggunakan metode handler pemberitahuan untuk mendaftarkan rute
    • Mengonfigurasi handler untuk jenis pemberitahuan tertentu (Misalnya: email, Word, Excel, PowerPoint)
  4. Memproses pemberitahuan dalam kode agen

    • Agen menerima pemberitahuan dari aplikasi Microsoft 365
    • Menangani pemberitahuan masuk dan merespons dengan tepat

Jenis Pemberitahuan

Agen 365 SDK mendukung jenis pemberitahuan berikut:

Jenis pemberitahuan KETERANGAN ID Sub-Saluran
Email Agen menerima email tempat mereka disebutkan atau ditangani email
Kata Agen disebutkan dalam komentar dalam dokumen Word word
Melampaui Agen disebutkan dalam komentar dalam dokumen Excel excel
PowerPoint 2021 Agen disebutkan dalam komentar dalam dokumen PowerPoint powerpoint
Peristiwa Siklus Hidup Pemberitahuan siklus hidup agen (identitas pengguna dibuat, onboarding beban kerja, pengguna dihapus) Tidak Tersedia

Peristiwa siklus hidup agen

Peristiwa siklus hidup agen memungkinkan agen Anda merespons peristiwa sistem tertentu yang terkait dengan manajemen identitas pengguna agenik. SDK saat ini mendukung tiga peristiwa siklus hidup:

Jenis Acara ID Peristiwa KETERANGAN
Identitas Pengguna Dibuat agenticUserIdentityCreated Dipicu saat identitas pengguna agenik dibuat
Onboarding Beban Kerja Diperbarui agenticUserWorkloadOnboardingUpdated Dipicu saat status onboarding beban kerja pengguna agenik diperbarui
Pengguna Dihapus agenticUserDeleted Dipicu saat identitas pengguna agenik dihapus

Peristiwa ini memungkinkan agen untuk melakukan tugas inisialisasi, operasi pembersihan, atau manajemen status sebagai respons terhadap perubahan siklus hidup pengguna.

Tambahkan Pemberitahuan ke Agen Anda

Ikuti langkah-langkah ini untuk mengaktifkan penanganan pemberitahuan di agen Anda yang sudah ada:

Mengimpor komponen pemberitahuan

Tambahkan impor ini ke file agen Anda:

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: Kelas dasar untuk membangun aplikasi Agent365; menyediakan fungsionalitas inti untuk aktivitas perutean, mengelola status, dan memproses permintaan
  • AgentNotification: Kelas untuk mendaftarkan penangan pemberitahuan dengan metode dekorator. Menyediakan on_agent_notification(), on_email(), on_word(), dan dekorator kenyamanan lainnya
  • AgentNotificationActivity: Pembungkus yang berisi data pemberitahuan yang diurai dengan properti yang ditik seperti email_notification dan wpx_comment_notification yang berisi metadata khusus pemberitahuan (ID, detail percakapan, referensi dokumen)
  • NotificationTypes: Enum jenis pemberitahuan yang didukung (EMAIL_NOTIFICATION, WPX_COMMENT, AGENT_LIFECYCLE)
  • ChannelId: Digunakan untuk menentukan saluran pemberitahuan (misalnya, ChannelId(channel="agents", sub_channel="*"))
  • Otorisasi: Konteks otorisasi untuk memproses pemberitahuan
  • TurnContext: Konteks giliran percakapan saat ini dari Agen SDK

Mendaftarkan penangan pemberitahuan di agen Anda

Tambahkan penangan pemberitahuan ke inisialisasi agen Anda:

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

Menerapkan handler pemberitahuan tertentu

Tambahkan metode handler untuk setiap jenis pemberitahuan:

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

Penangan Pemberitahuan Khusus

Setelah menyiapkan perutean pemberitahuan dasar, gunakan metode handler khusus untuk kontrol yang lebih terperinci. Metode ini memungkinkan Anda untuk:

  • Mendaftarkan beberapa handler untuk jenis pemberitahuan yang sama
  • Mengatur prioritas handler dengan peringkat
  • Mengonfigurasi autentikasi otomatis per handler

Catatan

Untuk sebagian besar kasus penggunaan, pola handler generik sudah cukup. Gunakan handler khusus ini saat Anda memerlukan perutean tingkat lanjut atau beberapa handler untuk jenis pemberitahuan yang sama.

Handler khusus untuk semua pemberitahuan

Daftarkan lebih banyak penangan yang memproses semua jenis pemberitahuan:

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

Handler khusus untuk pemberitahuan email

Daftarkan lebih banyak handler khusus untuk pemberitahuan 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!')

Handler khusus untuk komentar dokumen

Daftarkan lebih banyak handler untuk pemberitahuan komentar Word, Excel, dan 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')

Handler khusus untuk peristiwa siklus hidup

Daftarkan lebih banyak handler untuk peristiwa siklus hidup agen seperti pembuatan identitas pengguna, onboarding beban kerja, dan penghapusan pengguna:

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

Konfigurasi tingkat lanjut

Bagian ini mencakup opsi konfigurasi tingkat lanjut untuk menyempurnakan penangan pemberitahuan Anda. Konfigurasi ini memungkinkan Anda mengontrol urutan eksekusi handler, mengelola persyaratan autentikasi, dan mengoptimalkan pemrosesan pemberitahuan untuk skenario yang kompleks.

Prioritas dan peringkat handler

Saat menggunakan beberapa handler khusus, Anda dapat menentukan urutan prioritas menggunakan nilai peringkat. Nilai yang lebih rendah menunjukkan prioritas yang lebih tinggi.

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

Handler autentikasi

Konfigurasikan handler masuk otomatis untuk pemberitahuan yang memerlukan autentikasi:

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

Uji dan Pantau:

Menguji agen Anda dengan pemberitahuan

Setelah menerapkan penangan pemberitahuan, uji agen Anda untuk memastikannya menerima dan memproses jenis pemberitahuan yang berbeda dengan benar. Ikuti panduan pengujian untuk menyiapkan lingkungan Anda, lalu fokus terutama pada bagian Uji dengan aktivitas pemberitahuan untuk memvalidasi pemberitahuan Anda menggunakan autentikasi agenik.

Memantau penanganan pemberitahuan

Pantau penanganan pemberitahuan agen Anda dengan menambahkan kemampuan pengamatan. Lacak pemrosesan pemberitahuan, waktu respons, dan tingkat kesalahan untuk memahami performa agen. Pelajari selengkapnya tentang menerapkan pelacakan dan pemantauan