ŞUNLAR IÇIN UYGULANIR: SDK v4
Etkinlik işleyicisi, botunuz için konuşma mantığını düzenlemenin olay temelli bir yoludur.
Her farklı etkinlik türü veya alt türü farklı bir konuşma olayını temsil eder.
Botun dönüş işleyicisi, aldığı etkinlik türü neyse ona göre tek tek etkinlik işleyicisini çağırır.
Örneğin, bot bir ileti etkinliği alırsa, dönüş işleyicisi gelen etkinliği tespit eder ve ileti etkinliği etkinlik işleyicisine gönderir. Botunuzu oluştururken, mesajları işlemek ve yanıtlamak için bot mantığınız mesaj etkinliği işleyicisinde yer alır. Benzer şekilde, konuşmaya üye eklendiğinde çağrılan eklenen üyeler işleyiciniz içerisine, üyelerin konuşmaya eklenmesini işleme mantığınız gider.
Bot mantığınızı düzenlemenin diğer yolları için, botların nasıl çalıştığına ilişkin bot mantığı bölümüne bakın.
Önemli
Bot Framework SDK'sı ve Bot Framework Öykünücüsü GitHub'da arşivlenmiştir. Proje artık güncelleştirilmedi veya bakım yapılmadı. Bot Framework SDK'sı için destek biletleri artık 31 Aralık 2025 itibarıyla hizmet verilmeyecektir.
Yapay zeka hizmetleri, düzenleme ve bilgi seçiminizle aracılar oluşturmak için Microsoft 365 Aracıları SDK'sını kullanmayı göz önünde bulundurun. Aracılar SDK'sı C#, JavaScript veya Python için dil desteğine sahiptir. SDK hakkında daha fazla bilgiyi aka.ms/agents adresinde bulabilirsiniz.
Bot Framework SDK'sı ile oluşturulmuş mevcut bir botunuz varsa botunuzu Aracılar SDK'sına güncelleştirebilirsiniz.
Bot Framework SDK'sını Aracılar SDK'sına geçirme kılavuzundaki temel değişiklikleri ve güncelleştirmeleri gözden geçirin.
Microsoft Teams içinde çalışmak üzere tasarlanmış bir işbirliği aracısı oluşturuyorsanız Teams SDK'sını kullanmayı göz önünde bulundurun. Teams ortamında çalışan aracılar için Teams'e özgü API'ler, uyarlamalı kart desteği ve yerleşik yapay zeka düzenlemesi sağlar.
Teams SDK'sı (Teams AI Kitaplığı) adresinden daha fazla bilgi edinebilirsiniz.
SaaS tabanlı bir aracı platformu arıyorsanız Microsoft Copilot Studio'yu göz önünde bulundurun.
Bu işleyiciler için mantığınızı uygulamak için botunuzda aşağıdaki örnek etkinlik işleyicisi bölümünde olduğu gibi bu yöntemleri geçersiz kılacaksınız. Bu işleyicilerin her biri için bir temel uygulama yoktur, bu nedenle geçersiz kılmada istediğiniz mantığı ekleyin.
Temel dönüş işleyicisini geçersiz kılmak isteyeceğiniz bazı durumlar vardır, örneğin dönüşün sonunda durum kaydetme. Bunu yaparken, ek kodunuzdan önce await base.OnTurnAsync(turnContext, cancellationToken); temel uygulamasının çalıştırıldığını garanti altına almak için önce OnTurnAsync öğesini çağırdığınızdan emin olun. Bu temel uygulama, diğer şeylerin yanı sıra OnMessageActivityAsync gibi etkinlik işleyicilerinin geri kalanını çağırmaktan da sorumludur.
JavaScript ActivityHandler bir olay yayımlayıcısı ve dinleyici düzeni kullanır.
Örneğin, ileti etkinlikleri için bir olay dinleyicisi kaydetmek üzere onMessage yöntemini kullanın. Birden fazla dinleyici kaydedebilirsiniz. Bot bir ileti etkinliği aldığında, etkinlik işleyicisi gelen etkinliği görür ve onMessage kaydedildikleri sırayla bu etkinliği etkinlik dinleyicilerine gönderir.
Botunuzu oluştururken, iletileri işlemeye ve yanıtlamaya yönelik bot mantığınız onMessage dinleyicileri içinde yer alacaktır. Benzer şekilde, konuşmaya eklenen üyeleri işleme mantığınız, konuşmaya her üye eklendiğinde çağrılan onMembersAdded dinleyicilerinize yerleştirilecektir.
Bu dinleyicileri eklemek için aşağıdaki Bot mantığı bölümünde gösterildiği gibi botunuza kaydedeceksiniz. Her dinleyici için bot mantığınızı ekleyin ve sonunda next() çağırdığınızdan emin olun. çağrı next() yaparak bir sonraki dinleyicinin çalıştırılmasını sağlarsınız.
Dönüş bitmeden önce durumu kaydettiğinizden emin olun. Bunu yapmak için etkinlik işleyicisi run yöntemini geçersiz kılabilir ve ebeveynin run yöntemi tamamlandıktan sonra durumu kaydedebilirsiniz.
Temel dönüş işleyicisini geçersiz kılmak isteyeceğiniz yaygın bir durum yoktur, bu nedenle bunu yapmaya çalışırsanız dikkatli olun.
onDialog adlı özel bir işleyici var. Bu onDialog işleyici, diğer işleyicilerin çalıştırılmasından sonra ve belirli bir etkinlik türüne bağlı olmaksızın sonunda çalışır. Yukarıdaki tüm işleyicilerde olduğu gibi, işlemin geri kalanının tamamlanmasını sağlamak için çağrısı next() yapmaya özen gösterin.
Bu işleyiciler için mantığınızı uygulamak için botunuzda aşağıdaki örnek etkinlik işleyicisi bölümünde olduğu gibi bu yöntemleri geçersiz kılacaksınız. Bu işleyicilerin her biri için temel bir uygulama yoktur, bu nedenle geçersiz kılma işlevinize istediğiniz mantığı ekleyebilirsiniz.
Temel dönüş işleyicisini geçersiz kılmak isteyeceğiniz bazı durumlar vardır, örneğin dönüşün sonunda durum kaydetme. Bunu yaparken, super.onTurn(turnContext); öğesini ilk olarak çağırdığınızdan ve onTurn temel uygulamasının ek kodunuzdan önce çalıştırıldığından emin olun. Bu temel uygulama, diğer şeylerin yanı sıra onMessageActivity gibi etkinlik işleyicilerinin geri kalanını çağırmaktan da sorumludur.
Botunuzu oluştururken iletileri işlemeye ve yanıtlamaya yönelik bot mantığınız bu on_message_activity işleyiciye gider. Benzer şekilde, konuşmaya eklenen üyeleri işleme mantığınız, bir üye konuşmaya eklendiğinde çağrılan on_members_added işleyicinizde yer alacak.
Örneğin, bot bir ileti etkinliği alırsa, dönüş işleyicisi gelen etkinliği görür ve etkinlik işleyicisine on_message_activity gönderir.
Bu işleyiciler için mantığınızı uygulamak için botunuzda aşağıdaki örnek etkinlik işleyicisi bölümünde olduğu gibi bu yöntemleri geçersiz kılacaksınız. Bu işleyicilerin her biri için bir temel uygulama yoktur, bu nedenle geçersiz kılmada istediğiniz mantığı ekleyin.
Temel dönüş işleyicisini geçersiz kılmak isteyeceğiniz bazı durumlar vardır, örneğin dönüşün sonunda durum kaydetme. Bunu yaparken, ek kodunuzdan önce await super().on_turn(turnContext); temel uygulamasının çalıştırıldığını garanti altına almak için önce on_turn öğesini çağırdığınızdan emin olun. Bu temel uygulama, diğer şeylerin yanı sıra on_message_activity gibi etkinlik işleyicilerinin geri kalanını çağırmaktan da sorumludur.
Etkinlik yönetimi
Bot mantığı, bir veya daha fazla kanaldan gelen etkinlikleri işler ve yanıt olarak giden etkinlikler oluşturur.
Ana bot mantığı bot kodunda tanımlanır. Bir botu etkinlik işleyicisi olarak uygulamak için bot sınıfınızı, ActivityHandler arabirimini uygulayan IBot öğesinden türetin.
ActivityHandler, ve OnMessageActivityAsyncgibi OnMembersAddedAsyncfarklı etkinlik türleri için çeşitli işleyicileri tanımlar.
ActivityHandler'den türediğimiz için bu yöntemler korunur, ancak geçersiz kılınabilir.
içinde ActivityHandler tanımlanan işleyiciler şunlardır:
| Etkinlik |
İşleyici |
Açıklama |
| Herhangi bir alınan etkinlik türü |
OnTurnAsync |
Alınan etkinliğin türüne göre diğer handler'lardan birini çağırır. |
| İleti etkinliği alındı |
OnMessageActivityAsync |
Bir message etkinliği işlemek için bunu geçersiz kılın. |
| Alınan konuşma güncelleştirme etkinliği |
OnConversationUpdateActivityAsync |
Bir conversationUpdate etkinliği sırasında, eğer bot dışındaki üyeler konuşmaya katıldıysa veya konuşmayı bıraktıysa, bir işleyiciyi çağırır. |
| Bot olmayan üyeler konuşmaya katıldı |
OnMembersAddedAsync |
Konuşmaya katılan üyeleri işlemek için bunu geçersiz kılın. |
| Bot olmayan üyeler konuşmadan ayrıldı |
OnMembersRemovedAsync |
Konuşmadan ayrılan üyeleri yönetmek için bunu geçersiz kılın. |
| Olay etkinliği kaydedildi |
OnEventActivityAsync |
Bir event etkinlikte, olay türüne özgü bir işleyici çağırır. |
| Alınan belirteç yanıt etkinliği |
OnTokenResponseEventAsync |
Belirteç yanıt olaylarını işlemek için bunu geçersiz kılın. |
| Belirteç dışı yanıt olay etkinliği alındı |
OnEventAsync |
Diğer olay türlerini işlemek için bunu geçersiz kılın. |
| Alınan ileti tepki etkinliği |
OnMessageReactionActivityAsync |
Bir messageReaction etkinlikte, bir iletiye bir veya daha fazla tepki eklendiğinde veya bir iletiden kaldırıldığında işleyiciyi çağırır. |
| Mesaja eklenen mesaj tepkileri |
OnReactionsAddedAsync |
İletiye eklenen tepkileri işlemek için bunu geçersiz kılın. |
| Mesajdan kaldırılan mesaj tepkileri |
OnReactionsRemovedAsync |
Mesajdan kaldırılan tepkileri işlemek için bunu geçersiz kılın. |
| Yükleme güncellemesi etkinliği alındı |
OnInstallationUpdateActivityAsync |
Bir installationUpdate etkinlikte, bot yüklenip yüklenmediğine veya kaldırıldığına bağlı olarak bir işleyici çağırır. |
| Bot yüklendi |
OnInstallationUpdateAddAsync |
Botun bir kuruluş birimine ne zaman yüklendiğine ilişkin mantık eklemek için bunu geçersiz kılın. |
| Bot kaldırıldı |
OnInstallationUpdateRemoveAsync |
Botun bir kuruluş birimi içinde kaldırıldığında mantık eklemek için bunu değiştirin. |
| Alınan diğer etkinlik türü |
OnUnrecognizedActivityTypeAsync |
Bu işlemi şu ana kadar ele alınmamış herhangi bir etkinlik türünü işlemek için geçersiz kılın. |
Bu farklı işleyiciler, gelen HTTP isteğine karşılık gelen etkinlik hakkında bilgi sağlayan bir turnContext öğesine sahiptir. Etkinlikler çeşitli türlerde olabilir, bu nedenle her işleyici kendi dönüş bağlam parametresinde kesin olarak türlenmiş bir etkinlik sağlar; çoğu durumda, OnMessageActivityAsync her zaman işlenir ve genellikle en yaygın olanıdır.
Bu çerçevenin önceki 4.x sürümlerinde olduğu gibi genel yöntemini OnTurnAsyncuygulama seçeneği de vardır. Şu anda, bu yöntemin temel uygulaması hata denetimini işler ve sonra gelen etkinliğin türüne bağlı olarak belirli işleyicilerin her birini (bu örnekte tanımladığımız ikisi gibi) çağırır. Çoğu durumda, bu yöntemi kendi haline bırakabilir ve tek tek işleyicileri kullanabilirsiniz, ancak durumunuz için özel bir uygulama OnTurnAsync gerekiyorsa, yine de bir seçenektir.
Önemli
Eğer OnTurnAsync yöntemini geçersiz kılarsanız, tüm diğer base.OnTurnAsync işleyicilerini çağırmak için temel uygulamayı çağırmak veya bu işleyicileri kendiniz çağırmak amacıyla On<activity>Async kullanmanız gerekir. Aksi takdirde, bu işleyiciler çağrılmaz ve bu kod çalıştırılamaz.
Ana bot mantığı bot kodunda tanımlanır. Bir botu etkinlik işleyicisi olarak kullanmak için genişletin ActivityHandler.
ActivityHandlerfarklı etkinlik türleri için çeşitli olayları tanımlar ve ve onMessagegibi onConversationUpdate olay dinleyicilerini kaydederek botunuzun davranışını değiştirebilirsiniz.
Her olay türü için dinleyicileri kaydetmek için şu yöntemleri kullanın:
| Etkinlik |
Kayıt yöntemi |
Açıklama |
| Herhangi bir alınan etkinlik türü |
onTurn |
Herhangi bir etkinlik alındığında dinleyiciyi kaydeder. |
| İleti etkinliği alındı |
onMessage |
Bir message etkinliği alındığında bir dinleyici kaydeder. |
| Alınan konuşma güncelleştirme etkinliği |
onConversationUpdate |
Herhangi conversationUpdate bir etkinlik alındığında dinleyiciyi kaydeder. |
| Üyeler konuşmaya katıldı |
onMembersAdded |
Üyelerin, bot da dahil olmak üzere, konuşmaya katıldıklarında bir dinleyici kaydeder. |
| Üyeler konuşmadan ayrıldı |
onMembersRemoved |
Bot da dahil olmak üzere üyelerin konuşmadan ne zaman ayrıldığına yönelik bir dinleyici kaydeder. |
| Alınan ileti tepki etkinliği |
onMessageReaction |
Herhangi messageReaction bir etkinlik alındığında dinleyiciyi kaydeder. |
| Mesaja eklenen mesaj tepkileri |
onReactionsAdded |
İletiye tepkiler eklendiğinde dinleyiciyi kaydeder. |
| Mesajdan kaldırılan mesaj tepkileri |
onReactionsRemoved |
Mesajdan tepkiler silindiğinde bir dinleyiciyi kaydeder. |
| Olay etkinliği kaydedildi |
onEvent |
Herhangi event bir etkinlik alındığında dinleyiciyi kaydeder. |
| Alınan belirteç yanıt etkinliği |
onTokenResponseEvent |
Bir tokens/response olayı alındığında bir dinleyici kaydeder. |
| Yükleme güncellemesi etkinliği alındı |
onInstallationUpdate |
Herhangi installationUpdate bir etkinlik alındığında dinleyiciyi kaydeder. |
| Bot yüklendi |
onInstallationUpdateAdd |
Botun bir organizasyon birimine yüklendiği zaman bir dinleyici kaydeder. |
| Bot kaldırıldı |
onInstallationUpdateRemove |
Bir kuruluş birimi içinde bot kaldırıldığında dinleyici kaydeder. |
| Alınan diğer etkinlik türü |
onUnrecognizedActivityType |
Belirli bir etkinlik türü için işleyici tanımlanmadığında dinleyiciyi kaydeder. |
| Etkinlik işleyicilerinin çalışmaları tamamlandı. |
onDialog |
Uygun işleyiciler tamamlandıktan sonra çağrılır. |
Her işleyiciden devam işlevini çağırarak işlemenin devam etmesini sağlayın. Çağrılmazsa next etkinliğin işlenmesi sona erer.
Ana bot mantığı bot kodunda tanımlanır. Bir botu etkinlik işleyicisi olarak uygulamak için bot sınıfınızı, ActivityHandler arabirimini uygulayan Bot öğesinden türetin.
ActivityHandler, ve onMessageActivitygibi onMembersAddedfarklı etkinlik türleri için çeşitli işleyicileri tanımlar.
ActivityHandler'den türediğimiz için bu yöntemler korunur, ancak geçersiz kılınabilir.
içinde ActivityHandler tanımlanan işleyiciler şunlardır:
| Etkinlik |
İşleyici |
Açıklama |
| Herhangi bir alınan etkinlik türü |
onTurn |
Alınan etkinliğin türüne göre diğer handler'lardan birini çağırır. |
| İleti etkinliği alındı |
onMessageActivity |
Bir message etkinliği işlemek için bunu geçersiz kılın. |
| Alınan konuşma güncelleştirme etkinliği |
onConversationUpdateActivity |
Bir conversationUpdate etkinliği sırasında, eğer bot dışındaki üyeler konuşmaya katıldıysa veya konuşmayı bıraktıysa, bir işleyiciyi çağırır. |
| Bot olmayan üyeler konuşmaya katıldı |
onMembersAdded |
Konuşmaya katılan üyeleri işlemek için bunu geçersiz kılın. |
| Bot olmayan üyeler konuşmadan ayrıldı |
onMembersRemoved |
Konuşmadan ayrılan üyeleri yönetmek için bunu geçersiz kılın. |
| Olay etkinliği kaydedildi |
onEventActivity |
Bir event etkinlikte, olay türüne özgü bir işleyici çağırır. |
| Alınan belirteç yanıt etkinliği |
onTokenResponseEvent |
Belirteç yanıt olaylarını işlemek için bunu geçersiz kılın. |
| Belirteç dışı yanıt olay etkinliği alındı |
onEvent |
Diğer olay türlerini işlemek için bunu geçersiz kılın. |
| Alınan ileti tepki etkinliği |
onMessageReactionActivity |
Bir messageReaction etkinlikte, bir iletiye bir veya daha fazla tepki eklendiğinde veya bir iletiden kaldırıldığında işleyiciyi çağırır. |
| Mesaja eklenen mesaj tepkileri |
onReactionsAdded |
İletiye eklenen tepkileri işlemek için bunu geçersiz kılın. |
| Mesajdan kaldırılan mesaj tepkileri |
onReactionsRemoved |
Mesajdan kaldırılan tepkileri işlemek için bunu geçersiz kılın. |
| Yükleme güncellemesi etkinliği alındı |
onInstallationUpdate |
Bir installationUpdate etkinlikte, bot yüklenip yüklenmediğine veya kaldırıldığına bağlı olarak bir işleyici çağırır. |
| Bot yüklendi |
onInstallationUpdateAdd |
Botun bir kuruluş birimine ne zaman yüklendiğine ilişkin mantık eklemek için bunu geçersiz kılın. |
| Bot kaldırıldı |
onInstallationUpdateRemove |
Botun bir kuruluş birimi içinde kaldırıldığında mantık eklemek için bunu değiştirin. |
| Alınan diğer etkinlik türü |
onUnrecognizedActivityType |
Bu işlemi şu ana kadar ele alınmamış herhangi bir etkinlik türünü işlemek için geçersiz kılın. |
Bu farklı işleyiciler, gelen HTTP isteğine karşılık gelen etkinlik hakkında bilgi sağlayan bir turnContext öğesine sahiptir. Etkinlikler çeşitli türlerde olabilir, bu nedenle her işleyici kendi dönüş bağlam parametresinde kesin olarak türlenmiş bir etkinlik sağlar; çoğu durumda, onMessageActivity her zaman işlenir ve genellikle en yaygın olanıdır.
Public yöntemi onTurn uygulama seçeneği de vardır. Şu anda, bu yöntemin temel uygulaması hata denetimini işler ve sonra gelen etkinliğin türüne bağlı olarak belirli işleyicilerin her birini (bu örnekte tanımladığımız ikisi gibi) çağırır. Çoğu durumda, bu yöntemi kendi haline bırakabilir ve tek tek işleyicileri kullanabilirsiniz, ancak durumunuz için özel bir uygulama onTurn gerekiyorsa, yine de bir seçenektir.
Önemli
Eğer onTurn yöntemini geçersiz kılarsanız, tüm diğer super.onTurn işleyicilerini çağırmak için temel uygulamayı çağırmak veya bu işleyicileri kendiniz çağırmak amacıyla on<activity> kullanmanız gerekir. Aksi takdirde, bu işleyiciler çağrılmaz ve bu kod çalıştırılamaz.
Ana bot mantığı bot kodunda tanımlanır. Botunuzu bir etkinlik işleyicisi olarak uygulamak için, bot sınıfınızı ActivityHandler öğesinden türetin, bu da soyut Bot sınıfından türetilmiştir.
ActivityHandlerve on_message_activitygibi on_members_added farklı etkinlik türleri için çeşitli işleyicileri tanımlar.
ActivityHandler'den türediğimiz için bu yöntemler korunur, ancak geçersiz kılınabilir.
içinde ActivityHandler tanımlanan işleyiciler şunlardır:
| Etkinlik |
İşleyici |
Açıklama |
| Herhangi bir alınan etkinlik türü |
on_turn |
Alınan etkinliğin türüne göre diğer handler'lardan birini çağırır. |
| İleti etkinliği alındı |
on_message_activity |
Bir message etkinliği işlemek için bunu geçersiz kılın. |
| Alınan konuşma güncelleştirme etkinliği |
on_conversation_update_activity |
Bir conversationUpdate etkinliği sırasında, eğer bot dışındaki üyeler konuşmaya katıldıysa veya konuşmayı bıraktıysa, bir işleyiciyi çağırır. |
| Bot olmayan üyeler konuşmaya katıldı |
on_members_added_activity |
Konuşmaya katılan üyeleri işlemek için bunu geçersiz kılın. |
| Bot olmayan üyeler konuşmadan ayrıldı |
on_members_removed_activity |
Konuşmadan ayrılan üyeleri yönetmek için bunu geçersiz kılın. |
| Olay etkinliği kaydedildi |
on_event_activity |
Bir event etkinlikte, olay türüne özgü bir işleyici çağırır. |
| Alınan belirteç yanıt etkinliği |
on_token_response_event |
Belirteç yanıt olaylarını işlemek için bunu geçersiz kılın. |
| Belirteç dışı yanıt olay etkinliği alındı |
on_event_activity |
Diğer olay türlerini işlemek için bunu geçersiz kılın. |
| Alınan ileti tepki etkinliği |
on_message_reaction_activity |
Bir messageReaction etkinlikte, bir iletiye bir veya daha fazla tepki eklendiğinde veya bir iletiden kaldırıldığında işleyiciyi çağırır. |
| Mesaja eklenen mesaj tepkileri |
on_reactions_added |
İletiye eklenen tepkileri işlemek için bunu geçersiz kılın. |
| Mesajdan kaldırılan mesaj tepkileri |
on_reactions_removed |
Mesajdan kaldırılan tepkileri işlemek için bunu geçersiz kılın. |
| Yükleme güncellemesi etkinliği alındı |
on_installation_update |
Bir installationUpdate etkinlikte, bot yüklenip yüklenmediğine veya kaldırıldığına bağlı olarak bir işleyici çağırır. |
| Bot yüklendi |
on_installation_update_add |
Botun bir kuruluş birimine ne zaman yüklendiğine ilişkin mantık eklemek için bunu geçersiz kılın. |
| Bot kaldırıldı |
on_installation_update_remove |
Botun bir kuruluş birimi içinde kaldırıldığında mantık eklemek için bunu değiştirin. |
| Alınan diğer etkinlik türü |
on_unrecognized_activity_type |
Bu işlemi şu ana kadar ele alınmamış herhangi bir etkinlik türünü işlemek için geçersiz kılın. |
Bu farklı işleyiciler, gelen HTTP isteğine karşılık gelen etkinlik hakkında bilgi sağlayan bir turn_context öğesine sahiptir. Etkinlikler çeşitli türlerde olabilir, bu nedenle her işleyici kendi dönüş bağlam parametresinde kesin olarak türlenmiş bir etkinlik sağlar; çoğu durumda, on_message_activity her zaman işlenir ve genellikle en yaygın olanıdır.
Bu çerçevenin önceki 4.x sürümlerinde olduğu gibi genel yöntemini on_turnuygulama seçeneği de vardır. Şu anda, bu yöntemin temel uygulaması hata denetimini işler ve sonra gelen etkinliğin türüne bağlı olarak belirli işleyicilerin her birini (bu örnekte tanımladığımız ikisi gibi) çağırır. Çoğu durumda, bu yöntemi kendi haline bırakabilir ve tek tek işleyicileri kullanabilirsiniz, ancak durumunuz için özel bir uygulama on_turn gerekiyorsa, yine de bir seçenektir.
Önemli
Eğer on_turn yöntemini geçersiz kılarsanız, tüm diğer super().on_turn işleyicilerini çağırmak için temel uygulamayı çağırmak veya bu işleyicileri kendiniz çağırmak amacıyla on_<activity> kullanmanız gerekir. Aksi takdirde, bu işleyiciler çağrılmaz ve bu kod çalıştırılamaz.
Örnek etkinlik işleyicisi
Örneğin, kullanıcıları sohbete karşılamak için eklenen üyeleri işleyebilir, ve bota gönderdikleri iletileri yankılamak için iletiler üzerinde işlem yapabilirsiniz.
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}")
)
Sonraki adımlar
- Microsoft Teams kanalı, botunuzun Teams ile düzgün çalışması için desteklemesi gereken Teams'e özgü bazı etkinlikleri tanıtır. Microsoft Teams için bot geliştirmenin temel kavramlarını anlamak için bkz . Microsoft Teams botları nasıl çalışır?
- Etkinlik işleyicisi, konuşma durumunu sırayla izlemesi gerekmeyen bir bot tasarlamanın iyi bir yoludur. Kullanıcıyla uzun süreli bir konuşmayı yönetmenin yollarını sağlayan dialogs kitaplığı.