Dialogflow CX: Perakende sanal aracı oluşturma

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.

Nihai Sonuç

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:

Nihai Sonuç

İ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.

Yeni proje oluştur

Dialogflow API'yi etkinleştirme

Dialogflow'dan yararlanabilmek için projenizde Dialogflow API'yi etkinleştirmeniz gerekir.

  1. API'yi etkinleştirmek istediğiniz projeyi seçin ve Continue (Devam) seçeneğini tıklayın.
  2. API'ler ve Hizmetler menüsünü daraltın ve Kimlik Bilgileri Oluştur'u tıklayın.
  3. Uygulama Verileri'ni tıklayın.
  4. Şu anda Kubernetes Engine, App Engine veya Cloud Functions kullanmıyorsanız Hayır, kullanmıyorum deyin.
  5. Bitti'yi tıklayın

Kimlik Bilgilerini Ayarlama

Yeni bir Dialogflow CX aracısı oluşturma

Yeni bir Dialogflow CX temsilcisi oluşturmak için önce Dialogflow CX Konsolu'nu açın:

  1. Daha önce oluşturulan Google Cloud projesini seçin.
  2. 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.

Aracı Oluşturma

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.

Perakende Akışı

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

  1. Dialogflow CX'de + simgesini > Akış oluştur'u tıklayın.
  2. Catalog adını belirtin ve Enter tuşuna basın.

Akış oluşturma

İlk akışınız Katalog oluşturuldu. Şimdi diğer akışları oluşturun:

  • Order Process
  • My Order
  • Customer Care

Akışlar

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:

Akış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.

  1. Ekranınızın sağ üst kısmındaki Test Agent (Aracıyı Test Et) düğmesini tıklayın.
  2. 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?

Simülatör

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.

  1. 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.

  1. 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.

  1. 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.

  1. İletişim seçeneği ekle > Özel veri yükü'nü tıklayın ve aşağıdaki kod snippet'ini kullanın.
  2. Ö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..."
            }
          ]
        }
      ]
    ]
  }

Varsayılan Karşılama Niyeti

  1. 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.

  1. Sol kenar çubuğunda Yönet > Entegrasyonlar'ı tıklayın.
  2. Dialogflow Messenger'ı seçip Bağlan'ı tıklayın.
  3. Pop-up'ta Etkinleştir'i tıklayın.

Entegrasyon Etkinleştirme

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.

Dialogflow Messenger'ı Şimdi Deneyin

  1. Şimdi Dene bağlantısını tıklayın.
  2. Sohbet penceresini açmak için sağ alttaki chatbot simgesini tıklayın. Görüşmeye başlamak için Hello yazın.

Dialogflow Messenger'ı Şimdi Deneyin

Ş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:

Dialogflow varlıkları

Varlık Oluşturma

Bir Sanatçı öğesi oluşturalım.

  1. Yönet > Varlık Türleri'ni tıklayın.
  2. + 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.)
  1. Kaydet'i tıklayın

Ürün öğesi için de bir tüzel kişi gerekir:

  1. Yönet > Varlık Türleri'ni tıklayın.
  2. + 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)
  1. Kaydet'i tıklayın

Albüm için de bir öğeye ihtiyacınız olacaktır:

  1. Yönet > Öğe Türleri'ni tıklayın.
  2. + Oluştur'u tıklayın.
  • Görünen ad: Album
  • Varlıklar:
  • Live
  • Greatest Hits (eş anlamlı: Hits)
  1. Kaydet'i tıklayın

Giyim boyutları için de bir öğeye ihtiyacımız vardır:

  1. Yönet > Öğe Türleri'ni tıklayın.
  2. + 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
  1. Kaydet'i tıklayın

Ayrıca, genellikle 4 alfanümerik ve 3 rakamdan oluşan sipariş numaraları için bir öğe. (ör. ABCD123)

  1. Yönet > Öğe Türleri'ni tıklayın.
  2. + Oluştur'u tıklayın.
  • Görünen ad: OrderNumber
  • Regexp varlıkları
  • Öğe: [A-Z]{4}[0-9]{3}
  1. Kaydet'i tıklayın

Varlık yapılandırmanız aşağıdakine benzer bir görünümde olacaktır:

@Sanatçı: @Artist Varlık Türü

@Merch: @Logolu Ürünler Tüzel Kişi Türü

@Albüm: @Album Varlık Türü

@ShirtSize: @ShirtSize Varlık Türü

@Sipariş Numarası: @OrderNumber Varlık Türü

Ö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.

  1. Yönet > Amaçlar'ı tıklayın.
  2. + 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

Yeni Amaç

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

Eğitim ifadeleri

  1. Kaydet'i tıklayın.
  1. Ş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

redirect.product.overview

"Which products do you sell?", "What merchandise items do you have?", "What are you selling?", "What are the items?", "Which products?" "What merchandise?", "Please tell me what you have"

confirm.artists.overview

"Yeah, let me buy merchandise", "Yes, I want to purchase something", "Yes, I would like to order merchandise from Alice Googler" (Not: Alice Googler, @Artist öğesi olarak tanınmalıdır.), "Ok, let's buy stuff."

redirect.price

"How much does a t-shirt cost?", "What's the price for the tour movie?", "The album is how much?", "I want to know the price of a longsleeve shirt", "What's the price difference?", "What does each product costs?", "What does it cost?", "What is the price?"

redirect.product

"Tour movie", "I am interested in a t-shirt", "Can I buy a digital album?", "I want the CD", "I want to buy something", "Can I purchase a record?", "I want to buy a t-shirt size M of The Google Dolls", "Can I purchase the Alice Googler digital album?"

redirect.product.of.artist

"Yeah, let's shop", "Give me merch of Alice Googler", "Shirts of The Google Dolls that would be nice.", "Yes", "I want The Goo Fighters stuff", "Yes, I want to order merchandise", "Yep, give me items of G's N' Roses", "Go for it", "Anything Alice Googler", "I am a G's N' Roses fan!", "Google Dolls", "Yes of The Google Dolls"

redirect.shirts

"Shirts", "I want to buy shirts", "I am interested in shirts", "I want a shirt", "Shirts of G's N' Roses please", "Give me shirts of the Google Dolls", "I want to buy shirts of Alice Googler"

redirect.music

"Music", "I want to buy music", "I am interested in music", "Give me music of the Goo Fighters", "Music of Goo Fighters please", "Interested in buying the Alice Googler album", "Purchase Alice Googler music"

redirect.album

"Hits", "Live Album", "I want the Greatest Hits Digital Album", "Give me the Greatest Hits CD", "Hits on MP3"

redirect.shirt.size

"XS", "I have M", "I want Large", "My size is 3XL", "Extra Large is the size"

redirect.my.order

"About my order", "I have a question about my order", "My order is ABCD123, I have a question about my order."

status

redirect.my.order.status

redirect.my.order.canceled

"I want to cancel my order", "I want to cancel order ABCD123", "Please cancel order ABCD123", "Undo my order", "Stop my order", "Cancel"

redirect.shipping.info

"How long will it take?", "How long is shipping?", "How long does shipping take?", "When will I receive it?"

redirect.refund.info

"I want a refund.", "Can I get a refund", "I want to return the CD", "I want to return my t-shirt"

redirect.swapping.info

"I want to swap my item", "Can I change my t-shirt for a larger size?", "Can I change my product?", "I want to swap the CD"

redirect.order.process

"I want to buy a t-shirt of the Google Dolls, size S", "Let me buy the digital CD of Alice Googler", "Get me the tour movie of G's N' Roses", "Buy a longsleeve shirt of The Goo Fighters", "Purchase the Alice Googler t-shirt", "Please order me the Google Dolls CD"

confirm.proceed.order

"Yes", "Yes, please continue", "Yes order", "I want to order", "Yeah", "Yep", "I confirm", "Agree", "Go ahead", "Order", "Buy it", "Purchase", "Okay"

decline.proceed.order

"No", "I rather not", "I don't want it anymore", "Don't order", "Stop", "Not anymore", "Nope", "Go back", "Reset", "Decline", "I don't need it"

redirect.home

"Go back", "Home", "Help", "What else can I ask", "Restart", "Can you tell me what I can order?", "What questions can I ask", "I need help", "Advice please", "Hi", "Hello", "Good day!"

redirect.end

"No that's it, goodbye", "Bye", "Cheers", "End", "That's it", "No more questions", "Exit", "Have a good day", "End Call", "Close"

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:

Katalog Bağlı Sayfaları

Bu bağlantıyı birlikte tıklayalım:

  1. Derle > Varsayılan Başlangıç Akışları'nı tıklayın.
  2. Başlangıç Sayfası'nı tıklayın.
  3. Rotalar'ın yanındaki + simgesini tıklayın.
  4. redirect.artists.overview parametresini ekleyin.
  5. Transition (Geçiş) bölümüne gidin ve Catalog (Katalog) akışına geçin.
  6. Kaydet'i tıklayın.
  7. 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ıç

Default Welcome Intent

-

Başlangıç

redirect.artists.overview

Akış: Katalog

Başlangıç

redirect.product.overview

Akış: Katalog

Başlangıç

redirect.shirts

Akış: Katalog

Başlangıç

redirect.music

Akış: Katalog

Başlangıç

redirect.product

Akış: Katalog

Başlangıç

redirect.product.of.artist

Akış: Katalog

Başlangıç

redirect.refund.info

Akış: Müşteri Desteği

Başlangıç

redirect.shipping.info

Akış: Müşteri Desteği

Başlangıç

redirect.swapping.info

Akış: Müşteri Desteği

Başlangıç

redirect.my.order

Akış: Siparişim

Başlangıç

redirect.my.order.canceled

Akış: Siparişim

Başlangıç

redirect.my.order.status

Akış: Siparişim

Başlangıç

redirect.end

Sayfa: Oturumu Sonlandır

Varsayılan Başlangıç Sayfası Rotaları

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.

Varsayılan Başlangıç Sayfası Rotaları

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:

Katalog Bağlı Sayfaları

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.

  1. Derle > Katalog'u tıklayın.
  2. Başlangıç Sayfası'nı tıklayın.
  3. Rotalar'ın yanındaki + simgesini tıklayın.
  4. redirect.artists.overview parametresini ekleyin.
  5. Geçiş'e gidin, Sayfa'yı seçin ve + yeni Sayfa'yı seçin.
  6. Sayfa adını kullanın: Artist Overview ve Kaydet'i tıklayın.

Akıştaki diğer adımları tamamlayalım:

  1. Ö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ı

redirect.artists.overview

Sanatçıya Genel Bakış

Katalog Başlangıcı

redirect.product

Ürün

Katalog Başlangıcı

redirect.product.overview

Ürüne Genel Bakış

Katalog Başlangıcı

redirect.product.of.artist

Ürüne Genel Bakış

Katalog Başlangıcı

redirect.shirts

Gömlekler

Katalog Başlangıcı

redirect.music

Müzik

Katalog Başlangıcı

redirect.end

Oturumu Sonlandır

Katalog Başlangıcı

redirect.home

Akışı Bitir

Sanatçıya Genel Bakış

redirect.product.of.artist

Ürüne Genel Bakış

Şimdi devam edelim ve daha fazla statik karşılama işlemi ekleyelim.

  1. Katalog akışında Sanatçıya Genel Bakış sayfasını tıklayın.
  2. Giriş karşılama bölümünde Karşılamayı düzenle'yi tıklayın.
  3. 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.
  1. Kaydet'i tıklayın
  2. Katalog akışında Ürüne Genel Bakış sayfasını tıklayın.
  3. Giriş karşılama bölümünde Karşılamayı düzenle'yi tıklayın.
  4. Aşağıdaki statik karşılama metnini kullanın (Müşteri temsilcisi diyor):
  • We sell shirts, music or the tour movie.
  1. 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:

  1. Katalog akışında Sanatçıya Genel Bakış sayfasını tıklayın.
  2. 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
  1. Ş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?

  1. 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.

  1. Yeniden istem etkinlik işleyicileri bölümüne ilerleyin.
  2. Etkinlik işleyici ekle'yi tıklayın ve etkinliği seçin: No-match default
  3. 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?

  1. Kaydet'i tıklayın
  2. Etkinlik işleyici ekle'yi tıklayın ve etkinliği seçin: No-input default
  3. 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?

  1. 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:

  1. Sanatçıya Genel Bakış sayfasında Rotalar bölümündeki + simgesini tıklayın.
  2. Durum bölümüne gidin.
  3. En az bir'i (VEYA) seçin
  4. Ardından,
  • Parametre: $page.params.status
  • Operatör: =
  • Değer: "FINAL"
  1. Ş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!
  1. 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
  2. Kaydet'i tıklayın.

Parametreler

Ü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ış

  1. Ü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"
      }
    ]
  ]
}
  1. 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"
            }
          ]
        }
      ]
    ]
  }
  1. artist sağlandığında ve merch öğ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
  1. Kullanıcı "Gömlekler" dediğinde bir rota oluşturma
  • Niyet: redirect.shirts
  • Geçiş: Sayfa: Shirts
  1. Kullanıcının "Müzik" dediği an için bir rota oluştur
  • Niyet: redirect.music
  • Geçiş: Sayfa: Music
  1. 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.

Katalog akışının başlangıcı

Ş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ı:

  1. 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?"
            }
          ]
        }
      ]
    ]
  }
  1. Intent rotası oluşturun: redirect.price sayfasından Price sayfasına geçiş
  2. Aşağıdaki parametreyi oluşturun:
  • Parametre: merch - Varlık Türü: @Merch, Required ve Redact 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"
            }
          ]
        }
      ]
    ]
  }
  1. 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

category

shirts

  1. 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.

  1. 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:

  1. Koşullu rota ekleme:
  • Her kurala uyma (VE)
  • İfade: $session.params.category = "shirts"
  • İfade: $session.params.merch = "null"
  • Yeni sayfaya geçiş: Shirts
  1. Koşullu rota ekleme:
  • Her kurala uyma (VE)
  • İfade: $session.params.category = "shirts"
  • İfade: $session.params.size = "null"
  • Yeni sayfaya geçiş: Shirt Size
  1. Koşullu rota ekleme:
  • Her kurala uyma (VE)
  • İfade: $session.params.category = "music"
  • İfade: $session.params.album = "null"
  • Yeni sayfaya geçiş: Music
  1. Koşullu rota ekleme:
  • Her kurala uyma (VE)
  • İfade: $session.params.category = "music"
  • İfade: $session.params.merch = "null"
  • Yeni sayfaya geçiş: Carrier
  1. Koşullu rota ekleme:
  • Her kurala uyma (VE)
  • İfade: $session.params.category = "null"
  • Yeni sayfaya geçiş: Product Overview

Gömlek Bedeni Sayfası:

  1. 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"
            }
          ]
        }
      ]
    ]
  }
  1. Price Sayfasına geçiş içeren bir intent rotası: redirect.price oluşturun.
  2. 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"
            }
          ]
        }
      ]
    ]
  }
  1. Koşullu rota ekleme:
  • Her kuralı eşleştir (VE)
  • İfade: $page.params.shirtsize != "null"
  • Geçiş yapılacak sayfa: Product

Müzik Sayfası:

  1. 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?"
            }
          ]
        }
      ]
    ]
  }
  1. Price sayfasına geçiş içeren bir Intent Rotası: redirect.price oluşturun.
  2. 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"
            }
          ]
        }
      ]
    ]
  }
  1. 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

category

music

  1. Koşullu rota ekleme:
  • Her kuralı eşleştir (VE)
  • İfade: $page.params.album != "null"
  • Şu sayfaya geçiş: Carrier

Operatör sayfası:

  1. 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?"
            }
          ]
        }
      ]
    ]
  }
  1. Price sayfasına geçiş yapan bir Intent rotası oluşturun: redirect.price.
  2. 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"
            }
          ]
        }
      ]
    ]
  }
  1. Koşullu Rota ekleyin:
  • Her kurala uyma (VE)
  • İfade: $page.params.merch != "null"
  • Şu sayfaya geçiş: Product

Ürün Sayfası:

  1. Aşağıdaki parametreleri oluşturun:

Parametre Görünen Adı

Parametre Varlık Türü

Kontroller

artist

@Artist

Zorunlu, Günlükte çıkartın

merch

@Merch

Zorunlu, Günlükte çıkartın

  1. 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.
  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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 ve else 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.
  1. Onay sayfasını tıklayın.
  2. 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
  1. Create the following Custom payload:
  • Custom payload:
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "Yes, confirm"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}

Next, create two intent routes:

  1. confirm.proceed.order transitions to: Order Process Flow.
  2. decline.proceed.order transitions to End 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.

  1. In the decline.proceed.order intent route, scroll down to Parameter presets and add the following parameters:

Parameter

Value

artist

null

merch

null

shirtsize

null

category

null

album

null

price

null

restart

true

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.

  1. 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..."
            }
          ]
        }
      ]
    ]
  }
  1. 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

Conditional Responses

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

  1. Go to the My Order Flow, and create the following intent transitions:

Page (In Flow)

Routes > Intent

Routes > Transition To

My Order Start

redirect.my.order

My Order

My Order Start

redirect.my.order.status

My Order Status

My Order Start

redirect.my.order.canceled

My Order Cancellation

My Order Start

redirect.end

End Session

My Order Start

redirect.home

End Flow

My Order

redirect.my.order.status

My Order Status

My Order

redirect.my.order.canceled

My Order Cancellation

Default Start Flow

redirect.my.order.canceled

Flow: My Order

Default Start Flow

redirect.my.order.status

Flow: My Order

  1. 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.
  1. 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?
  1. 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?
  1. 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"
      }
    ]
  ]
}
  1. 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"
      }
    ]
  ]
}
  1. 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?
  1. 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?
  1. 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?
  1. 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?
  1. Test the flow and create the following two test scenarios:
>"About my order"
>"ABCD123"
>"Status"

And:

>"What's the status of order DEFG222"
  1. 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!
  2. 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.

  1. 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.

  1. Go to Manage > Intents and select the Default Negative Intent.
  2. 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
  1. 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

  1. 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:

  1. 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.

  1. 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.

  1. 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.

  1. 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

  1. Go to the Order Process Flow, and create the following intent transitions:

Page (In Flow)

Routes > Intent

Routes > Transition To

Order Process Start

redirect.end

End Session

Order Process Start

redirect.home

End Flow

Order Process Start

confirm.proceed.order

New Page: Shipping Details

  1. 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.
  1. 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

firstname

@sys.person

Required

What's your first name?

I'm sorry I missed that. What's the first name?

I'm sorry, I didn't understand. What's the first name?

lastname

@sys.person

Required

What's your last name?

I'm sorry I missed that. What's the last name?

I'm sorry, I didn't understand. What's the last name?

address

@sys.address

Required

What's your address?

I missed that. What's the address?

I'm sorry, I didn't understand. What's the address?

zipcode

@sys.any

Required

What postal code or zipcode do you have?

I'm sorry, what's the zip or postal code? For example: 1234AB or 10001.

I'm sorry, I didn't understand. What's the zip or postal code? For example: 1234AB or 10001.

city

@sys.geo-city

Required

What's the name of the city?

I missed that, what's the name of the city?

I'm sorry, I didn't understand. What's the name of the city?

country

@sys.geo-country

Required

What's the name of the country?

I missed that, what's the name of the country?

I'm sorry, I didn't understand. What's the name of the country?

email

@sys.email

Required

Lastly, what's your email address?

I am sorry. What's the email address? For example name@domain.com.

I am sorry, I didn't understand. What's the email address? For example name@domain.com.

  1. Create the following conditional route:
  • Customize Expression: $page.params.status = "FINAL"
  • Transition to new Page: Payment Details
  1. 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
  1. 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
  1. 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!
  2. 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

  1. 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ıç

redirect.shipping.info

Gönderim

Müşteri Hizmetleri Başlangıç

redirect.refund.info

Geri ödeme

Müşteri Hizmetleri Başlangıcı

redirect.swapping.info

Değiştiriliyor

Müşteri Hizmetleri Başlangıcı

redirect.home

Akış sonu

Müşteri Hizmetleri Başlangıç

redirect.end

Oturumu Sonlandır

Müşteri Desteği Akışı

  1. 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?
  1. 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?
  1. 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?
  1. 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!
  2. 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

  1. 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.

  1. Tür: Hi

Müşteri Hizmetleri Akışı

  1. Sor: Which artists are signed with your label?
  2. Şunu söyleyin: The Google Dolls
  3. Şunu söyleyin: I am interested in buying a shirt
  4. Şunu söyleyin: A t-shirt
  5. Şunu söyleyin: Medium
  6. Ş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)

Müşteri Desteği Akışı

  1. Aşağıdaki bilgileri sağlayın:
  • Test kaydı adı: Buy Google Dolls t-shirt size M
  • Etiketler: #catalog, #shirts, #t-shirt, #TheGoogleDolls
  1. Kaydet'i tıklayın

Daha fazla test senaryosu oluşturalım.

  1. Öncelikle Sıfırla (çöp kutusu) simgesini tıklayarak mevcut iletişim kutusunu temizleyin.
  2. 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

  1. Soldaki Dialogflow ana menüsünde Yönet > Test Durumları'nı seçin.
  2. 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.

Test Durumları

  1. Simülasyon aracında şu soruyu sorun: How long will shipping take?
  2. Sonucu not edin ve test durumunu #shipping etiketiyle Shipping olarak kaydedin.
  3. 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.

  1. 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.

  1. redirect.shipping.info route
  2. 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.

  1. 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.

  1. 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.
  2. 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.
  3. 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.

  1. 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
  2. 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.
  3. 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.

  1. Tüm test durumları için test kapsamı raporunu görüntülemek üzere Kapsam'ı tıklayın.
  2. Transitions (Geçişler) sekmesini tıklayın.

Bu sayede tüm sayfa geçişlerinin test kapsamını görebilirsiniz.

Geçişler Kapsamı

  1. Intents (Amaç) sekmesini tıklayın.

Bu sayfada tüm intent'lerin test kapsamı gösterilir.

Intent Kapsamı

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

Nihai Sonuç

Referanslar

Dialogflow CX hakkında daha fazla bilgi edinmek için aşağıdaki blog ve belgelere göz atın.