1. Genel Bakış
Google Asistan geliştirici platformu, sanal bir kişisel asistan olan Google Asistan'ın işlevlerini akıllı hoparlörler, telefonlar, arabalar, TV'ler, kulaklıklar ve daha pek çok 1 milyardan fazla cihaza genişletmenizi sağlayacak yazılımlar oluşturmanıza olanak tanır. Kullanıcılar, market alışverişi veya araç randevusu alma gibi işlemler için Asistan'la konuşur. Geliştirici olarak, kullanıcılar ile kendi üçüncü taraf sipariş karşılama hizmetiniz arasındaki keyifli ve etkili sohbet deneyimlerini kolayca oluşturmak ve yönetmek için Asistan geliştirici platformunu kullanabilirsiniz.
Bu codelab'de, Google Asistan ile geliştirme yapmaya yönelik orta düzey kavramlar ele alınmaktadır. Ayrıca, Actions SDK'yı Kullanarak Google Asistan için Derleme İşlemleri (Düzey 1) codelab'inde oluşturulan Action'dan temel alınmıştır. Bu laboratuvara başlamadan önce 1. Düzey codelab'i tamamlamanızı önemle tavsiye ederiz.
Bu codelab'de oluşturduğunuz Action, kullanıcılara efsanevi bir diyarda Gryffinberg'deki maceraları için ne yapacaklarını, seçtikleri yardıma göre ne kadar kazanacaklarını bildiriyor.
Neler oluşturacaksınız?
Bu codelab'de aşağıdaki işlevleri kullanarak gelişmiş bir Conversational Action derleyeceksiniz:
- Kullanıcıdan veri toplar ve değere bağlı olarak, sohbet istemlerini değiştirir.
- Konuşmayı ilerletmek için takip sorularıyla yanıt verir.
- Kullanıcının bir servet elde ettikten sonra İşlem ile tekrar etkileşimde bulunabilmesi için bir oyun döngüsü oluşturur.
Geliştirmeye başlamadan önce Google Asistan özellikli cihazınızda "Ok Google, Fate ve Fortune'la konuş" diyerek canlı İşlem ile etkileşimde bulunabilirsiniz. Geri gelen bir kullanıcı için bu Action'a giden varsayılan yol şu etkileşimdeki gibi görünür:
Neler öğreneceksiniz?
- Kullanıcıdan veri toplamak için slotları kullanma
- Bir sahneye mantık eklemek için koşulları kullanma
- Oyun döngüsü nasıl eklenir?
- Destekleyici yol ekleme
İhtiyacınız olanlar
Bu codelab'in ön koşulları şunlardır:
- Tercih ettiğiniz bir IDE/metin düzenleyici.
- NodeJS, npm ve git yüklü kabuk komutlarını çalıştıracak bir terminal.
- Google Chrome gibi bir web tarayıcısı.
- Tamamlanmış bir codelab Level 1 Actions projesi.
Bu codelab'deki sipariş karşılama kodunu anlamak için zorunlu olmasa da JavaScript'e (ES6) aşina olmanız önemle tavsiye edilir.
İsteğe bağlı: Örnek kodu alın
Dilerseniz 1. seviye proje kodunu Actions Builder Codelab Düzey 1 GitHub deposundan alabilirsiniz. Böylece bu codelab'i takip edebilirsiniz. Ayrıca, 2. seviye proje kodunun tamamını bu GitHub deposunda görüntüleyebilirsiniz.
2. Sohbet arayüzü oluşturmaya devam et
İlk codelab'de tek bir sahne (Start
) içeren basit bir Conversational Action'ı oluşturdunuz.
Bu codelab'de, İşleminizin ileti dizisini genişleteceksiniz. Aşağıdaki bölümlerde, işleminizi aşağıdakileri yapacak şekilde yapılandıracaksınız:
- Kullanıcı talihini dinlemek istediğinde yeni bir
Fortune
sahnesine geç - Kullanıcıya yolculuğunda hangi yardımı seçmek istediğini sorun
- Kullanıcının seçimine göre özelleştirilmiş bir servet sunma
Fortune
sahnesine geçiş yapma ve sahneyi oluşturma
Bu bölümde şunları yapacaksınız:
- Kullanıcıya yanıt veren ve görüşmeyi sonlandıran mevcut istemi
Start
sahnesinden kaldır Start
sahnesindenFortune
sahnesine geçişi tanımlayınFortune
sahnesini oluşturun
Start
sahnesini değiştirmek ve Fortune
sahnesine geçiş eklemek için şu adımları uygulayın:
- Metin düzenleyicinizde 1. Düzey codelab'den Actions projenizi açın.
custom/scenes/Start.yaml
dosyasını açın.- Kodunuzun aşağıdaki snippet ile eşleşmesi için
yes
amacına aithandler
öğesini güncelleyin:
Start.yaml
intentEvents: - intent: "yes" transitionToScene: Fortune - handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: I understand, stranger. Best of luck on your quest! Farewell. intent: "no" transitionToScene: actions.scene.END_CONVERSATION
- Dosyayı kaydedin.
Fortune
adında yeni bir sahne oluşturmak için şu adımları uygulayın:
- Terminalde codelab 1. Düzey İşlemler projenize gidin.
scenes
dizinindeFortune.yaml
adlı yeni bir dosya oluşturun:
touch custom/scenes/Fortune.yaml
Bu dosyayı sonraki bölümde düzenleyeceksiniz.
Fortune
sahnesi için konuşma mantığını tanımlayın
Bu codelab'de Fortune
sahnenizi, kullanıcıya "Görevinizde size yardımcı olmak için ne seçiyorsunuz?" diye soracak şekilde yapılandırırsınız, bir ejderha, çevirmen veya pusula Devam etmeden önce kullanıcıdan gerekli bilgileri toplamak için alan doldurma adlı bir özelliği kullanabilirsiniz.
İşleminiz üç yardımcı için servet sağlıyor: bir ejderha, çevirmen ve pusula. İşleminizi kullanıcı girişinde 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 yuvayı doldurma aşamasındaki türleri kullanabilirsiniz. NLU motoru, kullanıcı girişinde bir alan eşleşmesi tespit ettiğinde, slotu yazılan bir parametre olarak çıkarır. Böylece, bir sahnede bu slotla mantığı uygulayabilirsiniz.
available_options
türü oluştur
Bu bölümde, available_options
adında, kullanıcıların isteme yanıt olarak belirleyebileceği üç seçeneği (ejderha, çevirmen ve pusula) belirten yeni bir tür oluşturacaksınız. Ayrıca, kullanıcının benzer bir şey söylemesi ihtimaline karşı bu seçenekler için birkaç eş anlamlı kelime tanımlarsınız. Sonraki bir bölümde, kullanıcının seçimini almak istediğinizi belirtmek için bir alana available_options
türünü ekleyeceksiniz.
available_options
türünü oluşturmak için şu adımları izleyin:
types
adlı yeni bir dizin oluşturun:
mkdir custom/types
types
dizinindeavailable_options.yaml
adlı yeni bir dosya oluşturun:
touch custom/types/available_options.yaml
custom/types/available_options.yaml
dosyasını metin düzenleyicinizde açın.
Türler, anahtar/değer çiftleri olarak yapılandırılır. Burada anahtar, türün adı ve değerler de bu anahtarın eş anlamlılarıdır. Tanımladığınız anahtar otomatik olarak bir değer olarak eklenir. Actions SDK'sı ile anahtarları entities
ve değerleri synonyms
olarak temsil edersiniz.
Kullanıcının belirleyebileceği üç seçeneği eklemek için aşağıdaki adımları uygulayın:
available_options.yaml
dosyasına aşağıdakientities
vesynonyms
öğelerini ekleyin:
available_options.yaml
synonym: entities: dragon: synonyms: - dragon - hydra - lizard translator: synonyms: - translator - communicator - machine - decoder - translate compass: synonyms: - compass - direction - guide - navigator matchType: EXACT_MATCH
- Dosyayı kaydedin.
İşleminiz artık available_options
terimlerinin ejderha, çevirmen ve pusula olduğunu ve buna karşılık gelen birkaç eş anlamlı terimi tanıyabildiğini anlıyor.
Boşluk doldurmayı yapılandırma
Ardından, Fortune
sahnesini boşluk doldurmayı yapılandırmanız gerekir. Alan doldurma mantığını yapılandırmak için şu adımları uygulayın:
custom/scenes/Fortune.yaml
dosyasını metin düzenleyicinizde açın.- Aşağıdaki
slots
verileriniFortune.yaml
dosyasına ekleyin:
Fortune.yaml
slots: - commitBehavior: writeSessionParam: chosenOptions name: chosenOptions promptSettings: initialPrompt: staticPrompt: candidates: - promptResponse: firstSimple: 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 required: true type: name: available_options
- Dosyayı kaydedin.
Artık alana available_options
türünü eklediniz. Bu tür, devam etmeden önce kullanıcıdan almanız gereken bilgileri (kullanıcının seçimi) İşleminize bildirir. Ayrıca, alan içinde bir istem yapılandırdınız. Bu istem, kullanıcı sahnenin alan doldurma aşamasına ulaştığında istem sırasına eklenir.
Alanı chosenOptions
olarak adlandırdığınızda, writeSessionsParam
alanı aynı adla ($session.params.chosenOptions
) güncellenir. Bu parametreye, istemde ve istemci kitaplığındaki gönderiminizde bu adla erişebilirsiniz.
Koşul ekle
Kullanıcının yardım seçmesini gerektiren bir zaman aralığı eklediğinize göre, kullanıcı görüşmeye devam etmeden önce alan verilerinin alınıp alınmadığını kontrol etmek için bir koşul ekleyebilirsiniz.
Bu bölümde, alan doldurmanın tamamlanıp tamamlanmadığını kontrol eden scene.slots.status == "FINAL"
koşulunu eklersiniz. Tüm alanlar doldurulduktan sonra koşul, istem sırasına bir istem (You picked $session.params.chosenOptions.
) ekler.
scene.slots.status == "FINAL"
koşulunu yapılandırmak için şu adımları uygulayın:
custom/scenes/Fortune.yaml
dosyasını metin düzenleyicinizde açın.conditionalEvents
verileriniFortune.yaml
dosyasının en üstüne ekle:
Fortune.yaml
conditionalEvents: - condition: scene.slots.status == "FINAL" handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: You picked $session.params.chosenOptions.
- Dosyayı kaydedin.
İşleminizi simülatörde test etme
Bu noktada, kullanıcının alanı doldurmak için belirlemesi gereken seçenekleri tanımlamışsınız. Kullanıcıdan bu bilgileri aldıktan sonra İşleminiz, kullanıcının tercih ettiği seçeneği referans gösteren bir istem sağlamalıdır.
İşleminizi test etmek için şu adımları uygulayın:
- Terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview
Şuna benzer bir çıkış alırsınız:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
- Giriş alanına
Talk to my test app
düğmesini tıklayın veya yazın ve Enter tuşuna basın. - Giriş alanına
Yes
yazın ve Enter tuşuna basın. Alternatif olarak Evet öneri çipini de tıklayabilirsiniz.
- Tıklayın, yazın veya
dragon
deyin. "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ştireceksiniz.
Koşulları kullanarak istemleri özelleştirme
Bu bölümde, kullanıcının seçebileceği her seçenek için koşullar ve her koşul için özel bir istem ekleyeceksiniz.
dragon
falını özelleştir
Koşulu güncellemek ve kullanıcının "ejderha"yı seçtiğinde gösterilecek istemi özelleştirmek için aşağıdaki adımları uygulayın:
custom/scenes/Fortune.yaml
dosyasını metin düzenleyicinizde açın.conditionalEvents
verilerini,Fortune.yaml
dosyasında aşağıdaki snippet ile değiştirin:
Fortune.yaml
conditionalEvents: - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon" handler: staticPrompt: candidates: - promptResponse: firstSimple: 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.
- Dosyayı kaydedin.
Artık kullanıcı "ejderha" dediğinde veya kulağa benzer bir şey söylediğinde İşleminiz bu seçime dayalı olarak size bir servet kazandırıyor. Sonra, kalan iki seçimi eklersiniz.
translator
ve compass
fallarını özelleştir
Koşulları eklemek ve bir kullanıcı "çevirmen" veya "pusula" dediğinde gösterilecek istemleri özelleştirmek için aşağıdaki adımları uygulayın:
custom/scenes/Fortune.yaml
dosyasında,dragon
koşulu altındaki diğer iki koşulu ekleyin:
Fortune.yaml
- condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" handler: staticPrompt: candidates: - promptResponse: firstSimple: 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 other journeys across the earth. After its work is done, it retires honorably to a premier location in the Gryffinberg History Museum. - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" handler: staticPrompt: candidates: - promptResponse: firstSimple: 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.
- Dosyayı kaydedin.
İşleminizi simülatörde test etme
Bu noktada İşleminiz, kullanıcının tercih ettiği seçeneğe göre özelleştirilmiş bir talih sağlamalıdır.
İşleminizi test etmek için şu adımları uygulayın:
- Terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview
Şuna benzer bir çıkış alırsınız:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
- Giriş alanına
Talk to my test app
yazın ve Enter tuşuna basın. - Giriş alanına Evet yazıp Enter tuşuna basın. Alternatif olarak Evet öneri çipini de tıklayabilirsiniz.
- Tıklayın, yazın veya
Translator
deyin.
"Çevirmen" için uygun kaderi alırsınız. seçeneğini belirleyin.
3. Oyun döngüsü ekle
Bu bölümde İşleminizi, kullanıcının başka bir seçenek belirleyebileceği ve seçim yaptıktan sonra farklı bir talih duyabileceği şekilde yapılandıracaksınız. Bu değişiklik, oyunun sonunda gösterilen "Tekrar oynamak istiyor musunuz?" mesajına benzer. Bu döngüyü oluşturmak için önceden oluşturulan yes
ve no
intent'lerini yeniden kullanıp Again
adlı yeni bir sahneye ekleyebilirsiniz.
Again
sahnesi oluşturun
Bu bölümde yeni bir Again
sahnesi oluşturup kullanıcıya farklı bir seçenek belirlemek isteyip istemediğini soran bir istem eklersiniz.
Again
sahnesini oluşturmak ve yapılandırmak için şu adımları uygulayın:
scenes
dizinindeAgain.yaml
adlı yeni bir dosya oluşturun:
touch custom/scenes/Again.yaml
custom/scenes/Again.yaml
dosyasını metin düzenleyicinizde açın.- Şu
onEnter
verileriniAgain.yaml
hesabına ekleyin:
Again.yaml
onEnter: staticPrompt: candidates: - promptResponse: firstSimple: 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"
- Dosyayı kaydedin.
Fortune
sahneden Again
sahnesine geçiş ekle
Kullanıcının para kazandıktan sonra görüşmenin yeni Again
sahnesine geçmesi gerekir.
Fortune
sahnesinden Again
sahnesine geçiş eklemek için şu adımları uygulayın:
custom/scenes/Fortune.yaml
dosyasını metin düzenleyicinizde açın.- Aşağıdaki snippet'te gösterildiği gibi her koşula
transitionToScene: Again
ekleyin:
Fortune.yaml
conditionalEvents: - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon" handler: staticPrompt: candidates: - promptResponse: firstSimple: 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. transitionToScene: Again - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" handler: staticPrompt: candidates: - promptResponse: firstSimple: 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 other journeys across the earth. After its work is done, it retires honorably to a premier location in the Gryffinberg History Museum. transitionToScene: Again - condition: scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" handler: staticPrompt: candidates: - promptResponse: firstSimple: 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. transitionToScene: Again
- Dosyayı kaydedin.
İşleminizi simülatörde test etme
Bu noktada İşleminiz, kullanıcıya talimatını verdikten sonra şu istemi sunmalıdır: "Sizin için böyle olduğunu görüyorum. Farklı bir seçenek belirleyip başka bir geleceği keşfetmek ister misiniz?"
İşleminizi test etmek için şu adımları uygulayın:
- Terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview
Şuna benzer bir çıkış alırsınız:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
- Giriş alanına
Talk to my test app
yazın ve Enter tuşuna basın. - Giriş alanına
Yes
yazın ve Enter tuşuna basın. Alternatif olarak Evet öneri çipini de tıklayabilirsiniz. - Tıklayın, yazın veya
dragon
deyin.
Ejderha seçeneği ve Again
istemi için kıyafetiniz var.
Amaç ekleyin ve Again
sahnesine geçiş yapın
İşleminizin kullanıcının yeni bir seçenek belirlemek isteyip istemediğini anlaması için bu bölümde Again
sahnesine yes
ve no
amaçları eklediniz. Ayrıca yes
ve no
amaçları için uygun geçişleri eklersiniz. yes
niyeti Fortune
sahnesine geçerken no
intent, End conversation
sistem sahnesine geçiş yapar.
Again
sahnesine amaç ve geçiş eklemek için şu adımları uygulayın:
custom/scenes/Again.yaml
dosyasını metin düzenleyicinizde açın.intentEvents
verileriniAgain.yaml
dosyasının en üstüne,OnEnter
değerinin üstüne ekleyin:
Again.yaml
intentEvents: - intent: "yes" transitionToScene: Fortune - handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell. intent: "no" transitionToScene: actions.scene.END_CONVERSATION
- Dosyayı kaydedin.
İşleminizi simülatörde test etme
İşleminiz artık kullanıcının yeni bir seçenek belirlemek veya görüşmeyi sonlandırmak isteyip istemediğini anlamalıdır.
yes
amacını test etmek için şu adımları izleyin:
- Terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview
Şuna benzer bir çıkış alırsınız:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
- Giriş alanına
Talk to my test app
yazın ve Enter tuşuna basın. - Giriş alanına
Yes
yazın ve Enter tuşuna basın. Alternatif olarak Evet öneri çipini de tıklayabilirsiniz. - Seçeneklerden birini tıklayın, yazın veya söyleyin.
- Giriş alanına
Yes
yazıp Enter tuşuna basın.
"Görevinizde size yardımcı olmak için ne seçersiniz, bir ejderha, çevirmen veya pusula?" istemini göreceksiniz.
no
amacını test etmek için şu adımları izleyin:
- Seçeneklerden birini tıklayın, yazın veya söyleyin.
- Giriş alanına
No
yazıp Enter tuşuna basın.
End conversation
istemini almanız gerekir: "Seçiminizden memnun kalmanıza sevindim. Görevinizde iyi şanslar. Hoşça kalın."
4. Destekleyici bir yol ekleyin
Artık çoğu kullanıcının İşleminizde izlediği ana yolu oluşturdunuz. Ancak kullanıcı, Fortune
sahnedeki isteme, "görevinizde, bir ejderha, çevirmen veya pusulada size yardımcı olmak için ne seçersiniz?", sunulan seçeneklerden biri dışında bir seçenekle yanıt verebilir.
Bu bölümde İşleminizi, bir kullanıcının "sihir", "para", "at" veya "telefon" dediğini anlayacak ve bu seçeneklerden birini tercih eden kullanıcıdan ilk üç seçenekten birini belirlemesini isteyecek şekilde yapılandıracaksınız. Bu mantığı yapılandırmak için, diğer seçenekleri içeren yeni bir type
ve kullanıcı bu seçeneklerden birini söylediğinde eşleşen yeni bir amaç (other_option
) oluşturmanız gerekir. Amaç parametrelerini tanımlamak ve ayıklamak için other_option
amacı içindeki eğitim ifadelerini de not eklemeniz gerekir.
Asistan'ın Doğal Dil İşleme motoru, kullanıcı girişinde bir parametre eşleşmesi tespit ettiğinde değeri yazılan bir parametre olarak ayıklar. Böylece bir sahnede bu değerle mantığı uygulayabilirsiniz. Bu codelab'de, İşleminizi kullanıcının seçtiği yardımı çıkaracak ve bir istemde bu seçeneğe referans verecek şekilde yapılandıracaksınız.
unavailable_options
türü oluştur
Artık çeşitli seçenekler içeren bir unavailable_options
türü oluşturabilirsiniz. Böylece İşleminiz kullanıcı girişindeki verileri tanımlayabilir.
unavailable_options
türünü oluşturmak için şu adımları izleyin:
types
dizinindeunavailable_options.yaml
adlı yeni bir dosya oluşturun:
touch custom/types/unavailable_options.yaml
custom/types/unavailable_options.yaml
dosyasını metin düzenleyicinizde açın.- Aşağıdaki
synonyms
verileriniunavailable_options.yaml
dosyasına ekleyin:
unavailable_options.yaml
synonym: entities: money: synonyms: - money - cash - gold horse: synonyms: - horse - stallion - steed magic: synonyms: - magic - enchanted - spells phone: synonyms: - phone - cell - apps matchType: EXACT_MATCH
- Dosyayı kaydedin.
other_option
intent oluştur
Daha sonra, other_option
adında bir amaç oluşturup unavailable_options
türündeki seçenekleri içeren eğitim ifadeleri eklersiniz. Kullanıcı, unavailable_options
türünde yer alan bir seçeneği belirlediğinde bu amaç eşleştirilir.
other_option
amacını oluşturmak ve yapılandırmak için aşağıdaki adımları uygulayın:
intents
dizinindeother_option.yaml
adlı yeni bir dosya oluşturun:
touch custom/intents/other_option.yaml
custom/intents/other_option.yaml
dosyasını metin düzenleyicinizde açın.- Aşağıdaki
parameters
verilerini vetrainingPhrases
verileriniother_option.yaml
dosyasına ekleyin:
other_option.yaml
parameters: - name: chosenUnavailableOption type: name: unavailable_options trainingPhrases: - I want to use ($chosenUnavailableOption 'spells' auto=true) - I really really want to use a ($chosenUnavailableOption 'phone' auto=true) - ($chosenUnavailableOption 'magic' auto=true)! - ($chosenUnavailableOption 'cash' auto=true) - I want to ride a ($chosenUnavailableOption 'horse' auto=true)
Burada, eğitim ifadelerine bir önceki bölümde belirttiğiniz kullanılamayan seçeneklerle manuel olarak açıklama eklersiniz. Amaç parametresi chosenUnavailableOption
, ilgili seçeneğin adını çıkarmanıza ve bu seçeneği bir istemde kullanmanıza olanak tanır. Aşağıdaki bölümde bu işlemi gerçekleştireceksiniz.
- Dosyayı kaydedin.
Fortune
sahneye other_option
intent ekleyin
Artık, kullanıcının orijinal seçeneklerden biri olmayan bir seçeneği belirtebilecek bir niyetiniz (other_option
) var. Bu bölümde Fortune
sahnesine other_option
niyetini ekleyeceksiniz. İstemi kullanıcı girişine göre özelleştirmek için intent parametresini kullanırsınız.
other_option
amacını Fortune
sahnesine eklemek için şu adımları uygulayın:
custom/scenes/Fortune.yaml
dosyasını metin düzenleyicinizde açın.conditionalEvents
verileri ileslots
verileri arasına aşağıdakiintentEvents
verilerini ekleyin:
Fortune.yaml
intentEvents: - handler: staticPrompt: candidates: - promptResponse: firstSimple: variants: - speech: I have seen the future and a $intent.params.chosenUnavailableOption.original will not aid you on your journey. intent: other_option
- Dosyayı kaydedin.
$intent.params.chosenUnavailableOption
ifadesi, intent parametresi nesnesini, $intent.params.chosenUnavailableOption.original
ise bu nesnenin değerini ifade eder. original
özelliği, kullanıcının belirttiği ham girişi ifade eder.
Kullanıcı Fortune
sahnesinde unavailable_options
türünde listelenen bir seçeneği söylediğinde other_option
amacı eşleştirilir ve istem sırasına bir istem ekler. Geçiş belirtilmediğinden sahne yürütme döngüsü, koşullar aşamasını yeniden değerlendirerek devam eder. chosenOptions
alanı, 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 seçtiği yardımı belirtmelidir. İşleminiz daha sonra kullanıcıdan yeniden orijinal seçeneklerden birini (ejderha, çevirmen veya pusula) seçmesini istemelidir.
İşleminizi simülasyon aracında test etmek için aşağıdaki adımları uygulayın:
- Terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview
Şuna benzer bir çıkış alırsınız:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
- Giriş alanına
Talk to my test app
yazın ve Enter tuşuna basın. - Giriş alanına
Yes
yazın ve Enter tuşuna basın. Alternatif olarak Evet öneri çipini de tıklayabilirsiniz. - Giriş alanına
magic
yazın ve Enter tuşuna basın.
Kullanıcı, "a" harfi nedeniyle "sihir"i seçtiğinde istemin doğru görünmediğini fark edebilirsiniz. öncesini eklerler. Bu sorunu aşağıdaki bölümlerde ele alacağız.
unavailable_options
işleyicisi ekle
"a" harfini yerleştirmek için makalesinde, unavailable_options
türündeki uygun seçimlerden önce gelirse kullanıcının seçtiği seçeneğin "a" gerektirip gerektirmediğini kontrol etmek amacıyla sipariş karşılama mantığınızda bir etkinlik işleyici yapılandırabilirsiniz. girin. Öncelikle, İşleminizi Fortune
sahnesinden işleyiciyi çağıracak şekilde yapılandırmanız gerekir.
unavailable_options
işleyicisini Fortune
sahnesine eklemek için şu adımları izleyin:
custom/scenes/Fortune.yaml
dosyasını metin düzenleyicinizde açın.Fortune.yaml
dosyasını aşağıdakiintentEvents
verileriyle güncelleyin:
Fortune.yaml
intentEvents: - handler: webhookHandler: unavailable_options intent: other_option
- Dosyayı kaydedin.
Sipariş karşılamayı güncelle ve dağıt
İşleminizi unavailable_options
etkinlik işleyiciyi çağıracak şekilde yapılandırdığınıza göre, istek karşılamadaki işleyiciyi güncelleyip dağıtabilirsiniz.
Sipariş karşılama durumunuzu güncellemek için aşağıdaki adımları uygulayın:
webhooks/ActionsOnGoogleFulfillment/index.js
dosyasını metin düzenleyicinizde açın.greeting
işleyicinin altındaindex.js
öğesine şu kodu ekleyin:
index.js
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({debug:true});
altına aşağıdaki kodu ekleyin:
index.js
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
- Dosyayı kaydedin.
Kodu anlama
unavailable_options
işleyicisi şunları yapar:
conv
nesnesindenoption
verilerini alır ve kullanıcının ham girişi olanoriginal
özelliğineoption
değerini atarresolved
özelliğine,unavailable_options
türünün anahtarı olanoptionKey
değerini ataroptionKey
öğesinin, "a" girilmesi gereken seçeneklerden biri olup olmadığını kontrol eder; varsa mesajı, ek bir "a"- Mesajı
conv.add(message)
üzerinden ekler
İşleyicileri güncelleme
İşlemin unavailable_options
kullanmasına izin vermek için unavailable_options
işleyicisini webhooks/ActionsOnGoogleFulfillment.yaml
öğesine ekleyin.
unavailable_options
işleyici adınıActionsOnGoogleFulfillment.yaml
öğesine ekleyin:
ActionsOnGoogleFulfillment.yaml
handlers: - name: greeting - name: unavailable_options inlineCloudFunction: executeFunction: ActionsOnGoogleFulfillment
- Dosyayı kaydedin.
İşleminizi simülatörde test etme
İşleminiz artık istemi, kullanıcının unavailable_options
türü seçiminin "a" gerektirip gerektirmediğine göre ayarlamalıdır bu makaleye bakın.
İşleminizi test etmek için şu adımları uygulayın:
- Terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview
Şuna benzer bir çıkış alırsınız:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
- Giriş alanına
Talk to my test app
düğmesini tıklayın veya yazın ve Enter tuşuna basın. - Giriş alanına
Yes
yazın ve Enter tuşuna basın. Alternatif olarak Evet öneri çipini de tıklayabilirsiniz. - Giriş alanına
magic
yazın ve Enter tuşuna basın. Ardından, Giriş alanınahorse
yazın ve Enter tuşuna basın.
İşleminiz "a" harfini eklemelidir "at"tan önceki makale "a" kullanmadan istemi oluştururken "sihir" ile ilgili makale seçim.
5. Actions konsolunda İşlemi görselleştirme
Actions SDK, Actions konsoluna entegre edilmiş Actions Builder adlı web tabanlı bir IDE ile birlikte çalışabilirlik özelliğine sahiptir. Konsolda gactions push
komutunu kullanarak yerel dosya sisteminizi İşleminizin taslağına aktarabilirsiniz. Actions konsolu, işleminizin yapılandırmasının görsel bir temsilini sağlar. İşleminizin görsel olarak eşlendiğini görmek, geliştirme sırasında faydalı olabilir ve işleminizin test için sunulan sürümünü etkilemez.
Actions projenizi aktarmak ve Actions konsolunda görüntülemek için şu adımları uygulayın:
- Terminalde, projenizi Actions konsoluna aktarmak için aşağıdaki komutu çalıştırın:
gactions push
Şuna benzer bir çıkış alırsınız:
✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
- Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
- İşlemler konsolunda, üst gezinme çubuğunda Geliştir'i tıklayın.
- Sahneler'in yanındaki açılır oku, ardından Başlat'ı tıklayın. Aşağıdaki ekran görüntüsünde olduğu gibi İşleminizin
Start
sahnesinin görsel bir temsilini göreceksiniz:
Projenizi temizleyin [ö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 şu 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 konsolundan hemen kaldırmak için Proje silme bölümünde listelenen adımları tamamlayın. Bu adımı tamamlamazsanız projeniz yaklaşık 30 gün sonra otomatik olarak kaldırılır.
6. Tebrikler!
Artık Actions SDK'sı ile Google Asistan'a yönelik İşlemler oluşturmak için gereken orta düzey becerileri biliyorsunuz.
İşledikleriniz
- Node.js karşılama kitaplığını kullanarak Conversational Actions'ı geliştirme
- Kullanıcıdan veri toplamak için slotları kullanma
- Sahneye mantık eklemek için koşullar nasıl kullanılır?
- Oyun döngüsü nasıl eklenir?
- Destekleyici yol ekleme
Daha fazla bilgi
Google Asistan için İşlemler oluşturma hakkında bilgi edinmek üzere şu kaynakları keşfedebilirsiniz:
- Google Asistan için Actions'ı geliştirmeyle ilgili dokümanlar
- Örnek kod ve kitaplıklar için Google GitHub sayfasındaki işlemler
- Google Asistan ile çalışan geliştiriciler için resmi Reddit topluluğu
- Conversational Actions ile ilgili en iyi uygulamalar ve yönergeler için ileti dizisi tasarım yönergeleri
En son duyurularımızı kaçırmamak için bizi Twitter @ActionsOnGoogle'da takip edin ve çalışmalarınızı paylaşmak için #AoGDevs'e tweet atın.
Geri bildirim anketi
Ayrılmadan önce lütfen deneyiminizle ilgili kısa bir anketi doldurun.