Aracılığıyla paylaş


Hata ayıklama yönergeleri

ŞUNLAR IÇIN GEÇERLIDIR: SDK v4

Botlar, birçok parçanın birlikte çalıştığı karmaşık uygulamalardır. Diğer karmaşık uygulamalar gibi bu da bazı ilginç hatalara yol açabilir veya botunuzun beklenenden farklı davranmasına neden olabilir.

Hata ayıklama, botunuz bazen zor bir görev olabilir. Her geliştiricinin bu görevi gerçekleştirmek için kendi tercih ettiği yolu vardır. Aşağıdaki yönergeler çoğu bot için geçerli olan önerilerdir.

Botunuzun çalıştığını doğruladıktan sonra bir sonraki adım botu bir kanala bağlamaktır. Bunu yapmak için botunuzu hazırlama sunucusuna dağıtabilir ve botunuzun bağlanması için kendi doğrudan hat istemcinizi oluşturabilirsiniz. Daha fazla bilgi için bkz. Botu Direct Line bağlama.

Kendi istemcinizi oluşturmak, kanalın iç çalışmalarını tanımlamanıza ve botunuzun belirli etkinlik değişimlerine nasıl yanıt verdiğini test etmenizi sağlar. İstemcinize bağlandıktan sonra testlerinizi çalıştırarak botunuzun durumunu ayarlayın ve özelliklerinizi doğrulayın. Botunuz konuşma gibi bir özellik kullanıyorsa, bu kanalları kullanmak bu işlevselliği doğrulamanın bir yolunu sunabilir.

Not

Azure'a bot dağıtırken, Web Sohbeti kanalı varsayılan olarak sağlanır.

Burada Azure portal aracılığıyla hem Bot Framework Emulator hem de Web Sohbeti kullanılması, botunuzun farklı kanallarla etkileşim kurarken nasıl çalıştığı hakkında daha fazla içgörü sağlayabilir.

Botunuzda hata ayıklama diğer çok iş parçacıklı uygulamalara benzer şekilde çalışır ve kesme noktaları ayarlayabilir veya hemen pencere gibi özellikleri kullanabilir.

Botlar, olay odaklı programlama paradigması izler ve bu paradigmayı tanımıyorsanız rasyonalize etmek zor olabilir. Botunuzun durum bilgisi olmayan, çok iş parçacıklı olması ve zaman uyumsuz/await çağrılarıyla ilgilenmesi beklenmeyen hatalara neden olabilir. Botunuzda hata ayıklama diğer çok iş parçacıklı uygulamalara benzer şekilde çalışırken, yardımcı olacak bazı önerileri, araçları ve kaynakları ele alacağız.

Öykünücü ile bot etkinliklerini anlama

Botunuz normal iletietkinliğinin yanı sıra farklı etkinlik türleriyle ilgilenir. Bu etkinlikleri anlamak, botunuzu verimli bir şekilde kodlayıp botunuzun gönderdiği ve aldığı etkinliklerin beklediğiniz gibi olduğunu doğrulamanıza yardımcı olur. Öykünücü'yü kullanmak size bu etkinliklerin ne olduğunu, ne zaman gerçekleştiğini ve hangi bilgileri içerdiğini gösterir. Daha fazla bilgi için bkz. Öykünücü ile hata ayıklama.

Dökümlerle kullanıcı etkileşimlerini kaydetme ve alma

Azure blob transkript depolama, kullanıcılarınız ve botunuz arasındaki etkileşimleri içeren dökümleri depolayabileceğiniz ve alabildiğiniz özel bir kaynak sağlar.

Ayrıca, kullanıcı girişi etkileşimleri depolandıktan sonra Azure'ın "depolama gezginini" kullanarak blob transkript deponuzda depolanan transkriptlerde bulunan verileri el ile görüntüleyebilirsiniz. Aşağıdaki örnek, "mynewtestblobstorage" ayarlarından "depolama gezgini"ni açar. Kaydedilmiş bir kullanıcı girişini açmak için şu seçeneği belirleyin: Blob Container > ChannelId > TranscriptId ConversationId >

Blob transkript deposunda depolanan transkript girişi örneği.

Bu, depolanan kullanıcı konuşması girişini JSON biçiminde açar. Kullanıcı girişi "text:." anahtarıyla birlikte korunur Bot transkript dosyası oluşturma ve kullanma hakkında daha fazla bilgi için bkz. Transkript dosyalarını kullanarak botunuzda hata ayıklama.

Ara yazılım nasıl çalışır?

Ara yazılım , özellikle yürütmenin devamı veya kısa devre ile ilgili olarak ilk kez kullanmaya çalışırken sezgisel olmayabilir. Ara yazılım, yürütme bot mantığına geçirildiğinde temsilciye yapılan bir çağrıyla bir dönüşün next() başında veya sonunda yürütülebilir.

Birden çok ara yazılım parçası kullanıyorsanız ve işlem hattınız bu şekilde yönlendiriliyorsa temsilci, yürütmeyi farklı bir ara yazılım parçasına geçirebilir. Bot ara yazılım işlem hattıyla ilgili ayrıntılar bu fikri daha net hale getirmede yardımcı olabilir.

next() Temsilci çağrılmazsa kısa devre yönlendirme olarak adlandırılır. Ara yazılım geçerli etkinliği karşıladığında ve yürütmenin geçirilmesinin gerekli olmadığını belirlediğinde bu durum ortaya çıkar.

Ara yazılım kısa devrelerinin ne zaman ve neden olduğunu anlamak, işlem hattınızda hangi ara yazılım parçasının ilk sırada yer alması gerektiğini belirtmenize yardımcı olabilir. Ayrıca, SDK veya diğer geliştiriciler tarafından sağlanan yerleşik ara yazılım için neler bekleyebileceğinizi anlamak önemlidir. Bazıları, yerleşik ara yazılıma girmeden önce biraz deneme yapmak için kendi ara yazılımınızı oluşturmayı denemeyi yararlı buluyor.

Denetleme ara yazılımını kullanarak botta hata ayıklama hakkında daha fazla bilgi için bkz. İnceleme ara yazılımı ile botta hata ayıklama.

Durumu anlama

Durumu izlemek, özellikle karmaşık görevler için botunuzun önemli bir parçasıdır. Genel olarak, en iyi uygulama etkinlikleri mümkün olan en hızlı şekilde işlemek ve durumun kalıcı hale gelebilmesi için işlemenin tamamlanmasını sağlamaktır. Etkinlikler neredeyse aynı anda botunuza gönderilebilir ve bu da zaman uyumsuz mimari nedeniyle kafa karıştırıcı hatalara neden olabilir.

En önemlisi, durumun beklentilerinize uygun şekilde kalıcı olduğundan emin olun. Kalıcı durumunuzun bulunduğu yere bağlı olarak , Cosmos DB ve Azure Tablo depolama için depolama öykünücüleri üretim depolamasını kullanmadan önce bu durumu doğrulamanıza yardımcı olabilir.

Önemli

Cosmos DB depolama sınıfı kullanım dışı bırakıldı. Başlangıçta CosmosDbStorage ile oluşturulan kapsayıcıların bölüm anahtarı kümesi yoktu ve _/partitionKey varsayılan bölüm anahtarı verildi.

Cosmos DB depolama ile oluşturulan kapsayıcılar Cosmos DB bölümlenmiş depolama alanıyla kullanılabilir. Daha fazla bilgi için Azure Cosmos DB'de Bölümleme bölümünü okuyun.

Ayrıca, eski Cosmos DB depolamadan farklı olarak, Cosmos DB bölümlenmiş depolamanın Cosmos DB hesabınızda otomatik olarak bir veritabanı oluşturmadığını unutmayın. El ile yeni bir veritabanı oluşturmanız gerekir, ancak CosmosDbPartitionedStorage kapsayıcıyı sizin için oluşturacağı için el ile kapsayıcı oluşturmayı atlayın.

Etkinlik işleyicilerini kullanma

Etkinlik işleyicileri, özellikle her etkinlik bağımsız bir iş parçacığında (veya dilinize bağlı olarak web çalışanlarında) çalıştığından, başka bir karmaşıklık katmanı oluşturabilir. İşleyicilerinizin ne yaptığına bağlı olarak, bu durum geçerli durumun beklediğiniz gibi olmadığı sorunlara neden olabilir.

Yerleşik durum bir dönüşün sonunda yazılır, ancak bu dönüş tarafından oluşturulan tüm etkinlikler turn işlem hattından bağımsız olarak yürütülür. Bu durum genellikle bizi etkilemez, ancak bir etkinlik işleyicisi durumu değiştirirse, bu değişikliği içerecek şekilde yazılmış duruma ihtiyacımız vardır. Bu durumda, dönüş işlem hattı işlemi tamamlamadan önce etkinliğin tamamlanmasını bekleyebilir ve bu dönüş için doğru durumu kaydettiğinden emin olabilir.

Gönderme etkinliği yöntemi ve işleyicileri benzersiz bir sorun oluşturur. Gönderme etkinlikleri işleyicisinin içinden gönderme etkinliğini çağırmak, iş parçacıklarının sonsuz çatallanmasına neden olur. Giden bilgilere ek iletiler ekleyerek veya botunuzun kilitlenmesini önlemek için konsol veya dosya gibi başka bir konuma yazarak bu sorunu geçici olarak çözmenin yolları vardır.

Üretim botu hatalarını ayıklama

Botunuz üretimdayken ngrok kullanarak botunuzda herhangi bir kanalda hata ayıklayabilirsiniz. Botunuzun birden çok kanala sorunsuz bağlantısı, Bot Framework'te kullanılabilen önemli bir özelliktir. Daha fazla bilgi için bkz . Ngrok kullanarak herhangi bir kanaldan bot hatalarınıayıklama ve Beceri veya beceri tüketicisinde hata ayıklama.

Sonraki adımlar

Ek kaynaklar