Becerilere genel bakış
ŞUNLAR IÇIN GEÇERLIDIR: SDK v4
Beceri botu kullanarak botu genişletebilirsiniz. Bir beceri diğer çeşitli botlar tarafından kullanılabilir, yeniden kullanımı kolaylaştırabilir ve bu şekilde, kullanıcıya yönelik bir bot oluşturabilir ve kendi veya üçüncü taraf becerilerinizi kullanarak bunu genişletebilirsiniz.
- Beceri, başka bir bot için bir dizi görev gerçekleştirebilen bir botdur; bot hem beceri hem de kullanıcıya yönelik bir bot olabilir.
- Beceri tüketicisi , bir veya daha fazla beceri çağırabilen bir botdur. Kullanıcıya yönelik beceri tüketicisi, kök bot olarak da adlandırılır.
- Beceri bildirimi, becerinin gerçekleştirebileceği eylemleri, giriş ve çıkış parametrelerini ve becerinin uç noktalarını açıklayan bir JSON dosyasıdır.
- Becerinin kaynak koduna erişimi olmayan geliştiriciler, beceri tüketicilerini tasarlamak için bildirimdeki bilgileri kullanabilir.
- Beceri bildirimi şeması , beceri bildiriminin şemasını açıklayan bir JSON dosyasıdır.
- Beceri uygulamayı ve örnek beceri bildirimleri için beceri bildirimi yazmayı öğrenin.
Başka bir deyişle, kullanıcı doğrudan kök botla etkileşim kurar ve kök bot konuşma mantığının bir kısmını bir beceriye devreder.
Beceri özelliği şu şekilde tasarlanmıştır:
- Beceriler ve tüketiciler Bot Framework protokolunu kullanarak HTTP üzerinden iletişim kurar.
- Beceri tüketicisi birden çok beceriyi kullanabilir.
- Beceri tüketicisi, beceriyi uygulamak için kullanılan dilden bağımsız olarak bir beceriyi kullanabilir. Örneğin, bir C# botu JavaScript kullanılarak uygulanan bir beceriyi kullanabilir.
- Beceri aynı zamanda bir beceri tüketicisi olabilir ve diğer becerileri çağırabilir.
- Beceriler kullanıcı kimlik doğrulamayı destekler; ancak kullanıcı kimlik doğrulaması beceri için yereldir ve başka bir bota aktarılamaz.
- Beceriler hem Bot Framework bağdaştırıcısı hem de özel bağdaştırıcılarla çalışabilir.
Bu diyagramda olası permütasyonlardan bazıları gösterilmektedir.
Kavramsal mimari
Beceri ve beceri tüketicisi ayrı botlardır ve bunları bağımsız olarak yayımlarsınız.
- Beceri tüketicisi, becerinin ne zaman çağrılması veya iptal edilmesi gibi bir beceriyi yönetmek için ek mantık gerektirir. Normal bot ve bağdaştırıcı nesnelerine ek olarak, tüketici beceriyle ilgili etkinlikleri değiştirmek için kullanılan beceriyle ilgili birkaç nesne içerir. Beceri tüketicisi en az iki HTTP uç noktası uygular:
- Mesajlaşma uç noktası , kullanıcıdan veya kanaldan etkinlik alır. Bu, tüm botların uyguladığı normal mesajlaşma uç noktasıdır.
- Bir beceriden etkinlik almak için beceri ana bilgisayar uç noktası . Bu, becerinin yanıt verdiği hizmet URL'si olan geri çağırma URL'si işlevi görür. (Beceri tüketicisinin beceriden HTTP yöntemi isteğini alan kodu bir beceri işleyicisi ile eşleştirmesi gerekir.)
- Beceri, etkinlik tamamlandığında etkinlik
endOfConversation
göndermek için ek mantık gerektirir, böylece beceri tüketicisi beceriye etkinlikleri iletmeyi ne zaman durduracağını bilir.
Bu diyagramda kullanıcıdan kök bota bir beceriye ve geri dönüşe kadar olan etkinliklerin akışı özetlenir.
- Kök botunun bağdaştırıcısı, kullanıcıdan etkinlikleri alır ve bunları kök botunun etkinlik işleyicisine iletir. (Kullanıcıdan gelen etkinlikler kök botunun mesajlaşma uç noktasında alınır.)
- Kök bot, beceriye etkinlik göndermek için beceri HTTP istemcisi kullanır. İstemci, bir beceri tanımından ve beceri konuşma kimliği fabrikasından tüketici becerisi konuşma bilgilerini alır. Bu, becerinin etkinliği yanıtlamak için kullanacağı hizmet URL'sini içerir.
- Becerinin bağdaştırıcısı, beceri tüketicisinden etkinlikler alır ve bunları becerinin etkinlik işleyicisine iletir. (Tüketiciden gelen etkinlikler beceri botunun mesajlaşma uç noktasında alınır.)
- Beceri yanıtladığında, kök botunun beceri işleyicisi etkinliği alır. Beceri konuşma kimliği fabrikasından kök kullanıcı konuşma bilgilerini alır. Ardından etkinliği kök botunun bağdaştırıcısına iletir. (Becerideki etkinlikler kök botunun beceri ana bilgisayar uç noktasında alınır.)
- Kök botunun bağdaştırıcısı, kullanıcıyla konuşmayı sürdürmek için dahili olarak proaktif bir ileti oluşturur.
- Kök bot'un bağdaştırıcısı, beceriden kullanıcıya tüm iletileri gönderir.
Bu nesneler becerileri yönetmeye ve beceri trafiğini yönlendirmeye yardımcı olur:
- Bot Framework becerisi, bir becerinin yönlendirme bilgilerini açıklar ve beceri tüketicisinin yapılandırma dosyasından okunabilir.
- Beceri HTTP istemcisi bir beceriye etkinlik gönderir.
- Beceri işleyicisi bir beceriden etkinlik alır.
- Beceri konuşma kimliği fabrikası , kullanıcı kökü konuşma başvurusu ile kök beceri konuşma başvurusu arasında çeviriler yapılır.
- Bot Bağlayıcısı hizmeti hem kanal hem de bot-bot kimlik doğrulaması sağlar. Kimlik doğrulama yapılandırma nesnesi kullanarak, hangi uygulamaların veya kullanıcıların erişimi olduğunu sınırlamak için bir beceri veya beceri tüketicisine talep doğrulama ekleyebilirsiniz.
Beceri istemcisi ve beceri işleyici nesneleri, kök botunun kullanıcıyla etkileşimde bulunurken kullandığı konuşma ile kök botunun beceriyle etkileşime geçmek için kullandığı konuşma arasında çeviri yapmak için konuşma kimliği fabrikasını kullanır.
Beceri bildirimleri
Beceri bildirimi, becerinin gerçekleştirebileceği eylemleri, giriş ve çıkış parametrelerini, becerinin uç noktalarını ve beceri için dağıtım modellerini açıklayan bir JSON dosyasıdır.
Beceri bildirimi şeması hakkında bilgi için bkz . Beceri bildirimi yazma.
Bot-bot iletişimi
Tasarladığınız botdan bağımsız olarak bu tasarımın belirli yönlerini anlamak önemlidir.
Beceri eylemleri
Bazı beceriler birden çok görev veya eylem gerçekleştirebilir. Örneğin, yapılacaklar becerisi ayrı konuşmalar olarak erişilebilen etkinliklerin oluşturulmasına, güncelleştirilip görüntülenmesine ve silinmesine izin verebilir.
- Tek bir eylem uygulayan basit bir beceri için becerinin nasıl uygulandığını görün.
- Birden çok eylem uygulamak için iletişim kutularını kullanan bir beceri için beceri içindeki iletişim kutularının nasıl kullanılacağını görün.
Konuşma başvuruları
Kullanıcı kökü konuşması, kök beceri konuşmasından farklıdır.
Konuşma kimliği fabrikası, beceri tüketicisi ile beceri arasındaki trafiği yönetmeye yardımcı olur. Fabrika, kökün kullanıcıyla olan konuşma kimliği ile beceri ile sahip olduğu konuşmanın kimliği arasında çeviride bulunur. Başka bir deyişle, kök ve beceri arasında kullanılacak bir konuşma kimliği oluşturur ve kök beceri konuşma kimliğinden özgün kullanıcı kökü konuşma kimliğini kurtarır.
Sunucular arası koordinasyon
Kök ve beceri botları HTTP üzerinden iletişim kurar. Bu nedenle, bir beceriden etkinlik alan kök bot örneği, başlatma etkinliğini gönderen örnekle aynı olmayabilir; başka bir deyişle, farklı sunucular bu iki isteği işleyebilir.
- Bir etkinliği bir beceriye iletmeden önce her zaman beceri tüketicisinde durumu kaydedin. Bu, bir beceriden trafik alan örneğin, beceri çağrılmadan önce önceki örneğin kaldığı yerden devam etmesini sağlar.
- Beceri işleyicisi bir beceriden etkinlik aldığında, bunu beceri tüketicisi için uygun bir forma çevirir ve tüketicinin bağdaştırıcısına iletir.
Beceri tüketicisi ve beceri durumu
Beceri tüketicisi ve beceri kendi durumunu ayrı ayrı yönetir. Ancak tüketici, beceriyle iletişim kurmak için kullandığı konuşma kimliğini oluşturur. Bunun becerideki konuşma durumu üzerinde etkisi olabilir.
Önemli
Daha önce belirtildiği gibi, beceri tüketicisi bir kullanıcı etkinliğini bir beceriye devrettiğinde, kullanıcının farklı bir örneği beceri yanıtını alabilir. Bir etkinliği bir beceriye iletmeden önce tüketicinin her zaman konuşma durumunu hemen kaydetmesi gerekir.
Bot-bot kimlik doğrulaması
Bot Framework Öykünücüsü'nde bir beceri ve beceri tüketicisini yerel olarak test etmek için bir uygulama kimliğine ve parolaya ihtiyacınız yoktur. Becerinizi Azure'a dağıtmak için yine de bir Azure aboneliği gereklidir.
Hizmet düzeyi kimlik doğrulaması Bot Bağlayıcısı hizmeti tarafından yönetilir. Çerçeve, her botun kimliğini doğrulamak için taşıyıcı belirteçleri ve bot uygulaması kimliklerini kullanır. (Bot Framework, gelen isteklerde kimlik doğrulama üst bilgisini doğrulamak için bir kimlik doğrulama yapılandırma nesnesi kullanır.)
Önemli
Bunun için dağıtılan tüm botların (beceri tüketicisi ve tükettiği tüm beceriler) geçerli uygulama kimlik bilgilerine sahip olması gerekir.
Talep doğrulama
Kimlik doğrulama yapılandırmasına bir talep doğrulayıcı eklemeniz gerekir. Talepler kimlik doğrulama üst bilgisinde değerlendirilir. İsteği reddetmek için doğrulama kodunuzda bir hata veya özel durum oluşturun.
Not
Bot, uygulama kimliği ve parolası varsa talep doğrulama gerçekleştirir; aksi takdirde, talep doğrulama gerçekleştirilmez.
Aksi takdirde kimliği doğrulanmış bir isteği reddetmenin çeşitli nedenleri vardır:
- Beceri tüketicisinin yalnızca konuşma başlatmış olabileceği becerilerden gelen trafiği kabul etmesi gerektiğinde.
- Beceri ücretli bir hizmetin parçası olduğunda ve veritabanında olmayan kullanıcıların erişimi olmamalıdır.
- Beceriye erişimi belirli beceri tüketicileri ile kısıtlamak istediğinizde.
Önemli
Talep doğrulayıcı sağlamazsanız, botunuz ister beceri ister beceri tüketicisi olsun, başka bir bottan etkinlik aldıktan sonra bir hata veya özel durum oluşturur.
Beceri konuşmalarının hatalarını ayıklama
Beceri ve beceri tüketicileri arasındaki trafiğin kimliği doğrulandığından, bu tür botlarda hata ayıklama sırasında ek adımlar vardır.
- Beceri tüketicisi ve doğrudan veya dolaylı olarak tükettiği tüm beceriler çalışıyor olmalıdır.
- Botlar yerel olarak çalışıyorsa ve botlardan herhangi birinin uygulama kimliği ve parolası varsa, tüm botların geçerli kimlikleri ve parolaları olmalıdır.
- Botların tümü dağıtıldıysa devtunnel kullanarak herhangi bir kanaldan bir botta hata ayıklamayı öğrenin.
- Botlardan bazıları yerel olarak çalışıyorsa ve bazıları dağıtıldıysa, beceri veya beceri tüketicisinde hata ayıklamayı öğrenin.
Aksi takdirde, bir beceri tüketicisinde veya beceride, diğer botlarda hata ayıkladığınız gibi hata ayıklayabilirsiniz. Daha fazla bilgi için bkz. Botta hata ayıklama ve Bot Framework Öykünücüsü ile Hata Ayıklama.
Ek bilgi
Kullanıcının bakış açısından, kök botla etkileşimde bulunur. Beceri açısından bakıldığında, beceri tüketicisi kullanıcıyla iletişim kurdığı kanaldır.
- Beceri tüketicileri hakkında daha fazla bilgi için bkz . Beceri tüketicileri.