Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Aşağıdakiler için geçerlidir: SDK v4
Ara yazılım, bağdaştırıcı ile bot mantığınız arasında yer alan ve başlatma sırasında bağdaştırıcınızın ara yazılım koleksiyonuna eklenen bir sınıftır. SDK kendi ara yazılımınızı yazmanıza veya başkaları tarafından oluşturulan ara yazılımı eklemenize olanak tanır. Botunuza gelen veya botunuzdan giden her etkinlik ara yazılımınız üzerinden akıtılır.
Bağdaştırıcı, bot ara yazılım işlem hattı aracılığıyla gelen etkinlikleri işler ve botunuzun mantığına yönlendirir ve ardından yeniden geri gider. Bota gelen ve bottan giden her etkinlik akışında, ara yazılımın her parçası bot mantığı çalıştırılmadan önce ve çalıştırıldıktan sonra etkinliği inceleyebilir ve etkinlik üzerinde işlem yapabilir.
Ara yazılıma geçmeden önce , botları genel olarak anlamak ve etkinlikleri nasıl işlediklerini anlamak önemlidir.
Ara yazılım kullanımları
Şu soru sık sık ortaya çıkar: "Eylemleri ne zaman ara yazılım olarak uygulamalı ve normal bot mantığımı kullanmalıyım?" Ara yazılım, konuşmanın her dönüşü işlenmeden önce ve sonra kullanıcılarınızın konuşma akışıyla etkileşim kurmanız için ek fırsatlar sunar. Ara yazılım ayrıca konuşmayla ilgili bilgileri depolamanıza ve almanıza ve gerektiğinde ek işlem mantığı çağırmanıza olanak tanır. Ara yazılımların yararlı olabileceği bazı yaygın senaryolar aşağıdadır.
Her etkinliği gözden geçirme veya harekete geçme
Botunuzun her etkinlikte veya belirli bir türdeki her etkinlikte bir şeyler yapması gereken birçok durum vardır. Örneğin, botunuzun aldığı her mesaj faaliyetini günlüğe kaydetmek veya bot bu turda başka bir yanıt oluşturmadıysa geri dönüş yanıtı sağlamak isteyebilirsiniz. Ara yazılım, bot mantığının geri kalanı yürütülmeden önce ve sonra işlem yapabilme özelliğiyle bu tür işlemler için harika bir yerdir.
Dönüş bağlamını değiştirme veya geliştirme
Botta etkinlikte sağlanandan daha fazla bilgi varsa bazı konuşmalar çok daha verimli olabilir. Bu durumda ara yazılım, şimdiye kadar sahip olduğu konuşma durumu bilgilerine bakabilir, bir dış veri kaynağını sorgulayabilir ve yürütmeyi bot mantığına geçirmeden önce bunu turn bağlam nesnesine ekler.
SDK, gelen ve giden etkinlikleri kaydedebilen günlüğe kaydetme ara yazılımını tanımlar, ancak kendi ara yazılımınızı da tanımlayabilirsiniz.
Bot ara yazılım işlem hattı
Bağdaştırıcı, her etkinlik için ara yazılımı eklediğiniz sırayla çağırır. Bağdaştırıcı, dönüş ve sonraki temsilci için bağlam nesnesini geçirir ve ara yazılım, denetimi işlem hattındaki bir sonraki ara yazılıma geçirmek için temsilciyi çağırır. Ara yazılım, yöntemi tamamlamadan önce bir sonraki temsilci geri döndükten sonra da bir şeyler yapma fırsatına sahiptir. Bunu, her ara yazılım nesnesinin işlem hattında onu izleyen ara yazılım nesneleriyle ilgili olarak işlem yapmak için ilk ve son şansı olduğu düşünebilirsiniz.
Örneğin:
- İlk ara yazılım nesnesinin dönüş işleyicisi , sonrakini çağırmadan önce kodu yürütür.
- İkinci ara yazılım nesnesinin dönüş işleyicisi , sonrakini çağırmadan önce kodu yürütür.
- Bot'un dönüş işleyicisi yürütülür ve geri döner.
- İkinci ara yazılım nesnesinin dönüş işleyicisi, geri dönmeden önce kalan tüm kodları yürütür.
- İkinci ara yazılım nesnesinin dönüş işleyicisi , sonrakini çağırmadan önce kodu yürütür.
- İlk ara yazılım nesnesinin dönüş işleyicisi, geri dönmeden önce kalan tüm kodları yürütür.
Ara yazılım bir sonraki temsilciyi çağırmadığında, bağdaştırıcı sonraki ara yazılımı veya bot dönüş işlemcilerini çağırmaz ve işlem hattı kısa devre yapar.
Bot ara yazılım işlem hattı tamamlandıktan sonra dönüş sona erer ve dönüş bağlamı kapsamın dışına çıkar.
Ara yazılım veya bot yanıt oluşturabilir ve yanıt olay işleyicilerini kaydedebilir, ancak yanıtların ayrı işlemlerde işlendiğini unutmayın.
Ara yazılım sırası
Ara yazılımların eklenme sırası, ara yazılımın bir etkinliği işleme sırasını belirlediğinden, ara yazılımların eklenmesi gereken diziye karar vermek önemlidir.
Uyarı
Bu, size çoğu bot için uygun olan ortak bir desen sağlamak içindir, ancak her ara yazılım parçasının sizin durumunuz için diğerleriyle nasıl etkileşim kuracağını göz önünde bulundurduğunuzdan emin olun.
Her bot için öncelikle ara yazılım işlem hattınıza eklenmesi gereken en düşük düzey görevleri üstlenen ara yazılım. Örnekler arasında günlük tutma, özel durum işleme ve çeviri yer alır. Gelen mesajın, mesajlar depolanmadan önce mi yoksa depolama işlemi tamamlandıktan sonra mı çevrilmesini istediğinize bağlı olarak, depolama sonrası mesajların çevrilmeyeceği anlamına gelebilecek şekilde ihtiyaçlarınıza göre sıralayın.
Botunuza gönderilen her iletide işlem yapmak için uyguladığınız ara yazılımdan sonra, işlem hattınıza en son olarak bota özgü ara yazılım eklenmelidir. Ara yazılımınız bot bağlamında ayarlanan durum bilgilerini veya diğer bilgileri kullanıyorsa, durumu veya bağlamı değiştiren ara yazılımdan sonra ara yazılım işlem hattına ekleyin.
Kısa devre
Ara yazılım ve yanıt işleyicileri hakkında önemli bir fikir kısa devre yapma mekanizmasıdır. Yürütmenin kendisini takip eden katmanlar boyunca devam edebilmesi için, bir ara yazılım (veya yanıt işleyicisi) next temsilcisini çağırarak yürütmeyi devretmelidir. Bir sonraki temsilci bu ara yazılımda (veya yanıt işleyicisinde) çağrılmazsa, ilişkili işlem hattı kısa devreleri ve sonraki katmanlar yürütülemez. Bu, tüm bot mantığının ve işlem hattındaki ara yazılımların atlandığı anlamına gelir. Ara yazılımınız ile yanıt işleyicinizin bir dönüşü kısa devre yapması arasında ince bir fark vardır.
Ara yazılım bir dönüşü kısa devre yaptığında, bot dönüş işleyiciniz çağrılmaz, ancak işlem hattı sürecinde bu noktadan önce yürütülen tüm ara yazılım kodları tamamlanmaya devam eder.
Olay işleyicileri için sonrakinin çağrılmaması, olayın iptal edileceği anlamına gelir ve bu, ara yazılım atlama mantığının çok farklı olduğu anlamına gelir. Bağdaştırıcı, olayın geri kalanını işlemediği için onu asla göndermez.
Tavsiye
Bir yanıt olayını, örneğin SendActivities
, kısa devre yaparsanız, bunun istediğiniz davranış olduğundan emin olun. Aksi takdirde, hataların düzeltilmesi zor olabilir.
Yanıt olayı işleyicileri
Uygulama ve ara yazılım mantığına ek olarak, bağlam nesnesine yanıt işleyicileri (bazen olay işleyicileri veya etkinlik olay işleyicileri olarak da adlandırılır) eklenebilir. Bu işleyiciler, gerçek yanıt yürütülmeden önce geçerli bağlam nesnesinde ilişkili yanıt gerçekleştiğinde çağrılır. Bu işleyiciler, geçerli yanıtın geri kalanı için bu türdeki her etkinlik için gerçek olaydan önce veya sonra bir şey yapmak istediğinizi bildiğinizde yararlıdır.
Uyarı
Bir etkinlik yanıt yöntemini ilgili yanıt olay işleyicisinin içinden çağırmamaya dikkat edin. Örneğin, gönderme aktivitesi işleyicisinin içinden gönderme aktivitesi yöntemini çağırmaktan kaçının. Bunu yapmak sonsuz bir döngü oluşturabilir.
Her yeni aktivitenin farklı bir iş parçacığında yürütüleceğini unutmayın. Etkinliği işlemek için iş parçacığı oluşturulduğunda, bu etkinliğin işleyicileri listesi bu yeni iş parçacığına kopyalanır. Belirli bir etkinlik olayı için bu noktadan sonra hiçbir işleyici eklenmez. Bağlam nesnesine kaydedilen işleyiciler, bağdaştırıcının ara yazılım işlem hattını yönetme yöntemiyle benzer şekilde ele alınır. Yani, işleyiciler eklendikleri sırayla çağrılır ve denetim, bir sonraki kayıtlı olay işleyicisine geçirilir. İşleyici bir sonraki temsilciyi çağırmazsa, sonraki olay işleyicilerinin hiçbirisi çalıştırılmaz, olay kesilir ve bağdaştırıcı yanıtı kanala göndermez.
Ara yazılımda durumu işleme
Durum kaydetmenin yaygın yöntemlerinden biri, dönüş işleyicisinin sonunda değişiklikleri kaydetme yöntemini çağırmaktır. Burada, aramaya odaklanan bir diyagram yer alır.
Bu yaklaşımdaki sorun, bot'un tur işleyicisi döndükten sonra gerçekleşen bazı özelleştirilmiş ara yazılımlardan yapılan durum güncellemelerinin dayanıklı depolamaya kaydedilmeyeceğidir. Çözüm, özel ara yazılım tamamlandıktan sonra kaydetme yöntemine yapılan çağrıyı aktarmaktır ve bunu, değişiklikleri otomatik kaydet ara yazılımının bir örneğini ara yazılım yığınının başına veya en azından durumu güncelleştirebilecek herhangi bir ara yazılımdan önce ekleyerek gerçekleştirebilirsiniz. Uygulama aşağıda gösterilmiştir.
Bir bot durum kümesi nesnesine güncelleştirilmesi gereken durum yönetimi nesnelerini ekleyin ve otomatik kaydetme değişiklikleri ara yazılımınızı oluştururken bunu kullanın.
Ek kaynaklar
[C# | JS] Bot Framework SDK'sında uygulandığı gibi transkript günlükçü ara yazılımına göz atabilirsiniz.