Konuşma akışını tasarlama ve denetleme

ŞUNLAR IÇIN GEÇERLIDIR: SDK v4

Geleneksel bir uygulamada, kullanıcı arabirimi (UI) bir dizi ekrandan oluşur ve tek bir uygulama veya web sitesi, kullanıcıyla bilgi alışverişinde bulunmak için gerektiğinde bir veya daha fazla ekran kullanabilir. Çoğu uygulama, kullanıcıların başlangıçta indiği bir ana ekranla başlar ve bu ekran yeni bir sipariş başlatma, ürünlere göz atma veya yardım arama gibi çeşitli işlevler için diğer ekranlara yol açan gezinti sağlar.

Uygulamalar ve web siteleri gibi botların da bir kullanıcı arabirimi vardır, ancak bunlar ekranlar yerine iletilerden oluşur. İletiler düğmeler, metinler ve diğer öğeler içerebilir veya tamamen konuşma tabanlı olabilir.

Geleneksel bir uygulama veya web sitesi bir ekranda aynı anda birden çok bilgi isteğinde bulunabilir ancak bot, birden çok ileti kullanarak aynı miktarda bilgi toplar. Bu şekilde, kullanıcıdan bilgi toplama işlemi etkin bir deneyimdir; kullanıcının botla etkin bir konuşma yaptığı bir sohbet.

İyi tasarlanmış bir bot, doğal hissettiren bir konuşma akışına sahip olacaktır. Bot, temel konuşmayı sorunsuz bir şekilde işleyebilmeli ve kesintileri veya konuları düzgün bir şekilde değiştirebilmelidir.

Yordamsal konuşma akışı

Botla yapılan konuşmalar, botların gerçekleştirmeye çalıştığı ve yordamsal akış olarak adlandırılan göreve odaklanabilir. Bot, görevi işlemeden önce kullanıcıya ihtiyaç duyduğu tüm bilgileri toplaması için bir dizi soru sorar.

Yordamsal konuşma akışında soruların sırasını tanımlarsınız ve bot soruları tanımladığınız sırayla sorar. CMicrosoft Entralized kodunu tutarken konuşmaya yönlendirmeye odaklanmak için soruları mantıksal gruplar halinde düzenleyebilirsiniz. Örneğin, bir modül tasarlayarak kullanıcının ürünlere göz atmasına yardımcı olan mantığı ve kullanıcının yeni bir sipariş oluşturmasına yardımcı olan mantığı içerecek ayrı bir modül tasarlayabilirsiniz.

Bu modülleri, serbest biçimden sıralı biçime kadar istediğiniz şekilde akacak şekilde yapılandırabilirsiniz. Bot Framework SDK'sı, botunuzun ihtiyaç duyduğu konuşma akışını oluşturmanıza olanak tanıyan bir iletişim kutusu kitaplığı sağlar. Kitaplık, bir dizi adım oluşturmaya yönelik şelale iletişim kutularını içerir ve kullanıcılara soru sormak için istemler içerir. Daha fazla bilgi için bkz . İletişim kutuları kitaplığı.

Diagram comparing application GUI flow against bot conversation flow.

Geleneksel bir uygulamada her şey ana ekranla başlar. Ana ekran yeni sipariş ekranını çağırır. Yeni sipariş ekranı, ürün arama ekranı gibi diğer ekranları kapatana veya çağırana kadar denetimde kalır. Yeni sipariş ekranı kapatılırsa, kullanıcı ana ekrana döndürülür.

İletişim kutuları kullanan bir botta her şey kök iletişim kutusuyla başlar. Kök iletişim kutusu yeni sipariş iletişim kutusunu çağırır. Bu noktada, yeni sipariş iletişim kutusu konuşmanın denetimini alır ve ürün arama iletişim kutusu gibi başka bir iletişim kutusunu kapatana veya çağırana kadar denetimde kalır. Yeni sıra iletişim kutusu kapanırsa, konuşmanın denetimi kök iletişim kutusuna geri döner.

İletişim kutusu kitaplıklarını kullanarak konuşma akışı uygulama örneği için bkz . Sıralı konuşma akışı uygulama.

Kesintileri işleme

Kullanıcıların yordam görevlerini düzgün ve düzenli bir şekilde tek tek gerçekleştireceğini varsaymak cazip olabilir. Örneğin, iletişim kutularını kullanan yordamsal bir konuşma akışında kullanıcı kök iletişim kutusundan başlar ve yeni sipariş iletişim kutusunu çağırır. Yeni sipariş iletişim kutusundan ürün arama iletişim kutusunu çağırırlar. Ardından ürün arama iletişim kutusunda listelenen sonuçlardan birini seçerken yeni sipariş iletişim kutusunu çağırırlar. Siparişi tamamladıktan sonra kök iletişim kutusuna geri gelirler.

Kullanıcılar her zaman böyle doğrusal, mantıksal bir yol kat ederse harika olurdu, ancak nadiren ortaya çıkar. Kişiler her zaman sıralı olarak iletişim kurmaz. Sık sık fikirlerini değiştirirler. Aşağıdaki örneği inceleyin:

Example of a user asking a question in response to a question from the bot.

Botunuz yordam odaklı olsa da, kullanıcı tamamen farklı bir şey yapmaya karar verebilir veya geçerli konuyla ilgisi olmayan bir soru sorabilir. Yukarıdaki örnekte kullanıcı, bot tarafından beklenen evet/hayır yanıtını vermek yerine bir soru sorar. Botunuz nasıl yanıt vermelidir?

  • Kullanıcının önce soruyu yanıtlaması için ısrar edin.
  • Kullanıcının daha önce yaptığı her şeyi göz ardı edin, iletişim kutusunun tamamını sıfırlayın ve kullanıcının sorusunu yanıtlamaya çalışarak baştan başlayın.
  • Kullanıcının sorusunu yanıtlamayı deneyin ve ardından bu evet/hayır sorusuna dönün ve oradan devam etmeyi deneyin.

En iyi çözüm senaryonuzun ayrıntılarına ve kullanıcının botun nasıl yanıt vermesini bekleyeceğine bağlı olacağından, bu soruya doğru bir yanıt yoktur. Bazı kesinti türlerini işlemek için tasarlanmış bir bot için kullanıcı kesintilerini işleme konusuna bakın.

Konuşmanın süresi dolduğunda

Bazen bir konuşmayı en baştan yeniden başlatmak yararlı olabilir. Örneğin, bir kullanıcı belirli bir süre sonra yanıt vermezse. Bir konuşmayı sonlandırmak için farklı yöntemler şunlardır:

  • Bir kullanıcıdan iletinin en son ne zaman alındığını izleyin ve kullanıcıdan sonraki iletiyi aldıktan sonra süre önceden yapılandırılmış bir uzunluktan uzunsa durumu temizleyin.
  • Önceden yapılandırılmış bir sürenin ardından durumu temizlemek için Cosmos DB'nin yaşam süresi özelliği gibi bir depolama katmanı özelliği kullanın.

Daha fazla bilgi için bkz. Konuşmanın süresinin dolması.

Sonraki adımlar

Kullanıcının iletişim kutularındaki gezintisini yönetmek ve kullanıcıların hedeflerine (doğrusal olmayan bir şekilde bile) ulaşmasını sağlayan bir konuşma akışı tasarlamak, bot tasarımının temel bir zorluğudur. Tasarım botu gezinti makalesi, kötü tasarlanmış gezintinin bazı yaygın tuzaklarını inceler ve bu tuzaklardan kaçınma stratejilerini ele alır.