Actions SDK'sını kullanarak Google Asistan için İşlemler oluşturma (1. 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'de, Google Asistan için İşlemler SDK'sı ile geliştirme yapmaya yönelik başlangıç düzeyindeki kavramlar ele alınmaktadır. Bu codelab'i tamamlamak için platformla ilgili herhangi bir deneyime ihtiyacınız yoktur. Bu codelab'de, Google Asistan için basit bir işlem oluşturacaksınız. Bu işlem, Gryffinberg'in efsanevi topraklarında maceraya atılan kullanıcılara fal bakacak. Actions SDK 2. seviye codelab'inde, kullanıcının kaderini girişine göre özelleştirmek için bu işlemi daha da geliştirirsiniz.

Ne oluşturacaksınız?

Bu codelab'de aşağıdaki işlevlere sahip basit bir İşlem oluşturacaksınız:

  • Kullanıcılara karşılama mesajıyla yanıt verir.
  • Kullanıcılara soru sorar ve kullanıcının seçimine uygun şekilde yanıt verir.
  • Kullanıcıların tıklayarak giriş yapabileceği öneri çipleri sunar.
  • Kullanıcının geri gelen kullanıcı olup olmamasına göre karşılama mesajını değiştirir.

Bu codelab'i tamamladığınızda, tamamlanan İşleminiz aşağıdaki sohbet akışına sahip olur (mikrofonun yanındaki metin kullanıcının girişini, hoparlörün yanındaki metin ise İşlemin yanıtını temsil eder):

1c1e79902bed7230.png

18ef55647b4cb52c.png

Neler öğreneceksiniz?

  • Actions Console'da proje oluşturma
  • İşlem projenizi İşlemler konsolu ile yerel dosya sisteminiz arasında göndermek ve çekmek için gactions aracını kullanma
  • Kullanıcı, İşleminizi çağırdıktan sonra ona nasıl istem gönderilir?
  • Kullanıcı girişini işleme ve yanıt döndürme
  • İşleminizi Actions simülatöründe test etme
  • Cloud Functions Düzenleyici'yi kullanarak karşılama işlemini uygulama

İhtiyacınız olanlar

Ortamınızda aşağıdaki araçlar bulunmalıdır:

  • Seçtiğiniz bir IDE veya metin düzenleyici
  • Node.js ve npm için kabuk komutlarını çalıştırmak üzere bir terminal
  • Google Chrome gibi bir web tarayıcısı

2. Kur

Aşağıdaki bölümlerde geliştirme ortamınızı nasıl ayarlayacağınız ve İşlemler projenizi nasıl oluşturacağınız açıklanmaktadır.

Google izin ayarlarınızı kontrol etme

Bu codelab'de oluşturduğunuz işlemi test etmek için simülatörün işleminize erişebilmesi için gerekli izinleri etkinleştirmeniz gerekir.

İzinleri etkinleştirmek için aşağıdaki adımları uygulayın:

  1. Etkinlik kontrolleri'ne gidin.
  2. Henüz yapmadıysanız Google Hesabınızla oturum açın.
  3. Aşağıdaki izinleri etkinleştirin:
  • Web ve Uygulama Etkinliği
  • Web ve Uygulama Etkinliği bölümünde Chrome geçmişini ve Google hizmetlerini kullanan site, uygulama ve cihazlardaki etkinlikleri dahil et onay kutusunu işaretleyin.

Actions projesi oluşturma

Actions projeniz, işleminiz için bir kapsayıcıdır.

Bu codelab için Actions projenizi oluşturmak üzere aşağıdaki adımları uygulayın:

  1. Actions Console'u açın.
  2. Yeni proje'yi tıklayın.
  3. actions-codelab gibi bir Proje adı girin. (Bu ad, dahili referansınız içindir. Daha sonra projeniz için harici bir ad belirleyebilirsiniz.)

8cd05a84c1c0a32f.png

  1. Proje oluştur'u tıklayın.
  2. Ne tür bir işlem oluşturmak istiyorsunuz? ekranında Özel kartını seçin.
  3. İleri'yi tıklayın.
  4. Nasıl oluşturmak istiyorsunuz? ekranında Boş proje kartını seçin.
  5. Derlemeye başla'yı tıklayın.

İşleminizin proje kimliğini kaydetme

Proje kimliği, işleminizin benzersiz tanımlayıcısıdır. Bu codelab'deki çeşitli adımlar için proje kimliğinize ihtiyacınız vardır.

Proje kimliğinizi almak için şu adımları uygulayın:

  1. İşlemler konsolunda üç dikey noktayı (simgeyi buraya ekleyin) tıklayın.
  2. Proje ayarları'nı tıklayın.

6f59050b85943073.png

  1. Proje kimliğini kopyalayın.

Faturalandırma hesabı ilişkilendirme

Henüz bir faturalandırma hesabınız yoksa daha sonra Cloud Functions ile karşılama işleminizi dağıtmak için bir faturalandırma hesabı oluşturmanız ve bu hesabı Google Cloud'daki projenizle ilişkilendirmeniz gerekir.

Faturalandırma hesabını projenizle ilişkilendirmek için aşağıdaki adımları uygulayın:

  1. Google Cloud Platform faturalandırma sayfasına gidin.
  2. Faturalandırma hesabı ekle veya Hesap oluştur'u tıklayın.
  3. Ödeme bilgilerinizi girin.
  4. Ücretsiz denememi başlat veya Faturalandırmayı gönder ve etkinleştir'i tıklayın.
  5. Google Cloud Platform faturalandırma sayfasına gidin.
  6. Projelerim sekmesini tıklayın.
  7. Codelab'in İşlemler projesinin yanındaki İşlemler bölümünde üç noktayı tıklayın.
  8. Faturalandırmayı değiştir'i tıklayın.
  9. Açılır menüden yapılandırdığınız faturalandırma hesabını seçin.
  10. Hesap belirle'yi tıklayın.

Ücretlendirilmemek için bu codelab'in sonundaki Projenizi temizleme bölümündeki adımları uygulayın.

gactions komut satırı arayüzünü yükleme

Bu codelab'de, İşlemler projenizi İşlemler Konsolu ile yerel dosya sisteminiz arasında senkronize etmek için gactions komut satırı arayüzü (KSA) aracını kullanacaksınız.

gactions CLI'yı yüklemek için Install the gactions command-line tool (gactions komut satırı aracını yükleme) başlıklı makaledeki talimatları uygulayın.

Actions projenizi indirme

Actions projenizi Actions Console'dan indirerek İşleminizi geliştirmeye başlayın.

İşlemler projenizi indirmek için aşağıdaki adımları uygulayın:

  1. Yeni bir dizin oluşturmak ve bu dizine geçmek için aşağıdaki komutları çalıştırın:
mkdir myproject
cd myproject
  1. Actions projenizin yapılandırmasını yerel dosya sisteminize kopyalamak için aşağıdaki komutu çalıştırın:
gactions pull --project-id <projectID>

Dosya yapısını anlama

İşlemler Konsolu'ndan indirdiğiniz İşlemler projesi, YAML dosya yapısında gösterilir. Aşağıdaki resimde, dosya yapısının üst düzey bir temsili gösterilmektedir:

2aefeeab7c8eb32f.png

Dosya yapısı şunlardan oluşur:

  • actions/: İşlemler projenizi temsil eder. Sistem, İşleminiz çağrıldığında actions.yaml dosyasını çağırır. Bu dosya da custom/global/actions.intent.MAIN.yaml dosyasını çağırır.
  • custom/: İşleminizi değiştirmek için çalışacağınız dizin.
  • global/: Bu dizinde, platformun projenize otomatik olarak eklediği sistem amaçları bulunur. Sistem amaçları hakkında daha fazla bilgiyi bu Codelab'in ilerleyen bölümlerinde edineceksiniz.
  • manifest.yaml: Taşınabilir veya belirli bir projeye özgü olmayan ve projeler arasında taşınabilen bilgileri içeren bir dosya.
  • settings/: Görünen ad, varsayılan yerel ayar ve kategori gibi bir Actions projesinin ayarlarını temsil eder.

3. Sohbet başlatma

Kullanıcılar, çağırma yoluyla İşleminizle sohbet başlatır. Örneğin, MovieTime adlı bir İşleminiz varsa kullanıcılar "Ok Google, MovieTime ile konuş" gibi bir ifade söyleyerek İşleminizi çağırabilir. Burada MovieTime, görünen addır. İşleminizi üretime dağıtmak istiyorsanız işleminizin bir görünen adı olmalıdır. Ancak İşleminizi test etmek için görünen adı tanımlamanız gerekmez. Bunun yerine, İşleminizi çağırmak için simülatörde "Test uygulamamla konuş" ifadesini kullanabilirsiniz. Simülasyon aracı hakkında daha fazla bilgiyi bu bölümün ilerleyen kısımlarında bulabilirsiniz.

Kullanıcı, işleminizi çağırdıktan sonra ne olacağını tanımlamak için ana çağırmayı düzenlemeniz gerekir.

Varsayılan olarak, çağırma işleminiz tetiklendiğinde İşleminiz genel bir istem sağlar ("Ana çağırmayı tanımlayarak İşleminizi oluşturmaya başlayın.").

Bir sonraki bölümde, custom/global/actions.intent.MAIN.yaml dosyasında ana çağırma işleminiz için istemi özelleştireceksiniz.

Ana çağırma işlemini ayarlama

Ana çağırma isteminizi actions.intent.MAIN.yaml dosyasında düzenleyebilirsiniz.

İşleminiz çağrıldığında kullanıcıya gönderilen istemi değiştirmek için aşağıdaki adımları uygulayın:

  1. custom/global/actions.intent.MAIN.yaml dosyasını metin düzenleyicinizde açın.
  2. speech alanındaki metni (Start building your action...) aşağıdaki karşılama mesajıyla değiştirin: A wondrous greeting, adventurer! Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you're on your way to an epic journey.

actions.intent.MAIN.yaml

handler:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: A wondrous greeting, adventurer! Welcome to the mythical land of 
                Gryffinberg! Based on your clothes, you are not from around these lands. 
                It looks like you're on your way to an epic journey.
transitionToScene: actions.scene.END_CONVERSATION
  1. Dosyayı kaydedin.

Ana çağırmayı simülatörde test etme

Actions Console, İşleminizi test etmek için simülatör adlı bir web aracı sunar. Arayüz, donanım cihazlarını ve ayarlarını simüle eder. Böylece, akıllı ekranda, telefonda, hoparlörde veya KaiOS'te çalışıyormuş gibi İşleminizle konuşabilirsiniz.

İşleminizi çağırdığınızda artık eklediğiniz özelleştirilmiş istemle ("Maceracı, harika bir karşılama!..." ) yanıt vermesi gerekir.

İşlemler projenizin sürümünü güncellemeden konsolda İşleminizi test etmek için gactions deploy preview komutunu kullanabilirsiniz. Bu komutu çalıştırdığınızda, yerel dosya sisteminizde yaptığınız değişikliklerin hiçbiri Actions projenizin dağıtılan sürümlerine yayılmaz ancak bunları bir önizleme sürümünde test edebilirsiniz.

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

  1. Projenizi test için İşlemler konsoluna dağıtmak üzere terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview

Aşağıdakine 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ıp bir tarayıcıya yapıştırın.
  2. İşleminizi simülatörde çağırmak için Giriş alanına Talk to my test app yazıp Enter tuşuna basın.

656f5736af6a5a07.png

İşleminizin ana çağrısını tetiklediğinizde Asistan, özelleştirilmiş karşılama mesajınızla yanıt verir. Bu noktada, Asistan karşılama mesajıyla yanıt verdikten sonra görüşme sona erer. Sonraki bölümde, görüşmenin devam etmesi için İşleminizi değiştirirsiniz.

Olay günlüklerini görüntüleme

İşlemler Konsolu'ndaki Test sekmesindeyken panelde, görüşme geçmişini etkinlik günlükleri olarak gösteren etkinlik günlükleri gösterilir. Her etkinlik günlüğünde, görüşmenin o dönüşünde gerçekleşen etkinlikler gösterilir.

İşleminizde şu anda hem kullanıcının girişini ("Test uygulamamla konuş") hem de İşleminizin yanıtını gösteren bir etkinlik günlüğü var. Aşağıdaki ekran görüntüsünde İşleminizin etkinlik günlüğü gösterilmektedir:

a1b748d1fcebca80.png

Etkinlik günlüğünde Talk to my test app simgesinin yanındaki aşağı oku tıklarsanız konuşmanın o dönüşünde gerçekleşen etkinlikleri kronolojik olarak sıralanmış şekilde görebilirsiniz:

  • userInput: Kullanıcının girişine ("Test uygulamamla konuş") karşılık gelir.
  • interactionMatch: Kullanıcının girişiyle tetiklenen İşleminizin ana çağırma yanıtına karşılık gelir. Bu satırı oku tıklayarak genişletirseniz ana çağırma için eklediğiniz istemi görebilirsiniz (A wondrous greeting, adventurer!...).
  • endConversation: Şu anda görüşmeyi sonlandıran Main invocation amacında seçilen geçişe karşılık gelir. Geçişler hakkında daha fazla bilgiyi bu codelab'in sonraki bölümünde edineceksiniz.

Etkinlik günlükleri, işleminizin nasıl çalıştığına dair görünürlük sağlar ve sorun yaşamanız durumunda işleminizde hata ayıklama yapmak için kullanışlı araçlardır. Bir etkinliğin ayrıntılarını görmek için aşağıdaki ekran görüntüsünde gösterildiği gibi etkinlik adının yanındaki oku tıklayın:

fcc389b59af5bef1.png

4. İşleminizin sohbetini oluşturma

Kullanıcılar İşleminizi çağırdıktan sonra ne olacağını tanımladığınıza göre, İşleminizin görüşmesinin geri kalanını oluşturabilirsiniz. Bu codelab'e devam etmeden önce, İşleminizin görüşmesinin nasıl çalıştığını anlamak için aşağıdaki terimleri öğrenin:

İşleminizde bir veya daha fazla sahne olabilir. Her sahnenin çalışabilmesi için etkinleştirilmesi gerekir. Bu codelab'de oluşturduğunuz İşlem'de yalnızca Start adlı bir sahne var. Bir sahneyi etkinleştirmenin en yaygın yolu, kullanıcı girişi bir sahnedeki bir amaca eşleştiğinde bu amacın başka bir sahneye geçişi tetikleyip bu sahneyi etkinleştirecek şekilde İşleminizi yapılandırmaktır.

Örneğin, kullanıcıya hayvanlarla ilgili bilgiler veren varsayımsal bir İşlem düşünün. Kullanıcı bu işlemi çağırdığında Main invocation niyeti eşleştirilir ve Facts. adlı sahneye geçiş tetiklenir. Bu geçiş, Facts sahnesini etkinleştirir ve kullanıcıya şu istemi gönderir: Would you like to hear a fact about cats or dogs? Facts sahnesinde, kullanıcının kediyle ilgili bir bilgi duymak için söyleyebileceği eğitim ifadelerini (ör. "Kediyle ilgili bir bilgi duymak istiyorum" veya "kedi") içeren Cat adlı özel amaç bulunur. Kullanıcı kediyle ilgili bir bilgi edinmek istediğinde Cat niyetiyle eşleşme sağlanır ve Cat fact. adlı sahneye geçiş tetiklenir. Cat fact sahnesi etkinleştirilir ve kullanıcıya kediyle ilgili bir bilgi içeren istem gönderilir.

a78f549c90c3bff6.png

Şekil 1. Actions SDK ile oluşturulan bir Action'daki tipik bir etkileşimli dönüşün akışı.

Sahneler, niyetler ve geçişler birlikte konuşmanızın mantığını oluşturur ve kullanıcınızın İşleminizin konuşmasında izleyebileceği çeşitli yolları tanımlar. Aşağıdaki bölümde bir sahne oluşturacak ve kullanıcının İşleminizi çağırmasından sonra bu sahnenin nasıl etkinleştirileceğini tanımlayacaksınız.

Ana çağırmadan sahneye geçiş

Bu bölümde, Start adlı yeni bir sahne oluşturursunuz. Bu sahne, kullanıcıya geleceği hakkında bilgi almak isteyip istemediğini soran bir istem gönderir. Ayrıca, ana çağırmadan yeni Start sahnesine geçiş ekleyin.

Bu sahneyi oluşturmak ve sahneye geçiş eklemek için aşağıdaki adımları uygulayın:

  1. custom/global/actions.intent.MAIN.yaml dosyasını metin düzenleyicinizde açın.
  2. transitionToScene alanındaki metni (actions.scene.END_CONVERSATION) aşağıdaki metinle değiştirin: transitionToScene: Start

actions.intent.MAIN.yaml

handler:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: Welcome to the mythical land of  Gryffinberg! Based on your clothes,
              you are not from around these lands. It looks like you're on your way
              to an epic journey.
transitionToScene: Start

Bu, İşleminizin ana çağırmadan Start sahnesine geçiş yapmasını sağlar.

  1. Dosyayı kaydedin.
  2. Terminalde, custom dizininde yeni bir scenes dizini oluşturun:
mkdir custom/scenes 
  1. scenes dizininde Start.yaml adlı yeni bir dosya oluşturun. Bu dosya, İşleminizdeki start sahnesini temsil eder:
touch custom/scenes/Start.yaml 
  1. Start.yaml dosyasını metin düzenleyicinizde açın.
  2. Aşağıdaki kodu Start.yaml dosyasına yapıştırın:

Start.yaml

onEnter:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: Before you continue on your quest, would you like your fortune
              told?

Start.yaml dosya kodunda, bir sahnenin yaşam döngüsünde çalışan ilk aşama olan onEnter adlı bir alan bulunur.

Bu durumda, kullanıcı ilk kez Start sahnesine girdiğinde istem (Before you continue on your quest...) istem sırasına eklenir.

Öneri çipleri ekleme

Öneri çipleri, kullanıcının tıklayabileceği ve İşleminizin kullanıcı girişi olarak işleyeceği öneriler sunar. Bu bölümde, ekranlı cihazlardaki kullanıcıları desteklemek için az önce yapılandırdığınız istemin (Before you continue on your quest, would you like your fortune told?) altında görünen Yes ve No öneri çipleri ekleyin.

Start sahnesinin istemine öneri çipleri eklemek için aşağıdaki adımları uygulayın:

  1. Start.yaml içindeki kodu, öneri çipleri yapılandırma kodunu içeren aşağıdaki kod snippet'iyle eşleşecek şekilde güncelleyin:

Start.yaml

onEnter:
  staticPrompt:
    candidates:
    - promptResponse:
        firstSimple:
          variants:
          - speech: Before you continue on your quest, would you like your fortune
              told?
        suggestions:
        - title: "Yes"
        - title: "No"
  1. Dosyayı kaydedin.

İşleminizi simülatörde test etme

Bu noktada, İşleminiz ana çağırmadan Start sahnesine geçiş yapmalı ve kullanıcıya geleceği hakkında bilgi verilmesini isteyip istemediğini sormalıdır. Öneri çipleri, simüle edilmiş ekranda da görünmelidir.

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

  1. Terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview

Aşağıdakine 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ıp bir tarayıcıya yapıştırın.
  2. Simülasyon aracına gitmek için Test'i tıklayın.
  3. Giriş alanına Talk to my test app yazıp Enter tuşuna basın. İşleminiz, Main invocation istemi ve eklenen Start sahne istemiyle ("Görevine devam etmeden önce geleceğin hakkında bilgi edinmek ister misin?") yanıt vermeli ve öneri çipleri gösterilmelidir.

Aşağıdaki ekran görüntüsünde bu etkileşim gösterilmektedir:

3c2013ebb2da886a.png

  1. İsteme yanıt vermek için Evet veya Hayır öneri çipini tıklayın. ("Evet" veya "Hayır" da diyebilir ya da Giriş alanına Yes veya No girebilirsiniz.)

İsteme yanıt verdiğinizde İşleminiz, girişinizi anlayamadığını belirten bir mesajla yanıt veriyor: "Üzgünüm, anlayamadım. Tekrar deneyebilir misiniz?" İşleminizi henüz "Evet" veya "Hayır" girişini anlayıp yanıtlayacak şekilde yapılandırmadığınız için İşleminiz, girişinizi bir NO_MATCH niyetiyle eşleştiriyor.

NO_MATCH sistem amacı varsayılan olarak genel yanıtlar verir ancak bu yanıtları, kullanıcının girişini anlamadığınızı belirtmek için özelleştirebilirsiniz. Asistan, kullanıcı girişini üç kez eşleştiremedikten sonra kullanıcının İşleminizle olan görüşmesini sonlandırır.

yes ve no amaçlarını ekleme

Kullanıcılar artık İşleminizin sorduğu soruya yanıt verebildiğinden İşleminizi, kullanıcıların yanıtlarını ("Evet" veya "Hayır") anlayacak şekilde yapılandırabilirsiniz. Aşağıdaki bölümlerde, kullanıcı "Evet" veya "Hayır" dediğinde eşleşen özel amaçlar oluşturup bu amaçları Start sahnesine ekleyeceksiniz.

yes amacı oluşturma

yes amacı oluşturmak için aşağıdaki adımları uygulayın:

  1. Terminalde, custom dizininde intents adlı yeni bir dizin oluşturun:
mkdir custom/intents 
  1. intents dizininde yes.yaml adlı yeni bir dosya oluşturun:
touch custom/intents/yes.yaml
  1. yes.yaml dosyasını metin düzenleyicinizde açın.
  2. Eğitim ifadelerini içeren aşağıdaki kod snippet'ini yes.yaml içine yapıştırın:

yes.yaml

trainingPhrases:
- of course
- let's do it
- ok
- sure
- "y"
- "yes"
  1. Dosyayı kaydedin.

Start sahnesine yes amacı ekle

Artık İşlem, kullanıcının "evet" niyetini ifade ettiğini anlayabiliyor. Kullanıcı, Start istemine ("Maceranıza devam etmeden önce geleceğiniz hakkında bilgi edinmek ister misiniz?") yanıt verdiğinden yes özel amacını Start sahnesine ekleyebilirsiniz.

Bu özel amaca Start sahnesine eklemek için aşağıdaki adımları uygulayın:

  1. custom/scenes/Start.yaml dosyasını metin düzenleyicinizde açın.
  2. intentEvents ve yes işleyiciyi Start.yaml dosyasının sonuna ekleyin:

Start.yaml

intentEvents:
- handler:
    staticPrompt:
      candidates:
      - promptResponse:
          firstSimple:
            variants:
            - speech: Your future depends on the item you choose to use for your quest. Choose wisely! Farewell, stranger.
  intent: "yes"
  transitionToScene: actions.scene.END_CONVERSATION

yes amacı eşleştirildiğinde istem kuyruğuna "Geleceğiniz, görevinizde kullanmayı seçtiğiniz öğeye bağlı..." istemi eklenir. Start sahnesi, istem kuyruğundaki istemleri sunan ve görüşmeyi sonlandıran actions.scene.END_CONVERSATION sistem sahnesine geçer.

Simülatörde yes amacını test etme

Bu noktada, İşleminiz kullanıcının falını dinlemek istediğini anlar ve uygun yanıtı döndürür.

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

  1. Terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview

Aşağıdakine 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ıp bir tarayıcıya yapıştırın.
  2. Simülasyon aracına gitmek için Test'i tıklayın.
  3. İşleminizi simülatörde test etmek için Giriş alanına Talk to my test app yazıp Enter tuşuna basın.
  4. Giriş alanına Yes yazıp Enter tuşuna basın. Alternatif olarak, Evet öneri çipini tıklayın.

f131998710d8ffd8.png

İşleminiz kullanıcıya yanıt veriyor ve seçtiği yardıma göre geleceğinin şekilleneceğini söylüyor. Ardından, yes niyeti için End conversation geçişini yapılandırdığınızdan işleminiz oturumu sonlandırır.

no amacı oluşturma

Artık no amacını oluşturabilirsiniz. Böylece İşleminiz, kullanıcılar falını öğrenmek istemediğinde onları anlayıp yanıtlayabilir.

Bu amacı oluşturmak için aşağıdaki adımları uygulayın:

  1. Terminalde, intents dizininde no.yaml adlı yeni bir dosya oluşturun:
touch custom/intents/no.yaml
  1. no.yaml dosyasını metin düzenleyicinizde açın.
  2. Aşağıdaki eğitim ifadelerini no.yaml dosyasına yapıştırın:

no.yaml

trainingPhrases:
- nope
- I don't want
- "n"
- "no"
- nah
- no thanks
  1. Dosyayı kaydedin.

Start sahnesine no amacı ekle

Artık İşlem, kullanıcının "hayır" veya "hayır"'a benzer bir ifade (ör. "yok") kullandığını anlayabilir. Kullanıcı, Start istemine ("Maceranıza devam etmeden önce geleceğiniz hakkında bilgi almak ister misiniz?") yanıt verdiği için no özel amacını Start sahnesine eklemeniz gerekir.

Start sahnesi için bu amacı eklemek üzere aşağıdaki adımları uygulayın:

  1. custom/scenes/Start.yaml dosyasını metin düzenleyicinizde açın.
  2. Start.yaml içinde yes işleyicisinin altına aşağıdaki no işleyicisini ekleyin:

Start.yaml

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

Simülatörde no amacını test etme

Bu noktada, işleminiz kullanıcının geleceği hakkında bilgi almak istemediğini anlar ve uygun yanıtı döndürür.

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

  1. Terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview

Aşağıdakine 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ıp bir tarayıcıya yapıştırın.
  2. Simülasyon aracına gitmek için Test'i tıklayın.
  3. Giriş alanına Talk to my test app yazıp Enter tuşuna basın.
  4. Giriş alanına No yazıp Enter tuşuna basın. Alternatif olarak, No öneri çipini tıklayın.

c0c8b04066577eb2.png

Kullanıcıya geleceği hakkında bilgi vermek yerine, İşleminiz yolculuğunda ona başarılar diler. Ardından, no niyeti için End conversation geçişini yapılandırdığınızdan işleminiz oturumu sonlandırır.

5. Sipariş karşılama özelliğini uygulama

Şu anda İşleminizin yanıtları statik. Bir istem içeren sahne etkinleştirildiğinde İşleminiz her seferinde aynı istemi gönderiyor. Bu bölümde, dinamik bir sohbet yanıtı oluşturma mantığını içeren karşılama işlevini uygulayacaksınız.

Karşılama mesajınız, kullanıcının geri gelen bir kullanıcı mı yoksa yeni bir kullanıcı mı olduğunu belirler ve geri gelen kullanıcılar için İşlem'in karşılama mesajını değiştirir. Geri gelen kullanıcılar için karşılama mesajı kısaltılır ve kullanıcının geri geldiği belirtilir: "Maceraperest, hoş geldin! Efsanevi Gryffinberg diyarına tekrar hoş geldiniz!"

Bu codelab'de, karşılama kodunuzu düzenlemek ve dağıtmak için Cloud Functions düzenleyicisini kullanacaksınız.

İşleminiz, çağırma sırasında veya bir sahnenin yürütülmesinin belirli bölümlerinde gerçekleşen bir etkinliğin yerine getirilmesiyle ilgili sizi bilgilendiren webhook'ları tetikleyebilir. Bir webhook tetiklendiğinde Action'ınız, etkinliği işlemek için kullanılacak işleyicinin adıyla birlikte istek karşılama mantığınıza JSON yükü içeren bir istek gönderir. Bu işleyici, bazı mantık işlemlerini gerçekleştirir ve karşılık gelen bir JSON yanıtı döndürür.

İstek karşılama sürecinizi oluşturun

Bu bölümde, kullanıcılar İşleminizi çağırdığında geri gelen kullanıcılar ve yeni kullanıcılar için farklı istemler oluşturmak üzere karşılamanızı değiştirirsiniz.

Bu mantığı karşılama işleminize eklemek için aşağıdaki adımları uygulayın:

  1. Terminalde, projenizin kök dizininde olduğunuzdan emin olun ve yeni bir webhooks dizini oluşturun:
mkdir webhooks 
  1. webhooks dizininde ActionsOnGoogleFulfillment.yaml adlı yeni bir dosya oluşturun:
touch webhooks/ActionsOnGoogleFulfillment.yaml
  1. ActionsOnGoogleFulfillment.yaml dosyasını metin düzenleyicinizde açın.
  2. greeting işleyiciyi ve inlineCloudFunction içeriğini ActionsOnGoogleFulfillment.yaml dosyasına ekleyin:

ActionsOnGoogleFulfillment.yaml

handlers:
- name: greeting
inlineCloudFunction:
  executeFunction: ActionsOnGoogleFulfillment

ActionsOnGoogleFulfillment.yaml dosyası, webhook işleyicilerinizi (ör. greeting işleyici) tanımlar ve İşleminize webhook uç noktası olarak Cloud Functions'ı kullanmasını söyler.

  1. webhooks dizininde yeni bir ActionsOnGoogleFulfillment dizini oluşturun:
mkdir webhooks/ActionsOnGoogleFulfillment
  1. ActionsOnGoogleFulfillment dizininde index.js adlı yeni bir dosya oluşturun:
touch webhooks/ActionsOnGoogleFulfillment/index.js
  1. index.js dosyasını metin düzenleyicinizde açın.
  2. Aşağıdaki kodu index.js dosyasına ekleyin:

index.js

const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');

const app = conversation({debug: true});

app.handle('greeting', conv => {
 let message = 'A wondrous greeting, adventurer! Welcome back to the mythical land of Gryffinberg!';
 if (!conv.user.lastSeenTime) {
   message = 'Welcome to the mythical land of  Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you\'re on your way to an epic journey.';
 }
 conv.add(message);
});


exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);

Bu kod, greeting işleyicisini tanımlar. Bu işleyici, uygun selamlama mesajını

kullanıcı.

  1. Dosyayı kaydedin.
  2. ActionsOnGoogleFulfillment dizininde package.json adlı yeni bir dosya oluşturun:
touch webhooks/ActionsOnGoogleFulfillment/package.json

package.json dosyası, webhook'unuz için bağımlılıkları ve diğer meta verileri belirtir.

  1. package.json dosyasını metin düzenleyicinizde açın.
  2. Bu GitHub deposundaki kodu kopyalayıp package.json dosyasına yapıştırın.
  3. Dosyayı kaydedin.

Kodu anlama

Node.js için Actions on Google İstek Karşılama Kitaplığı'nı kullanan istek karşılama mantığınız, Google Asistan'dan gelen HTTP isteklerine yanıt verir.

Önceki kod snippet'inde, kullanıcının daha önce lastSeenTime özelliğiyle işlemi ziyaret edip etmediğini kontrol eden greeting işleyicisini tanımlıyorsunuz. lastSeenTime özelliği tanımlanmamışsa kullanıcı yenidir ve yeni kullanıcılara yönelik karşılama mesajını alır. Aksi takdirde, mesaj kullanıcının dönüşünü onaylar ve değiştirilmiş bir karşılama mesajı oluşturur.

Webhook'u tetiklemek için ana çağırmayı güncelleme

greeting işlevini tanımladığınıza göre, ana çağırma amacınızda greeting etkinlik işleyicisini yapılandırabilirsiniz. Böylece, kullanıcı İşleminizi çağırdığında İşleminiz bu işlevi çağırması gerektiğini bilir.

İşleminizi yeni greeting işleyiciyi çağıracak şekilde yapılandırmak için aşağıdaki adımları uygulayın:

  1. custom/global/actions.intent.MAIN.yaml dosyasını metin düzenleyicinizde açın.
  2. actions.intent.MAIN.yaml içindeki kodu aşağıdaki kodla değiştirin:

actions.intent.MAIN.yaml

handler:
  webhookHandler: greeting
transitionToScene: Start
  1. Dosyayı kaydedin.

Artık ana çağrı amacınız eşleştirildiğinde greeting webhook işleyicisi çağrılıyor.

Güncellenen ana çağırmayı simülatörde test etme

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

  1. Terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview

Aşağıdakine 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ıp bir tarayıcıya yapıştırın.
  2. İşleminizi simülatörde test etmek için Giriş alanına Talk to my test app yazıp Enter tuşuna basın.

Bu codelab'de daha önce İşleminizi test ettiğiniz için yeni kullanıcı değilsiniz. Bu nedenle, aşağıdaki kısaltılmış selamlama mesajını alırsınız: "Maceraperest, harika bir selamlama! Welcome back to the mythical land of Gryffinberg!..."

6. Actions Builder ile İşlemi Görselleştirme

Actions SDK, Actions Console'a entegre edilmiş Actions Builder adlı web tabanlı bir IDE ile birlikte çalışabilir. gactions push komutuyla yerel dosya sisteminizi konsoldaki İşleminizin taslağına aktarabilirsiniz. Yalnızca simülatörde işleminizi test etmenize olanak tanıyan gactions deploy preview'dan farklı olarak gactions push, yerel dosyalarınızdaki tüm içeriği Actions Builder'a taşır.

İşlemler Konsolu, İşleminizin yapılandırmasının görsel bir temsilini sunar. İşleminizin görsel olarak haritasını görmek geliştirme sırasında faydalı olabilir ve İşleminizin test için sunulan sürümünü etkilemez.

Actions projenizi göndermek ve Actions Console'da görüntülemek için aşağıdaki adımları uygulayın:

  1. Projenizi Actions Console'a göndermek için terminalde aşağıdaki komutu çalıştırın:
gactions push

Aşağıdakine 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ıp bir tarayıcıya yapıştırın.
  2. Actions Console'da üst gezinme çubuğundaki Geliştir'i tıklayın.
  3. Sahneler'in yanındaki açılır oku ve Başlat'ı tıklayın. Aşağıdaki ekran görüntüsünde gösterildiği gibi, İşleminizin Start sahnesinin görsel bir temsilini görmeniz gerekir:

332404b148609e96.png

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 hemen Actions Console'dan kaldırmak için Proje silme bölümünde listelenen adımları uygulayın. Bu adımı tamamlamazsanız projeniz yaklaşık 30 gün sonra otomatik olarak kaldırılır.

7. Tebrikler!

Actions SDK ile Google Asistan için İşlemler oluşturmanın temel bilgilerine sahip olmalısınız.

İşlediğiniz konular

  • Actions Console'da Actions projesi oluşturma
  • İşlemler projenizi yerel dosya sisteminizde oluşturmak için Actions SDK'yı kullanma
  • Kullanıcıların İşleminizle görüşme başlatabilmesi için ana çağırmaya nasıl istem eklenir?
  • Sahneler, amaçlar, geçişler, öneri çipleri ve karşılama ile etkileşimli arayüz oluşturma
  • İşleminizi Actions simülatörü ile test etme

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 için Twitter'da @ActionsOnGoogle'ı takip edin ve geliştirdiklerinizi paylaşmak için #AoGDevs etiketiyle tweet atın.

Geri bildirim anketi

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