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.
JavaScript ActivityHandler menggunakan pola pemancar dan pendengar peristiwa.
Misalnya, gunakan metode onMessage untuk mendaftarkan pendengar acara dalam aktivitas pesan. Anda dapat mendaftarkan lebih dari satu listener. Ketika bot menerima aktivitas pesan, penanganan aktivitas akan menangani aktivitas masuk tersebut dan mengirimkannya ke masing-masing pendengar aktivitas onMessage, sesuai urutan di mana mereka terdaftar.
Saat membangun bot Anda, logika dari bot untuk menangani dan merespons pesan akan ditempatkan pada listener onMessage. Demikian juga, logika Anda untuk menangani anggota yang ditambahkan ke percakapan akan masuk ke listener onMembersAdded Anda, yang dipanggil setiap kali anggota ditambahkan ke percakapan.
Untuk menambahkan listener ini, Anda akan mendaftarkannya di bot seperti yang terlihat di bagian logika Bot di bawah ini. Untuk setiap pendengar, sertakan logika bot Anda, lalu pastikan untuk memanggil next() di akhir. Dengan memanggil next(), Anda memastikan bahwa pendengar berikutnya akan dijalankan.
Pastikan untuk menyimpan status sebelum giliran berakhir. Anda dapat melakukannya dengan menggantikan metode penangan run aktivitas dan menyimpan status setelah metode induk run selesai.
Tidak ada situasi umum di mana Anda ingin mengubah pengatur giliran dasar, jadi berhati-hatilah jika Anda mencoba melakukannya.
Ada penangan khusus yang disebut onDialog. Handler onDialog dijalankan di akhir, setelah semua handler lainnya dijalankan, dan tidak terkait dengan jenis aktivitas tertentu. Seperti semua handler di atas, pastikan untuk memanggil next() agar memastikan sisa proses dilanjutkan.
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. Tidak ada implementasi dasar untuk masing-masing handler ini, jadi tambahkan logika yang Anda inginkan dalam override Anda.
Ada situasi tertentu di mana Anda ingin mengabaikan penangan giliran dasar, seperti menyimpan status di akhir giliran. Saat melakukannya, pastikan terlebih dahulu untuk memanggil super.onTurn(turnContext); untuk memastikan implementasi onTurn dasar dijalankan sebelum kode tambahan Anda. Implementasi dasar itu, antara lain, bertanggung jawab untuk memanggil penangan aktivitas lainnya seperti onMessageActivity.
Saat membangun bot Anda, logika bot Anda untuk menangani dan merespons pesan akan masuk ke handler ini on_message_activity . Demikian juga, logika Anda untuk menangani anggota yang ditambahkan ke percakapan akan masuk ke handler Anda on_members_added , yang dipanggil setiap kali anggota ditambahkan ke percakapan.
Misalnya, jika bot menerima aktivitas pesan, pengelola giliran akan melihat aktivitas yang masuk kemudian mengirimnya ke on_message_activity penanganan aktivitas.
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 super().on_turn(turnContext); untuk memastikan implementasi on_turn dasar dijalankan sebelum kode tambahan Anda. Implementasi dasar itu, antara lain, bertanggung jawab untuk memanggil penangan aktivitas lainnya seperti on_message_activity.
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.
Logika bot utama didefinisikan dalam kode bot. Untuk menerapkan bot sebagai penanganan aktivitas, perluas ActivityHandler.
ActivityHandler menentukan berbagai peristiwa untuk berbagai jenis aktivitas, dan Anda dapat memodifikasi perilaku bot Anda dengan mendaftarkan pendengar peristiwa, seperti dengan onMessage dan onConversationUpdate.
Gunakan metode ini untuk mendaftarkan listener untuk setiap jenis peristiwa:
| Kejadian |
Metode pendaftaran |
Deskripsi |
| Aktivitas jenis apa pun diterima |
onTurn |
Mendaftarkan pendengar acara untuk setiap aktivitas yang diterima. |
| Aktivitas pesan telah diterima |
onMessage |
Mendaftarkan pendengar saat message aktivitas diterima. |
| Pembaruan aktivitas percakapan diterima |
onConversationUpdate |
Mendaftarkan pendengar saat aktivitas apa pun conversationUpdate diterima. |
| Para anggota mulai bergabung dalam percakapan |
onMembersAdded |
Mendaftarkan pendengar saat anggota bergabung dalam percakapan, termasuk bot. |
| Anggota meninggalkan percakapan |
onMembersRemoved |
Mendaftarkan pendengar saat anggota meninggalkan percakapan, termasuk bot. |
| Aktivitas reaksi pada pesan diterima |
onMessageReaction |
Mendaftarkan pendengar saat aktivitas apa pun messageReaction diterima. |
| Penambahan reaksi ke sebuah pesan |
onReactionsAdded |
Mendaftarkan pendengar untuk mengetahui saat reaksi ditambahkan ke sebuah pesan. |
| Reaksi pesan dihapus dari pesan |
onReactionsRemoved |
Mendaftarkan pendengar ketika reaksi dihapus dari pesan. |
| Aktivitas acara diterima |
onEvent |
Mendaftarkan pendengar saat aktivitas apa pun event diterima. |
| Aktivitas peristiwa respons terhadap token diterima |
onTokenResponseEvent |
Mendaftarkan pendengar untuk ketika peristiwa tokens/response diterima. |
| Aktivitas pembaruan penginstalan diterima |
onInstallationUpdate |
Mendaftarkan pendengar saat aktivitas apa pun installationUpdate diterima. |
| Bot terpasang |
onInstallationUpdateAdd |
Mendaftarkan pendengar saat bot diinstal dalam unit organisasi. |
| Bot dihapus instalasinya |
onInstallationUpdateRemove |
Mendaftarkan pendengar saat bot dihapus instalannya dalam unit organisasi. |
| Jenis aktivitas lain yang diterima |
onUnrecognizedActivityType |
Mendaftarkan pendengar saat handler untuk jenis aktivitas tertentu tidak ditentukan. |
| Pengelolaan aktivitas telah selesai |
onDialog |
Dipanggil setelah setiap handler yang berlaku selesai. |
Panggil fungsi kelanjutan next dari setiap handler untuk memungkinkan pemrosesan berlanjut. Jika next tidak dipanggil, pemrosesan aktivitas berakhir.
Logika bot utama didefinisikan dalam kode bot. Untuk mengimplementasikan bot sebagai penanganan aktivitas, dapatkan kelas bot Anda dari ActivityHandler, yang mengimplementasikan Bot antarmuka.
ActivityHandler mendefinisikan berbagai handler untuk berbagai jenis aktivitas, seperti onMessageActivity, dan onMembersAdded. 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 |
onTurn |
Memanggil salah satu penangan lainnya, berdasarkan jenis aktivitas yang diterima. |
| Aktivitas pesan telah diterima |
onMessageActivity |
Ambil alih ini untuk menangani aktivitas message. |
| Pembaruan aktivitas percakapan diterima |
onConversationUpdateActivity |
Pada suatu conversationUpdate aktivitas, memanggil handler jika anggota selain bot bergabung atau meninggalkan percakapan. |
| Anggota non-bot bergabung dalam percakapan |
onMembersAdded |
Ambil alih ini untuk menangani anggota yang bergabung dalam percakapan. |
| Anggota non-bot meninggalkan percakapan |
onMembersRemoved |
Ganti ini untuk menangani anggota yang meninggalkan percakapan. |
| Aktivitas acara diterima |
onEventActivity |
event Pada aktivitas, memanggil handler khusus untuk jenis peristiwa. |
| Aktivitas peristiwa respons terhadap token diterima |
onTokenResponseEvent |
Ambil alih ini untuk menangani peristiwa respons token. |
| Aktivitas acara yang bukan token-respons diterima |
onEvent |
Ganti ini untuk menangani berbagai jenis event lainnya. |
| Aktivitas reaksi pada pesan diterima |
onMessageReactionActivity |
Pada aktivitas messageReaction, panggil handler jika satu atau beberapa reaksi ditambahkan atau dihapus dari pesan. |
| Penambahan reaksi ke sebuah pesan |
onReactionsAdded |
Gantikan ini untuk menangani reaksi yang ditambahkan ke pesan. |
| Reaksi pesan dihapus dari pesan |
onReactionsRemoved |
Gantikan ini untuk memproses reaksi yang dihapus dari pesan. |
| Aktivitas pembaruan penginstalan diterima |
onInstallationUpdate |
Dalam suatu aktivitas, memanggil handler berdasarkan apakah bot diinstal atau di-uninstall. |
| Bot terpasang |
onInstallationUpdateAdd |
Gantilah ini untuk menambahkan logika ketika bot diinstal dalam unit organisasi. |
| Bot dihapus instalasinya |
onInstallationUpdateRemove |
Alihkan ini untuk menambahkan logika saat bot dihapus instalasinya pada unit organisasi. |
| Jenis aktivitas lain yang diterima |
onUnrecognizedActivityType |
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, onMessageActivity akan selalu ditangani, dan merupakan tipe yang paling umum.
Ada juga opsi untuk menerapkan metode publik onTurn. 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 onTurn kustom, itu masih merupakan opsi.
Penting
Jika Anda mengambil alih metode onTurn, Anda harus memanggil super.onTurn untuk mendapatkan implementasi dasar agar dapat memanggil semua handler on<activity> lainnya atau memanggil handler tersebut sendiri. Jika tidak, handler tersebut tidak akan dipanggil dan kode tersebut tidak akan dijalankan.
Logika bot utama didefinisikan dalam kode bot. Untuk menerapkan bot sebagai penanganan aktivitas, dapatkan kelas bot Anda dari ActivityHandler, yang pada gilirannya berasal dari kelas abstrak Bot .
ActivityHandler mendefinisikan berbagai handler untuk berbagai jenis aktivitas, seperti on_message_activity dan on_members_added. 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 |
on_turn |
Memanggil salah satu penangan lainnya, berdasarkan jenis aktivitas yang diterima. |
| Aktivitas pesan telah diterima |
on_message_activity |
Ambil alih ini untuk menangani aktivitas message. |
| Pembaruan aktivitas percakapan diterima |
on_conversation_update_activity |
Pada suatu conversationUpdate aktivitas, memanggil handler jika anggota selain bot bergabung atau meninggalkan percakapan. |
| Anggota non-bot bergabung dalam percakapan |
on_members_added_activity |
Ambil alih ini untuk menangani anggota yang bergabung dalam percakapan. |
| Anggota non-bot meninggalkan percakapan |
on_members_removed_activity |
Ganti ini untuk menangani anggota yang meninggalkan percakapan. |
| Aktivitas acara diterima |
on_event_activity |
event Pada aktivitas, memanggil handler khusus untuk jenis peristiwa. |
| Aktivitas peristiwa respons terhadap token diterima |
on_token_response_event |
Ambil alih ini untuk menangani peristiwa respons token. |
| Aktivitas acara yang bukan token-respons diterima |
on_event_activity |
Ganti ini untuk menangani berbagai jenis event lainnya. |
| Aktivitas reaksi pada pesan diterima |
on_message_reaction_activity |
Pada aktivitas messageReaction, panggil handler jika satu atau beberapa reaksi ditambahkan atau dihapus dari pesan. |
| Penambahan reaksi ke sebuah pesan |
on_reactions_added |
Gantikan ini untuk menangani reaksi yang ditambahkan ke pesan. |
| Reaksi pesan dihapus dari pesan |
on_reactions_removed |
Gantikan ini untuk memproses reaksi yang dihapus dari pesan. |
| Aktivitas pembaruan penginstalan diterima |
on_installation_update |
Dalam suatu aktivitas, memanggil handler berdasarkan apakah bot diinstal atau di-uninstall. |
| Bot terpasang |
on_installation_update_add |
Gantilah ini untuk menambahkan logika ketika bot diinstal dalam unit organisasi. |
| Bot dihapus instalasinya |
on_installation_update_remove |
Alihkan ini untuk menambahkan logika saat bot dihapus instalasinya pada unit organisasi. |
| Jenis aktivitas lain yang diterima |
on_unrecognized_activity_type |
Ambil alih ini untuk menangani jenis aktivitas apa pun yang tidak ditangani oleh cara lain. |
Handler yang berbeda ini memiliki turn_context 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, on_message_activity 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 on_turnpublik . 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 on_turn kustom, itu masih merupakan opsi.
Penting
Jika Anda mengambil alih metode on_turn, Anda harus memanggil super().on_turn untuk mendapatkan implementasi dasar agar dapat memanggil semua handler on_<activity> 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);
}
}
}
}
const { ActivityHandler, MessageFactory } = require('botbuilder');
class EchoBot extends ActivityHandler {
constructor() {
super();
// See https://aka.ms/about-bot-activity-message to learn more about the message and other activity types.
this.onMessage(async (context, next) => {
const replyText = `Echo: ${ context.activity.text }`;
await context.sendActivity(MessageFactory.text(replyText, replyText));
// By calling next() you ensure that the next BotHandler is run.
await next();
});
this.onMembersAdded(async (context, next) => {
const membersAdded = context.activity.membersAdded ?? [];
const welcomeText = 'Hello and welcome!';
for (let cnt = 0; cnt < membersAdded.length; ++cnt) {
if (membersAdded[cnt].id !== context.activity.recipient.id) {
await context.sendActivity(MessageFactory.text(welcomeText, welcomeText));
}
}
// By calling next() you ensure that the next BotHandler is run.
await next();
});
public class EchoBot extends ActivityHandler {
@Override
protected CompletableFuture<Void> onMessageActivity(TurnContext turnContext) {
return turnContext.sendActivity(
MessageFactory.text("Echo: " + turnContext.getActivity().getText())
).thenApply(sendResult -> null);
}
@Override
protected CompletableFuture<Void> onMembersAdded(
List<ChannelAccount> membersAdded,
TurnContext turnContext
) {
String welcomeText = "Hello and welcome!";
return membersAdded.stream()
.filter(
member -> !StringUtils
.equals(member.getId(), turnContext.getActivity().getRecipient().getId())
).map(channel -> turnContext.sendActivity(MessageFactory.text(welcomeText, welcomeText, null)))
.collect(CompletableFutures.toFutureList()).thenApply(resourceResponses -> null);
}
}
class EchoBot(ActivityHandler):
async def on_members_added_activity(
self, members_added: [ChannelAccount], turn_context: TurnContext
):
for member in members_added:
if member.id != turn_context.activity.recipient.id:
await turn_context.send_activity("Hello and welcome!")
async def on_message_activity(self, turn_context: TurnContext):
return await turn_context.send_activity(
MessageFactory.text(f"Echo: {turn_context.activity.text}")
)
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.