Etkinlik işleyicisi kullanan olay temelli konuşmalar

ŞUNLAR IÇIN GEÇERLIDIR: 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 , kapsadığı etkinlik türü için tek tek etkinlik işleyicisini çağırır.

Örneğin, bot bir ileti etkinliği alırsa, dönüş işleyicisi gelen etkinliği görür ve ileti etkinliği etkinlik işleyicisine gönderir. Botunuzu oluştururken, iletileri işlemeye ve yanıtlamaya yönelik bot mantığınız, ileti etkinliği işleyicisinde buna gider. Benzer şekilde, konuşmaya eklenen üyeleri işleme mantığınız, konuşmaya her üye eklendiğinde çağrılan eklenen üyeler işleyicinize 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.

Not

Bot Framework JavaScript, C# ve Python SDK'ları desteklenmeye devam edecektir, ancak Java SDK'sı son uzun vadeli destek Kasım 2023'te sona erecek şekilde kullanımdan kaldırılacaktır.

Java SDK ile oluşturulan mevcut botlar çalışmaya devam edecektir.

Yeni bot derlemesi için Microsoft Copilot Studio'yu kullanmayı göz önünde bulundurun ve doğru copilot çözümünü seçme hakkında bilgi edinin.

Daha fazla bilgi için bkz . Bot oluşturmanın geleceği.

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 uygulama yoktur, bu nedenle yalnızca geçersiz kılmanıza istediğiniz mantığı ekleyin.

Temel dönüş işleyicisini geçersiz kılmak isteyeceğiniz bazı durumlar vardır, örneğin dönüş sonunda kaydetme durumu . Bunu yaparken, temel uygulamasının ek kodunuzdan önce çalıştırıldığından emin olmak için ilk olarak öğesini çağırdığınızdan await base.OnTurnAsync(turnContext, cancellationToken); OnTurnAsync emin olun. Bu temel uygulama, diğer şeylerin yanı sıra gibi OnMessageActivityAsyncetkinlik işleyicilerinin geri kalanını çağırmaktan sorumludur.

Etkinlik işleme

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, arabirimini uygulayan bot sınıfınızı öğesinden ActivityHandlertüretin IBot . ActivityHandler, ve OnMembersAddedAsyncgibi OnMessageActivityAsyncfarklı etkinlik türleri için çeşitli işleyicileri tanımlar. Bu yöntemler korunur, ancak 'den ActivityHandlertürediğimiz için geçersiz kılınabilir.

içinde ActivityHandler tanımlanan işleyiciler şunlardır:

Etkinlik İşleyici Açıklama
Alınan herhangi bir etkinlik türü OnTurnAsync Alınan etkinliğin türüne göre diğer işleyicilerden 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 etkinlikte, bot dışındaki üyeler konuşmaya katıldıysa veya konuşmayı bıraktıysa 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 işlemek için bunu geçersiz kılın.
Olay etkinliği alındı OnEventActivityAsync Bir event etkinlikte, olay türüne özgü bir işleyici çağırır.
Alınan belirteç yanıtı olay 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.
İletiye eklenen ileti tepkileri OnReactionsAddedAsync İletiye eklenen tepkileri işlemek için bunu geçersiz kılın.
İletiden kaldırılan ileti tepkileri OnReactionsRemovedAsync İletiden kaldırılan tepkileri işlemek için bunu geçersiz kılın.
Yükleme güncelleştirme 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ığı eklemek için bunu geçersiz kılın.
Alınan diğer etkinlik türü OnUnrecognizedActivityTypeAsync Aksi takdirde işlenmeyen herhangi bir etkinlik türünü işlemek için bunu 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 yalnız bırakabilir ve tek tek işleyicileri kullanabilirsiniz, ancak durumunuz için özel bir uygulama OnTurnAsyncgerekiyorsa, yine de bir seçenektir.

Önemli

yöntemini geçersiz kılarsanızOnTurnAsync, diğer On<activity>Async tüm işleyicileri çağırmak veya bu işleyicileri kendiniz çağırmak için temel uygulamayı almak için çağrısı yapmanız gerekirbase.OnTurnAsync. Aksi takdirde, bu işleyiciler çağrılmaz ve bu kod çalıştırılamaz.

Örnek etkinlik işleyicisi

Örneğin, kullanıcıları konuşmaya davet etmek için eklenen üyeleri işleyebilir ve bota gönderdikleri iletileri yankılamak için ileti ü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);
            }
        }
    }
}

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. İletişim kutuları kitaplığı , kullanıcıyla uzun süre çalışan bir konuşmayı yönetmenin yollarını sağlar.