Actions SDK'sını kullanarak Google Asistan için İşlemler oluşturma (1. 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 diğer 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 için Actions SDK'sı ile uygulama geliştirmeyle ilgili başlangıç düzeyindeki kavramlar ele alınmaktadır; tamamlamak için platformla ilgili deneyiminiz olmasına gerek yok. Bu codelab'de, Gryffinberg'in efsanevi diyarında maceralarına başlayan kullanıcılara servetlerini söyleyen basit bir Google Asistan İşlemi geliştireceksiniz. İşlemler SDK'sı düzey 2 codelab'inde, bu işlemi daha da geliştirerek kullanıcının kazancına göre özelleştiriyorsunuz.

Neler oluşturacaksınız?

Bu codelab'de aşağıdaki işlevleri kullanarak basit bir Action derleyeceksiniz:

  • Kullanıcılara bir 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ş yapmak için tıklayabileceği öneri çipleri sunar
  • 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, tamamladığınız İşleminiz aşağıdaki konuşma akışına sahip olur (mikrofonun yanındaki metin kullanıcının girişini, konuşmacının yanındaki metin ise işlemin yanıtını temsil eder):

1c1e79902bed7230.png

18ef55647b4cb52c.png

Neler öğreneceksiniz?

  • Actions konsolunda proje oluşturma
  • İşlem projenizi Actions konsolu ile yerel dosya sisteminiz arasında aktarmak ve çekmek için işlemler aracını kullanma
  • İşleminizi çağırdıktan sonra kullanıcıya istem gönderme
  • Bir kullanıcının girişini işleme ve yanıt döndürme
  • Actions simülatöründe işleminizi test etme
  • Cloud Functions düzenleyicisini kullanarak istek karşılamayı uygulama

İhtiyacınız olanlar

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

  • Tercih ettiğiniz bir IDE veya metin düzenleyici
  • Node.js ve npm için kabuk komutlarının çalıştırılacağı 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 derlediğiniz İşlemi test etmek için simülatörün İşleminize erişebilmesi için gerekli izinleri etkinleştirmeniz gerekir.

İzinleri etkinleştirmek için şu 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

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

Bu codelab için Actions projenizi oluşturmak üzere şu 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. (Ad dahili referans içindir. Daha sonra projeniz için harici bir ad belirleyebilirsiniz.)

8cd05a84c1c0a32f.png

  1. Create project (Proje oluştur) seçeneğini 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 istersiniz? ekranında Boş proje kartını seçin.
  5. Derlemeye başla'yı tıklayın.

İşleminiz için proje kimliğini kaydedin

Proje kimliği, işleminiz için benzersiz bir tanımlayıcıdır. Bu codelab'deki adımlar için proje kimliğiniz gerekir.

Proje Kimliğinizi almak için şu adımları izleyin:

  1. Actions 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şkilendirin

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

Projenizle bir faturalandırma hesabını ilişkilendirmek için şu 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'e ilişkin İşlemler projesinin yanındaki İşlemler altında üç noktayı tıklayın.
  8. Faturalandırmayı değiştir'i tıklayın.
  9. Açılır menüde, yapılandırdığınız faturalandırma hesabını seçin.
  10. Hesap belirle'yi tıklayın.

Ücret ödemek istemiyorsanız bu codelab'in sonundaki Projenizi temizleyin bölümündeki 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ü (KSA) aracını kullanacaksınız.

gactions KSA'sını yüklemek için gactions komut satırı aracını yükleme başlıklı makaledeki talimatları uygulayın.

Actions projenizi indirme

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

Actions projenizi indirmek için şu adımları uygulayın:

  1. Yeni bir dizin oluşturmak ve bu dizinde değişiklik yapmak 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

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 temsili gösterilmektedir:

2aefeeab7c8eb32f.png

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

  • actions/: Actions projenizi temsil eder. İşleminiz çağrıldığında sistem, actions.yaml öğesini, ardından 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. Bu codelab'de sistem amaçları hakkında daha fazla bilgi edineceksiniz.
  • manifest.yaml: Aktarılabilir veya belirli bir projeye özgü olmayan bilgiler içeren ve projeler arasında taşınabilen dosyadır.
  • settings/: Bir Actions projesinin görünen ad, varsayılan yerel ayar ve kategori gibi ayarlarını temsil eder.

3. Sohbet başlatma

Kullanıcılar, İşleminizle sohbeti çağrı üzerinden 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 İşleminizin görünen adı olmalıdır; ancak İşleminizi test etmek için görünen adı tanımlamanız gerekmez. Bunun yerine, işleminizi çağırmak için simülatörde "Test uygulamamla konuş" ifadesini kullanabilirsiniz. Bu bölümün ilerleyen kısımlarında simülasyon aracı hakkında daha fazla bilgi edinebilirsiniz.

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

İşleminiz varsayılan olarak, çağrınız tetiklendiğinde genel bir istem sunar ("Ana çağrı tanımlayarak İşleminizi oluşturmaya başlayın.").

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

Ana çağrıyı ayarla

actions.intent.MAIN.yaml dosyasında ana çağrı isteminizi düzenleyebilirsiniz.

İşleminizin, kullanıcı işleminizi çağırdığında kullanıcıya geri 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ördeki ana çağrıyı test etme

Actions konsolu, işleminizi test etmeniz için simülatör adı verilen bir web aracı sağlar. Arayüz, donanım cihazlarını ve ayarlarını simüle eder. Böylece İşleminizle akıllı ekran, telefon, hoparlör veya KaiOS'ta çalışıyormuş gibi sohbet edebilirsiniz.

İşleminizi çağırdığınızda artık işlem, eklediğiniz özelleştirilmiş istemle ("Muhteşem bir selamlama, maceraperest!...") yanıt vermelidir.

Actions projenizin sürümünü güncellemeden, iş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 Actions projenizin dağıtılmış sürümlerine yayılmaz, ancak bunları önizleme sürümünde test edebilirsiniz.

İşleminizin simülatörde ana çağrısını 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

Ş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. Simülasyon aracında işleminizi ç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 bir selamlama mesajıyla yanıt verdikten sonra sohbet sona erer. Sonraki bölümde, görüşmenin devam etmesi için İşleminizi değiştireceksiniz.

Olay günlüklerini göster

Actions konsolundaki Test sekmesindeyken panelde, görüşme geçmişini etkinlik günlükleri olarak görüntüleyen etkinlik günlükleri gösterilir. Her bir olay günlüğü, ileti dizisinin bu dönüşü sırasında gerçekleşen etkinlikleri görüntüler.

İşleminizin şu anda hem kullanıcı 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 işleminizin olay günlüğü gösterilmektedir:

a1b748d1fcebca80.png

Olay günlüğündeki Talk to my test app öğesinin yanındaki aşağı oku tıklarsanız, ileti dizisinin o sırasında gerçekleşen ve kronolojik olarak düzenlenmiş etkinlikleri görebilirsiniz:

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

Etkinlik günlükleri, işleminizin nasıl çalıştığına dair görünürlük sağlar ve herhangi bir sorun yaşadığınızda İşleminizde hata ayıklamak için yararlı 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. İşleminizle ilgili görüşme oluşturma

Bir kullanıcı İşleminizi çağırdıktan sonra ne olduğunu tanımladığınıza göre artık İşleminizle ilgili görüşmenin kalan kısmını oluşturabilirsiniz. Bu codelab'de çalışmaya devam etmeden önce, Action'ınızın konuşma şeklini anlamak için aşağıdaki terimler hakkında bilgi edinin:

İşleminiz bir veya daha fazla sahne içerebilir ve çalıştırılabilmesi için her sahneyi etkinleştirmeniz gerekir. Bu codelab'de oluşturduğunuz İşlemde yalnızca Start başlıklı bir sahne var. Bir sahneyi etkinleştirmenin en yaygın yolu, İşleminizi, kullanıcı girişi bir sahnedeki amaçla eşleştiğinde söz konusu amacın başka bir sahneye geçişi tetikleyecek ve etkinleştirecek şekilde 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 amacı eşleştirilir ve Facts. adlı bir 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 duymak için söyleyebileceği "Kedinin haberini almak istiyorum" veya "kedi" gibi eğitim ifadelerinin bulunduğu Cat adlı özel amaç vardır. Kullanıcı bir kedi hakkında bilgi duymak istediğinde Cat niyeti eşleştirilir ve Cat fact. adlı bir sahneye geçişi tetikler. Cat fact sahnesi etkinleşir ve kullanıcıya kedi hakkında bilgi içeren bir istem gönderir.

a78f549c90c3bff6.png

Şekil 1. Actions SDK ile oluşturulan bir işlemde tipik bir konuşma dönüşünün akışı.

Sahneler, amaçlar ve geçişler birlikte görüşmenizin mantığını oluşturur ve kullanıcınızın Action'daki görüşme sırasında izleyebileceği çeşitli yolları tanımlar. Aşağıdaki bölümde bir sahne oluşturur ve bir kullanıcı İşleminizi çağırdıktan sonra bu sahnenin nasıl etkinleştirileceğini tanımlarsınız.

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

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

Bu sahneyi oluşturmak ve ona bir geçiş eklemek için şu 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 şununla 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çiş yapmasını 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. Start.yaml dosyasına aşağıdaki kodu 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ündeki ilk aşama olan onEnter adlı bir alan vardır.

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

Öneri çipi ekleme

Öneri çipleri, İşleminizin kullanıcı girişi olarak işlediği kullanıcıya tıklanabilir ö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ına Yes ve No öneri çipleri eklersiniz.

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

  1. Start.yaml içindeki kodu, öneri çiplerini yapılandırmaya yönelik kodu 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çiş yapmalı ve kullanıcıya talihsinin anlatılmasını isteyip istemediğini sormalıdır. Simüle edilen ekranda öneri çipleri de gösterilmelidir.

İş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. 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 yanıt vermelidir. Buna "Görevinize devam etmeden önce falınızın söylenmesini ister misiniz?" ve öneri çipleri gösterilir.

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. (Ayrıca "Yes" veya "No" 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 verir: "Maalesef anlayamadım. Tekrar deneyebilir misiniz?" İşleminizi "Evet" veya "Hayır" girişinizi anlayıp yanıt verecek şekilde henüz yapılandırmadığınız için İşleminiz, girişinizi bir NO_MATCH amacıyla eşleştiriyor.

Varsayılan olarak NO_MATCH sistem amacı, genel yanıtlar sağlar 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 intent ekle

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

yes intent oluştur

yes amacını oluşturmak için şu adımları uygulayın:

  1. Terminalde, custom dizininde intents adında 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 aralığına yapıştırın:

yes.yaml

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

Start sahneye yes intent ekleyin

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

Bu özel amacı Start sahnesine eklemek için şu adımları uygulayın:

  1. custom/scenes/Start.yaml dosyasını metin düzenleyicinizde açın.
  2. intentEvents ve yes işleyicisini 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 niyeti eşleştiğinde istem sırasına "Geleceğiniz, göreviniz için kullanmayı seçtiğiniz öğeye bağlı olarak..." istemi eklenir. Ardından Start sahnesi, actions.scene.END_CONVERSATION sistem sahnesine geçer. Böylece istem sırasında istemler gösterilir ve görüşme sonlandırılır.

Simülasyon aracında yes amacını test edin

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

Bu amacı simülasyon aracında test etmek için aşağıdaki 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. Simülasyon aracına gitmek için Test'i tıklayın.
  3. Simülasyon aracında işleminizi 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 de tıklayabilirsiniz.

f131998710d8ffd8.png

İşleminiz kullanıcıya yanıt veriyor ve seçtiği yardıma bağlı olarak talihsinin olduğunu söylüyor. İşleminiz, yes amacı için End conversation geçişini yapılandırdığınızdan oturumu sonlandırıyor.

no intent oluştur

Artık uygulamanızın talimatını öğrenmek istemeyen kullanıcıyı anlayıp ona yanıt verebilmesi için no amacını oluşturabilirsiniz.

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. no.yaml dosyasına aşağıdaki eğitim ifadelerini yapıştırın:

no.yaml

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

Start sahneye no intent ekleyin

İşlem artık kullanıcının ne zaman "hayır" veya "no" benzeri bir ifade (ör. "no") ifade ettiğini anlayabilir. Kullanıcı Start istemine yanıt verdiği için Start sahnesine no özel amacını eklemeniz gerekiyor ("Görevinize devam etmeden önce falınızın anlatılmasını ister misiniz?").

Bu niyeti 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 içindeki yes işleyicinin altına şu no işleyiciyi 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ülasyon aracında no amacını test edin

Bu noktada İşleminiz kullanıcının talihini duymak istemediğini anlar ve uygun yanıtı döndürür.

Bu amacı simülasyon aracında test etmek için aşağıdaki 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. 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 de tıklayabilirsiniz.

c0c8b04066577eb2.png

İşleminiz kullanıcıya servet vermek yerine yolculuğunda şanslar diliyor. İşleminiz, no amacı için End conversation geçişini yapılandırdığınızdan oturumu sonlandırıyor.

5. İstek karşılamayı uygulama

Şu anda İşleminizin yanıtları statik; İstem içeren bir sahne etkinleştirildiğinde İşleminiz her seferinde aynı istemi gönderir. Bu bölümde, dinamik bir diyaloğa dayalı yanıt oluşturma mantığı içeren sipariş karşılama yöntemini uygulayacaksınız.

Karşılamanız, kullanıcının geri gelen kullanıcı mı yoksa yeni kullanıcı mı olduğunu tanımlar ve geri gelen kullanıcılar için İşlemin karşılama mesajını değiştirir. Karşılama mesajı, geri gelen kullanıcılar için kısaltılır ve kullanıcının söz konusu geri dönüşü onaylar: "Müthiş bir selamlama, maceracı! Gryffinberg'in mitolojik topraklarına tekrar hoş geldiniz!"

Bu codelab'de Cloud Functions düzenleyicisini kullanarak sipariş karşılama kodunuzu düzenleyip dağıtacaksı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ği karşıladığınızı bildiren webhook'ları tetikleyebilir. Webhook tetiklendiğinde, İşleminiz etkinliği işlemek için kullanılacak işleyici adıyla birlikte gönderiminize JSON yükü içeren bir istek gönderir. Bu işleyici bir mantık yürütür ve karşılık gelen bir JSON yanıtı döndürür.

İstek karşılama sürecinizi geliştirin

Bu bölümde, geri gelen kullanıcılar ve yeni kullanıcılar işleminizi çağırdığında bu kullanıcılar için farklı istemler oluşturacak şekilde sipariş karşılamayı değiştirirsiniz.

Sipariş karşılamanıza bu mantığı eklemek için şu 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şleyicisini 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. Şu kodu index.js alanı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 ve bu işleyici, uygun karşılama mesajını

belirtir.

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

package.json dosyası, webhook'unuzla ilişkili bağımlılıkları ve diğer meta verileri belirtir.

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

Kodu anlama

Node.js için Actions on Google Fulfillment kitaplığını kullanan sipariş karşılama işleminiz, Google Asistan'dan gelen HTTP isteklerine yanıt verir.

Önceki kod snippet'inde, kullanıcının işlemi lastSeenTime özelliğiyle daha önce 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.

Ana çağrıyı webhook tetiklemek için güncelleyin

Artık greeting işlevini tanımladığınıza göre, ana çağrı amacınızda greeting etkinlik işleyicisini yapılandırabilirsiniz. Böylece, kullanıcı işleminizi çağırdığında İşleminizin bu işlevi çağıracağını bilir.

İşleminizi yeni greeting işleyicisini çağıracak şekilde yapılandırmak için şu adımları izleyin:

  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ştiğinde greeting webhook işleyicisi çağrılır.

Güncellenmiş ana çağrıyı simülatörde test et

İş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. Simülasyon aracında işleminizi test etmek için Giriş alanına Talk to my test app yazıp Enter tuşuna basın.

İşleminizi bu codelab'de daha önce test ettiğiniz için yeni bir kullanıcı değilsiniz. Bu nedenle şu kısa selamlamayı alırsınız: "Harika bir selamlama, maceracı! Gryffinberg'in mitolojik topraklarına tekrar hoş geldiniz!..."

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

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. İşleminizi yalnızca simülatörde test etmenize olanak tanıyan gactions deploy preview seçeneğinin aksine gactions push, yerel dosyalarınızdaki tüm içeriği İşlem Oluşturucu'ya taşır.

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:

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

7. Tebrikler!

Actions SDK'sı ile Google Asistan için İşlemler oluşturmanın temellerini biliyorsunuz.

İşledikleriniz

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

Daha fazla bilgi

Google Asistan için İşlemler 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 #AoGDevs ile tweet atarak kendi oluşturduğunuz içerikleri paylaşın!

Geri bildirim anketi

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