Microsoft Bot Framework'ün Temelleri

ŞUNLAR IÇIN GEÇERLIDIR: SDK v4

Bot, kullanıcıların metin, grafik (kartlar veya resimler gibi) veya konuşma kullanarak konuşma biçiminde etkileşimde bulunan bir uygulamadır. Azure AI Bot Hizmeti bir bulut platformudur. Botları barındırarak Microsoft Teams, Facebook veya Slack gibi kanallarda kullanılabilir hale getirir.

Azure AI Bot Hizmeti bir bileşeni olan Bot Framework Hizmeti, kullanıcının bota bağlı uygulamasıyla bot arasında bilgi gönderir. Her kanal, gönderdikleri etkinliklere ek bilgiler içerebilir. Bot oluşturmadan önce, botların kullanıcılarıyla iletişim kurmak için etkinlik nesnelerini nasıl kullandığını anlamak önemlidir.

Bu diyagramda, kullanıcı bir yankı botuyla iletişim kurarken değiş tokuş edilebilen konuşma güncelleştirmesi ve ileti olmak üzere iki etkinlik türü gösterilmektedir.

etkinlik diyagramı

Bot Framework Hizmeti, bir taraf konuşmaya katıldığında bir konuşma güncelleştirmesi gönderir. Örneğin, Bot Framework Öykünücüsü ile bir konuşma başlatırken iki konuşma güncelleştirme etkinliği görebilirsiniz (biri konuşmaya katılan kullanıcı için, diğeri de bota katılmak için). Bu konuşma güncelleştirme etkinliklerini ayırt etmek için etkinliğin eklenen üyeler özelliğine kimlerin dahil olduğunu denetleyin.

İleti etkinliği, taraflar arasında konuşma bilgilerini taşır. Yankı botu örneğinde, ileti etkinlikleri basit metin taşır ve kanal bu metni işler. Alternatif olarak, ileti etkinliği konuşulacak metni, görüntülenecek önerilen eylemleri veya kartları taşıyabilir.

İpucu

Bot Framework protokollerini uygulamak her kanala ve her kanalın bunu nasıl yaptığı biraz farklı olabilir. Örneğin, bazı kanallar önce konuşma güncelleştirme etkinliklerini, bazıları ise ilk ileti etkinliğini gönderdikten sonra konuşma güncelleştirme etkinlikleri gönderir. Bir kanal hem botu hem de kullanıcıyı bir konuşma güncelleştirme etkinliğine dahil ederken, diğeri iki konuşma güncelleştirme etkinliği gönderebilir.

Bu örnekte bot, aldığı gelen ileti etkinliğine yanıt olarak bir ileti etkinliği oluşturup gönderdi. Ancak bot, alınan ileti etkinliğine başka yollarla yanıt verebilir ve botların karşılama iletisiyle ileti etkinliği göndererek konuşma güncelleştirme etkinliğine yanıt vermesi yaygın bir durum olur. Daha fazla bilgi için bkz. Bir kullanıcıyı karşılama.

Bot Framework SDK'sı

Bot Framework SDK'sı, Azure AI Bot Hizmeti barındırılabilir botlar oluşturmanıza olanak tanır. Hizmet, botunuzun ve kanallarınızın veya kullanıcılarınızın nasıl etkileşim kurabileceğine yönelik bir REST API ve etkinlik protokolü tanımlar. SDK, bu REST API'yi temel alır ve konuşma mantığına odaklanabilmeniz için hizmetin özetini sağlar. SDK'yı kullanmak için REST hizmetini anlamanız gerekmese de bazı özelliklerini anlamak yararlı olabilir.

Botlar, konuşma arabirimine sahip uygulamalardır. Bunlar, akşam yemeği rezervasyonu alma veya profil bilgilerini toplama gibi basit, yinelenen görevleri artık doğrudan insan müdahalesi gerektirmeyen otomatik sistemlere kaydırmak için kullanılabilir. Kullanıcılar metin, etkileşimli kartlar ve konuşma aracılığıyla botlarla iletişim kurabilir. Bot etkileşimi kısa bir soru veya yanıttan ibaret olabileceği gibi hizmetlere akıllı bir şekilde erişim sağlayan karmaşık bir konuşma da söz konusu olabilir.

Not

SDK ve REST API tarafından sağlanan özelliklere yönelik destek kanala göre değişir. Botunuzu Bot Framework Emulator'ı kullanarak test edebilirsiniz, ancak botunuzun tüm özelliklerini botunuzu kullanıma sunmayı planladığınız her kanalda da test etmelisiniz.

Etkileşimler, sırayla işlenen etkinliklerin değişimini içerir.

Aktiviteler

Kullanıcı (veya kanal) ile bot arasındaki her etkileşim bir etkinlik olarak temsil edilir. Bot Framework Etkinlik şeması , kullanıcı veya kanal ile bot arasında değiş tokuş edilebilecek etkinlikleri tanımlar. Etkinlikler insan metnini veya konuşmasını, uygulamadan uygulamaya bildirimleri, diğer iletilere tepkileri vb. temsil edebilir.

Döner

Bir konuşmada, insanlar genellikle sırayla konuşarak birer birer konuşurlar. Bot ile genellikle kullanıcı girişine tepki gösterir. Bot Framework SDK'sı içinde, bir dönüş kullanıcının bota gelen etkinliğinden ve botun kullanıcıya anında yanıt olarak gönderdiği tüm etkinliklerden oluşur. Sırayı, belirli bir etkinliği alan botla ilişkili işleme olarak düşünebilirsiniz.

Örneğin, bir kullanıcı botdan belirli bir görevi gerçekleştirmesini isteyebilir. Bot, görev hakkında daha fazla bilgi almak için bir soruyla yanıt verebilir ve bu noktada bu dönüş sona erer. Bir sonraki dönüşte, bot kullanıcıdan botun sorusunun yanıtını içerebilecek yeni bir ileti alır ya da konu değişikliğini veya görevi gerçekleştirmek için ilk isteği yoksayma isteğini temsil edebilir.

Bot uygulama yapısı

SDK, bot uygulamasının konuşma mantığını işleyen bir bot sınıfı tanımlar. Bot sınıfı:

  • Kullanıcının girişini tanır ve yorumlar.
  • Girişle ilgili nedenler ve ilgili görevleri gerçekleştirir.
  • Botunun ne yaptığı veya yaptığı hakkında yanıtlar oluşturur.

SDK, kanallarla bağlantıyı işleyen bir bağdaştırıcı sınıfı da tanımlar. Bağdaştırıcı:

  • kullanıcının kanalına istek oluşturmak için ve yöntemlerinden gelen istekleri işlemeye yönelik bir yöntem sağlar.
  • Botunuzun dönüş işleyicisi dışında dönüş işlemeyi içeren bir ara yazılım işlem hattı içerir.
  • Bot'un dönüş işleyicisini çağırır ve dönüş işleyicisinde başka şekilde işlenmeyen hataları yakalar.

Buna ek olarak, botların genellikle her dönüşte durumu alması ve depolaması gerekir. Durum depolama, bot durumu ve özellik erişimcisi sınıfları aracılığıyla işlenir. SDK yerleşik depolama sağlamaz, ancak depolama ve bir depolama katmanının birkaç uygulaması için soyutlamalar sağlar. Yönetim durumu konusu, bu durum ve depolama özelliklerini açıklar.

Botun bağlantı ve mantık öğeleri ve durum soyutlaması vardır

SDK, web istekleri göndermek ve almak için belirli bir uygulama katmanı kullanmanızı gerektirmez. Bot Framework'te ASP.NET (C#), restify (JavaScript) ve aiohttp (Python) için şablonlar ve örnekler bulunur. Ancak, uygulamanız için farklı bir uygulama katmanı kullanmayı seçebilirsiniz.

SDK kullanarak bir bot oluşturduğunuzda, HTTP trafiğini almak ve bağdaştırıcıya iletmek için kodu sağlarsınız. Bot Framework, kendi botlarınızı geliştirmek için kullanabileceğiniz birkaç şablon ve örnek sağlar.

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 Power Virtual Agents'ı kullanmayı göz önünde bulundurun ve doğru sohbet botu çözümünü seçme hakkında bilgi edinin.

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

Bot mantığı

Bot nesnesi, bir dönüş için konuşma mantığını veya mantığını içerir ve bot bağdaştırıcısından gelen etkinlikleri kabul eden yöntem olan bir dönüş işleyicisini kullanıma sunar.

SDK, bot mantığınızı yönetmek için birkaç farklı paradigma sağlar.

  • Etkinlik işleyicileri , gelen etkinlik türlerinin ve alt türlerinin olaylar olduğu olay temelli bir model sağlar. Kullanıcıyla sınırlı, kısa etkileşimleri olan botlar için bir etkinlik işleyicisi düşünün.
  • İletişim kutusu kitaplığı , kullanıcıyla uzun süre çalışan bir konuşmayı yönetmek için durum tabanlı bir model sağlar.
  • Kendi bot sınıfınızı uygulayın ve her dönüşü işlemek için kendi mantığınızı sağlayın. Bir örnek için kullanıcı girişi toplamak için kendi istemlerinizi nasıl oluşturacağınız bölümüne bakın.

Bot bağdaştırıcısı

Bağdaştırıcının bir dönüş başlatmak için bir işlem etkinliği yöntemi vardır.

  • İstek gövdesini (bir etkinliğe çevrilmiş istek yükü) ve istek üst bilgisini bağımsız değişken olarak alır.
  • Kimlik doğrulama üst bilgisinin geçerli olup olmadığını denetler.
  • Dönüş için bir bağlam nesnesi oluşturur. Bağlam nesnesi etkinlikle ilgili bilgileri içerir.
  • Bağlam nesnesini ara yazılım işlem hattı üzerinden gönderir.
  • Ardından bağlam nesnesini bot nesnesinin dönüş işleyicisine gönderir.

Bağdaştırıcı ayrıca:

  • Yanıt etkinliklerini biçimlendirir ve gönderir. Bu yanıtlar genellikle kullanıcının iletileridir, ancak doğrudan kullanıcının kanalı tarafından kullanılacak bilgileri de içerebilir.
  • Bot Bağlan veya REST API tarafından sağlanan güncelleştirme iletisi ve silme iletisi gibi diğer yöntemleri ortaya çıkar.
  • Aksi takdirde dönüş için yakalanmayan hataları veya özel durumları yakalar.

Dönüş bağlamı

Dönüş bağlamı nesnesi, gönderen ve alıcı, kanal ve etkinliği işlemek için gereken diğer veriler gibi etkinlik hakkında bilgi sağlar. Ayrıca, botun çeşitli katmanları arasında dönüş sırasında bilgilerin eklenmesine de olanak tanır.

Dönüş bağlamı, SDK'daki en önemli soyutlamalardan biridir. Gelen etkinliği yalnızca tüm ara yazılım bileşenlerine ve uygulama mantığına taşımakla kalmaz, aynı zamanda ara yazılım bileşenlerinin ve bot mantığının giden etkinlikleri gönderebileceği mekanizmayı da sağlar.

Ara yazılım

Ara yazılım, her biri sırayla yürütülen ve her birine etkinlik üzerinde çalışma şansı veren doğrusal bir bileşen kümesinden oluşan diğer mesajlaşma ara yazılımlarına çok benzer. Ara yazılım işlem hattının son aşaması, uygulamanın bağdaştırıcının işlem etkinliği yöntemiyle kaydettiği bot sınıfındaki dönüş işleyicisine bir geri çağırmadır. Ara yazılım, bağdaştırıcının çağırdığı bir açma yöntemi uygular.

Dönüş işleyicisi, bağımsız değişkeni olarak bir dönüş bağlamı alır; genellikle dönüş işleyicisi işlevinin içinde çalışan uygulama mantığı gelen etkinliğin içeriğini işler ve yanıt olarak bir veya daha fazla etkinlik oluşturur ve bu giden etkinlikleri dönüş bağlamında gönderme etkinliği işlevini kullanarak gönderir. Dönüş bağlamında gönderme etkinliğini çağırmak, giden etkinliklerde ara yazılım bileşenlerinin çağrılmasına neden olur. Ara yazılım bileşenleri, bot'un dönüş işleyici işlevinden önce ve sonra yürütülür. Yürütme doğal olarak iç içe yerleştirilmiştir ve bu nedenle, bazen bir soğan gibi ifade edilir.

Ara yazılım konusunda ara yazılım daha ayrıntılı olarak açıklanmaktadır.

Bot durumu ve depolama

Diğer web uygulamalarında olduğu gibi bot da doğal olarak durum bilgisizdir. Bot içindeki durum, modern web uygulamalarıyla aynı paradigmaları izler ve Bot Framework SDK'sı, durum yönetimini kolaylaştırmak için depolama katmanı ve durum yönetimi soyutlamaları sağlar.

Yönetim durumu konusu, bu durum ve depolama özelliklerini açıklar.

Mesajlaşma uç noktası ve sağlama

Genellikle, uygulamanızın iletilerin alınacağı bir REST uç noktası gerekir. Ayrıca botunuz için kullanmaya karar vereceğiniz platforma uygun kaynaklar sağlaması gerekir.

Basit bir yankı botu oluşturmak ve test etmek için Bot oluşturma hızlı başlangıcını izleyin.

HTTP Ayrıntıları

Etkinlikler Bot Framework Hizmeti'nden bir HTTP POST isteği aracılığıyla bota ulaşır. Bot, gelen POST isteğine 200 HTTP durum koduyla yanıt verir. Bottan kanala gönderilen etkinlikler, Bot Framework Hizmeti'ne ayrı bir HTTP POST üzerinden gönderilir. Bu da 200 HTTP durum koduyla kabul edilir.

Protokol, bu POST isteklerinin ve onaylarının hangi sırada yapıldığını belirtmez. Ancak, ortak HTTP hizmet çerçevelerine sığmak için genellikle bu istekler iç içe yerleştirilmiştir; bu da gelen HTTP isteği kapsamında bottan giden HTTP isteğinin yapıldığı anlamına gelir. Bu desen önceki diyagramda gösterilmiştir. Arka arkaya iki ayrı HTTP bağlantısı olduğundan, güvenlik modelinin her ikisi için de sağlaması gerekir.

Not

Bot, çoğu kanalda 200 durumuyla aramayı kabul etmek için 15 saniyeye sahiptir. Bot 15 saniye içinde yanıt vermezse HTTP GatewayTimeout hatası (504) oluşur.

Etkinlik işleme yığını

Bir ileti etkinliğinin gelişine odaklanarak önceki sıralı diyagramda detaya gidelim.

Bir etkinliğin bot tarafından nasıl işlendiğini gösteren sıralı diyagram.

Kanal kullanıcının iletisini Azure AI Bot Hizmeti gönderir ve hizmet iletiyi botunun mesajlaşma uç noktasına iletir. Botun yanıtı, dönüş kapsamında kullanıcıya gönderilir.

Yukarıdaki örnekte bot, ileti etkinliğini aynı metin iletisini içeren başka bir ileti etkinliğiyle yanıtladı. İşleme HTTP POST isteğiyle başlar ve etkinlik bilgileri JSON yükü olarak taşınır ve web sunucusuna gelir. ASP.NET projeleri genellikle C# botları için kullanılır ve JavaScript Node.js botları için Express veya restify gibi popüler bir çerçeve kullanılır.

SDK'nın tümleşik bir bileşeni olan bağdaştırıcı, SDK çalışma zamanının çekirdeğidir. Etkinlik HTTP POST gövdesinde JSON olarak taşınır. Bu JSON, daha sonra işlem etkinliği yöntemi aracılığıyla bağdaştırıcıya teslim edilen etkinlik nesnesini oluşturmak için seri durumdan çıkarılır. Etkinlik alınırken bağdaştırıcı bir dönüş bağlamı oluşturur ve ara yazılımı çağırır.

Yukarıda belirtildiği gibi, dönüş bağlamı bota giden etkinlikleri gönderme mekanizmasını sağlar ve çoğunlukla bir gelen etkinliğine yanıt verir. Dönüş bağlamı gönderme, güncelleştirme ve silme etkinliği yanıt yöntemleri sağlar. Her yanıt yöntemi zaman uyumsuz bir işlemde çalışır.

Önemli

Birincil botun teslimini işleyen iş parçacığı, tamamlandığında bağlam nesnesinin atılmasıyla ilgilenir. Birincil iş parçacığının işlemesini tamamlamadan ve dönüş bağlamını yok etmeden önce oluşturulan etkinliği beklemesi için herhangi bir etkinlik çağrısı olduğundan emin await olun. Aksi takdirde, bir yanıt (işleyicileri dahil) önemli bir süre alır ve bağlam nesnesi üzerinde işlem yapmaya çalışırsa, bir bağlam atıldı hatası alabilir.

Bot şablonları

Uygulamanız için uygulama katmanı kullanımını seçmeniz gerekir; ancak Bot Framework'ün ASP.NET (C#), restify (JavaScript) ve aiohttp (Python) için şablonları ve örnekleri vardır. Belgeler, bu platformlardan birini kullandığınız varsayılarak yazılır, ancak SDK bunu sizin için gerektirmez. Şablonlara erişme ve şablonlara yükleme yönergeleri için Bot oluşturma hızlı başlangıcına bakın.

Bot bir web uygulamasıdır ve SDK'nın her dil sürümü için şablonlar sağlanır. Tüm şablonlar varsayılan bir uç nokta uygulaması ve bağdaştırıcısı sağlar. Her şablon şunları içerir:

  • Kaynak sağlama
  • Gelen etkinlikleri bir bağdaştırıcıya yönlendiren dile özgü http uç noktası uygulaması.
  • Bağdaştırıcı nesnesi
  • Bot nesnesi

Farklı şablon türleri arasındaki temel fark bot nesnesindedir. Şablonlar şunlardır:

  • Boş bot
    • Konuşmanın ilk dönüşünde bir "merhaba dünya" iletisi göndererek kullanıcıyı konuşmaya davet eden bir etkinlik işleyicisi içerir.
  • Yankı botu
    • Kullanıcıları karşılamak ve kullanıcı girişini geri yankılandırmak için bir etkinlik işleyicisi kullanır.
  • Çekirdek bot
    • SDK'nın birçok özelliğini bir araya getirir ve bot için en iyi yöntemleri gösterir.
    • Kullanıcıları karşılamak için bir etkinlik işleyicisi kullanır.
    • Konuşmayı yönetmek için bir bileşen iletişim kutusu ve alt iletişim kutuları kullanır.
    • İletişim kutuları Language Understanding (LUIS) ve Soru-Cevap Oluşturma özelliklerini kullanır.

Not

Azure Yapay Zeka Soru-Cevap Oluşturma 31 Mart 2025 tarihinde kullanımdan kaldırılacaktır. 1 Ekim 2022 tarihinden itibaren yeni QnA Maker kaynakları veya bilgi bankası makaleleri oluşturamazsınız. Soru ve yanıtlama özelliğinin daha yeni bir sürümü artık Azure AI Dili'nin bir parçası olarak kullanılabilir.

Azure AI Dili'nin bir özelliği olan özel soru yanıtlama, Soru-Cevap Oluşturma hizmetinin güncelleştirilmiş sürümüdür. Bot Framework SDK'sında soru-cevap desteği hakkında daha fazla bilgi için bkz . Doğal dil anlama.

Not

Language Understanding (LUIS) 1 Ekim 2025'te kullanımdan kaldırılacaktır. 1 Nisan 2023'e kadar yeni LUIS kaynakları oluşturamayacaksınız. Dil anlamanın daha yeni bir sürümü artık Azure AI Dili'nin bir parçası olarak kullanılabilir.

Azure AI Dili'nin bir özelliği olan konuşma dili anlama (CLU), LUIS'in güncelleştirilmiş sürümüdür. Bot Framework SDK'sında dil anlama desteği hakkında daha fazla bilgi için bkz . Doğal dil anlama.

Ek bilgi

Bot kaynaklarını yönetme

Botunuzun uygulama kimliği ve parolası gibi kaynakları ve bağlı hizmetlerle ilgili bilgileri yönetmeniz gerekir. Botunuzu dağıttığınızda bu bilgilere güvenli bir şekilde erişmesi gerekir. Karmaşıklığı önlemek için Bot Framework SDK makalelerinin çoğu bu bilgilerin nasıl yönetileceğini açıklamaz.

Kanal bağdaştırıcıları

SDK ayrıca, bot Bağlan veya Hizmetin bir kanal için normal olarak gerçekleştireceği görevleri bağdaştırıcının kendisi de gerçekleştirdiği kanal bağdaştırıcılarını kullanmanıza olanak tanır.

SDK bazı dillerde birkaç kanal bağdaştırıcısı sağlar. Botkit ve Community depoları aracılığıyla daha fazla kanal bağdaştırıcısı kullanılabilir. Daha fazla bilgi için bkz. Bot Framework SDK deposunun kanallar ve bağdaştırıcılar tablosu.

Bot Bağlan veya REST API

Bot Framework SDK'sı, Bot Bağlan veya REST API'sini sarmalar ve temel alır. SDK'yı destekleyen temel HTTP isteklerini anlamak istiyorsanız Bağlan veya kimlik doğrulaması ve ilişkili makalelere bakın. Botların gönderip aldığı etkinlikler Bot Framework Etkinlik şemasına uygundur.

Sonraki adımlar