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

1. Genel Bakış

Google Asistan geliştirici platformu, sanal kişisel asistan olan Google Asistan'ın işlevlerini akıllı hoparlörler, telefonlar, arabalar, TV'ler, kulaklıklar ve daha fazlası dahil olmak üzere 1 milyardan fazla cihazda genişletmek için yazılım oluşturmanıza olanak tanır. Kullanıcılar, market alışverişi yapmak veya araç çağırmak gibi işlerini halletmek için Asistan ile sohbet eder. Geliştirici olarak, kullanıcılar ile kendi üçüncü taraf karşılama hizmetiniz arasında keyifli ve etkili yapay zeka destekli kampanya oluşturma deneyimi kolayca oluşturup yönetmek için Asistan geliştirici platformunu kullanabilirsiniz.

Bu codelab'de, Google Asistan için Actions SDK ile geliştirme yapmaya yönelik başlangıç düzeyindeki kavramlar ele alınmaktadır. Bu codelab'i tamamlamak için platformla ilgili önceden deneyim sahibi olmanız gerekmez. Bu codelab'de, Google Asistan için basit bir işlem oluşturacaksınız. Bu işlem, kullanıcılara Gryffinberg'in efsanevi topraklarındaki maceralarına başlarken fallarını söyleyecek. Actions SDK 2. düzey codelab'inde, kullanıcının girişine göre falını ö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 iş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 giriş sağlamak için tıklayabileceği öneri çipleri sunar.
  • Kullanıcıya gösterilen karşılama mesajını, kullanıcının geri gelen kullanıcı olup olmadığına göre değiştirir.

Bu codelab'i tamamladığınızda, tamamlanan İşleminiz aşağıdaki konuşma 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.png18ef55647b4cb52c.png

Neler öğreneceksiniz?

  • Actions Console'da proje oluşturma
  • İşlem projenizi Actions konsolu ile yerel dosya sisteminiz arasında aktarmak için gactions aracını kullanma
  • Kullanıcı, İşleminizi çağırdıktan sonra kullanıcıya 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üzenleyicisini kullanarak karşılama uygulama

İhtiyacınız olanlar

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

  • İstediğiniz bir IDE veya metin düzenleyici
  • Node.js ve npm için kabuk komutlarını çalıştırabileceğiniz 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 Actions 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 amacıyla 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 ekle onay kutusunu işaretleyin**.**

Actions projesi oluşturma

İşlemler projeniz, İş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 konsolunu açın.
  2. Yeni proje'yi tıklayın.
  3. Proje adı girin (ör. actions-codelab). (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. What kind of Action do you want to build? (Ne tür bir İşlem oluşturmak istiyorsunuz?) ekranında Custom (Ö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. Oluşturmaya başla'yı tıklayın.

İşleminizin proje kimliğini kaydedin.

Proje kimliği, İşleminizin benzersiz tanımlayıcısıdır. Bu codelab'deki birkaç adım için proje kimliğiniz gerekir.

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

  1. Actions konsolunda üç dikey noktayı (buraya simge 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 faturalandırma hesabı oluşturmanız ve bunu Google Cloud'daki projenizle ilişkilendirmeniz gerekir. Böylece, karşılama hizmetinizi daha sonra Cloud Functions ile dağıtabilirsiniz.

Bir 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 Gönder ve faturalandırmayı etkinleştir'i tıklayın.
  5. Google Cloud Platform faturalandırma sayfasına gidin.
  6. Projelerim sekmesini tıklayın.
  7. Codelab için Actions 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ünde yer alan adımları uygulayın.

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

Bu codelab'de, Actions projenizi Actions konsolu ile yerel dosya sisteminiz arasında senkronize etmek için gactions komut satırı arayüzü (CLI) aracını kullanırsınız.

gactions CLI'yı yüklemek için gactions komut satırı aracını yükleme bölümündeki talimatları uygulayın.

Actions projenizi indirme

Actions projenizi Actions konsolundan indirerek İşleminizi geliştirmeye başlayın.

Actions 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. İşlemler 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

Actions konsolundan indirdiğiniz Actions projesi, YAML dosya yapısında temsil edilir. Aşağıdaki resimde, dosya yapısının üst düzey bir temsili gösterilmektedir:

2aefeeab7c8eb32f.png

Dosya yapısı aşağıdakilerden oluşur:

  • actions/: Actions 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 dizin, platformun projenize otomatik olarak eklediği sistem amaçlarını içerir. Sistem intent'leri 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 bilgiler 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ğrı aracılığıyla İş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 görünen adı olmalıdır. Ancak işleminizi test etmek için görünen adı tanımlamanız gerekmez. Bunun yerine, simülatörde "Test uygulamamla konuş" ifadesini kullanarak İşleminizi çağırabilirsiniz. Simülasyon aracı hakkında daha fazla bilgiyi bu bölümün ilerleyen kısımlarında bulabilirsiniz.

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

Varsayılan olarak, Action'ınız tetiklendiğinde genel bir istem sağlar ("Ana çağrıyı tanımlayarak Action'ınızı oluşturmaya başlayın.").

Sonraki bölümde, custom/global/actions.intent.MAIN.yaml dosyasındaki ana çağrınız için istemi özelleştireceksiniz.

Ana çağrıyı ayarlama

Ana başlatma isteminizi actions.intent.MAIN.yaml dosyasında düzenleyebilirsiniz.

İşleminiz çağrıldığında kullanıcıya gönderdiği 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 (Start building your action...) metni şu 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.

Simülatörde ana çağrıyı test etme

Actions konsolu, Action'ınızı test etmek için simülatör adında bir web aracı sunar. Arayüz, donanım cihazlarını ve ayarlarını simüle eder. Böylece, Akıllı Ekran, telefon, hoparlör veya KaiOS üzerinde çalışıyormuş gibi İşleminizle sohbet edebilirsiniz.

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

İşlemler projenizin sürümünü güncellemeden İşleminizi konsolda 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 İşlemler projenizin dağıtılan sürümlerine yayılmaz ancak bunları bir önizleme sürümünde test edebilirsiniz.

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

  1. Projenizi test etmek üzere Actions konsoluna dağıtmak için 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ülatörde İşleminizi çağırmak için Giriş alanına Talk to my test app yazın ve 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 bir karşılama mesajıyla yanıt verdikten sonra görüşme sona erer. Sonraki bölümde, sohbetin devam etmesi için işleminizi değiştireceksiniz.

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

Actions konsolundaki Test sekmesindeyken panelde, görüşme geçmişini olay günlüğü olarak gösteren olay günlükleri yer alır. Her olay günlüğü, görüşmenin o sırasındaki olayları gösterir.

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

a1b748d1fcebca80.png

Olay günlüğünde Talk to my test app ifadesinin yanındaki aşağı oku tıklarsanız görüşmenin o sırasında gerçekleşen olayları kronolojik olarak düzenlenmiş şekilde görebilirsiniz:

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

Olay günlükleri, İşleminizin nasıl çalıştığına dair görünürlük sağlar ve sorun yaşamanız durumunda İşleminizde hata ayıklamak 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 görüşmesini oluşturma

Kullanıcı İş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 ve her sahneyi çalıştırılmadan önce etkinleştirmeniz gerekir. Bu codelab'de oluşturduğunuz işlemde yalnızca Start başlıklı bir sahne vardır. Bir sahneyi etkinleştirmenin en yaygın yolu, Action'ınızı kullanıcı girişi bir sahnedeki niyetle eşleştiğinde bu niyetin başka bir sahneye geçişi tetikleyip etkinleştireceği şekilde yapılandırmaktır.

Örneğin, kullanıcıya hayvanlarla ilgili bilgiler veren varsayımsal bir işlem düşünün. Kullanıcı bu işlemi çağırdığında Main invocation intent eşleştirilir ve Facts. adlı sahneye geçişi tetikler. 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 kedilerle ilgili bilgi almak için söyleyebileceği eğitim ifadelerini (ör. "Kedilerle ilgili bilgi almak istiyorum" veya "kedi") içeren Cat adlı özel amaç bulunur. Kullanıcı kedilerle ilgili bir bilgi duymak istediğinde Cat amacı eşleştirilir ve Cat fact. adlı sahneye geçiş tetiklenir. Cat fact sahnesi etkinleşir ve kullanıcıya kedilerle ilgili bir bilgi içeren bir istem gönderir.

a78f549c90c3bff6.png

Şekil 1. Actions SDK ile oluşturulan bir işlemde tipik bir görüşme sırasının akışı.

Sahneler, niyetler ve geçişler bir araya gelerek görüşmenizin mantığını oluşturur ve kullanıcınızın İşleminizin görüşmesinde izleyebileceği çeşitli yolları tanımlar. Aşağıdaki bölümde bir sahne oluşturacak ve kullanıcı İşleminizi çağırdıktan sonra bu sahnenin nasıl etkinleştirileceğini tanımlayacaksınız.

Ana çağrıdan sahneye geçiş

Bu bölümde, Start adlı yeni bir sahne oluşturacaksınız. Bu sahne, kullanıcıya falına bakılmasını isteyip istemediğini soran bir istem gönderir. Ayrıca ana çağrıdan yeni Start sahnesine bir geçiş de eklersiniz.

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 (actions.scene.END_CONVERSATION) metni şu 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, İşleminize ana çağrıdan Start sahnesine geçmesini söyler.

  1. Dosyayı kaydedin.
  2. Terminalde, custom dizininde yeni bir scenes dizini oluşturun:
mkdir custom/scenes 
  1. scenes dizininde, İşleminizdeki start sahnesini temsil eden Start.yaml adlı yeni bir dosya oluşturun:
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 vardır.

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

Öneri çipleri ekleme

Öneri çipleri, kullanıcı için tıklanabilir öneriler sunar. Bu öneriler, işleminiz tarafından kullanıcı girişi olarak işlenir. 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 çiplerini eklersiniz.

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

  1. Start.yaml dosyasındaki 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ğrıdan Start sahnesine geçmeli ve kullanıcıya falına bakılmasını isteyip istemediğini sormalıdır. Öneri çipleri, simülasyon ekranında 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ın ve Enter tuşuna basın. İşleminiz, Main invocation istemi ve eklenen Start sahne istemiyle ("Before you continue on your quest, would you like your fortune told?") 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 yazabilirsiniz.)

İstemi yanıtladığınızda İşleminiz, girişinizi anlayamadığını belirten bir mesajla yanıt verir: "Maalesef 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ştirir.

Varsayılan olarak NO_MATCH sistem niyeti genel yanıtlar verir ancak bu yanıtları, kullanıcıya girişini anlamadığınızı belirtecek şekilde özelleştirebilirsiniz. Asistan, kullanıcı girişini üç kez eşleştiremediğinde kullanıcının İşleminizle olan görüşmesini sonlandırır.

yes ve no amaçları ekleyin

Kullanıcılar artık İşleminizin sorduğu soruyu yanıtlayabildiğine göre, İş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şturacak ve bu amaçları Start sahnesine ekleyeceksiniz.

yes niyetini oluştur

yes niyetini 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 dosyasına yapıştırın:

yes.yaml

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

Start sahnesine yes niyet ekleyin

Artık işlem, kullanıcının "evet" niyetini ifade ettiğini anlayabilir. Kullanıcı Start istemine ("Görevinize devam etmeden önce falınıza bakılmasını ister misiniz?") yanıt verdiği için yes özel niyetini Start sahnesine ekleyebilirsiniz.

Bu özel amacı 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. Start.yaml dosyasının sonuna intentEvents ve yes işleyicisini 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 intent'i eşleştiğinde "Your future depends on the item you choose to use for your quest..." istemi, istem sırasına eklenir. Ardından Start sahnesi, istem sırasındaki istemleri ileten ve görüşmeyi sonlandıran actions.scene.END_CONVERSATION sistem sahnesine geçer.

Simülatörde yes niyetini test etme

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

Bu intent'i 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ın ve Enter tuşuna basın. Alternatif olarak, Evet öneri çipini tıklayın.

f131998710d8ffd8.png

İşleminiz kullanıcıya yanıt verir ve falının seçtiği yardıma bağlı olduğunu söyler. Ardından, yes niyeti için End conversation geçişini yapılandırdığınızdan işleminiz oturumu sonlandırır.

no niyetini oluştur

Şimdi, no niyetini oluşturabilirsiniz. Böylece İşleminiz, falını dinlemek istemeyen kullanıcıyı anlayabilir ve ona yanıt verebilir.

Bu niyeti 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&quot;
- nah
- no thanks
  1. Dosyayı kaydedin.

Start sahnesine no niyet ekleyin

Artık işlem, kullanıcının "hayır" veya "hayır" anlamına gelen "yok" gibi bir ifade kullandığını anlayabilir. Kullanıcı Start istemine ("Maceranıza devam etmeden önce falınıza bakılmasını ister misiniz?") yanıt verdiği için no özel niyetini Start sahnesine eklemeniz gerekir.

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

  1. custom/scenes/Start.yaml dosyasını metin düzenleyicinizde açın.
  2. Start.yaml dosyasındaki 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 niyetini test etme

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

Bu intent'i 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ın ve Enter tuşuna basın.
  4. Giriş alanına No yazın ve Enter tuşuna basın. Alternatif olarak, No öneri çipini tıklayın.

c0c8b04066577eb2.png

İşleminiz, kullanıcıya falını söylemek yerine yolculuğunda iyi şanslar 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şılamayı uygulama

Şu anda İşleminizin yanıtları statiktir. İstem içeren bir sahne etkinleştirildiğinde İşleminiz her seferinde aynı istemi gönderir. Bu bölümde, dinamik bir etkileşimli yanıt oluşturma mantığını içeren karşılamayı uygulayacaksınız.

Yerine getirme, 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. Karşılama mesajı, geri dönen kullanıcılar için kısaltılır ve kullanıcının geri döndüğünü belirtir: "Harika bir karşılama, maceracı! Gryffinberg'in efsanevi toprakları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, bir çağrı sırasında veya bir sahnenin yürütülmesinin belirli bölümlerinde gerçekleşen bir etkinliğin karşılandığını bildiren webhook'ları tetikleyebilir. Bir webhook tetiklendiğinde İşleminiz, etkinliği işlemek için kullanılacak işleyicinin adıyla birlikte JSON yükü içeren bir isteği karşılamanıza gönderir. Bu işleyici, belirli bir mantığı uygular ve ilgili JSON yanıtını döndürür.

Sipariş karşılama sisteminizi oluşturma

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

Bu mantığı karşılama hizmetinize 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. ActionsOnGoogleFulfillment.yaml dosyasına greeting işleyicisini ve inlineCloudFunction içeriğini ekleyin:

ActionsOnGoogleFulfillment.yaml

handlers:
- name: greeting
inlineCloudFunction:
  executeFunction: ActionsOnGoogleFulfillment

ActionsOnGoogleFulfillment.yaml dosyası, webhook işleyicilerinizi (greeting işleyici gibi) 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(&#>39;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, kullanıcıya uygun karşılama mesajını gönderen greeting işleyicisini tanımlar.

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'unuzun bağımlılıklarını ve diğer meta verilerini 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 karşılama kitaplığını kullanan karşılamanız, Google Asistan'dan gelen HTTP isteklerine yanıt verir.

Önceki kod snippet'inde, kullanıcının daha önce lastSeenTime özelliğiyle İşlem'i ziyaret edip etmediğini kontrol eden greeting işleyicisini tanımlarsınız. 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 geri döndüğünü onaylar ve değiştirilmiş bir karşılama mesajı oluşturur.

Web kancasını tetiklemek için ana çağrıyı güncelleme

greeting işlevini tanımladığınıza göre, ana çağrı niyetinizde greeting etkinlik işleyicisini yapılandırabilirsiniz. Böylece, kullanıcı İşleminizi çağırdığında İşleminiz bu işlevi çağıracağını 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 dosyasındaki 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ştiğinde greeting webhook işleyici çağrılır.

Güncellenen ana çağrıyı 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 İşleminizi daha önce test ettiğiniz için yeni bir kullanıcı değilsiniz. Bu nedenle aşağıdaki kısaltılmış karşılama mesajını alırsınız: "Harika bir karşılama, maceracı! Gryffinberg'in efsanevi topraklarına tekrar hoş geldiniz..."

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

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

Actions konsolu, İşleminizin yapılandırmasının görsel bir temsilini sunar. İşleminizin görsel olarak eşlendiğini görmek, geliştirme sırasında faydalı olabilir ve İşleminizin test için sunulan sürümünü etkilemez.

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

  1. Terminalde aşağıdaki komutu çalıştırarak projenizi Actions konsoluna aktarı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 konsolunda, üst gezinme çubuğunda Develop'ı (Geliştir) 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örürsünüz:

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ı uygulayın.
  1. İsteğe bağlı: Projenizi Actions Console'dan hemen 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 işlem oluşturmanın temel adımlarını öğrendiniz.

İşlediğiniz konular

  • Actions Console'da Actions projesi oluşturma
  • Actions projenizi yerel dosya sisteminizde oluşturmak için Actions SDK'yı kullanma
  • Kullanıcıların İşleminizle sohbet başlatabilmesi için ana çağrıya istem ekleme
  • Sahneler, niyetler, 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 isterseniz aşağıdaki kaynakları inceleyebilirsiniz:

En son duyurular için Twitter'da @ActionsOnGoogle hesabını takip edin ve geliştirdiğiniz uygulamaları paylaşmak için #AoGDevs etiketiyle tweet atın.

Geri bildirim anketi

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