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.
Bir aracı içindeki durum, modern web uygulamalarıyla aynı paradigmaları izler. Aracılar SDK'sı, durum yönetimini kolaylaştırmak için bazı soyutlamalar sağlar.
Web uygulamalarında olduğu gibi, bir aracı doğası gereği durumsuzdur. Aracınızın farklı bir örneği konuşmanın herhangi bir bölümünü ele alabilir. Bazı aracılar için bu basitlik tercih edilir - aracı ya ek bilgi olmadan çalışabilir ya da gerekli bilginin gelen mesajın içinde olduğu garanti edilir. Diğerleri için durum (görüşmenin nerede kaldığı veya kullanıcı hakkında daha önce alınan veriler gibi) aracının faydalı bir görüşme yapabilmesi için gereklidir.
Neden duruma ihtiyacım var?
Durumu korumak, aracınızın bir kullanıcı veya konuşma hakkında belirli şeyleri hatırlayarak daha anlamlı konuşmalar yapmasını sağlar. Örneğin, daha önce bir kullanıcıyla konuştuysanız, bir daha istemenize gerek kalmayacak şekilde bu kullanıcı hakkındaki önceki bilgileri kaydedebilirsiniz. State ayrıca verileri mevcut turdan daha uzun süre tutar, böylece aracınız çok turlu bir konuşma boyunca bilgileri saklar.
Aracılarla ilgili olarak, durumu kullanmak için birkaç katman vardır: depolama katmanı, durum yönetimi ve AgentApplication.
Depolama katmanı
Durum bilgilerinin gerçekte depolandığı arka uçtan başlayarak, depolama katmanıdır. Bunu bellek içi, Azure veya üçüncü taraf bir sunucu gibi fiziksel depolama alanınız olarak düşünebilirsiniz.
Aracılar SDK'sı, depolama katmanı için bazı uygulamalar içerir:
Bellek depolama, test amacıyla bellek içi depolama uygular. Bellek içi veri depolama, uçucu ve geçici olduğundan yalnızca yerel testler için tasarlanmıştır. Aracı her yeniden başlatıldığında veriler temizlenir.
Azure Blob Depolama, bir Azure Blob Depolama nesne veritabanına bağlanır.
Azure Cosmos DB bölümlenmiş depolama, bölümlenmiş bir Cosmos DB NoSQL veritabanına bağlanır.
Diğer depolama seçeneklerine nasıl bağlanılacağına ilişkin talimatlar için bkz. Aracılar SDK'sı Depolamasına Genel Bakış
Durum yönetimi
Durum yönetimi, aracınızın durumunun altta yatan depolama katmanına okunmasını ve yazılmasını otomatikleştirir. Durum, durum özellikleri olarak saklanır; bunlar, aracınızın temelde yatan belirli uygulama hakkında endişelenmeden durum yönetimi nesnesi aracılığıyla okuyabileceği ve yazabileceği etkili anahtar-değer çiftleridir. Bu durum özellikleri, bu bilgilerin nasıl depolandığını tanımlar. Örneğin, belirli bir sınıf veya nesne olarak tanımladığınız bir özelliği aldığınızda, verilerin nasıl yapılandırılacağını bilirsiniz.
Bu durum özellikleri, bu özellikleri düzenlemeye yardımcı olan koleksiyonlar olan kapsamlandırılmış "kutular" içinde toplanır. SDK bu "kutularda" üçünü içerir:
- Kullanıcı durumu
- Konuşma durumu
Bu kutuların tümü, farklı kapsamlara sahip diğer kutu türlerini tanımlamak için türetilebilen aracı durum sınıfının alt sınıflarıdır.
Bu önceden tanımlanmış kutular, kovaya bağlı olarak belirli bir görünürlük kapsamındadır:
- Kullanıcı durumu, aracının o kanalda o kullanıcıyla görüştüğü her turda, görüşmeden bağımsız olarak kullanılabilir
- Konuşma durumu, kullanıcıdan bağımsız olarak, grup konuşmalarında olduğu gibi belirli bir konuşmada herhangi bir sırayla kullanılabilir
Kullanıcı durumu ve konuşma durumu kanala göre kapsamlandırılır. Aracınıza erişmek için farklı kanalları kullanan aynı kişi, her kanal için bir tane olmak üzere farklı kullanıcılar olarak görünür ve her biri farklı bir kullanıcı durumuna sahiptir.
Bu önceden tanımlanmış kutuların her biri için kullanılan anahtarlar kullanıcıya ve görüşmeye veya aracıya özeldir. Durum özelliğinizin değerini ayarlarken, her kullanıcının veya görüşmenin doğru kovaya ve özelliğe yerleştirilmesini sağlamak için dönüş bağlamında bulunan bilgilerle anahtar sizin için dahili olarak tanımlanır. Özellikle, anahtarlar aşağıdaki gibi tanımlanır:
- Kullanıcı durumu, kanal kimliğini ve kimlikten kullanarak bir anahtar oluşturur. Örneğin,
{Activity.ChannelId}/users/{Activity.From.Id}#YourPropertyName - Görüşme durumu, kanal kimliğini ve görüşme kimliğini kullanarak bir anahtar oluşturur. Örneğin,
{Activity.ChannelId}/conversations/{Activity.Conversation.Id}#YourPropertyName
Her durum türü ne zaman kullanılır?
Konuşma durumu, konuşmanın bağlamını izlemek için iyidir, örneğin:
- Aracının kullanıcıya bir soru sorup sormadığı ve bunun hangi soru olduğu
- Konuşmanın mevcut konusu veya en son olan neydi
- Sohbet geçmişini kaydetme
Kullanıcı durumu, kullanıcı hakkındaki bilgileri izlemek için iyidir, örneğin:
- Ad ve tercihler, alarm ayarı veya uyarı tercihi gibi kritik olmayan kullanıcı bilgileri
- Aracı ile yaptıkları son görüşme hakkında bilgi
- Örneğin, bir ürün-destek aracısı kullanıcının hangi ürünler hakkında soru sorduğunu takip edebilir.
AgentApplication
- Eklediğiniz rota işleyicilerine bir
TurnStateörneği sağlanacaktır. Bu örnekten görüşmeye veya kullanıcı durumuna erişin. - Durum otomatik olarak yüklenir ve kaydedilir.