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:


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:
- Google Chrome gibi bir web tarayıcısı
- Tamamlanmış bir 1. Düzey İşlemler codelab projesi ( Actions Builder 1. Düzey'i kullanarak Google Asistan için İşlemler oluşturma)
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
Fortunesahneye 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. seviye Actions projenizi açın.
- Gezinme çubuğunda Geliştir'i tıklayın.
- Sahneler bölümünde Başlangıç sahnesini tıklayın.
- Seçenekleri açmak için evet amacını (Evet eşleştiğinde kutusu) tıklayın.
- İstemi kaldırmak için İstemleri gönder'in işaretini kaldırın.
- Geçiş bölümünde açılır menüyü tıklayın, metin kutusunu tıklayın ve
Fortuneyazın. - Ekle'yi tıklayın. Bu işlemle
Fortuneadlı yeni bir sahne oluşturulur. Ayrıca, kullanıcı geleceğini öğrenmek istediğindeStartsahnesindenFortunesahnesine geçiş ekler.

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:
- Gezinme çubuğunda Türler'i tıklayın.
- + (artı işareti) simgesini tıklayın,
available_optionsyazın veEntertuşuna basın. - Seçenekleri açmak için
available_optionssimgesini 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:
- Giriş ekle bölümüne gidin.
- Yeni giriş alanına
dragonyazıpEntertuşuna basın. Bu işlem,dragonanahtarı oluşturur. - Değer ekle alanına
hydrayazıpEntertuşuna basarak bunu değer (eş anlamlı) olarak ekleyin. Ardından, bu adımılizarddeğeri için tekrarlayın. - Geri kalan anahtarları ve ilgili değerleri ekleyin:
translator | translator,communicator,machine,decoder,translatecompass | compass,direction,guide

- 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:
- Gezinme çubuğundaki Sahneler bölümünde Fortune'u tıklayın.
Fortunesahnesinde, Slot doldurma için + (artı işareti) simgesini tıklayın.- Enter slot name (Yuva adını girin) alanına yuva adı olarak
chosenOptionsekleyin. - Select type (Tür seçin) açılır listesinde, yuva türü olarak
available_optionssimgesini seçin. - Bu yer gereklidir onay kutusunu işaretleyin.

- İ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'
- 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:
- Seçenekler penceresini açmak için
scene.slots.status == "FINAL"simgesini tıklayın. - İstem gönder'i seçin ve aşağıdaki istemi ekleyin:
candidates:
- first_simple:
variants:
- speech: You picked $session.params.chosenOptions.
- 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:
- Gezinme çubuğunda Test'i tıklayın.
- Giriş alanında
Talk to my test appsimgesini tıklayın veya yazın veEntertuşuna basın. - Giriş alanına
YesyazıpEntertuşuna basın. (Alternatif olarak, Evet öneri çipini tıklayabilirsiniz.)

dragonsimgesini 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:
- Gezinme çubuğunda Geliştir'i tıklayın.
- Gezinme çubuğunda Fortune sahnesini tıklayın.
- Seçenekler penceresini açmak için
scene.slots.status == "FINAL"simgesini tıklayın. - Durum ifadesini şu şekilde güncelleyin:
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon" - İstemleri gönder'i seçin.
- İ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.
- Kaydet'i tıklayın.

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:
- Koşul'un yanındaki + (artı işareti) simgesini tıklayın.
scene.slots.status == "FINAL" && session.params.chosenOptions == "translator"değerini else if alanına ekleyin.- İstemleri gönder'i seçin.
- 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.
- Kaydet'i tıklayın.

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:
- Koşul'un yanındaki + (artı işareti) simgesini tıklayın.
scene.slots.status == "FINAL" && session.params.chosenOptions == "compass"öğesini else if metin kutusuna ekleyin.- İstemleri gönder'i seçin.
- 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.
- 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:
- Gezinme çubuğunda Test'i tıklayın.
- Giriş alanına
Talk to my test appyazıpEntertuşuna basın. - Giriş alanına
YesyazıpEntertuşuna basın. Alternatif olarak, Evet öneri çipini tıklayın. Translatorsimgesini tıklayın, yazın veya söyleyin.

"Ç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:
- Gezinme çubuğunda Geliştir'i tıklayın.
- Sahneler bölümünde + (artı işareti) simgesini tıklayın.
AgainyazıpEntertuşuna basın.- Gezinme çubuğunda
Againsahnesini tıklayın. - On enter'ın (Girişte) yanındaki + (artı işareti) simgesini tıklayın.
- İ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'
- 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:
- Fortune sahnesini tıklayın.
- Seçenekler penceresini açmak için ilk koşulu (
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon") tıklayın. - Kaydırıp Geçiş bölümünde
Againsimgesini seçin. - Kaydet'i tıklayın.
- Seçenekler penceresini açmak için ikinci koşulu tıklayın.
- Kaydırıp Geçiş bölümünde
Againsimgesini seçin. - Kaydet'i tıklayın.
- Seçenekler penceresini açmak için üçüncü koşulu tıklayın.
- Kaydırıp Geçiş bölümünde
Againsimgesini seçin. - 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:
- Gezinme çubuğunda Test'i tıklayın.
- Giriş alanına
Talk to my test appyazıpEntertuşuna basın. - Giriş alanına
YesyazıpEntertuşuna basın. Alternatif olarak, Evet öneri çipini tıklayın. dragonsimgesini tıklayın, yazın veya söyleyin.

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:
- Gezinme çubuğunda Geliştir'i tıklayın.
Againsahnesini tıklayın.- Kullanıcı amacını işleme'nin yanındaki + (artı işareti) seçeneğini tıklayın.
- Amaç açılır menüsünden evet'i seçin.
- Geçiş açılır menüsünden
Fortunesimgesini seçin. - Kaydet'i tıklayın.

- Kullanıcı amacını işleme'nin yanındaki + (artı işareti) seçeneğini tıklayın.
- Amaç açılır menüsünden hayır'ı seçin.
- Geçiş açılır menüsünden Sohbeti sonlandır'ı seçin.
- İ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.
- 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:
- Gezinme çubuğunda Test'i tıklayın.
- Giriş alanına
Talk to my test appyazıpEntertuşuna basın. - Giriş alanına
YesyazıpEntertuşuna basın. Alternatif olarak, Evet öneri çipini tıklayın. - Seçeneklerden birini tıklayın, yazın veya söyleyin.
- Giriş alanına
YesyazıpEntertuşuna basın.

"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:
- Seçeneklerden birini tıklayın, yazın veya söyleyin.
- Giriş alanına
NoyazıpEntertuş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:
- Gezinme çubuğunda Geliştir'i tıklayın.
- Türler bölümünde + (artı işareti) simgesini tıklayın.
unavailable_optionsyazıpEntertuşuna basın.- Seçenekleri açmak için
unavailable_optionssimgesini tıklayın. - Giriş ekle bölümüne aşağıdaki girişleri ve karşılık gelen değerleri girin:
|
|
|
|
|
|
|
|
Anahtar-değer tablonuz aşağıdaki gibi görünmelidir:

- 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:
- Özel Amaçlar bölümünde + (artı işareti) simgesini tıklayın.
other_optionyazıpEntertuşuna basın.- Pencereyi açmak için
other_optionsimgesini tıklayın. - Aşağıdaki eğitim ifadelerini ekleyin ve her birinden sonra
Entertuşuna basın:
I want to use spellsI really really want to use a phonemagic!cashI want to ride a horse
- Amaca yönelik parametreler ekle bölümünde, parametre adını
chosenUnavailableOptionolarak güncelleyin. - 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.

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:
- Fortune sahnesini tıklayın.
- Kullanıcı amacını işleme'nin yanındaki + (artı işareti) seçeneğini tıklayın.
- Amacın açılır menüsünden
other_optionsimgesini seçin. - İ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.
- Kaydet'i tıklayın.

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:
- Gezinme çubuğunda Test'i tıklayın.
- Giriş alanına
Talk to my test appyazıpEntertuşuna basın. - Giriş alanına
YesyazıpEntertuşuna basın. Alternatif olarak, Evet öneri çipini tıklayın. - Giriş alanına
magicyazıpEntertuşuna basın.

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:
- Gezinme çubuğunda Geliştir'i tıklayın.
Fortunesahnesini tıklayın.- 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.
- İstem gönder onay kutusunun işaretini kaldırın.
- Webhook'unuzu çağırın onay kutusunu seçin.
- Etkinlik işleyici için metin kutusuna
unavailable_optionsgirin.

- 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:
- Gezinme çubuğunda Webhook'u tıklayın.
- Aşağıdaki kodu
greetingiş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);
});
const app = conversation();bölümüne aşağıdaki kodu ekleyin:
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
- Save Fulfillment'ı (Yerine Getirme İşlemini Kaydet) tıklayın.
- 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:
optionnesnesindenconvverilerini alır veoptiondeğerini, kullanıcıdan alınan ham giriş olanoriginalözelliğine atar.optionKeydeğerini,unavailable_optionstürünün anahtarı olanresolvedö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:
- Gezinme çubuğunda Test'i tıklayın.
- Giriş alanında
Talk to my test appsimgesini tıklayın veya yazın veEntertuşuna basın. - Giriş alanına
YesyazıpEntertuşuna basın. Alternatif olarak, Evet öneri çipini tıklayın. - Giriş alanına
magicyazıpEntertuşuna basın. - Giriş alanına
horseyazıpEntertuşuna basın.

İş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:
- Cloud projesini ve kaynaklarını silmek için Projeleri kapatma (silme) bölümünde listelenen adımları tamamlayın.
- İ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:
- Google Asistan için İşlemler geliştirme dokümanları
- Örnek kod ve kitaplıklar için Actions on Google GitHub sayfası
- Google Asistan ile çalışan geliştiriciler için resmi Reddit topluluğu
- En iyi uygulamalar ve etkileşimli işlemlerle ilgili kurallar için Etkileşimli İşlem Tasarımı Kuralları
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.