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

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:

dd6f5c61296b8b50.png

eba043f546aa8c51.png

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 sahnesinden Fortune sahnesine geçişi tanımlayın
  • Fortune sahnesini oluşturun

Start sahnesini değiştirmek ve Fortune sahnesine geçiş eklemek için şu adımları uygulayın:

  1. Metin düzenleyicinizde 1. Düzey codelab'den Actions projenizi açın.
  2. custom/scenes/Start.yaml dosyasını açın.
  3. Kodunuzun aşağıdaki snippet ile eşleşmesi için yes amacına ait handler öğ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
  1. Dosyayı kaydedin.

Fortune adında yeni bir sahne oluşturmak için şu adımları uygulayın:

  1. Terminalde codelab 1. Düzey İşlemler projenize gidin.
  2. scenes dizininde Fortune.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:

  1. types adlı yeni bir dizin oluşturun:
mkdir custom/types
  1. types dizininde available_options.yaml adlı yeni bir dosya oluşturun:
touch custom/types/available_options.yaml
  1. 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:

  1. available_options.yaml dosyasına aşağıdaki entities ve synonyms öğ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
  1. 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:

  1. custom/scenes/Fortune.yaml dosyasını metin düzenleyicinizde açın.
  2. Aşağıdaki slots verilerini Fortune.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
  1. 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:

  1. custom/scenes/Fortune.yaml dosyasını metin düzenleyicinizde açın.
  2. conditionalEvents verilerini Fortune.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.
  1. 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:

  1. 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
  1. Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
  2. Giriş alanına Talk to my test app düğmesini tıklayın veya yazın ve Enter tuşuna basın.
  3. Giriş alanına Yes yazın ve Enter tuşuna basın. Alternatif olarak Evet öneri çipini de tıklayabilirsiniz.

a899d45c542668f6.png

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

  1. custom/scenes/Fortune.yaml dosyasını metin düzenleyicinizde açın.
  2. 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.
  1. 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:

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

  1. 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
  1. Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
  2. Giriş alanına Talk to my test app yazın ve Enter tuşuna basın.
  3. Giriş alanına Evet yazıp Enter tuşuna basın. Alternatif olarak Evet öneri çipini de tıklayabilirsiniz.
  4. Tıklayın, yazın veya Translator deyin.

29e17f950bd0dd71.png

"Ç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:

  1. scenes dizininde Again.yaml adlı yeni bir dosya oluşturun:
touch custom/scenes/Again.yaml
  1. custom/scenes/Again.yaml dosyasını metin düzenleyicinizde açın.
  2. Şu onEnter verilerini Again.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"
  1. 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:

  1. custom/scenes/Fortune.yaml dosyasını metin düzenleyicinizde açın.
  2. 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
  1. 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:

  1. 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
  1. Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
  2. Giriş alanına Talk to my test app yazın ve Enter tuşuna basın.
  3. Giriş alanına Yes yazın ve Enter tuşuna basın. Alternatif olarak Evet öneri çipini de tıklayabilirsiniz.
  4. Tıklayın, yazın veya dragon deyin.

b299e9fed9aedb69.png

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:

  1. custom/scenes/Again.yaml dosyasını metin düzenleyicinizde açın.
  2. intentEvents verilerini Again.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
  1. 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:

  1. 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
  1. Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
  2. Giriş alanına Talk to my test app yazın ve Enter tuşuna basın.
  3. Giriş alanına Yes yazın ve Enter tuşuna basın. Alternatif olarak Evet öneri çipini de tıklayabilirsiniz.
  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ö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:

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

  1. types dizininde unavailable_options.yaml adlı yeni bir dosya oluşturun:
touch custom/types/unavailable_options.yaml
  1. custom/types/unavailable_options.yaml dosyasını metin düzenleyicinizde açın.
  2. Aşağıdaki synonyms verilerini unavailable_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
  1. 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:

  1. intents dizininde other_option.yaml adlı yeni bir dosya oluşturun:
touch custom/intents/other_option.yaml
  1. custom/intents/other_option.yaml dosyasını metin düzenleyicinizde açın.
  2. Aşağıdaki parameters verilerini ve trainingPhrases verilerini other_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.

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

  1. custom/scenes/Fortune.yaml dosyasını metin düzenleyicinizde açın.
  2. conditionalEvents verileri ile slots verileri arasına aşağıdaki intentEvents 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
  1. 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:

  1. 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
  1. Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
  2. Giriş alanına Talk to my test app yazın ve Enter tuşuna basın.
  3. Giriş alanına Yes yazın ve Enter tuşuna basın. Alternatif olarak Evet öneri çipini de tıklayabilirsiniz.
  4. Giriş alanına magic yazın ve Enter tuşuna basın.

3a42c33eca435f32.png

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:

  1. custom/scenes/Fortune.yaml dosyasını metin düzenleyicinizde açın.
  2. Fortune.yaml dosyasını aşağıdaki intentEvents verileriyle güncelleyin:

Fortune.yaml

intentEvents:
- handler:
    webhookHandler: unavailable_options
  intent: other_option
  1. 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:

  1. webhooks/ActionsOnGoogleFulfillment/index.js dosyasını metin düzenleyicinizde açın.
  2. greeting işleyicinin altında index.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);
});
  1. const app = conversation({debug:true}); altına aşağıdaki kodu ekleyin:

index.js

const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
  1. Dosyayı kaydedin.

Kodu anlama

unavailable_options işleyicisi şunları yapar:

  • conv nesnesinden option verilerini alır ve kullanıcının ham girişi olan original özelliğine option değerini atar
  • resolved özelliğine, unavailable_options türünün anahtarı olan optionKey değerini atar
  • optionKey öğ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.

  1. unavailable_options işleyici adını ActionsOnGoogleFulfillment.yaml öğesine ekleyin:

ActionsOnGoogleFulfillment.yaml

handlers:
- name: greeting
- name: unavailable_options
inlineCloudFunction:
  executeFunction: ActionsOnGoogleFulfillment
  1. 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:

  1. 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
  1. Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
  2. Giriş alanına Talk to my test app düğmesini tıklayın veya yazın ve Enter tuşuna basın.
  3. Giriş alanına Yes yazın ve Enter tuşuna basın. Alternatif olarak Evet öneri çipini de tıklayabilirsiniz.
  4. Giriş alanına magic yazın ve Enter tuşuna basın. Ardından, Giriş alanına horse yazın ve Enter tuşuna basın.

54ee24c5c3c56e.png

İş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:

  1. 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.
  1. Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
  2. İşlemler konsolunda, üst gezinme çubuğunda Geliştir'i tıklayın.
  3. 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:

cae526c647f8d40f.png

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:

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

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.