1. Başlamadan önce
Bu codelab'de, konuşma amaçlı kullanıcı arayüzleri oluşturmak için bir Conversational AI Platform (CAIP) olan Dialogflow CX ile perakende chatbot'u nasıl oluşturacağınızı öğreneceksiniz. Dialogflow CX; chatbot'lar, sesli botlar, telefon ağ geçitleri gibi sanal aracılar uygulayabilir ve 50'den fazla farklı dilde birden fazla kanalı destekleyebilir.
Bu codelab'de, perakendeciler için web sitesi chatbot'u oluşturma konusunda yol gösterilmektedir. Chatbot'unu geliştirdiğimiz kurgusal işletmenin adı G-Records. G-Records, Kaliforniya merkezli bir rock plak şirketidir. Plak şirketinin 4 rock grubu var: Alice Googler, G's N' Roses, The Goo Fighters ve The Google Dolls. G-Records, tüm rock müzik severlere grup ürünleri satıyor.
Bu kod laboratuvarının sonunda, gömlek veya müzik sipariş etmek için chatbot'u kullanabilir ya da siparişiniz hakkında bilgi edinebilirsiniz.
Neler öğreneceksiniz?
Bu şekilde, Dialogflow CX'in Dialogflow ES'ye kıyasla avantajlarını öğreneceksiniz. Aşağıdaki kavramları içerir:
- Google Cloud'da Dialogflow CX sanal aracısı oluşturma
- Akış oluşturmayı öğrenin
- Nasıl öğe oluşturacağınızı öğrenin
- Nasıl intent oluşturacağınızı öğrenin
- Durum işleyicileriyle sayfa ve geçiş sayfası oluşturmayı öğrenin
- Amaç rotalarıyla sayfaları nasıl geçireceğinizi öğrenin
- Parametreler ve koşul rotalarıyla sayfa geçişlerini nasıl yapacağınızı öğrenin
- Sistem işlevleriyle koşullu yanıtları nasıl döndüreceğinizi öğrenin
- Yedek mesaj oluşturmayı öğrenin
- Simülasyon aracını nasıl kullanacağınızı öğrenin
- Test durumları ve test kapsamı oluşturmayı öğrenin
Son Dialogflow CX aracısı tasarımı aşağıdaki gibi görünür:
İhtiyacınız olanlar
- Dialogflow CX temsilcisi oluşturmak için bir Google kimliği/Gmail adresiniz olmalıdır.
- Google Cloud'a erişim.
2. Ortam Kurulumu
Google Cloud projesi oluşturma
Dialogflow CX, Google Cloud'da çalıştığından bir Google Cloud projesi oluşturmanız gerekir. Projeler, tüm Google Cloud kaynaklarınızı düzenler. Bir dizi ortak çalışan, etkin API'ler (ve diğer kaynaklar), izleme araçları, fatura bilgileri, kimlik doğrulama ve erişim denetimlerinden oluşur.
Yeni bir proje oluşturduğunuzda Proje Adı girmeniz gerekir. Ayrıca, mevcut bir Faturalandırma Hesabı ve Kuruluş'a bağlamanız gerekir.
Faturalandırma hesabı, belirli bir kaynak grubu için kimin ödeme yapacağını tanımlamak amacıyla kullanılır ve bir veya daha fazla projeye bağlanabilir. Proje kullanımı, bağlı faturalandırma hesabından alınır. Çoğu durumda, faturalandırmayı proje oluştururken yapılandırırsınız. Daha fazla bilgi için Faturalandırma dokümanlarını inceleyin. Cloud projenizde faturalandırmanın etkinleştirildiğinden emin olun.
Dialogflow API'yi etkinleştirme
Dialogflow'dan yararlanabilmek için projenizde Dialogflow API'yi etkinleştirmeniz gerekir.
- API'yi etkinleştirmek istediğiniz projeyi seçin ve Continue (Devam) seçeneğini tıklayın.
- API'ler ve Hizmetler menüsünü daraltın ve Kimlik Bilgileri Oluştur'u tıklayın.
- Uygulama Verileri'ni tıklayın.
- Şu anda Kubernetes Engine, App Engine veya Cloud Functions kullanmıyorsanız Hayır, kullanmıyorum deyin.
- Bitti'yi tıklayın
Yeni bir Dialogflow CX aracısı oluşturma
Yeni bir Dialogflow CX temsilcisi oluşturmak için önce Dialogflow CX Konsolu'nu açın:
- Daha önce oluşturulan Google Cloud projesini seçin.
- Temsilci oluştur'u tıklayın.
Temel temsilci ayarları formunu doldurun:
- Herhangi bir görünen adı seçebilirsiniz.
- Konum olarak us-central1'i seçin.
- Tercih ettiğiniz saat dilimini seçin.
- Varsayılan dil olarak en - İngilizce'yi seçin.
Oluştur'u tıklayın.
Tamam, her şey hazır. Artık sanal temsilcimizi modellemeye başlayabiliriz.
3. Akışlar
Karmaşık iletişim kutuları genellikle birden fazla konuşma konusu içerir. G-Records için geliştirdiğimiz ve grup ürünlerini satan chatbot'ta ürün kataloğu, ödeme, sipariş durumu ve müşteri hizmetleri sorularıyla ilgili sohbetler bulunur. Bu sohbet konularını akışlara bölebiliriz.
Akışlar, ekiplerin tek tek sohbet yollarında çalışmasını sağlar. Akış, ekrana kolayca sığması ve daha modüler olması için basitleştirilebilir.
Akışlar, Dialogflow CX için yeni bir kavramdır. Dialogflow Essentials kavramı, Akışlar'a benzer olan Mega Aracılar kavramını içerir. Ancak akışları çok daha sık kullanırsınız.
Bu laboratuvarın ilerleyen bölümlerinde, bir akışı sonlandırabilen durum işleyicileri kullanacağız (böylece bir sonraki veya önceki akışa geri döner). Dilerseniz müşteri temsilcisi oturumunu tamamen sonlandırabilirsiniz.
Şimdi birkaç akış oluşturalım.
Akış Oluşturma
- Dialogflow CX'de + simgesini > Akış oluştur'u tıklayın.
Catalog
adını belirtin ve Enter tuşuna basın.
İlk akışınız Katalog oluşturuldu. Şimdi diğer akışları oluşturun:
Order Process
My Order
Customer Care
Bu laboratuvarın ilerleyen bölümlerinde sayfa durumu işleyicileri ayarlayacağız. Bu işlem, görselleştirmenin aşağıdaki gibi görünmesini sağlar:
Simülatör
Dialogflow CX Konsolu'nun sağ tarafında, yerleşik simülatörle sanal aracı test edebilirsiniz. Görüşmeyi, görüşmenin başından veya belirli bir akıştan test edebilirsiniz.
- Ekranınızın sağ üst kısmındaki Test Agent (Aracıyı Test Et) düğmesini tıklayın.
- Temsilciyle konuş alanına şunları yazın:
Hello
Sanal temsilci, varsayılan karşılama mesajıyla yanıt verir: Selamlar. Size nasıl yardımcı olabilirim?
Bu varsayılan karşılama metnini değiştirelim.
Varsayılan Başlangıç Akışları
Sanal temsilciyi selamladıktan sonra tetiklenecek bir Intent Yönlendirmesi oluşturarak başlayalım.
- Soldaki Oluştur > Akışlar kenar çubuğunda Varsayılan Başlangıç Akışları'nı tıklayın ve Başlangıç ağaç düğümünü seçin.
Başlat sayfası açılır. Oluştur > Sayfalar kenar çubuğu bölümünde Başlangıç sayfası otomatik olarak seçilir.
- Başlat > Rotalar bölümünde Varsayılan Karşılama Niyeti'ni tıklayın.
Amaç, son kullanıcının bir görüşme dönüşüyle ilgili niyetini kategorize eder. Dialogflow CX'te intent'ler, bir sonraki etkin sayfayı veya yerine getirmeyi yönlendirmek için durum işleyicinin parçası olabilir.
- Temsilcinin söylediği tüm girişleri kaldırıp şu yeni metni ekleyin:
Welcome, I am the virtual agent of G-Records, a fictional rock label. You can order artists merchandise, ask questions about your order or shipping, and I can tell you more which artists are currently signed with us. How can I help?
Sohbeti kolaylaştırmak için bazı hızlı yanıt düğmelerine/öneri çiplerine de ihtiyacımız var.
- İletişim seçeneği ekle > Özel veri yükü'nü tıklayın ve aşağıdaki kod snippet'ini kullanın.
- Özel yük olarak aşağıdaki kod snippet'ini kullanın ve Kaydet'i tıklayın.
Özel yük hakkında daha fazla bilgi edinmek için belgelere göz atın.
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- Devam edin ve simülatördeki karşılama amacını test edin.
Muhtemelen neden zengin içerik göremediğinizi merak ediyorsunuzdur. Bunun nedeni, öneri çipleri gibi zengin içeriklerin entegrasyona bağlı olmasıdır. Aşağıdaki adımlar için faturalandırma hesabı gerekir ancak faturalandırma hesabınız yoksa bu adımları atlayabilirsiniz.
- Sol kenar çubuğunda Yönet > Entegrasyonlar'ı tıklayın.
- Dialogflow Messenger'ı seçip Bağlan'ı tıklayın.
- Pop-up'ta Etkinleştir'i tıklayın.
Bu kez, Dialogflow Messenger bileşenini web sitenize entegre etmek için web sitenize yapıştırabileceğiniz entegrasyon JavaScript kodu içeren başka bir pop-up gösterilir. Henüz web sitemiz olmadığından sanal temsilciyi doğrudan araçta test edeceğiz.
- Şimdi Dene bağlantısını tıklayın.
- Sohbet penceresini açmak için sağ alttaki chatbot simgesini tıklayın. Görüşmeye başlamak için
Hello
yazın.
Şu anda, öneri çiplerini tıkladığınızda sanal temsilci ne demek istediğinizi anlamaz. Bunun nedeni, sanal temsilcimizin henüz durumlar arasında geçiş yapmamasıdır. Bunu Dialogflow CX'de Sayfalar ile yapabiliriz. Laboratuvara devam edelim. Öncelikle bazı varlıklar ve niyetler oluşturacağız.
4. Varlık Türleri
Öğe türleri, son kullanıcı girişindeki verilerin nasıl ayıklandığını kontrol etmek için kullanılır. Dialogflow CX varlık türleri, Dialogflow ES varlık türlerine çok benzer. Dialogflow, birçok yaygın veri türüyle eşleşebilecek, önceden tanımlanmış sistem varlıkları sunar. Örneğin, tarih, saat, renk, e-posta adresi vb. eşleştirme için sistem varlıkları vardır. Özel verileri eşleştirmek için kendi özel öğelerinizi de oluşturabilirsiniz.
Sayfaları bir akışta tasarlayabilmek için önce tüm özel öğeleri hazırlayarak başlayalım. Aşağıdaki öğeleri oluşturacağız:
Varlık Oluşturma
Bir Sanatçı öğesi oluşturalım.
- Yönet > Varlık Türleri'ni tıklayın.
- + Oluştur'u tıklayın.
- Görünen Ad:
Artist
- Varlıklar:
The Google Dolls
(eş anlamlıyla:Google Dolls
)The Goo Fighters
(eş anlamlı:Goo Fighters
)G's N' Roses
(eş anlamlı:Gs and Roses
)Alice Googler
- Gelişmiş seçenekler'i tıklayın ve Yakın eşleme'yi işaretleyin. (Grup adını yanlış yazarsanız bile doğru öğeyle eşleştirilebilir.)
- Gelişmiş seçenekler bölümünde Günlükte çıkart'ı da işaretleyin. (Bant adını yanlış yazarsanız günlükte ad düzeltilir.)
- Kaydet'i tıklayın
Ürün öğesi için de bir tüzel kişi gerekir:
- Yönet > Varlık Türleri'ni tıklayın.
- + Oluştur'u tıklayın.
- Görünen ad:
Merch
- Varlıklar:
T-shirt
Longsleeve
(eş anlamlı:Longsleeve shirt
)Tour Movie
Digital Album
(eş anlamlıyla:MP3 Album
,MP3
)CD
(Disc
,Physical CD
eş anlamlılarıyla)
- Kaydet'i tıklayın
Albüm için de bir öğeye ihtiyacınız olacaktır:
- Yönet > Öğe Türleri'ni tıklayın.
- + Oluştur'u tıklayın.
- Görünen ad:
Album
- Varlıklar:
Live
Greatest Hits
(eş anlamlı:Hits
)
- Kaydet'i tıklayın
Giyim boyutları için de bir öğeye ihtiyacımız vardır:
- Yönet > Öğe Türleri'ni tıklayın.
- + Oluştur'u tıklayın.
- Görünen Ad:
ShirtSize
- Varlıklar:
XS
(eş anlamlı:Extra Small
)S
(eş anlamlıyla:Small
)M
(eş anlamlı:Medium
)L
(eş anlamlı:Large
)XL
(eş anlamlı:Extra Large
)2XL
(eş anlamlı:Extra Extra Large
)3XL
- Kaydet'i tıklayın
Ayrıca, genellikle 4 alfanümerik ve 3 rakamdan oluşan sipariş numaraları için bir öğe. (ör. ABCD123)
- Yönet > Öğe Türleri'ni tıklayın.
- + Oluştur'u tıklayın.
- Görünen ad:
OrderNumber
- Regexp varlıkları
- Öğe: [A-Z]{4}[0-9]{3}
- Kaydet'i tıklayın
Varlık yapılandırmanız aşağıdakine benzer bir görünümde olacaktır:
@Sanatçı:
@Merch:
@Albüm:
@ShirtSize:
@Sipariş Numarası:
Özel varlıklar hazırlandıktan sonra niyetleri hazırlayabiliriz. Laboratuvara devam edelim.
5. Niyetler
Amaç, son kullanıcının bir görüşme dönüşüyle ilgili niyetini sınıflandırır. Dialogflow CX'te önemli ölçüde basitleştirildi. Artık etkileşimli kontrol için bir yapı taşı değil. Dialogflow CX, yalnızca kullanıcıların söylediklerini eşleştirmek için niyetleri kullanır. Dialogflow ES'de her şeyi bir amaca (parametreler, etkinlikler, yerine getirme vb.) bağlamanız gerekiyordu. Dialogflow CX'deki intent'ler yalnızca eğitim ifadelerini içerir ve bu nedenle yeniden kullanılabilir. Artık görüşmeyi kontrol etmez. Dolayısıyla niyet oluşturma süreci basittir:
Intent'lerdeki eğitim ifadeleri, "değişken" girişini ayıklamak için varlıkları kullanabilir. Bu nedenle, varlık türlerinizi önceden oluşturmak iyi bir uygulamadır. Laboratuvar adımlarının önceki sayfasında bunu yaptık.
Amaçları Oluşturma
Sayfaları bir akış içinde tasarlamadan önce tüm amaçları hazırlayarak başlayalım.
- Yönet > Amaçlar'ı tıklayın.
- + Oluştur'u tıklayın.
Aşağıdaki ayrıntıları kullanın:
- Görünen ad
redirect.artists.overview
- Açıklama
Artists overview: The bands supported by the label
Aşağı kaydırın ve aşağıdaki eğitim ifadelerini oluşturun:
Which bands are signed?
Which bands
Which artists
Which artists are part of the record label
Who is part of the label
From which bands can I buy merchandise
Band merchandise
Which music do you have?
I would like to know who are signed to the label
Who are supported by the label
From who can I buy shirts
What music can I order
Can I get an overview of all the artists
- Kaydet'i tıklayın.
- Şimdi devam edip diğer tüm amaçları oluşturalım. Daha fazla eğitim ifadesi oluşturmak için hayal gücünüzü kullanın. En iyi uygulama, kullanıcının bu niyeti tetikleyebileceği farklı yolları kapsayacak şekilde her niyet için en az 10 eğitim ifadesi kullanmaktır. Bu laboratuvar için daha az veri de yeterlidir.
Dikkat etmeniz gereken birkaç nokta:
- Eğitim ifadenizi girerken Dialogflow CX'in varlıklarınızı otomatik olarak notlandıracağını unutmayın. Bu işlem gerçekleşmezse öğenizi güncellemeniz (eşanlamlı kelime ekleyerek) veya eğitim cümlesini kendiniz manuel olarak ekleyerek notlandırmanız gerekebilir.
- Daha kısa eğitim ifadeleri: Dialogflow'un NLU sistemi daha kısa eğitim ifadeleriyle de çalışabilir. Burada birkaç örnek verilmiştir.
- Aşırı eğitim: Bir niyet için çok fazla eğitim ifadesi kullanılması aşırı eğitime ve daha az istenen bir sonuca neden olabilir. En iyi uygulama, iteratif ve artımlı test kullanmak ve eşleşen bir intent olmaması durumunda eğitim ifadeleri eklemektir.
Görünen ad | Eğitim ifadeleri |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yeniden kullanılabilir öğelerimiz (akışlar, varlıklar ve intent'ler) hazır olduğuna göre, sayfalar ve durum işleyicileri oluşturarak bunları bir araya getirebiliriz.
6. Sayfalar ve Durum İşleyicileri
Dialogflow CX sohbeti (oturum), sonlu durum makinesi olarak tanımlanabilir ve görselleştirilebilir. Örneğin, bir otomat sonlu durum makinesi olarak modellenebilir. Aşağıdaki durumlara sahiptir: Para Bekleme, Şeker Seçme, Şeker Verme ve bir dizi giriş verildiğinde bu durumlar arasında hareket eder. Örneğin, jeton eklediğinizde otomatın durumu Jeton bekleniyor durumundan Şeker Seçin durumuna geçer. Sayfalar, Dialogflow CX sanal aracı için bu durumları modellememizi sağlar.
Son kullanıcı bir sohbette Dialogflow CX ile etkileşim kurarken sohbet sayfadan sayfaya geçer. Bu nedenle, herhangi bir anda tam olarak bir sayfa geçerli sayfa olur. Geçerli sayfa etkin kabul edilir ve bu sayfayla ilişkili akış da etkin kabul edilir.
Her Akış için birçok sayfa tanımlarsınız. Burada, birleştirilmiş sayfalarınızın akışın tasarlandığı konular hakkında kapsamlı bir sohbeti işleyebildiği birçok sayfa tanımlarsınız. Her akış özel bir başlangıç sayfasına sahiptir. Bir akış ilk kez etkinleştirildiğinde başlangıç sayfası geçerli sayfa olur. Her konuşma sırası için geçerli sayfa aynı kalır veya başka bir sayfaya geçer. Bu kavram, birçok sayfa ve birden çok görüşme dönüşü olan daha büyük temsilciler oluşturmanıza olanak tanır.
Sayfalar sağlama (statik giriş iletişim kutuları ve/veya webhook'lar), parametreler ve durum işleyicileri içerir. Görüşme denetimi, durum işleyiciler aracılığıyla gerçekleşir. Bu sayede, başka bir Dialogflow CX sayfasına geçiş yapmak için çeşitli geçiş rotaları oluşturabilir ve bunu koşullu hale getirmek de (ileti dizilerinin kollarına ayrılması için) kullanabilirsiniz.
Bir sohbetin durumu, üç farklı rota türüne sahip sayfalar arasındaki geçişler ele alınarak kontrol edilir:
- Intent rotaları: Bir intent'in eşleştirilmesi gerektiğinde (ör. son kullanıcının söylediklerine göre sayfayı değiştirme) (Görsel şemada mavi çizgiler.)
- Koşul rotaları: Bir koşulun kontrol edilmesi gerektiğinde (ör. oturumda depolanan belirli parametrelere göre sayfayı değiştirme) (Görsel diyagramda turuncu çizgiler)
- Etkinlik işleyiciler: Belirli bir yedek etkinliğin işlenmesi gerektiğinde (ör. son kullanıcının bir intent veya koşul rotası ile ilgili belirsizliğini gidermek için giriş yok, eşleşme yok durumunu işleme) (Görsel diyagramdaki yeşil çizgiler.)
Sohbet ifadeleri (ör. kullanıcıya verilen içerik veya yanıt), statik veya dinamik olabilen karşılama tarafından tanımlanır:
- Statik karşılama: Statik bir karşılama yanıtı sağlandığında
- Dinamik karşılama: Dinamik yanıtlar için bir karşılama webhook'ı çağrıldığında
Perakende botumuz için bazı intent rotaları oluşturup bir sayfa etkinleştirildiğinde kullanıcıya gösterilecek bazı statik giriş karşılama yanıtları sağlarız. Daha sonra, promosyon siparişi vermek için ihtiyaç duyacağınız bilgileri toplamak üzere koşul rotaları ile parametreler oluşturacağız.
Sayfa Intent Rotaları
Varsayılan Başlangıç Akışı'ndaki sayfaları oluşturma
Varsayılan başlangıç akışının akış şeması aşağıda verilmiştir:
Bu bağlantıyı birlikte tıklayalım:
- Derle > Varsayılan Başlangıç Akışları'nı tıklayın.
- Başlangıç Sayfası'nı tıklayın.
- Rotalar'ın yanındaki + simgesini tıklayın.
- redirect.artists.overview parametresini ekleyin.
- Transition (Geçiş) bölümüne gidin ve Catalog (Katalog) akışına geçin.
- Kaydet'i tıklayın.
- Yukarıdaki adımları
redirect.product.overview
ve bu tablodaki diğer 11 satır için tekrarlayın:
Sayfa (Akışta) | Rotalar > Intent | Rotalar > Geçiş yapılan hedef |
Başlangıç |
| - |
Başlangıç |
| Akış: Katalog |
Başlangıç |
| Akış: Katalog |
Başlangıç |
| Akış: Katalog |
Başlangıç |
| Akış: Katalog |
Başlangıç |
| Akış: Katalog |
Başlangıç |
| Akış: Katalog |
Başlangıç |
| Akış: Müşteri Desteği |
Başlangıç |
| Akış: Müşteri Desteği |
Başlangıç |
| Akış: Müşteri Desteği |
Başlangıç |
| Akış: Siparişim |
Başlangıç |
| Akış: Siparişim |
Başlangıç |
| Akış: Siparişim |
Başlangıç |
| Sayfa: Oturumu Sonlandır |
Varsayılan Başlangıç Akışları, bir çağrı merkezine telefon ettiğinizde açılan seçenek menüsü gibi çalışır. Ancak bu sanal temsilci, doğal dil ile eğitilmiştir. Eğitim ifadeleri ise intent'lerdedir. Bu nedenle, etkileşim DTMF seçenekleriyle değil, konuşmayla oluşturulur. Bu da daha doğal ve insani bir deneyimdir.
Katalog Akışında sayfa oluşturma
Aşağıdaki sohbet transkripti, Katalog akışına aittir:
> "Hi"
"Welcome, I am the virtual agent of G-Records, a fictional rock label.
You can order artists merchandise, ask questions about your order or shipping,
and I can tell you more which artists are currently signed with us. How can I help?"
> "Which bands are signed with this record label?"
"The following bands are signed with G-Records:
Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
From which of these artists would you like to order merchandise?"
> "Alice Googler"
"You want to rock with Alice Googler merchandise. Awesome!
We sell shirts, music or the tour movie.
Which merchandise item do you want?"
"(Suggestion chips: [Shirts] [Music] [Tour Movie])"
> "I would like to buy a Shirt"
"Do you want a longsleeve or a t-shirt?"
"(Suggestion chips: [T-shirt, Longsleeve, Price?])"
> "What's the price difference?"
"A t-shirt costs $25 and a longsleeve costs $30.
Do you want a longsleeve or a t-shirt?"
> "A t-shirt",
"What shirt size do you want?"
"(Suggestion chips: [XS, S, M, L, XL, 2XL, 3XL])"
> "M"
"A T-shirt of Alice Googler size: M costs $25. Shall I continue to order?"
Müzik veya Turne Filmi'ni seçtiğinizde iletişim kutusu farklı olur: Müzik için iletişim kutusu şöyle görünür:
> "Music"
"We have a Greatest Hits Album or the Live Album. Which one do you want?"
"(Suggestion chips: [Greatest Hits, Live, Price?])"
> "The Live Album"
"Do you want this album on CD or MP3?"
"(Suggestion chips: [CD, MP3])"
> "What's the price difference?"
"A CD costs $15. The digital album on MP3 costs $10.
Do you want this album on CD or MP3?"
> "Digital Album",
"The Digital Album: Alice Googler - Live costs $10. Shall I continue to order?"
Tur videosu için iletişim kutusu şöyle görünür:
> "Tour Movie"
"The Tour Movie of G's N' Roses costs $25. Shall I continue to order?
Katalog akışı içindeki tüm sayfaların akış şemasını aşağıda bulabilirsiniz:
Bu akışın karmaşıklığına dikkat edin:
- Hangi sanatçılar? sorusunu atlayıp hemen "Hangi ürünler mevcut?" diye sorabilirim.
- Varsayılan başlangıç akışında "Google Dolls tişörtü satın almak istiyorum" veya "Bir şey satın almak istiyorum" gibi ifadelerle sorabilirim. Bu, sanal aracın bu gerekli parametrelerin alanlarını doldurmak için takip soruları soracağı anlamına gelir. Doğrudan ürün sayfasına yönlendirilir.
- Fiyat iletişim kutusu, yeniden kullanılacak olan Fiyat sayfasından gelir.
- Tur filmindeki diyalog en basit diyalog gibi görünse de aslında bununla özel bir şey yapacağız. Diyaloğun bu kısmını tekrar kullanacağız. Böylece, tüm bilgiler aynı anda uzmanlaşmış olan son kullanıcılar, ilgili bölümü doğrudan diğer ürünlerden biri için de girebilir:
> "I want The Goo Fighters longsleeve size S."
"The longsleeve of The Goo Fighters size S costs $30. Shall I continue to order?"
Öncelikle sayfaları bağlamaya başlayalım.
- Derle > Katalog'u tıklayın.
- Başlangıç Sayfası'nı tıklayın.
- Rotalar'ın yanındaki + simgesini tıklayın.
- redirect.artists.overview parametresini ekleyin.
- Geçiş'e gidin, Sayfa'yı seçin ve + yeni Sayfa'yı seçin.
- Sayfa adını kullanın:
Artist Overview
ve Kaydet'i tıklayın.
Akıştaki diğer adımları tamamlayalım:
- Önceki adımlar, aşağıdaki sayfalar, intent'ler ve yerine getirmeler için tekrarlanabilir. Bu tabloyu devralın. Sayfa, akışta seçeceğiniz sayfadır. Rotalar > Geçiş Hedefi, oluşturup geçiş yapacağınız yeni akış veya sayfadır.
Sayfa (Akış İçinde) | Rotalar > Intent | Rotalar > Geçiş |
Katalog Başlangıcı |
| Sanatçıya Genel Bakış |
Katalog Başlangıcı |
| Ürün |
Katalog Başlangıcı |
| Ürüne Genel Bakış |
Katalog Başlangıcı |
| Ürüne Genel Bakış |
Katalog Başlangıcı |
| Gömlekler |
Katalog Başlangıcı |
| Müzik |
Katalog Başlangıcı |
| Oturumu Sonlandır |
Katalog Başlangıcı |
| Akışı Bitir |
Sanatçıya Genel Bakış |
| Ürüne Genel Bakış |
Şimdi devam edelim ve daha fazla statik karşılama işlemi ekleyelim.
- Katalog akışında Sanatçıya Genel Bakış sayfasını tıklayın.
- Giriş karşılama bölümünde Karşılamayı düzenle'yi tıklayın.
- Aşağıdaki statik karşılamaları kullanın (Müşteri temsilcisi diyor):
The following bands are signed with G-Records: Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
- Kaydet'i tıklayın
- Katalog akışında Ürüne Genel Bakış sayfasını tıklayın.
- Giriş karşılama bölümünde Karşılamayı düzenle'yi tıklayın.
- Aşağıdaki statik karşılama metnini kullanın (Müşteri temsilcisi diyor):
We sell shirts, music or the tour movie.
- Kaydet'i tıklayın.
Sayfa Parametreleri
Parametreler, bir oturum sırasında son kullanıcı tarafından sağlanan değerleri yakalamak ve referans olarak kullanmak için kullanılır. Her parametrenin bir adı ve varlık türü vardır. @Artist
ve @Merch
, ürün siparişi vermek için toplamamız gereken minimum parametrelerdir. Tişört veya uzun kollu tişört için @ShirtSize
bilgisini de toplamanız gerekir. Müzik sipariş etmek isterseniz @Carrier
ve @Album
adı da gereklidir.
Bu parametrelerin zorunlu olarak işaretlenmesi gerekir. Gerekli olduğunda, bu parametrelerin toplanabilmesi için son kullanıcınızı hatırlamak ve doğru yanıtları sağlamak üzere özel istemler sunmak istersiniz. Dialogflow CX'te bu konuda size yardımcı olabilecek birkaç mekanizma vardır.
Örneğin, Parametre bölümünde özel statik yerine getirme mesajları sağlayabilirsiniz. Parametre gerekliyse bu parametre yerine getirmeleri gösterilir. Bu yanıt mesajları yanıt sırasına eklenir. Temsilcinin sırası sırasında, her biri bir yanıt mesajı oluşturabilecek birden fazla yerine getirme çağrısı yapmak mümkündür (ve bazen istenebilir). Dialogflow bu yanıtları bir yanıt kuyruğunda tutar. Sayfa yaşam döngüsü ve bu karşılamaların yanıt kuyruğuna eklenme sırası hakkında daha fazla bilgi edinmek için Dialogflow CX Sayfa Dokümanları'nı okuyun.
Sanatçıya Genel Bakış sayfasında parametreleri oluşturma
Bazı sayfa parametrelerini tanımlayalım:
- Katalog akışında Sanatçıya Genel Bakış sayfasını tıklayın.
- Parametreler bloğunda + işaretini tıklayın. artist parametresini ekleyin:
- Görünen ad:
artist
- Tüzel Kişi Türü:
@Artist
- Zorunlu: Kontrol edin
- Günlükte çıkart: Onaylayın
- Şimdi bazı özel parametre karşılama mesajları ekleyeceğiz. artist parametresi henüz sanal aracı tarafından toplanmadıysa son kullanıcı, yanıt sırasına şu aracı yanıtının eklenmesini sağlar:
From which of these artists would you like to order merchandise?
- Zengin öneri çipleri sunan ikinci bir iletişim seçeneği ekleyin. İletişim kutusu seçeneği ekle'yi tıklayın ve şu kodu kullanın (JSON'de):
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
Son kullanıcınızın yanıtlamaya çalıştığı deneme sayısına göre farklı yedek yerine getirme istemleri kullanabilirsiniz. Bunu parametre etkinlik işleyicileri ile yaparsınız. Geçersiz Parametreler, Söylemler çok uzun, Giriş yok, 1. denemede giriş yok, 2. deneme veya Eşleşme yok gibi çeşitli yerleşik etkinlik işleyicileri arasından seçim yapabilirsiniz. Giriş yok ve eşleşme yok arasındaki fark şudur: Kullanıcı, giriş olmadan hiçbir yanıt sağlamamıştır. Kullanıcı, eşleşme olmadığında yanıt sağlamıştır ancak Dialogflow CX bunu bir sayfayla eşleştirememiştir.
- Yeniden istem etkinlik işleyicileri bölümüne ilerleyin.
- Etkinlik işleyici ekle'yi tıklayın ve etkinliği seçin:
No-match default
- Aşağıdaki etkinlik statik metin karşılama öğesini kullanın:
I missed that. Please, specify the artist. You can choose between: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- Kaydet'i tıklayın
- Etkinlik işleyici ekle'yi tıklayın ve etkinliği seçin:
No-input default
- Aşağıdaki etkinlik statik metin karşılama öğesini kullanın:
I am sorry, I could understand the artist's name. You can choose between Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- Kaydet'i tıklayın
Sayfa Durumu Rotaları
Parametreler, Sayfa Koşullu Rotalar ile birlikte çok güçlüdür. Bir koşul doğru olarak değerlendirildiğinde, ilişkilendirilmiş sayfa rotası çağrılır. Koşullar arasında Bir parametre belirli bir değere eşit, Bir parametre eksik olamaz veya Tamamlanmış bir form gibi birçok seçenek bulunur. Dialogflow CX belgelerinde Parametreler ve Koşullar hakkında daha fazla bilgi edinebilirsiniz.
Perakende sanal temsilcimiz için bir dizi parametre toplamamız gerekir. Bu nedenle, bir "formun" doldurulup doldurulmadığını kontrol etmek için bir koşul oluşturmamız gerekir. Form, sayfa için son kullanıcıdan toplanması gereken parametrelerin listesidir. Sanal müşteri temsilcisi, sayfa parametreleri olarak da bilinen tüm gerekli form parametrelerini toplayana kadar son kullanıcıyla birden fazla görüşme turu gerçekleştirir.
Dialogflow CX, form doldurma sırasında son kullanıcı tarafından sağlanan parametre değerlerini otomatik olarak ayarlar. Geçerli sayfanın tam formunun doldurulup doldurulmadığını kontrol etmek için aşağıdaki koşulu kullanın: $page.params.status = "FINAL"
Sanatçıya Genel Bakış sayfasında koşullu rotalar oluşturma
Sanatçı bilindikten sonra, sonraki sayfaya geçecek olan koşullu rota oluşturalım:
- Sanatçıya Genel Bakış sayfasında Rotalar bölümündeki + simgesini tıklayın.
- Durum bölümüne gidin.
- En az bir'i (VEYA) seçin
- Ardından,
- Parametre:
$page.params.status
- Operatör:
=
- Değer:
"FINAL"
- Şimdi, rotada son kullanıcının seçimini onaylayan belirli bir statik yerine getirme mesajı oluşturacağız. Karşılama bloğuna ilerleyin ve aşağıdaki karşılama mesajlarını yazın:
$session.params.artist, great choice! Rock on!
You want to rock with $session.params.artist merchandise. Awesome!
- Koşul doğru olduğunda Ürüne Genel Bakış sayfasına geçmeniz gerekir. Transition bölümüne ilerleyin ve şu sayfayı kullanın:
Product Overview
- Kaydet'i tıklayın.
Ürüne Genel Bakış sayfasında rotaları oluşturma
Parametreleri ve koşullu rotaları nasıl oluşturabileceğinizi öğrendiniz. Şimdi aşağıdaki sayfalar için daha fazla parametre oluşturalım:
Ürüne Genel Bakış
- Ürüne Genel Bakış sayfasında
artist
parametresini oluşturun:
- Görünen ad:
artist
- Tüzel Kişi Türü:
@Artist
- Zorunlu: Kontrol edin
- Günlükte çıkart: Onaylayın
- İlk istem karşılama:
From which of these artists would you like to order merchandise?
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
- Etkinlik İşleyici >
No-match default
:To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- Özel yük:
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
- Etkinlik İşleyici >
No-input default
:To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist were you trying to mention?
- Özel yük:
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
merch
parametresini oluşturun:
- Görünen Ad:
merch
- Tüzel Kişi Türü:
@Merch
- Zorunlu: Kontrol edin
- Günlükte çıkart: Onaylayın
- Teslimat:
Which merchandise item do you want?
- İletişim kutusu seçeneği ekle > Özel yük'i tıklayın:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Etkinlik İşleyici >
No-match default
- Etkinlik İşleyicisi Tamamlama:
We sell Shirts, Music or the Tour movie. Which of these items do you want?
- Özel yük:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Etkinlik İşleyici >
No-input default
- Etkinlik İşleyicisi Tamamlama:
I couldn't understand which merchandise item you wanted to buy. You can choose between: Shirts, Music or the Tour movie. Which item do you want?
- Özel yük:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
artist
sağlandığında vemerch
öğesi sağlandığında Ürün sayfasına geçiş yapacak bir rota oluşturun.
- Koşul:
- Her kurala uyma (VE)
- İfade:
$session.params.artist != null
- İfade:
$session.params.merch != null
- Teslimat:
Alright! $session.params.merch of $session.params.artist, let's go!
- Geçiş: Sayfa:
Product
- Kullanıcı "Gömlekler" dediğinde bir rota oluşturma
- Niyet: redirect.shirts
- Geçiş: Sayfa:
Shirts
- Kullanıcının "Müzik" dediği an için bir rota oluştur
- Niyet: redirect.music
- Geçiş: Sayfa:
Music
- Kullanıcının fiyat bilgisi istediği durumlar için bir rota oluşturun
- Niyet: redirect.price
- Geçiş: Yeni Sayfa Oluştur:
Price
Yukarıdaki yapılandırmayı ayarladığınızda aşağıdaki resme benzer bir görselleştirme görürsünüz. Şemada intent rotalarının mavi, koşul rotalarının ise turuncu olduğunu unutmayın. Gösterilmese de etkinlik işleyiciler yeşildir ve birden fazla rota türü bir sayfaya geçiş yaptığında çizgi gri olur.
Şu ana kadar, Parametrelere dayalı olarak Niyet Rotaları ve Koşullu Rotalar gibi Durum İşleyicileri kullanarak Akış, Varlık, Amaç ve Sayfa oluşturmayı öğrendiniz. Bu laboratuvarın sonraki aşamalarında, girdiye dayalı olarak farklı diyaloglar sağlamak için, karşılamada koşullu dallandırma yöntemini kullanacağız.
Sanal temsilcimizi tamamlamak için aşağıdaki yapılandırmaları kullanabilirsiniz.
Gömlekler Sayfası:
- Gömlekler sayfasında aşağıdaki yapılandırmaları oluşturun:
- Giriş karşılama:
Do you want a longsleeve or a t-shirt?
- Giriş karşılama Özel yükü:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
},
{
"text": "Price?"
}
]
}
]
]
}
- Intent rotası oluşturun:
redirect.price
sayfasındanPrice
sayfasına geçiş - Aşağıdaki parametreyi oluşturun:
- Parametre:
merch
- Varlık Türü:@Merch
,Required
veRedact in log
- Parametre > Etkinlik İşleyici >
No-match default
- Parametre > Etkinlik İşleyicisi Yerine Getirme:
You can choose between a t-shirt or a longsleeve. Which of these do you want?
- Parametre > Etkinlik işleyicisi karşılama özel yükü:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- Parametre > Etkinlik İşleyici >
No-input default
- Parametre > Etkinlik İşleyicisi Yerine Getirme:
I couldn't understand if you want the t-shirt or the longsleeve. Which of these do you want?
- Parametre > Etkinlik işleyicisi karşılama özel yükü:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- Giriş karşılama işlemini tıklayın ve Parametre hazır ayarları'na gidin. Gömlekler sayfası her etkinleştirildiğinde kategori parametresi gömlekler olarak ayarlanır:
Parametre | Değer |
|
|
- Koşullu rota ekleme:
- En az bir kuralla eşleşme (VEYA)
- İfade:
$session.params.merch = "T-shirt"
- İfade:
$session.params.merch = "Longsleeve"
- Yeni sayfaya geçiş:
Shirt Size
Fiyat Sayfası:
Fiyat mesajları, seçilen ürüne veya kategoriye (müzik veya gömlekler) bağlı olacağından bu kısmı laboratuvarda daha sonra düzelteceğiz. Sadece bir yer tutucu girmek şimdilik yeterli değil.
- Fiyat sayfasında aşağıdaki yapılandırmaları oluşturun:
- Giriş karşılama:
PRICE TODO
Fiyatı görüşmenin çeşitli yerlerinden isteyebileceğiniz için her zaman size yanıt verir ve siparişe devam etmek için sizi diyaloğun önceki bölümüne geri aktarır. Diyalog ağacında, fiyat bilgisi almak için ayrılabileceğiniz 5 yer vardır. (Shirt, Shirt Size, Music, Carrier ve ayrıca Intent Route üzerinden doğrudan) bu nedenle geri dönmek için bazı koşullu rotalara ihtiyacımız olacak:
- Koşullu rota ekleme:
- Her kurala uyma (VE)
- İfade:
$session.params.category = "shirts"
- İfade:
$session.params.merch = "null"
- Yeni sayfaya geçiş:
Shirts
- Koşullu rota ekleme:
- Her kurala uyma (VE)
- İfade:
$session.params.category = "shirts"
- İfade:
$session.params.size = "null"
- Yeni sayfaya geçiş:
Shirt Size
- Koşullu rota ekleme:
- Her kurala uyma (VE)
- İfade:
$session.params.category = "music"
- İfade:
$session.params.album = "null"
- Yeni sayfaya geçiş:
Music
- Koşullu rota ekleme:
- Her kurala uyma (VE)
- İfade:
$session.params.category = "music"
- İfade:
$session.params.merch = "null"
- Yeni sayfaya geçiş:
Carrier
- Koşullu rota ekleme:
- Her kurala uyma (VE)
- İfade:
$session.params.category = "null"
- Yeni sayfaya geçiş:
Product Overview
Gömlek Bedeni Sayfası:
- Gömlek Bedeni sayfasında aşağıdaki yapılandırmaları oluşturun:
- Giriş karşılama:
What shirt size do you want?
- Giriş karşılama Özel yükü:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
Price
Sayfasına geçiş içeren bir intent rotası:redirect.price
oluşturun.- Aşağıdaki parametreyi oluşturun:
- Parametre:
shirtsize
- Varlık Türü:@ShirtSize
-Required
,Redact In Log
- Parametre > Etkinlik İşleyici >
No-match default
- Parametre > Etkinlik İşleyicisi Yerine Getirme:
Please tell me the shirt size, such as XL.
- Parametre > Etkinlik işleyicisi karşılama özel yükü:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- Parametre > Etkinlik İşleyici >
No-input default
- Parametre > Etkinlik İşleyicisi Yerine Getirme:
I couldn't understand the shirt size. What size do you want?
- Parametre > Etkinlik işleyicisi karşılama özel yükü:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- Koşullu rota ekleme:
- Her kuralı eşleştir (VE)
- İfade:
$page.params.shirtsize != "null"
- Geçiş yapılacak sayfa:
Product
Müzik Sayfası:
- Müzik sayfasında aşağıdaki yapılandırmaları oluşturun:
- Giriş karşılama:
We have a Greatest Hits Album or the Live Album. Which one do you want?
- Giriş karşılama Özel yükü:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
},
{
"text": "Price?"
}
]
}
]
]
}
Price
sayfasına geçiş içeren bir Intent Rotası:redirect.price
oluşturun.- Aşağıdaki parametreyi oluşturun:
- Parametre:
album
- Varlık Türü:@Album
-Required
,Redact In Log
- Parametre > Etkinlik İşleyici >
No-match default
- Parametre > Etkinlik İşleyicisi Yerine Getirme:
You can choose between Greatest Hits and Live Album. Which of these do you want?
- Parametre > Etkinlik işleyicisi karşılama özel yükü:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
}
]
}
]
]
}
- Parametre > Etkinlik İşleyici >
No-input default
- Parametre > Etkinlik İşleyici Sipariş Karşılama:
I couldn't understand if you want the album: Greatest Hit or Live. Which of these do you want?
- Parametre > Etkinlik işleyicisi karşılama özel yükü:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
}
]
}
]
]
}
- Giriş karşılama işlemini tıklayın ve Parametre hazır ayarları'na gidin. Müzik sayfası her etkinleştirildiğinde kategori parametresi müzik olarak ayarlanır:
Parametre | Değer |
|
|
- Koşullu rota ekleme:
- Her kuralı eşleştir (VE)
- İfade:
$page.params.album != "null"
- Şu sayfaya geçiş:
Carrier
Operatör sayfası:
- Operatör sayfasında aşağıdaki yapılandırmaları oluşturun:
- Giriş karşılama:
Do you want this album on CD or MP3?
- Giriş karşılama özel yükü:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
},
{
"text": "Price?"
}
]
}
]
]
}
Price
sayfasına geçiş yapan bir Intent rotası oluşturun:redirect.price
.- Aşağıdaki parametreyi oluşturun:
- Parametre:
merch
- Varlık Türü:@Merch
-Required
,Redact In Log
- Parametre > Etkinlik İşleyici >
No-match default
- Parametre > Etkinlik İşleyicisi Yerine Getirme:
Do you want a physical CD or the digital album?
- Parametre > Etkinlik İşleyicisi Yerine Getirme: Özel yığın:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "Digital Album"
}
]
}
]
]
}
- Parametre > Etkinlik İşleyici >
No-input default
- Parametre > Etkinlik İşleyicisi Yerine Getirme:
I couldn't understand if you mean CD or MP3. Which one do you want?
- Parametre > Etkinlik İşleyicisi Yerine Getirme: Özel yığın:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
}
]
}
]
]
}
- Koşullu Rota ekleyin:
- Her kurala uyma (VE)
- İfade:
$page.params.merch != "null"
- Şu sayfaya geçiş:
Product
Ürün Sayfası:
- Aşağıdaki parametreleri oluşturun:
Parametre Görünen Adı | Parametre Varlık Türü | Kontroller |
|
| Zorunlu, Günlükte çıkartın |
|
| Zorunlu, Günlükte çıkartın |
- artist parametresi için, sanatçı bilinmediğinde gösterilecek olan aşağıdaki ilk istem karşılama işlemi gerekir.
You didn't mention which artist you are interested in. You can ask me to buy the $session.params.merch of the artist you like or ask which artists we signed. How can I help?
{
"richContent": [
[
{
"options": [
{
"text": "Which artists?"
}
],
"type": "chips"
}
]
]
}
- Ayrıca, karşılamaya sahip bir
No-input default
etkinlik işleyicisi ekleyin:I couldn't understand what you just said. Ask me which artists are signed.
- Ayrıca, yerine getirme özelliğine sahip bir
No-match default
etkinlik işleyici:I missed that. Please ask me which artists are signed.
- merch parametresi için de yeniden istem etkinliği işleyicileri gerekir.
No-input default
etkinlik işleyicisini, yerine getirmeyle birlikte ekleyin:I couldn't understand what you just said. Which merchandise item do you want?
- Ayrıca, yerine getirme özelliğine sahip bir
No-match default
etkinlik işleyici:I missed that. Which merchandise item do you want?
Sanatçı bilindiğinde ve kullanıcı bir "Turne Filmi" seçtiğinde sonraki rota onay sayfasına yönlendirir.
- Koşullu rota ekleme:
- Her kurala uyma (VE)
- İfade:
$session.params.artist != null
- İfade:
$session.params.merch = "Tour Movie"
- Parametre Ön Ayarları Parametre Ekle >
price = 25
- Yeni sayfaya geçiş:
Confirmation
Sanatçı belirlendiğinde ve kullanıcı "Tişört"ü seçip tişört bedenini belirlediğinde bir sonraki rota onay sayfasına yönlendirir.
- Koşullu rota ekleme:
- Özel ifade:
$session.params.artist != null AND $session.params.merch = "T-shirt" AND $session.params.shirtsize != null
- Parametre hazır ayarları Parametre Ekle >
price = 25
- Geçiş yapılacak sayfa:
Confirmation
Sanatçı tanındığında ve kullanıcı "Uzun kollu" ve gömlek bedeni seçildiğinde sonraki rota onay sayfasına geçer.
- Koşullu rota ekleme:
- Özel İfade:
$session.params.artist != null AND $session.params.merch = "Longsleeve" AND $session.params.shirtsize != null
- Parametre Ön Ayarları Parametre Ekle >
price = 30
- Şu sayfaya geçiş:
Confirmation
Sanatçı bilindiğinde ve kullanıcı "CD" seçtiğinde ve albüm adı da seçildiğinde sonraki rota onay sayfasına yönlendirir.
- Koşullu rota ekleme:
- Özel ifade:
$session.params.artist != null AND $session.params.merch = "CD" AND $session.params.album != null
- Parametre hazır ayarları Parametre Ekle >
price = 15
- Geçiş yapılacak sayfa:
Confirmation
Sanatçı tanındığında ve kullanıcı "Dijital Albüm"ü, albüm adı seçildiğinde sonraki rota onay sayfasına geçer.
- Koşullu Rota ekleyin:
- Özel ifade:
$session.params.artist != null AND $session.params.merch = "Digital Album" AND $session.params.album != null
- Parametre hazır ayarları Parametre Ekle >
price = 10
- Geçiş yapılacak sayfa:
Confirmation
Ardından, eksik bilgileri algılayan istemler içeren bazı gelişmiş koşullu ifadeler oluşturacağız. Bir sonraki rota, sanatçı bilindiğinde ve kullanıcı "CD" veya "Dijital Albüm" seçtiğinde ancak albüm adı seçilmediğinde müzik sayfasına geri döner.
- Koşullu rota ekleme:
- Özel İfade:
$session.params.artist != null AND ($session.params.merch = "CD" OR $session.params.merch = "Digital Album") AND $session.params.album = null
- Teslimat:
I would also need to know which album you would like to buy!
- Şu sayfaya geçiş:
Music
Son rota, sanatçı bilindiğinde ve kullanıcı "Tişört" veya "Uzun kollu" seçtiğinde ancak tişört bedeni seçilmediğinde onay sayfasına geçiş yapar.
- Koşullu Rota ekleyin:
- Özel ifade:
$session.params.artist != null AND ($session.params.merch = "T-shirt" OR $session.params.merch = "Longsleeve") AND $session.params.shirtsize = null
- Teslimat:
I would also need to know which shirt size you need!
- Şu sayfaya geçiş:
Shirt Size
Laboratuvarın bir sonraki bölümünde, girişe bağlı olarak farklı yerine getirme mesajları vermek için koşullu yerine getirmelerden yararlanacağız.
7. Koşullu Yanıtlar
Bazı yanıtlar, girişe bağlı olarak farklı bir diyalog döndürür. Diyaloglar dallara ayrılır. Buna koşullu yanıtlar denir. Koşullu yanıtların arka uçta belirlendiği webhook karşılamalarından yararlanmıyorsanız bu durum ilginizi çekebilir. Örneğin, şu şekilde bir mesaj gönderilebilir:
if [condition]
[response]
elif [condition]
[response]
elif [condition]
[response]
else
[response]
endif
- [condition] değerine örnek olarak
$session.params.user-age >= 21
verilebilir. Rotalardaki koşullarla benzer bir biçimlendirme kullanır. - [response], statik metin yanıtını alır
- Koşullu yanıtlar her zaman
if
ile başlar elif
veelse
blokları isteğe bağlıdır
Dialogflow CX, yerleşik sistem işlevlerini de kullanabilir. Örneğin, bir tarihi veya saati biçimlendirmek ya da mevcut saati ($sys.func.NOW()
) görüntülemek için
Onay ve Fiyat sayfalarını düzelterek Katalog akışını tamamlayalım.
Onay sayfası:
Şimdi onay sayfasını oluşturacağız. Aşağıdaki şartlara uymalıdır:
- merch değeri CD veya Dijital Albüm ise. Onayda şu alanlar gösterilir: artist, merch, album ve price.
- merch değeri Tişört veya Uzun kollu ise. Onay bölümünde şu alanlar gösterilir: artist, merch, size ve price.
- Aksi takdirde (ve dolayısıyla merch Tour Movie ise). Onayda şu alanlar gösterilir: sanatçı, ürün ve fiyat.
- Onay sayfasını tıklayın.
- Sipariş Karşılamayı Düzenle > Temsilci Yanıtları > İletişim kutusu ekle seçeneği > Koşullu Yanıt'ı tıklayın:
if ($session.params.merch = "CD" OR $session.params.merch = "Digital Album")
The $session.params.merch: $session.params.artist - $session.params.album costs $$session.params.price. Shall I continue to order?
elif ($session.params.merch = "T-shirt" OR $session.params.merch = "Longsleeve")
A $session.params.merch of $session.params.artist size: $session.params.shirtsize costs $$session.params.price. Shall I continue to order?
elif $session.params.merch = "Tour Movie"
The $session.params.merch of $session.params.artist costs $$session.params.price. Shall I continue to order?
else
It looks like something went wrong with your order. You can say "Reset", to restart the order process.
endif
- Create the following Custom payload:
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Yes, confirm"
}
],
"type": "chips"
}
]
]
}
Next, create two intent routes:
confirm.proceed.order
transitions to:Order Process
Flow.decline.proceed.order
transitions toEnd Flow
When the user declines the order, and does not want to proceed the order process, we will have to transition back to the welcome page, but all the parameters have to be cleared. We can do this by specifically setting null to all the possible parameters. You can do this with Parameter presets.
- In the decline.proceed.order intent route, scroll down to Parameter presets and add the following parameters:
Parameter | Value |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Notice that we have created an additional parameter called restart
. If this parameter is present, the Default Start Flow, should know to continue the conversation by showing a customized message.
- Click on the Default Start Flow, Start Page, and create another Conditional Route:
$session.params.restart = "true"
- Fulfillment:
"Welcome back, as the virtual agent of G-Records, I can help you order artists merchandise, you can ask questions about your order or shipping, and I can tell you more which artists are currently signed with us. How can I help?"
- Custom payload:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- Select the Start Page and click on the
redirect.end
intent. Create the following fulfillment:Thank you for contacting G-Records! Have a nice day!
Price Page:
Let's also fix the Price TODOs. The price information will be static for now. Click on the Price Page in the Catalog Flow, and use the following entry fulfillment:
- Delete the Agent Says entry fulfillment.
- Create a new Conditional Response:
if $session.params.category = "shirts"
A t-shirt costs $25 and a longsleeve costs $30.
elif $session.params.category = "music"
A CD costs $15. The digital album on MP3 costs $10.
else
A t-shirt costs $25 and a longsleeve costs $30. A CD costs $15 and a digital album on MP3 $10. In case you are interested in the Tour Movie, that one is $25.
endif
Well done, by now you completed the Catalog flow. Your flow should look similar to this diagram:
8. Wrapping up the agent
We are almost at the end of this lab. Let's configure the last flows together, and take in practice all the new things that we have learned.
Creating the My Order Flow
- Go to the My Order Flow, and create the following intent transitions:
Page (In Flow) | Routes > Intent | Routes > Transition To |
My Order Start |
| My Order |
My Order Start |
| My Order Status |
My Order Start |
| My Order Cancellation |
My Order Start |
| End Session |
My Order Start |
| End Flow |
My Order |
| My Order Status |
My Order |
| My Order Cancellation |
Default Start Flow |
| Flow: My Order |
Default Start Flow |
| Flow: My Order |
- Let's create the following entry fulfillment for the My Order Page:
- Entry fulfillment:
I can look up the status of your order, or I can cancel an order.
- In the My Order Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required: checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Create the following conditional route:
- Customize Expression:
$page.params.status = "FINAL"
- Fulfillment:
And do you want to Cancel your order, or should I look up the status?
- Click on Add state handler > Event Handlers and create the Event Handler:
No-input default
- Fulfillment:
I'm sorry, what was that? Would you like me to cancel an order or look up the status?
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Status"
},
{
"text": "Cancel"
}
],
"type": "chips"
}
]
]
}
- Create the Event Handler:
No-match default
- Fulfillment:
Would you like me to cancel an order or lookup the status?
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Status"
},
{
"text": "Cancel"
}
],
"type": "chips"
}
]
]
}
- In the My Order Status Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- In the My Order Status Page create the following conditional route:
- Customize Expression:
$session.params.ordernumber != null
- Fulfillment:
Your order $session.params.ordernumber has been shipped, it can take up to approx 2 weeks before you will receive your items.
- Add dialogue option > Text:
Is there anything else I can help you with?
- In the My Order Cancelation Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- In the My Order Cancelation Page create the following conditional route:
- Customize Expression:
$session.params.ordernumber != null
- Fulfillment:
Your order $session.params.ordernumber has been canceled.
- Add dialogue option > Text:
Is there anything else I can help you with?
- Test the flow and create the following two test scenarios:
>"About my order"
>"ABCD123"
>"Status"
And:
>"What's the status of order DEFG222"
- Select the Start Page and click on the
redirect.end
intent. Create the following fulfillment:Thank you for contacting G-Records! Have a nice day!
- Select the Start Page and click on the
redirect.home
intent. Create the following parameter preset:restart = true
Default Negative intents (Fallback)
When you create a virtual agent, a default negative intent is created for you. You can add training phrases to this intent that act as negative examples that will trigger a No-match event. There may be cases where end-user input has a slight resemblance to training phrases in normal intents, but you do not want these inputs to match any normal intents.
- Try in the simulator:
I don't like Alice Googler
.
You will see that the virtual agent answers with the Product Overview Page, to continue ordering Alice Googler merchandise. However, your end user does not like that artist. Let's use the Default Negative Intent for this.
- Go to Manage > Intents and select the Default Negative Intent.
- Add the following training phrases that will trigger the No-match event.
I don't like Alice Googler
I am not a fan of G's N' Roses
I can't stand the music of the Google Dolls
- Hit Save and test the following sentence in the simulator:
I am really not a fan of the Goo Fighters
This time the No-match
event was triggered, you stayed on the Start Page.
Default Fallback Messages
- Click the Default Start Flow, select the
sys.no-input-default
event handler.
The No-input fallback basically means: No text or speech answers were detected. Likely no answers were given, or the system couldn't hear it. Therefore, let's make the fallback messages more specific. Use the tab key, to create alternative dialogues:
- Remove all answers, and add these text dialogues:
I'm sorry, I didn't receive an answer. Can you say it again?
I missed your answer, can you say it again?
Sorry, I didn't hear anything. Can you say it again?
I couldn't hear what you were saying, what was that?
I'm sorry, I missed your answer. What were you trying to say?
Don't forget to click Save.
- Click the Default Start Flow, select the
sys.no-match-default
event handler.
The No Match fallback basically means: Text or speech answers were detected but nothing in Dialogflow CX got matched.
- Remove all answers, and add these text dialogues:
Sorry, I didn't get that. Can you please rephrase?
I'm sorry, I don't understand. Can you please rephrase?
I don't understand, please rephrase.
Sorry, I didn't get that. What was that?
I didn't get that, can you please rephrase?
Don't forget to click Save.
- It's advised to repeat these steps for the Catalog, My Order, Order Process and Customer Care flows.
Here's a tip: when creating fallback messages, make them more explicit, by rephrasing the previous question or by mentioning an example. You could create these type of No-match and No-input events on Page level when creating parameters. In our labs, we have already done this.
Creating the Order Process Flow
- Go to the Order Process Flow, and create the following intent transitions:
Page (In Flow) | Routes > Intent | Routes > Transition To |
Order Process Start |
| End Session |
Order Process Start |
| End Flow |
Order Process Start |
| New Page: Shipping Details |
- Let's create the following entry fulfillment for the Shipping Details Page:
- Entry fulfillment:
To complete your order I will first need to collect your shipping details.
- Create the following parameters:
These parameters will make use of built-in system entities. System entity support differs for each language. See the docs for more information.
Parameter Display name | Entity | Required? | Initial prompt fulfillment | No-match default | No-input default |
| @sys.person | Required |
|
|
|
| @sys.person | Required |
|
|
|
| @sys.address | Required |
|
|
|
| @sys.any | Required |
|
|
|
| @sys.geo-city | Required |
|
|
|
| @sys.geo-country | Required |
|
|
|
| @sys.email | Required |
|
|
|
- Create the following conditional route:
- Customize Expression:
$page.params.status = "FINAL"
- Transition to new Page:
Payment Details
- Create the following entry fulfillment.
Let's fake it that this virtual agent makes use of Google Pay. Don't worry this tutorial won't make real transactions. Create the following entry dialogues:
- Agent Says:
Alright $session.params.firstname! We will make use of Google Pay, that's connected to your email account: $session.params.email.
- Conditional Response
if $session.params.merch != "Digital Album"
Shipping costs an additional 5 dollars. This will make the total price $$sys.func.TO_TEXT($sys.func.ADD($session.params.price, 5)).
Your merchandise will be shipped to:
$session.params.firstname $session.params.lastname
$session.params.address
$session.params.zipcode $session.params.city
$session.params.country
To continue the order process please explicitly say "I confirm". Do you want to confirm your $session.params.artist $session.params.merch order?
else
The total costs will be: $$session.params.price.
After purchasing the digital album, you will receive an email with the download link.
To continue the order process please explicitly say "I confirm".
Do you want to confirm your $session.params.artist $session.params.merch order?
endif
- Aşağıdaki intent rotasını oluşturun
- Niyet:
confirm.proceed.order
- Temsilcinin Dediği:
Thank you for your order! Your merchandise will be shipped today!
- Diyalog seçeneği ekle > Metin:
Here's the order number: ABCD123
. - Diyalog Seçeneği Ekle > Metin:
Have a good day!
- Geçiş:
End Session
- Başlangıç sayfasını seçin ve
redirect.end
amacını tıklayın. Aşağıdaki karşılama işlemini oluşturun:Thank you for contacting G-Records! Have a nice day!
- Başlangıç sayfasını seçin ve
redirect.home
amacını tıklayın. Şu parametre hazır ayarını oluşturun:restart = true
Mükemmel! Şu anda, tümüyle çalışan bir gerçek dünya perakendecisi chatbot'umuz var! Bir sonraki laboratuvarda, sanal temsilcinin ne kadar iyi performans gösterdiğini test edeceğiz.
9. Sanal temsilcinizi test etme
Sanal temsilcinizin diyaloglarını test etmek için yerleşik simülasyon aracını kullanabilirsiniz. Akışları simülatörde test etmenin avantajı, simülatörün akışlarınızda gezinirken topladığı akışlara, sayfalara, parametrelere ve (DTMF) etkinliklerine güzel bir genel bakış görmenizdir. Bu tür bilgiler son kullanıcıdan gizleneceği için bu yöntem, doğrudan entegrasyonda test etmekten daha kolay test yapılmasını sağlar. Test senaryoları oluşturabilir, bu test durumlarını kaydedip yeniden kullanabilirsiniz. Bu, zaman içinde akışlarınızı sürdürürken veya düzenlediğinizde, yaptığınız değişikliklerden hiçbirinin önceki çalışmalarınızı etkilemediğinden emin olmak istediğinizde çok mantıklıdır.
Ayrıca, testleri Google Cloud Storage'da veya yerel olarak depolayarak daha önce oluşturulmuş test durumlarını dışa aktarıp içe aktarabilirsiniz. Bir testi dışa aktardığınızda bir blob dosyası indirilir. Simülatör ve test durumları hakkında daha fazla bilgi edinmek için Simülatör / Test Durumları Belgeleri'ne göz atın.
Bazı test durumları oluşturmadan önce, sanal müşterimizin geri kalanını tamamlayalım:
Müşteri hizmetleri akışını oluşturma
- Müşteri Desteği akışına gidin ve aşağıdaki intent geçişlerini oluşturun:
Sayfa (Akışta) | Rotalar > Intent | Rotalar > Geçiş |
Müşteri Hizmetleri Başlangıç |
| Gönderim |
Müşteri Hizmetleri Başlangıç |
| Geri ödeme |
Müşteri Hizmetleri Başlangıcı |
| Değiştiriliyor |
Müşteri Hizmetleri Başlangıcı |
| Akış sonu |
Müşteri Hizmetleri Başlangıç |
| Oturumu Sonlandır |
- Gönderim sayfası için aşağıdaki giriş karşılamalarını oluşturun:
Shipping physical merchandise items can take up to 2 weeks.
Is there anything else I can help you with?
- Geri Ödeme sayfası için aşağıdaki giriş karşılamaları oluşturun:
We offer free returns and refunds. We provide one free return label for each order. You can use it within 30 days from receiving your order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.
Is there anything else I can help you with?
- Değişim sayfası için aşağıdaki giriş karşılamalarını oluşturun:
If you would like to change your item for a different one, please return your unwanted item and place a new order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.
Is there anything else I can help you with?
- Başlangıç sayfasını seçin ve
redirect.end
intent'ini tıklayın. Şu karşılamayı oluşturun:Thank you for contacting G-Records! Have a nice day!
- Başlangıç sayfasını seçin ve
redirect.home
intent'ini tıklayın. Aşağıdaki parametre hazır ayarını oluşturun:restart = true
Test senaryoları oluşturun
- Ekranın sağ tarafındaki Test Aracısı düğmesini tıklayın.
Simülasyon aracını ilk açtığınızda bir temsilci ortamı ve etkin akış seçmeniz gerekir. Çoğu durumda, taslak ortamı ve varsayılan başlangıç akışını kullanmanız gerekir.
- Tür:
Hi
- Sor:
Which artists are signed with your label?
- Şunu söyleyin:
The Google Dolls
- Şunu söyleyin:
I am interested in buying a shirt
- Şunu söyleyin:
A t-shirt
- Şunu söyleyin:
Medium
- Şimdi test kaydı kaydet düğmesini tıklayın. Simülatörün üst kısmında bulabileceğiniz seçenekleri (yeniden yap ve çöp kutusunu sıfırla simgesinin yanında)
- Aşağıdaki bilgileri sağlayın:
- Test kaydı adı:
Buy Google Dolls t-shirt size M
- Etiketler: #catalog, #shirts, #t-shirt, #TheGoogleDolls
- Kaydet'i tıklayın
Daha fazla test senaryosu oluşturalım.
- Öncelikle Sıfırla (çöp kutusu) simgesini tıklayarak mevcut iletişim kutusunu temizleyin.
- Aşağıdaki test senaryolarını oluşturun:
Alice Google çalışanı tişörtünü satın alın:
>"Buy the Alice Googler t-shirt."
>"XL"
- Test kaydı adı:
Buy the Alice Googler t-shirt
- Etiketler:
#catalog, #shirts, #t-shirt, #AliceGoogler
M beden bir tişört satın alın: (Sanatçı adından bahsedilmediğini unutmayın, ancak bantlara genel bakış, ürünlere genel bakış, gömlekler ve gömlek bedenleri sayfalarını atlayın)
>"Buy a t-shirt size M"
>"The Google Fighters"
- Test durumu adı:
Buy a t-shirt size M
- Etiketler:
#catalog, #shirts, #t-shirt, #TheGoogleFighters
- Açıklama: (Sanatçı adından bahsedilmediğini unutmayın, ancak bantlara genel bakış, ürünlere genel bakış, gömlekler ve gömlek bedenleri sayfalarını atlamak istiyorsunuz.)
G's N' Roses'ın müziğini satın alın (Bu işlem, gruplara ve ürünlere genel bakış sayfasını atlar.)
>"Purchase music of G's N' Roses"
>"Live"
>"CD"
- Test kaydı adı:
Purchase music of G's N' Roses
- Etiketler:
#catalog, #music, #CD, #GsNRoses, #live
- Açıklama: (Bu işlemin, bantlara genel bakış ve ürünlere genel bakış sayfasını atacağını unutmayın)
Fiyat bilgilerini kontrol edin:
>"Which products"
>"Shirts"
>"What's the price difference?"
>"Longsleeve"
>"What does it cost?"
>"M"
>"The Google Dolls"
>"No"
>"Which bands"
>"The Gooo Fighters"
>"Music"
>"How much does it cost?"
>"Greatest Hits"
>"What's the price difference?"
>"Mp3"
>"No"
>"I want to buy the tour movie"
>"Alice Googler"
>"Yes"
- Test durumu adı:
Price info
- Etiketler:
#catalog, #music, #tourmovie, #shirts
- Açıklama: Fiyat bilgilerini iletişim kutusunun çeşitli noktalarında test edin
Önceden kaydedilmiş test durumlarını test etme
- Soldaki Dialogflow ana menüsünde Yönet > Test Durumları'nı seçin.
- Tüm test durumlarını seçin ve tablonun üst kısmındaki Çalıştır düğmesine basın.
Dialogflow CX, seçilen tüm test durumlarını "Altın Test Durumu" olarak kaydedilen kayda karşı çalıştırır. Sonuçlar, kaydettiğiniz şekilde aynıysa testler geçer. - Doğru şekilde yapılandırılmamış sayfalar veya sizi yanlış sayfalara yönlendiren intent'ler gibi akışlarda bir değişiklik olduysa testler başarısız olur.
- Simülasyon aracında şu soruyu sorun:
How long will shipping take?
- Sonucu not edin ve test durumunu
#shipping
etiketiyleShipping
olarak kaydedin. - Yalnızca
Shipping
test durumunu çalıştırmak için Yönet > Test Durumları paneline gidin ve tablonun sağ üst kısmındaki Çalıştır düğmesine basın.
Bu testin başarılı olması beklenir.
- Müşteri hizmetleri akışına geri dönün, Başlangıç sayfasını seçin ve Rotalar başlığını tıklayın.
Bu işlem, tüm rotaları gösteren bir ızgara içeren bir ekran gösterir.
redirect.shipping.info route
- Yalnızca
Shipping
test vakasını çalıştırmak için Yönet > Test Vakaları paneline gidin ve ızgaranın sağ üst kısmındaki Çalıştır düğmesine basın.
Bu test başarısız olacaktır.
- Başarısız testin ayrıntılarını görmek için testin kendisini tıklayabilirsiniz.
Bu durumda test, aşağıdaki hata mesajıyla başarısız oldu:
Page: Page mismatch:
Expected: Shipping
Actual: Start Page
Bunun nedeni, sayfanın artık akışta bulunmamasıdır. Shipping
sayfasını beklerken Start
sayfasından hiç ayrılmadık. (veya son kullanıcılarınız yedek bir mesaj alır.)
Diğer bir deyişle, bu bir kaçırılmış istek, Yanlış Negatif test sonucudur. Test başarısız oldu. Gönderim sayfasının gösterilmesini bekledik ancak hiçbir şey olmadı veya yedek bir mesaj gösterildi.
- Müşteri Hizmetleri Akışı'na geri dönün ve
redirect.shipping.info
'yi intent yolu olarak Başlangıç sayfasına ekleyin. Kargo sayfasına geçip Kaydet'e basmayı unutmayın. - Simülasyon aracında aşağıdaki test vakasını kaydedin:
I want to swap my item
. Bu test vakasınıSwapping
#swapping
olarak kaydedin. - Manage >Intents > redirect.refund.info'yu açıp şu eğitim ifadesini ekleyin:
I want to swap this item for a refund
Bu eğitim ifadesi olmasaydı, bir kullanıcı geri ödeme için bir öğeyi değiştirmek istediğinde, redirect.swapping.info amacına ulaşacaktı, ancak öğelerin değiştirilmesi hakkında bilgi vermek değil, geri ödeme hakkında bilgi vermek istiyoruz.
- Simülatörde aşağıdaki altın test vakasını oluşturun:
I want to swap this item for a refund
ve bu test vakasınıSwap for Refund
olarak kaydedin#refund
- Yönet > Intent'ler > redirect.refund.info intent'ine geri dönün ve
I want to swap this item for a refund
satırını kaldırın. - Yönet > Test Örnekleri'ne geri dönün, Geri ödeme karşılığında değişim test örneğini seçin ve Çalıştır'ı tıklayın.
Son testiniz aşağıdaki hata mesajıyla başarısız oldu:
If you would like to change your item for a different one, please return your unwanted item and place a new order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.`
Is there anything else I can help you with?
Page: Page mismatch:
Expected: Refund
Actual: Swapping
Diğer bir deyişle, bu yanlış anlaşılan bir istektir, Yanlış Pozitif test sonucudur. Test başarısız oldu. Geri Ödeme sayfasının açılmasını beklerken Değişim sayfası etkin oldu.
Kapsam
Dialogflow CX'de test kapsamı, belirli bir test paketi çalıştırıldığında sanal temsilcinin (Sayfalar ve Niyetler) diyaloğunun ne kadarının yürütüldüğünü tanımlamak için kullanılan bir ölçüdür. Yüzde olarak ölçülen yüksek test kapsamına sahip bir sanal temsilcinin diyaloglarının daha fazlası test sırasında yürütülmüştür. Bu da, test kapsamı düşük bir sanal temsilciye kıyasla tespit edilmemiş hata (ör. anlaşılmayan isteklerin atlanması) içerme olasılığının daha düşük olduğunu gösterir.
- Tüm test durumları için test kapsamı raporunu görüntülemek üzere Kapsam'ı tıklayın.
- Transitions (Geçişler) sekmesini tıklayın.
Bu sayede tüm sayfa geçişlerinin test kapsamını görebilirsiniz.
- Intents (Amaç) sekmesini tıklayın.
Bu sayfada tüm intent'lerin test kapsamı gösterilir.
Tebrikler. Bu aşamada, gerçek dünyadaki bir perakendeci botunun eksiksiz bir örneğini oluşturup test ettiniz. Sonuçları okumak ve faydalı referanslar bulmak için bir sonraki laboratuvar sayfasına gidelim.
10. Sonuç
Dialogflow CX, sohbet veya sesli botlar gibi sanal aracılar oluşturmaya yönelik bir Etkileşimli Yapay Zeka Platformu'dur (CAIP). Dialogflow CX, ekibinizin görsel bot oluşturucular, yeniden kullanılabilir amaçlar ve çok turlu görüşmeleri ele alma özelliği sayesinde kurumsal düzeyde etkileşimli deneyimler oluşturma hızını artırmasını sağlar.
Bu codelab'de, gerçek dünyadaki bir perakende sanal temsilciyi nasıl oluşturacağınızı öğrendiniz. Aşağıdaki kavramları ele aldık:
- Akışlar
- Parametreler, Özel ve Sistem Varlıkları
- Pages
- Intent rotaları ve koşul rotaları gibi durum işleyicileri
- Statik Sonuç Mesajları ve Koşullu Yanıtlar
- Yedek intent'ler
- Simülasyon, Test Örnekleri ve Kapsam
Referanslar
Dialogflow CX hakkında daha fazla bilgi edinmek için aşağıdaki blog ve belgelere göz atın.