Percakapan yang dipicu peristiwa menggunakan pengendali aktivitas

BERLAKU UNTUK: SDK v4

Penanganan aktivitas adalah cara berbasis peristiwa untuk mengatur logika percakapan untuk bot Anda. Setiap jenis atau subjenis aktivitas yang berbeda mewakili jenis peristiwa percakapan yang berbeda. Di balik layar, handler giliran bot memanggil penangan aktivitas individu untuk setiap jenis aktivitas yang diterimanya.

Misalnya, jika bot menerima aktivitas pesan, handler giliran akan melihat aktivitas yang masuk dan mengirimkannya ke penangan aktivitas pada pesan. Saat membangun bot Anda, logika bot Anda untuk menangani dan merespons pesan akan dimasukkan ke dalam on message activity handler. Demikian juga, logika Anda untuk menangani anggota yang ditambahkan ke percakapan akan dimasukkan ke dalam handler on members added Anda, yang dipanggil setiap kali anggota ditambahkan ke percakapan.

Untuk cara lain untuk mengatur logika bot Anda, lihat bagian logika bot dalam cara kerja bot.

Penting

Bot Framework SDK dan Bot Framework Emulator telah diarsipkan di GitHub. Proyek tidak lagi diperbarui atau dipertahankan. Tiket dukungan untuk Bot Framework SDK tidak akan lagi dilayankan per 31 Desember 2025.

Untuk membangun agen dengan layanan, orkestrasi, dan pengetahuan AI pilihan Anda, pertimbangkan untuk menggunakan SDK Agen Microsoft 365. Agen SDK memiliki dukungan bahasa untuk C#, JavaScript, atau Python. Anda dapat mempelajari lebih lanjut tentang Agen SDK di aka.ms/agents. Jika Anda memiliki bot yang sudah ada yang dibangun dengan Bot Framework SDK, Anda dapat memperbarui bot Anda ke SDK Agen. Tinjau perubahan inti dan pembaruan di Panduan migrasi Bot Framework SDK ke Agents SDK.

Jika Anda membangun agen kolaboratif yang dirancang untuk bekerja dalam Microsoft Teams, pertimbangkan untuk menggunakan Teams SDK. Ini menyediakan API khusus Teams, dukungan kartu adaptif, dan orkestrasi AI bawaan untuk agen yang berjalan di lingkungan Teams. Anda dapat mempelajari lebih lanjut di Teams SDK (Pustaka Teams AI).

Jika Anda mencari platform agen berbasis SaaS, pertimbangkan Microsoft Copilot Studio.

Untuk menerapkan logika Anda untuk handler ini, Anda akan meng-override metode ini di bot Anda, seperti di bagian pengendali aktivitas sampel di bawah ini. Untuk setiap handler ini, tidak ada implementasi bawaan, jadi cukup tambahkan logika sesuai keinginan Anda dalam overrides Anda.

Ada situasi tertentu di mana Anda ingin mengabaikan penangan giliran dasar, seperti menyimpan status di akhir giliran. Saat melakukannya, pastikan untuk terlebih dahulu memanggil await base.OnTurnAsync(turnContext, cancellationToken); untuk memastikan implementasi OnTurnAsync dasar dijalankan sebelum kode tambahan Anda. Implementasi dasar itu, antara lain, bertanggung jawab untuk memanggil penangan aktivitas lainnya seperti OnMessageActivityAsync.

Penanganan kegiatan

Logika bot memproses aktivitas masuk dari satu atau beberapa saluran dan menghasilkan aktivitas keluar sebagai respons.

Logika bot utama didefinisikan dalam kode bot. Untuk mengimplementasikan bot sebagai penanganan aktivitas, dapatkan kelas bot Anda dari ActivityHandler, yang mengimplementasikan IBot antarmuka. ActivityHandler mendefinisikan berbagai handler untuk berbagai jenis aktivitas, seperti OnMessageActivityAsync, dan OnMembersAddedAsync. Metode ini dilindungi, tetapi dapat di-override, karena kita berasal dari ActivityHandler.

Handler yang didefinisikan di ActivityHandler adalah:

Kejadian Pengendali Deskripsi
Aktivitas jenis apa pun diterima OnTurnAsync Memanggil salah satu penangan lainnya, berdasarkan jenis aktivitas yang diterima.
Aktivitas pesan telah diterima OnMessageActivityAsync Ambil alih ini untuk menangani aktivitas message.
Pembaruan aktivitas percakapan diterima OnConversationUpdateActivityAsync Pada suatu conversationUpdate aktivitas, memanggil handler jika anggota selain bot bergabung atau meninggalkan percakapan.
Anggota non-bot bergabung dalam percakapan OnMembersAddedAsync Ambil alih ini untuk menangani anggota yang bergabung dalam percakapan.
Anggota non-bot meninggalkan percakapan OnMembersRemovedAsync Ganti ini untuk menangani anggota yang meninggalkan percakapan.
Aktivitas acara diterima OnEventActivityAsync event Pada aktivitas, memanggil handler khusus untuk jenis peristiwa.
Aktivitas peristiwa respons terhadap token diterima OnTokenResponseEventAsync Ambil alih ini untuk menangani peristiwa respons token.
Aktivitas acara yang bukan token-respons diterima OnEventAsync Ganti ini untuk menangani berbagai jenis event lainnya.
Aktivitas reaksi pada pesan diterima OnMessageReactionActivityAsync Pada aktivitas messageReaction, panggil handler jika satu atau beberapa reaksi ditambahkan atau dihapus dari pesan.
Penambahan reaksi ke sebuah pesan OnReactionsAddedAsync Gantikan ini untuk menangani reaksi yang ditambahkan ke pesan.
Reaksi pesan dihapus dari pesan OnReactionsRemovedAsync Gantikan ini untuk memproses reaksi yang dihapus dari pesan.
Aktivitas pembaruan penginstalan diterima OnInstallationUpdateActivityAsync Dalam suatu aktivitas, memanggil handler berdasarkan apakah bot diinstal atau di-uninstall.
Bot terpasang OnInstallationUpdateAddAsync Gantilah ini untuk menambahkan logika ketika bot diinstal dalam unit organisasi.
Bot dihapus instalasinya OnInstallationUpdateRemoveAsync Alihkan ini untuk menambahkan logika saat bot dihapus instalasinya pada unit organisasi.
Jenis aktivitas lain yang diterima OnUnrecognizedActivityTypeAsync Ambil alih ini untuk menangani jenis aktivitas apa pun yang tidak ditangani oleh cara lain.

Handler yang berbeda ini memiliki turnContext yang menyediakan informasi tentang aktivitas masuk, yang sesuai dengan permintaan HTTP masuk. Aktivitas dapat dari berbagai jenis, sehingga setiap handler menyediakan aktivitas yang diketik kuat dalam parameter konteks perputarannya; dalam kebanyakan kasus, OnMessageActivityAsync akan selalu ditangani, dan merupakan tipe yang paling umum.

Seperti pada versi 4.x sebelumnya dari kerangka kerja ini, ada juga opsi untuk menerapkan metode OnTurnAsyncpublik . Saat ini, implementasi dasar metode ini menangani pemeriksaan kesalahan dan kemudian memanggil masing-masing handler tertentu (seperti dua yang kami tentukan dalam sampel ini) tergantung pada jenis aktivitas masuk. Dalam kebanyakan kasus, Anda dapat membiarkan metode itu apa adanya dan menggunakan handler individu, tetapi, jika situasi Anda memerlukan implementasi OnTurnAsync kustom, itu masih merupakan opsi.

Penting

Jika Anda mengambil alih metode OnTurnAsync, Anda harus memanggil base.OnTurnAsync untuk mendapatkan implementasi dasar agar dapat memanggil semua handler On<activity>Async lainnya atau memanggil handler tersebut sendiri. Jika tidak, handler tersebut tidak akan dipanggil dan kode tersebut tidak akan dijalankan.

Pengelola Aktivitas Contoh

Misalnya, Anda dapat menangani anggota yang ditambahkan untuk menyambut pengguna dalam percakapan, dan menangani pesan untuk mengulangi pesan yang mereka kirim ke bot.

public class EchoBot : ActivityHandler
{
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        var replyText = $"Echo: {turnContext.Activity.Text}";
        await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
    }

    protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
    {
        var welcomeText = "Hello and welcome!";
        foreach (var member in membersAdded)
        {
            if (member.Id != turnContext.Activity.Recipient.Id)
            {
                await turnContext.SendActivityAsync(MessageFactory.Text(welcomeText, welcomeText), cancellationToken);
            }
        }
    }
}

Langkah berikutnya

  • Saluran Microsoft Teams memperkenalkan beberapa aktivitas khusus Teams yang perlu didukung bot Anda untuk bekerja dengan baik dengan Teams. Untuk memahami konsep utama pengembangan bot untuk Microsoft Teams, lihat Cara kerja bot Microsoft Teams
  • Pengendali aktivitas adalah cara yang baik untuk merancang bot yang tidak perlu melacak status percakapan di antara giliran. Pustaka dialog menyediakan cara untuk mengelola percakapan jangka panjang dengan pengguna.