1. Başlamadan önce
Bu codelab'de, etkileşimli kullanıcı arayüzleri oluşturmaya yönelik bir Conversational AI Platformu (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. Sohbet botunu oluşturduğumuz hayali 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ünlerini 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ı 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 sayfa geçişlerini nasıl yapacağınızı öğ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
Nihai Dialogflow CX temsilcisi tasarımı şu şekilde 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 grup 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ştururken 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'u kullanmak için projeniz için Dialogflow API'yi etkinleştirmeniz gerekir.
- API'yi etkinleştirmek istediğiniz projeyi seçip Devam'ı 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:
- İstediğiniz 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 oluşturduğumuz ve grup ürünlerini satan chatbot'ta ürün kataloğu, ödeme, sipariş durumu ve müşteri hizmetleri sorularıyla ilgili diyaloglar yer alır. Bu sohbet konularını akışlara bölebiliriz.
Akışlar, ekiplerin tek tek sohbet yollarında çalışmasını sağlar. Akışları basitleştirmek, ekrana kolayca sığmalarını ve daha modüler olmalarını sağlar.
Akışlar, Dialogflow CX'te yeni bir kavramdır. Dialogflow Essentials'ta, akışlara benzer bir şekilde Mega Agents kavramı vardır. Ancak akışları çok daha sık kullanırsınız.
Bu laboratuvarın ilerleyen bölümlerinde, bir akışı sonlandırabilen (böylece bir sonraki veya önceki akışa geri atlar) durum işleyicileri kullanacağız. Dilerseniz müşteri temsilcisi oturumunu tamamen sonlandırabilirsiniz.
Şimdi bazı akışlar oluşturalım.
Akış Oluşturma
- Dialogflow CX'de + simgesini > Akış oluştur'u tıklayın.
- Adı belirtin:
Catalog
ve Enter tuşuna basın.
İlk akışınız Katalog oluşturuldu. Ardından 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 sayede görselleştirmenin sonunda aşağıdaki gibi görünmesini sağlayacağız:
Simülatör
Dialogflow CX Konsolu'nun sağ tarafında, yerleşik simülatörle sanal aracı test edebilirsiniz. Görüşmeyi başından veya belirli bir akıştan test edebilirsiniz.
- Ekranınızın sağ üst kısmındaki Test Aracısı düğmesini tıklayın.
- Temsilciyle konuş alanına şunu 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 Route 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.
Niyet, son kullanıcının bir konuşma dönüşümündeki amacını kategorize eder. Dialogflow CX'te intent'ler, bir sonraki etkin sayfayı veya yerine getirmeyi yönlendirmek için durum işleyicinin parçası olabilir.
- Tüm Temsilcinin söylediği girişlerini kaldırın ve ş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 verileri hakkında daha fazla bilgi edinmek için dokümanlara göz atın.
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- Ardından, karşılama amacını simülatörde 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 hesabınız yoksa bu adımları atlayabilirsiniz.
- Sol kenar çubuğunda Yönet > Entegrasyonlar'ı tıklayın.
- Dialogflow Messenger'ı seçin ve 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şebilen önceden tanımlanmış sistem öğeleri sağlar. Ö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 varlıklarınızı da oluşturabilirsiniz.
Sayfaları bir akışta tasarlayabilmek için önce tüm özel öğeleri hazırlayarak başlayalım. Aşağıdaki varlıkları oluşturacağız:
Öğe Oluşturma
Bir Sanatçı öğesi oluşturalım.
- Yönet > Öğe Türleri'ni tıklayın.
- + Oluştur'u tıklayın.
- Görünen ad:
Artist
- Varlıklar:
The Google Dolls
(eş anlamlı: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. (Bant adını yanlış yazsanı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
Merch öğesi için de bir öğeye ihtiyacımız var:
- Yönet > Öğe 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ı:MP3 Album
,MP3
)CD
(Disc
,Physical CD
eş anlamlılarıyla)
- Kaydet'i tıklayın
Albüm 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:
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ı: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ğıdaki gibi görünmelidir:
@Sanatçı:
@Merch:
@Albüm:
@ShirtSize:
@OrderNumber:
Özel varlıklar hazırlandıktan sonra niyetleri hazırlayabiliriz. Laboratuvara devam edelim.
5. Niyetler
Intent, son kullanıcının bir konuşma dönüşümündeki niyetini kategorize eder. 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. Bu nedenle, intent 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ışta tasarlamadan önce tüm amaçları hazırlayarak başlayalım.
- Yönet > Intent'ler'i 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 amacı tetikleyebileceği farklı yolları kapsayacak şekilde her amaç 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 olmadığında 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. Bu sayfaların birleşimi, akışın tasarlandığı konularla ilgili tüm bir sohbeti işleyebilir. 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 mevcut sayfa aynı kalır veya başka bir sayfaya geçer. Bu kavram, birçok sayfa ve birden fazla konuşma dönüşümü içeren 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. Sohbet kontrolü, durum işleyicileri aracılığıyla gerçekleşir. Bu işleyiciler, başka bir Dialogflow CX sayfasına geçiş yapmak için çeşitli geçiş yolları oluşturmanıza olanak tanır. Bu yolları koşullu hale getirebilirsiniz (sohbetlerin dallanması için).
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şleyicileri: 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 yerine getirme: Dinamik yanıtlar için bir yerine getirme 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, bir ürün 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
- Geçiş'e gidin ve 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ış İçinde) | Rotalar > Intent | Rotalar > Geçiş |
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çenekleri yerine sohbet tarafından yönlendirilir ve daha doğal ve insana benzer bir şekilde gerçekleşir.
Katalog akışında sayfaları 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ışında bulunan tüm sayfaların akış şemasını aşağıda bulabilirsiniz:
Bu akıştaki karmaşıklığa 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 Fiyat sayfasından gelir.
- Tur filmindeki diyalog en basit diyalog gibi görünse de aslında bununla özel bir şey yapacağız. Son kullanıcılar tüm bilgileri aynı anda uzmanlaştırırsa son kullanıcılar bu diyaloğun bu bölümünü 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'e bası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ş Yapılacak, oluşturacağınız ve 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ış sonu |
Sanatçıya Genel Bakış |
| Ürüne Genel Bakış |
Şimdi devam edip daha fazla statik karşılama 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 oluşturmak 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 karşılamaları gösterilir. Bu yanıt mesajları yanıt kuyruğuna 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 yerine getirmelerin 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ındaki parametreleri oluşturma
Bazı sayfa parametrelerini tanımlayalım:
- Katalog akışında Sanatçıya Genel Bakış sayfasını tıklayın.
- Parametreler bloğundaki + simgesini 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. Sanatçı parametresi henüz sanal müşteri temsilcisi tarafından toplanmamışsa son kullanıcıya yanıt kuyruğuna eklenen şu müşteri temsilcisi yanıtı gösterilir:
From which of these artists would you like to order merchandise?
- Zengin öneri çipleri sunan ikinci bir iletişim kutusu seçeneği ekleyin. Sohbet seçeneği ekle'yi tıklayın ve şu kodu (JSON biçiminde) kullanın:
{
"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şleyicileriyle 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, giriş yok durumunda kullanıcının hiçbir zaman yanıt vermemesi, eşleşme yok durumunda ise kullanıcının yanıt vermesi ancak Dialogflow CX'nin bu yanıtı bir sayfayla eşleştirememesidir.
- Yeniden istem etkinliği işleyicileri bölümüne gidin.
- 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 kullanıldığında çok güçlüdür. Bir koşul doğru olarak değerlendirildiğinde ilişkili 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. Parametreler ve koşullar hakkında daha fazla bilgiyi Dialogflow CX dokümanlarında bulabilirsiniz.
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çı bilindiğinde bir sonraki sayfaya geçiş yapacak koşullu bir 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 tane'yi (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. Geçiş bölümüne gidin ve aşağıdaki 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
parametresi 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?
- Şunu tıklayın: Sohbet seçeneği ekle > Özel veri yükü:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Etkinlik İşleyici >
No-match default
- Etkinlik İşleyicisi Sağlaması:
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 Sağlaması:
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 kuralla eşle (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 uygulanacak bir rota oluşturun
- Niyet: redirect.shirts
- Geçiş: Sayfa:
Shirts
- Kullanıcı "Müzik" dediğinde uygulanacak bir rota oluşturma
- Niyet: redirect.music
- Geçiş: Sayfa:
Music
- Kullanıcı fiyat bilgisi istediğinde bir rota oluşturma
- 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 Parametreler'e dayalı Intent Rotaları ve Koşullu Rotalar gibi Durum İşleyiciler ile Akışlar, Öğeler, Intent'ler ve Sayfalar oluşturmayı öğrendiniz. Bu laboratuvarın ilerleyen bölümlerinde, girişe göre farklı diyaloglar sunmak için yerine getirme işleminde koşullu dallanma 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
,Price
sayfasına geçiş yapar. - 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ı etkinleştirildiğinde kategori parametresi gömlekler olarak ayarlanır:
Parametre | Değer |
|
|
- Koşullu rota ekleme:
- En Az Bir Kuralla Eşleş (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. Şu an için bir yer tutucu girmek yeterlidir.
- 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 kuralla eşle (VE)
- İfade:
$session.params.category = "shirts"
- İfade:
$session.params.merch = "null"
- Yeni sayfaya geçiş:
Shirts
- Koşullu rota ekleme:
- Her kuralla eşle (VE)
- İfade:
$session.params.category = "shirts"
- İfade:
$session.params.size = "null"
- Yeni sayfaya geçiş:
Shirt Size
- Koşullu rota ekleme:
- Her kuralla eşle (VE)
- İfade:
$session.params.category = "music"
- İfade:
$session.params.album = "null"
- Yeni sayfaya geçiş:
Music
- Koşullu rota ekleme:
- Her kuralla eşle (VE)
- İfade:
$session.params.category = "music"
- İfade:
$session.params.merch = "null"
- Yeni sayfaya geçiş:
Carrier
- Koşullu rota ekleme:
- Her kuralla eşle (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 kuralla eşle (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 İşleyicisi Yerine Getirme:
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 kuralla eşle (VE)
- İfade:
$page.params.album != "null"
- Geçiş yapılacak sayfa:
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ş yapanredirect.price
intent rotası oluşturun.- 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 ekleme:
- Her kuralla eşle (VE)
- İfade:
$page.params.merch != "null"
- Geçiş yapılacak sayfa:
Product
Ürün Sayfası:
- Aşağıdaki parametreleri oluşturun:
Parametre Görünen Adı | Parametre Tüzel Kişi Türü | Kontroller |
|
| Zorunlu, Günlükte çıkartın |
|
| Zorunlu, Günlükte çıkartın |
- artist parametresi, sanatçı bilinmediğinde gösterilecek olan aşağıdaki ilk istem karşılama işlemini gerektirir.
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, yerine getirme işlemi içeren bir
No-input default
etkinlik işleyicisi ekleyin:I couldn't understand what you just said. Ask me which artists are signed.
- Ayrıca, sipariş karşılama işlemi içeren 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, sipariş karşılama işlemi içeren 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 kuralla eşle (VE)
- İfade:
$session.params.artist != null
- İfade:
$session.params.merch = "Tour Movie"
- Parametre hazır 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çı belirlendiğinde, kullanıcı "Uzun kollu"yu seçtiğinde ve gömlek bedeni belirlendiğinde sonraki rota onay sayfasına yönlendirir.
- Koşullu rota ekleme:
- Özel ifade:
$session.params.artist != null AND $session.params.merch = "Longsleeve" AND $session.params.shirtsize != null
- Parametre hazır ayarları Parametre ekle >
price = 30
- Geçiş yapılacak sayfa:
Confirmation
Sanatçı bilindiğinde ve kullanıcı "CD" seçtiğinde ve albüm adı da seçildiğinde sonraki rota onay sayfasına geçiş yapar.
- 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çı bilindiğinde ve kullanıcı "Dijital Albüm" seçtiğinde ve albüm adı seçildiğinde sonraki rota onay sayfasına geçiş yapar.
- Koşullu rota ekleme:
- Ö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 ifade:
$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!
- Geçiş yapılacak sayfa:
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 ekleme:
- Ö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!
- Geçiş yapılacak sayfa:
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 göre 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 istek karşılama işlemlerini kullanmıyorsanız bu durum ilginç olabilir. Ö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. Onayda şu alanlar gösterilir: sanatçı, ürün, beden ve fiyat.
- 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şin yerine getirilmesini düzenleyin > Temsilci yanıtları > Sohbet 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
intent'ini 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
intent'ini tıklayın. Aşağıdaki parametre hazır ayarını oluşturun:restart = true
Mükemmel! Şu anda gerçek dünyada faaliyet gösteren bir perakendeci 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ğinden, bu durum test yapmayı doğrudan entegrasyonda test etmekten daha kolay hale getirir. Test durumları oluşturmak, bunları kaydetmek ve yeniden kullanmak da mümkündür. Bu, zaman içinde akışlarınızı düzenlediğinizde veya sürdürdüğünüzde ve yaptığınız değişikliklerin hiçbirinin önceki çalışmalarınızı bozmadığından emin olmak istediğinizde çok kullanışlı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ülasyon aracı ve test örnekleri hakkında daha fazla bilgi edinmek için Simülasyon Aracı / Test Örnekleri Dokümanları'na göz atın.
Bazı test durumları oluşturmadan önce, sanal temsilcimizin 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ış İçinde) | Rotalar > Intent | Rotalar > Geçiş |
Müşteri Hizmetleri Başlangıç |
| Gönderim |
Müşteri Hizmetleri Başlangıç |
| Geri ödeme |
Müşteri Hizmetleri Başlangıç |
| Değişim |
Müşteri Hizmetleri Başlangıç |
| 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ını 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. 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
intent'ini tıklayın. Aşağıdaki parametre hazır ayarını oluşturun:restart = true
Test durumları oluşturma
- 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ı kullanmalısınız.
- 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. Bu düğmeyi simülatörün üst kısmında (yeniden yap okunun ve sıfırla çöp kutusu simgesinin yanında) bulabilirsiniz.
- 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 Googler 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 bahsedilmemiştir ancak gruplara genel bakış, ürünlere genel bakış, gömlekler ve gömlek bedeni sayfalarını atlamak istiyorsunuz)
>"Buy a t-shirt size M"
>"The Google Fighters"
- Test kaydı adı:
Buy a t-shirt size M
- Etiketler:
#catalog, #shirts, #t-shirt, #TheGoogleFighters
- Açıklama: (Sanatçı adından bahsedilmemiştir ancak gruplara genel bakış, ürünlere genel bakış, gömlekler ve gömlek bedeni 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şlem, bantlara ve ürünlere genel bakış sayfasını atlayacaktır.)
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 kaydı 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
olarak kaydedin. Etiketi:#shipping
olarak ayarlayın. - 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 geçilmelidir.
- 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 olur.
- 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. - Yönet > Intent'ler > redirect.refund.info'yu açın ve aşağıdaki eğitim ifadesini ekleyin:
I want to swap this item for a refund
Bu eğitim ifadesi olmadan, kullanıcı geri ödeme için bir öğeyi değiştirmek istediğinde redirect.swapping.info isteği tetiklenir. Ancak biz öğe değiştirmeyle ilgili değil, geri ödemelerle ilgili 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.
- Geçişler sekmesini tıklayın.
Bu sayfada, tüm sayfa geçişlerinin test kapsamı gösterilir.
- 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 bazı 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 çoklu turlu sohbetleri 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 bloglara ve dokümanlara göz atın.