Actions Builder'ı kullanarak Google Asistan için İşlemler oluşturma (2. Seviye)

1. Genel Bakış

Google Asistan geliştirici platformu, Google Asistan'ın işlevselliğini akıllı hoparlörler, telefonlar, arabalar, TV'ler ve kulaklıklar dahil olmak üzere 1 milyardan fazla cihazda genişletmek için yazılım oluşturmanıza olanak tanır. Kullanıcılar, alışveriş yapmak veya araç çağırmak gibi işlemleri gerçekleştirmek için Asistan ile etkileşime girer. Geliştirici olarak, kullanıcılar ile kendi üçüncü taraf karşılama hizmetiniz arasında keyifli ve etkili sohbet deneyimleri oluşturup yönetmek için Asistan geliştirici platformunu kolayca kullanabilirsiniz.

Bu codelab, Google Asistan ile geliştirme için orta düzeydeki kavramları kapsar ve 1. Düzey codelab'inde oluşturulan Action'ı temel alır. Bu codelab'e başlamadan önce 1. Seviye codelab'ini tamamlamanız önemle tavsiye edilir.

Bu codelab'de oluşturacağınız işlem, kullanıcılara seçtikleri yardıma göre Gryffinberg adlı efsanevi bir ülkede yaptıkları görevle ilgili kehanetlerini söyler.

Ne oluşturacaksınız?

Bu codelab'de, aşağıdaki işlevlere sahip gelişmiş bir Sohbet İşlemi oluşturacaksınız:

  • Kullanıcıdan veri toplar ve değere bağlı olarak sohbet istemlerini değiştirir.
  • Sohbeti ilerletmek için ek sorularla yanıt verir.
  • Kullanıcının fal aldıktan sonra işlemle tekrar etkileşimde bulunabilmesi için oyun döngüsü oluşturur.

Geliştirmeye başlamadan önce Google Asistan özellikli cihazınızda canlı Action ile etkileşim kurmak için "Ok Google, Fate and Fortune ile konuş" diyebilirsiniz. Geri gelen bir kullanıcının bu işlemdeki varsayılan yolu aşağıdaki etkileşim gibi görünür:

dd6f5c61296b8b50.png

eba043f546aa8c51.png

Neler öğreneceksiniz?

  • Kullanıcıdan veri toplamak için yuvaları kullanma
  • Sahneye mantık eklemek için koşulları kullanma
  • Oyun döngüsü ekleme
  • Destekleyici yol ekleme

İhtiyacınız olanlar

Bu codelab'in ön koşulları şunlardır:

Bu codelab'deki karşılama kodunu anlamak için JavaScript (ES6) hakkında bilgi sahibi olmanız şiddetle tavsiye edilir ancak zorunlu değildir.

2. Konuşma arayüzü oluşturmaya devam etme

İlk codelab'de, tek bir sahneye sahip basit bir Sohbet İşlemi oluşturmuştunuz: Start.

Bu codelab'de, İşleminizin görüşmesini genişletiyorsunuz. Aşağıdaki bölümlerde, işleminizi aşağıdaki gibi davranacak şekilde yapılandıracaksınız:

  • Kullanıcı geleceği hakkında bilgi almak istediğinde yeni bir Fortune sahneye geçiş yapma
  • Kullanıcıya yolculuğu için hangi yardımı seçmek istediğini sorun.
  • Kullanıcının seçimine göre özelleştirilmiş bir fal sunma

Fortune sahnesi oluşturma

Bu bölümde Fortune sahnesini oluşturur ve kullanıcının konuşma sırasında bu sahneye nasıl geçiş yapacağını tanımlarsınız.

Fortune adlı yeni bir sahne oluşturmak için aşağıdaki adımları uygulayın:

  1. 1. seviye Actions projenizi açın.
  2. Gezinme çubuğunda Geliştir'i tıklayın.
  3. Sahneler bölümünde Başlangıç sahnesini tıklayın.
  4. Seçenekleri açmak için evet amacını (Evet eşleştiğinde kutusu) tıklayın.
  5. İstemi kaldırmak için İstemleri gönder'in işaretini kaldırın.
  6. Geçiş bölümünde açılır menüyü tıklayın, metin kutusunu tıklayın ve Fortune yazın.
  7. Ekle'yi tıklayın. Bu işlemle Fortune adlı yeni bir sahne oluşturulur. Ayrıca, kullanıcı geleceğini öğrenmek istediğinde Start sahnesinden Fortune sahnesine geçiş ekler.

56682a0c7459b98c.png

Fortune sahnesi için sohbet mantığını tanımlayın

Bu codelab'de, Fortune sahnenizi kullanıcıya "Görevinde sana yardımcı olması için neyi seçersin: ejderha, çevirmen veya pusula?" diye soracak şekilde yapılandıracaksınız. Devam etmeden önce kullanıcıdan gerekli bilgileri toplamak için yuva doldurma adlı bir özellikten yararlanabilirsiniz.

İşleminiz üç yardımcının (ejderha, çevirmen ve pusula) falını veriyor. İşleminizi, kullanıcının girişindeki bu üç seçeneği tanımlayacak şekilde yapılandırmak için yeni bir tür oluşturmanız gerekir.

Kullanıcıdan istediğiniz bilgileri tanımlamak için bir sahnenin boşluk doldurma aşamasındaki türleri kullanabilirsiniz. NLU motoru, kullanıcı girişinde bir yuva eşleşmesi algıladığında yuvayı türü belirtilmiş bir parametre olarak ayıklar. Böylece, bir sahnede bu parametreyle mantıksal işlemler gerçekleştirebilirsiniz.

available_options türü oluşturma

Bu bölümde, kullanıcıların isteme yanıt olarak seçebileceği üç seçeneği (ejderha, çevirmen ve pusula) belirten available_options adlı yeni bir tür oluşturacaksınız. Ayrıca, kullanıcıların benzer bir şey söylemesi ihtimaline karşı bu seçenekler için birkaç eş anlamlı kelime tanımlarsınız. Daha sonraki bir bölümde, kullanıcının seçimini almak istediğinizi belirtmek için bir yuvaya available_options türünü eklersiniz.

available_options türünü oluşturmak için aşağıdaki adımları uygulayın:

  1. Gezinme çubuğunda Türler'i tıklayın.
  2. + (artı işareti) simgesini tıklayın, available_options yazın ve Enter tuşuna basın.
  3. Seçenekleri açmak için available_options simgesini tıklayın.

Türler, bilgi anahtar/değer çiftleri olarak yapılandırılır. Burada anahtar, türün adıdır ve değerler bu anahtarın eş anlamlılarıdır. Anahtarı tanımladığınızda otomatik olarak değer olarak eklenir.

Kullanıcının seçebileceği üç seçeneği eklemek için aşağıdaki adımları uygulayın:

  1. Giriş ekle bölümüne gidin.
  2. Yeni giriş alanına dragon yazıp Enter tuşuna basın. Bu işlem, dragon anahtarı oluşturur.
  3. Değer ekle alanına hydra yazıp Enter tuşuna basarak bunu değer (eş anlamlı) olarak ekleyin. Ardından, bu adımı lizard değeri için tekrarlayın.
  4. Geri kalan anahtarları ve ilgili değerleri ekleyin:
  • translator | translator, communicator, machine, decoder, translate
  • compass | compass, direction, guide

8333b1b67445f21.png

  1. Kaydet'i tıklayın.

İşleminiz artık available_options sembollerinin ejderha, çevirmen ve pusula olduğunu anlıyor ve bunlara karşılık gelen birkaç eş anlamlı kelimeyi de tanıyabiliyor.

Slot doldurmayı yapılandırma

Ardından, Fortune sahnesinde yuva doldurmayı yapılandırmanız gerekir. Boşluk doldurma mantığını yapılandırmak için aşağıdaki adımları uygulayın:

  1. Gezinme çubuğundaki Sahneler bölümünde Fortune'u tıklayın.
  2. Fortune sahnesinde, Slot doldurma için + (artı işareti) simgesini tıklayın.
  3. Enter slot name (Yuva adını girin) alanına yuva adı olarak chosenOptions ekleyin.
  4. Select type (Tür seçin) açılır listesinde, yuva türü olarak available_options simgesini seçin.
  5. Bu yer gereklidir onay kutusunu işaretleyin.

a461b906476e244.png

  1. İstem gönder'i seçin ve aşağıdaki mesajı ve öneri çipini ekleyin:
candidates:
  - first_simple:
      variants:
        - speech: >-
            What do you choose to help you on your quest, a dragon, a
            translator, or a compass?
    suggestions:
      - title: 'Dragon'
      - title: 'Translator'
      - title: 'Compass'
  1. Kaydet'i tıklayın.

Yuvaya available_options türünü eklediniz. Bu tür, işleme devam etmeden önce kullanıcılardan toplamanız gereken bilgileri (yardım seçimi) İşleminize bildirir. Ayrıca, kullanıcı sahnenin yuva doldurma aşamasına ulaştığında istem kuyruğuna eklenen bir istem de yapılandırdınız.

Alanı chosenOptions olarak adlandırdığınızda Alan değeri geri yazma işlemini özelleştir alanının aynı adla ($session.params.chosenOptions) güncellendiğini unutmayın. Bu parametreye Actions Builder'da ve istemci kitaplığı aracılığıyla karşılama işleminizde bu adla erişebilirsiniz.

scene.slots.status == "FINAL" koşulunu yapılandırma

Bir yuva eklediğinizde koşul scene.slots.status == "FINAL" otomatik olarak koşul listesine eklenir.

scene.slots.status == "FINAL" koşulu, yuva doldurma işleminin tamamlanıp tamamlanmadığını kontrol eder. Tüm yuvalar dolduğunda koşul, bir webhook'u tetikleyebilir, yeni bir sahneye geçiş yapabilir veya istem kuyruğuna istemler ekleyebilir.

Bu bölümde, scene.slots.status == "FINAL" öğesini, yuvalar dolduğunda istem kuyruğuna istem ekleyecek şekilde yapılandıracaksınız.

Bu istemi FINAL koşuluna eklemek için aşağıdaki adımları uygulayın:

  1. Seçenekler penceresini açmak için scene.slots.status == "FINAL" simgesini tıklayın.
  2. İstem gönder'i seçin ve aşağıdaki istemi ekleyin:
candidates:
  - first_simple:
      variants:
        - speech: You picked $session.params.chosenOptions.
  1. Kaydet'i tıklayın.

İşleminizi simülatörde test etme

Bu noktada, kullanıcının boşluğu doldurmak için hangi seçenekleri belirlemesi gerektiğini tanımlamış olursunuz. Kullanıcıdan bu bilgiyi aldıktan sonra İşleminiz, kullanıcının seçtiği belirli seçeneğe referans veren bir istem sağlamalıdır.

İşleminizi test etmek için aşağıdaki adımları uygulayın:

  1. Gezinme çubuğunda Test'i tıklayın.
  2. Giriş alanında Talk to my test app simgesini tıklayın veya yazın ve Enter tuşuna basın.
  3. Giriş alanına Yes yazıp Enter tuşuna basın. (Alternatif olarak, Evet öneri çipini tıklayabilirsiniz.)

a899d45c542668f6.png

  1. dragon simgesini tıklayın, yazın veya söyleyin. "Ejderhayı seçtiniz." istemini alırsınız.

Sonraki bölümde, kullanıcının seçebileceği her yardım için istemleri özelleştirirsiniz.

Koşulları kullanarak istemleri özelleştirme

Bu bölümde, kullanıcının seçebileceği her seçenek için koşullar ekler ve her koşul için özel bir istem eklersiniz.

dragon falını özelleştirme

Koşulu güncellemek ve kullanıcı "ejderha"yı seçtiğinde gösterilecek istemi özelleştirmek için aşağıdaki adımları uygulayın:

  1. Gezinme çubuğunda Geliştir'i tıklayın.
  2. Gezinme çubuğunda Fortune sahnesini tıklayın.
  3. Seçenekler penceresini açmak için scene.slots.status == "FINAL" simgesini tıklayın.
  4. Durum ifadesini şu şekilde güncelleyin: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
  5. İstemleri gönder'i seçin.
  6. İstemdeki aşağıdaki falı kod düzenleyiciye girin:
candidates:
  - first_simple:
      variants:
        - speech: >-
            The people of Gryffinberg will be awestruck by the beauty and power
            of the ancient dragon. Much to your dismay, the townspeople fall
            into dispute over who will receive the honor of riding the dragon
            first. You return home from your quest without everlasting glory or
            a dragon.
  1. Kaydet'i tıklayın.

d31767232ad908bd.png

Artık kullanıcılar "ejderha" dediğinde veya buna benzer bir ifade kullandığında İşleminiz, bu seçime göre bir fal sunuyor. Ardından, kalan iki seçimi eklersiniz.

translator falını özelleştirme

Koşulu eklemek ve kullanıcı "çevirmen"i seçtiğinde gösterilecek istemi özelleştirmek için aşağıdaki adımları uygulayın:

  1. Koşul'un yanındaki + (artı işareti) simgesini tıklayın.
  2. scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" değerini else if alanına ekleyin.
  3. İstemleri gönder'i seçin.
  4. Kod düzenleyicinize aşağıdaki istemi ekleyin:
candidates:
  - first_simple:
      variants:
        - speech: >-
            With the help of the translator, the rival factions in Gryffinberg
            are finally able to communicate with each other and resolve their
            disputes. You will complete your quest to restore peace in the town.
            The translator will be used on many subsequent journeys across the
            earth. After its work is done, it retires honorably to a premier
            location in the Gryffinberg History Museum.
  1. Kaydet'i tıklayın.

c1af65e70dbf3dfe.png

compass falını özelleştirme

Koşulu eklemek ve kullanıcı "pusula"yı seçtiğinde istemi özelleştirmek için aşağıdaki adımları uygulayın:

  1. Koşul'un yanındaki + (artı işareti) simgesini tıklayın.
  2. scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" öğesini else if metin kutusuna ekleyin.
  3. İstemleri gönder'i seçin.
  4. Kod düzenleyiciye aşağıdaki istemi ekleyin:
candidates:
  - first_simple:
      variants:
        - speech: >-
            The compass will help you find the mystical and ancient Library of
            Gryffinberg. Among its infinite stacks of dusty books, you find one
            entitled "Wisdom of the Ages". By the time you've read the
            50,000-page tome, the townspeople have forgotten their problems. You
            will write a second edition of "Wisdom of the Ages", but have
            limited commercial success.
  1. Kaydet'i tıklayın.

İşleminizi simülatörde test etme

Bu noktada, kullanıcının seçtiği seçeneğe göre İşleminiz özelleştirilmiş bir fal sunmalıdır.

İşleminizi test etmek için aşağıdaki adımları uygulayın:

  1. Gezinme çubuğunda Test'i tıklayın.
  2. Giriş alanına Talk to my test app yazıp Enter tuşuna basın.
  3. Giriş alanına Yes yazıp Enter tuşuna basın. Alternatif olarak, Evet öneri çipini tıklayın.
  4. Translator simgesini tıklayın, yazın veya söyleyin.

29e17f950bd0dd71.png

"Çevirmen" seçeneği için uygun yanıtı alırsınız.

3. Oyun döngüsü ekleme

Bu bölümde, kullanıcının başka bir seçenek belirleyebilmesi ve seçim yaptıktan sonra farklı bir fal duyabilmesi için İşleminizi yapılandıracaksınız. Bu değişiklik, oyunun sonunda gösterilen "Tekrar oynamak ister misiniz?" mesajına benzer. Bu döngüyü oluşturmak için daha önce oluşturulan yes ve no amaçlarını yeniden kullanabilir ve bunları Again adlı yeni bir sahneye ekleyebilirsiniz.

Again sahnesi oluşturma

Bu bölümde yeni bir Again sahne oluşturup kullanıcıya farklı bir seçenek belirlemek isteyip istemediğini soran bir istem ekleyeceksiniz.

Again sahnesini oluşturmak için aşağıdaki adımları uygulayın:

  1. Gezinme çubuğunda Geliştir'i tıklayın.
  2. Sahneler bölümünde + (artı işareti) simgesini tıklayın.
  3. Again yazıp Enter tuşuna basın.
  4. Gezinme çubuğunda Again sahnesini tıklayın.
  5. On enter'ın (Girişte) yanındaki + (artı işareti) simgesini tıklayın.
  6. İstem gönder'i seçin ve aşağıdaki istemi ve öneri çipini ekleyin:
candidates:
  - first_simple:
      variants:
        - speech: >-
            That is what I see for you. Would you like to choose a different option and
            explore another future?
    suggestions:
      - title: 'Yes'
      - title: 'No'
  1. Kaydet'i tıklayın.

Fortune sahnesinden Again sahnesine geçiş ekleme

Kullanıcı falını aldıktan sonra sohbetin yeni Again sahnesine geçmesi gerekir.

Fortune sahnesinden Again sahnesine geçiş eklemek için aşağıdaki adımları uygulayın:

  1. Fortune sahnesini tıklayın.
  2. Seçenekler penceresini açmak için ilk koşulu (scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon") tıklayın.
  3. Kaydırıp Geçiş bölümünde Again simgesini seçin.
  4. Kaydet'i tıklayın.
  5. Seçenekler penceresini açmak için ikinci koşulu tıklayın.
  6. Kaydırıp Geçiş bölümünde Again simgesini seçin.
  7. Kaydet'i tıklayın.
  8. Seçenekler penceresini açmak için üçüncü koşulu tıklayın.
  9. Kaydırıp Geçiş bölümünde Again simgesini seçin.
  10. Kaydet'i tıklayın.

İşleminizi simülatörde test etme

Bu noktada, kullanıcının falı gösterildikten sonra İşleminiz aşağıdaki istemi sağlamalıdır: "Sizin için gördüklerim bunlar. Farklı bir seçenek belirleyip başka bir geleceği keşfetmek ister misiniz?"

İşleminizi test etmek için aşağıdaki adımları uygulayın:

  1. Gezinme çubuğunda Test'i tıklayın.
  2. Giriş alanına Talk to my test app yazıp Enter tuşuna basın.
  3. Giriş alanına Yes yazıp Enter tuşuna basın. Alternatif olarak, Evet öneri çipini tıklayın.
  4. dragon simgesini tıklayın, yazın veya söyleyin.

b299e9fed9aedb69.png

Ejderha seçeneği ve Again istemi için fal alırsınız.

Amacın eklenmesi ve Again sahnesine geçiş

Bu bölümde, yes ve no amaçlarını Again sahnesine ekleyerek İşleminizin, kullanıcının yeni bir seçenek belirlemek isteyip istemediğini anlamasını sağlarsınız. Ayrıca, yes ve no amaçları için uygun geçişleri de eklersiniz. yes amacı Fortune sahnesine, no amacı ise End conversation sistem sahnesine geçiş yapıyor.

Again sahnesine amaç ve geçiş eklemek için aşağıdaki adımları uygulayın:

  1. Gezinme çubuğunda Geliştir'i tıklayın.
  2. Again sahnesini tıklayın.
  3. Kullanıcı amacını işleme'nin yanındaki + (artı işareti) seçeneğini tıklayın.
  4. Amaç açılır menüsünden evet'i seçin.
  5. Geçiş açılır menüsünden Fortune simgesini seçin.
  6. Kaydet'i tıklayın.

c2efba35ea881b0d.png

  1. Kullanıcı amacını işleme'nin yanındaki + (artı işareti) seçeneğini tıklayın.
  2. Amaç açılır menüsünden hayır'ı seçin.
  3. Geçiş açılır menüsünden Sohbeti sonlandır'ı seçin.
  4. İstem gönder'i seçin ve kod düzenleyiciye aşağıdaki istemi ekleyin:
candidates:
  - first_simple:
      variants:
        - speech: >-
            It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell.
  1. Kaydet'i tıklayın.

İşleminizi simülatörde test etme

İşleminiz artık kullanıcının yeni bir seçenek belirlemek mi yoksa görüşmeyi sonlandırmak mı istediğini anlayabilir.

yes amacını test etmek için aşağıdaki adımları uygulayın:

  1. Gezinme çubuğunda Test'i tıklayın.
  2. Giriş alanına Talk to my test app yazıp Enter tuşuna basın.
  3. Giriş alanına Yes yazıp Enter tuşuna basın. Alternatif olarak, Evet öneri çipini tıklayın.
  4. Seçeneklerden birini tıklayın, yazın veya söyleyin.
  5. Giriş alanına Yes yazıp Enter tuşuna basın.

5d0690332efe2e29.png

"Görevinde sana yardımcı olması için neyi seçersin: ejderha, çevirmen veya pusula?" istemini alırsınız.

no amacını test etmek için aşağıdaki adımları uygulayın:

  1. Seçeneklerden birini tıklayın, yazın veya söyleyin.
  2. Giriş alanına No yazıp Enter tuşuna basın.

End conversation istemini almanız gerekir: "Seçiminizden memnun olmanız beni mutlu etti. Bu macerada başarılar dileriz. Hoşça kalın."

4. Destekleyici bir yol ekleme

Artık çoğu kullanıcının İşleminizde izlediği ana yolu oluşturdunuz. Ancak kullanıcı, Fortune sahnesindeki "Görevinde sana yardımcı olması için neyi seçersin: ejderha, çevirmen veya pusula?" istemine, sağlanan seçeneklerden biri olmayan bir yanıt verebilir.

Bu bölümde, bir kullanıcı "sihir", "para", "at" veya "telefon"u seçtiğinde bunu anlayacak ve bu seçeneklerden birini seçtiğinde kullanıcıya ilk üç seçenekten birini seçmesini isteyecek şekilde İşleminizi yapılandırın. Bu mantığı yapılandırmak için bu diğer seçenekleri ve kullanıcının bu seçeneklerden birini söylediğinde eşleşen yeni bir amaç (other_option) içeren yeni bir type oluşturmanız gerekir. Ayrıca, other_option amacındaki eğitim ifadelerini notlandırarak amaç parametrelerini belirleyip çıkarmanız gerekir.

Asistan'ın doğal dil işleme (NLU) motoru, kullanıcı girişinde bir parametre eşleşmesi algıladığında değeri yazılı bir parametre olarak çıkarır. Böylece, bir sahnede bu parametreyle mantıksal işlemler yapabilirsiniz. Bu codelab'de, kullanıcının seçtiği yardımı ayıklamak ve istemde bu seçime başvurmak için işleminizi yapılandıracaksınız.

unavailable_options türü oluşturma

Artık, İşleminizin kullanıcının girişindeki verileri tanımlayabilmesi için çeşitli farklı seçenekler içeren bir unavailable_options türü oluşturabilirsiniz.

unavailable_options türünü oluşturmak için aşağıdaki adımları uygulayın:

  1. Gezinme çubuğunda Geliştir'i tıklayın.
  2. Türler bölümünde + (artı işareti) simgesini tıklayın.
  3. unavailable_options yazıp Enter tuşuna basın.
  4. Seçenekleri açmak için unavailable_options simgesini tıklayın.
  5. Giriş ekle bölümüne aşağıdaki girişleri ve karşılık gelen değerleri girin:

horse

horse, stallion, steed

magic

magic, enchanted, spells

money

money, cash, gold

phone

phone, cell, apps

Anahtar-değer tablonuz aşağıdaki gibi görünmelidir:

c9e119e0f5fb2a47.png

  1. Kaydet'i tıklayın.

other_option amacı oluşturma

Ardından, other_option adlı bir amaç oluşturur ve unavailable_options türündeki seçenekleri içeren eğitim cümleleri eklersiniz. Bu amaç, kullanıcı unavailable_options türünde yer alan bir seçeneği belirlediğinde eşleştirilir.

other_option amacını oluşturmak ve yapılandırmak için aşağıdaki adımları uygulayın:

  1. Özel Amaçlar bölümünde + (artı işareti) simgesini tıklayın.
  2. other_option yazıp Enter tuşuna basın.
  3. Pencereyi açmak için other_option simgesini tıklayın.
  4. Aşağıdaki eğitim ifadelerini ekleyin ve her birinden sonra Enter tuşuna basın:
  • I want to use spells
  • I really really want to use a phone
  • magic!
  • cash
  • I want to ride a horse
  1. Amaca yönelik parametreler ekle bölümünde, parametre adını chosenUnavailableOption olarak güncelleyin.
  2. Kaydet'i tıklayın.

Eğitim cümlelerini girerken Actions Builder, unavailable_options türündeki spells, phone, magic, cash ve horse kelimelerini tanır ve bu kelimeleri otomatik olarak vurgular (açıklama ekler). İşlem Oluşturucu, aşağıdaki resimde gösterildiği gibi Add intent parameters (Amaç parametreleri ekle) bölümüne otomatik olarak bir amaç parametresi ekler.

Amaç parametresi, seçeneğin adını çıkarmanıza ve bu seçeneği istemde kullanmanıza olanak tanır.

df61d4489f0910.png

other_option amacını Fortune sahnesine ekle

Artık kullanıcının orijinal seçeneklerden biri olmayan bir seçeneği belirtmesini işleyebilen bir niyetiniz (other_option) var. Bu bölümde, other_option amacını Fortune sahnesine ekleyeceksiniz. İstemi kullanıcının girişine göre özelleştirmek için amaç parametresini kullanırsınız.

other_option amacını Fortune sahnesine eklemek için aşağıdaki adımları uygulayın:

  1. Fortune sahnesini tıklayın.
  2. Kullanıcı amacını işleme'nin yanındaki + (artı işareti) seçeneğini tıklayın.
  3. Amacın açılır menüsünden other_option simgesini seçin.
  4. İstem gönder'i seçin ve aşağıdaki istemi ekleyin:
candidates:
  - first_simple:
      variants:
        - speech: >-
            I have seen the future and a $intent.params.chosenUnavailableOption.original
            will not aid you on your journey. 

$intent.params.chosenUnavailableOption ifadesi amaç parametresi nesnesini, $intent.params.chosenUnavailableOption.original ise bu nesnenin değerini ifade eder. original property, kullanıcının belirttiği ham girişi ifade eder.

  1. Kaydet'i tıklayın.

4bab1efbe21056aa.png

Kullanıcı, Fortune sahnesi sırasında unavailable_options türünde listelenen bir seçeneği söylediğinde other_option amacı eşleştirilir ve istem kuyruğuna bir istem eklenir. Geçiş belirtilmediğinden sahne yürütme döngüsü, koşullar aşamasını yeniden değerlendirerek devam eder. chosenOptions yuvası daha sonra istemini istem sırasına ekler ve istem sırası kullanıcıya iletilir.

İşleminizi simülatörde test etme

İşleminiz artık bir kullanıcı unavailable_options türünde listelenen seçeneklerden birini belirlediğinde uygun şekilde yanıt vermeli ve kullanıcının hangi yardımı seçtiğini belirtmelidir. Ardından, İşleminiz kullanıcıya orijinal seçeneklerden birini (ejderha, çevirmen veya pusula) seçmesini istemelidir.

İşleminizi simülatörde test etmek için aşağıdaki adımları uygulayın:

  1. Gezinme çubuğunda Test'i tıklayın.
  2. Giriş alanına Talk to my test app yazıp Enter tuşuna basın.
  3. Giriş alanına Yes yazıp Enter tuşuna basın. Alternatif olarak, Evet öneri çipini tıklayın.
  4. Giriş alanına magic yazıp Enter tuşuna basın.

3a42c33eca435f32.png

Kullanıcı "magic"i seçtiğinde, önüne "a" makalesi yerleştirildiği için istemin doğru gelmediğini fark edebilirsiniz. Bu sorunu aşağıdaki bölümlerde ele alacağız.

unavailable_options işleyici ekleme

unavailable_options türündeki uygun seçeneklerin önüne "a" makalesini yerleştirmek için, kullanıcının seçtiği seçeneğin önüne "a" makalesinin gerekip gerekmediğini kontrol etmek üzere karşılama mantığınızda bir etkinlik işleyici yapılandırabilirsiniz. Öncelikle, konsolda işleyiciyi çağırmak için işleminizi yapılandırmanız gerekir.

unavailable_options işleyiciyi eklemek için aşağıdaki adımları uygulayın:

  1. Gezinme çubuğunda Geliştir'i tıklayın.
  2. Fortune sahnesini tıklayın.
  3. Pencereyi açmak için Kullanıcı amacını işleme bölümünde When other_option is matched'ı (Diğer seçenek eşleştirildiğinde) tıklayın.
  4. İstem gönder onay kutusunun işaretini kaldırın.
  5. Webhook'unuzu çağırın onay kutusunu seçin.
  6. Etkinlik işleyici için metin kutusuna unavailable_options girin.

52a0fba115f1b377.png

  1. Kaydet'i tıklayın.

Güncelleme ve karşılama dağıtımı

İşleminizi unavailable_options etkinlik işleyicisini çağıracak şekilde yapılandırdığınıza göre, işleyiciyi karşılama bölümünüzde güncelleyip dağıtabilirsiniz.

Yerine getirme işleminizi güncellemek için şu adımları uygulayın:

  1. Gezinme çubuğunda Webhook'u tıklayın.
  2. Aşağıdaki kodu greeting işleyicisinin altına ekleyin:
app.handle('unavailable_options', conv => {
  const option = conv.intent.params.chosenUnavailableOption.original;
  const optionKey = conv.intent.params.chosenUnavailableOption.resolved;
  let message = 'I have seen the future and ';
  if(optionsNeedA.has(optionKey)){
    message = message + 'a ';
  }
  message = message + `${option} will not aid you on your journey. `;
  conv.add(message);
});
  1. const app = conversation(); bölümüne aşağıdaki kodu ekleyin:
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
  1. Save Fulfillment'ı (Yerine Getirme İşlemini Kaydet) tıklayın.
  2. Deploy Fulfillment'ı (Karşılama Dağıtımı) tıklayın. Dağıtım tamamlandığında düzenleyicinizin üst kısmında Cloud Functions dağıtımınız güncel. mesajı gösterilir.

Kodu anlama

unavailable_options işleyici şunları yapar:

  • option nesnesinden conv verilerini alır ve option değerini, kullanıcıdan alınan ham giriş olan original özelliğine atar.
  • optionKey değerini, unavailable_options türünün anahtarı olan resolved özelliğine atar.
  • optionKey öğesinin "a" gerektiren seçeneklerden biri olup olmadığını kontrol eder. Öyleyse mesaja "a" ekleyerek mesajı oluşturur.
  • Mesajı conv.add(message) üzerinden ekler.

İşleminizi simülatörde test etme

İşleminiz artık unavailable_options türündeki kullanıcının seçimine göre istemi, önüne "a" makalesi eklenmesi gerekip gerekmediğine bağlı olarak ayarlamalıdır.

İşleminizi test etmek için aşağıdaki adımları uygulayın:

  1. Gezinme çubuğunda Test'i tıklayın.
  2. Giriş alanında Talk to my test app simgesini tıklayın veya yazın ve Enter tuşuna basın.
  3. Giriş alanına Yes yazıp Enter tuşuna basın. Alternatif olarak, Evet öneri çipini tıklayın.
  4. Giriş alanına magic yazıp Enter tuşuna basın.
  5. Giriş alanına horse yazıp Enter tuşuna basın.

54ee24c5c3c56e.png

İşleminiz, istemi oluştururken "at" seçeneğinin önüne "bir" kelimesini eklemeli, "sihir" seçeneği için ise "bir" kelimesini eklememelidir.

Projenizi temizleme [önerilir]

Olası ücretlerden kaçınmak için kullanmayı düşünmediğiniz projeleri kaldırmanız önerilir. Bu codelab'de oluşturduğunuz projeleri silmek için aşağıdaki adımları uygulayın:

  1. Cloud projesini ve kaynaklarını silmek için Projeleri kapatma (silme) bölümünde listelenen adımları tamamlayın.
  1. İsteğe bağlı: Projenizi Actions Console'dan hemen kaldırmak için Proje silme başlıklı makaleyi inceleyin. Bu adımı tamamlamazsanız projeniz yaklaşık 30 gün sonra otomatik olarak kaldırılır.

5. Tebrikler!

Artık Google Asistan için İşlemler oluşturmak üzere gereken orta seviye becerileri öğrendiniz.

İşlediğiniz konular

  • Node.js istek karşılama kitaplığını kullanarak etkileşimli işlemler geliştirme
  • Kullanıcıdan veri toplamak için yuvaları kullanma
  • Koşulları kullanarak sahneye mantık ekleme
  • Oyun döngüsü ekleme
  • Destekleyici yol ekleme

Daha fazla bilgi

Google Asistan için işlem oluşturma hakkında daha fazla bilgi edinmek üzere aşağıdaki kaynakları inceleyin:

En son duyurularımızı takip etmek için Twitter'da @ActionsOnGoogle'ı takip edin ve geliştirdiklerinizi paylaşmak için #AoGDevs etiketini kullanarak tweet atın.

Geri bildirim anketi

Ayrılmadan önce lütfen deneyiminizle ilgili kısa bir anket doldurun.