1. Genel Bakış
Google Asistan geliştirici platformu, sanal bir kişisel asistan olan Google Asistan'ın işlevlerini akıllı hoparlörler, telefonlar, arabalar, TV'ler, kulaklıklar ve daha pek çok 1 milyardan fazla cihaza genişletmenizi sağlayacak yazılımlar oluşturmanıza olanak tanır. Kullanıcılar, market alışverişi veya araç randevusu alma gibi işlemler için Asistan'la konuşur. Geliştirici olarak, kullanıcılar ile kendi üçüncü taraf sipariş karşılama hizmetiniz arasındaki keyifli ve etkili sohbet deneyimlerini kolayca oluşturmak ve yönetmek için Asistan geliştirici platformunu kullanabilirsiniz.
Bu codelab'de, Google Asistan 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):


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
Gerekenler
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:
- Etkinlik Kontrolleri'ne gidin.
- Henüz yapmadıysanız Google Hesabınızla oturum açın.
- 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:
- Actions Console'u açın.
- Yeni proje'yi tıklayın.
actions-codelabgibi bir Proje adı girin. (Ad dahili referans içindir. Daha sonra projeniz için harici bir ad belirleyebilirsiniz.)

- Create project (Proje oluştur) seçeneğini tıklayın.
- Ne tür bir işlem oluşturmak istiyorsunuz? ekranında Özel kartını seçin.
- İleri'yi tıklayın.
- Nasıl oluşturmak istersiniz? ekranında Boş proje kartını seçin.
- 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:
- Actions konsolunda üç dikey noktayı (simgeyi buraya ekleyin) tıklayın.
- Proje ayarları'nı tıklayın.

- 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:
- Google Cloud Platform faturalandırma sayfasına gidin.
- Faturalandırma hesabı ekle veya Hesap oluştur'u tıklayın.
- Ödeme bilgilerinizi girin.
- Ücretsiz denememi başlat veya Gönder ve faturalandırmayı etkinleştir'i tıklayın.
- Google Cloud Platform faturalandırma sayfasına gidin.
- Projelerim sekmesini tıklayın.
- Codelab'e ilişkin İşlemler projesinin yanındaki İşlemler altında üç noktayı tıklayın.
- Faturalandırmayı değiştir'i tıklayın.
- Açılır menüde, yapılandırdığınız faturalandırma hesabını seçin.
- 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:
- 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
- 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:

Dosya yapısı aşağıdakilerden oluşur:
actions/: Actions projenizi temsil eder. İşleminiz çağrıldığında sistem,actions.yamlöğesini, ardındancustom/global/actions.intent.MAIN.yamldosyası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:
custom/global/actions.intent.MAIN.yamldosyasını metin düzenleyicinizde açın.speechalanı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
- 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:
- 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
- Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
- Simülasyon aracında işleminizi çağırmak için Giriş alanına
Talk to my test appyazıpEntertuşuna basın.

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

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örebilirsinizendConversation:Main invocationniyetindeki 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:

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.

Ş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:
custom/global/actions.intent.MAIN.yamldosyasını metin düzenleyicinizde açın.transitionToScenealanı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.
- Dosyayı kaydedin.
- Terminalde,
customdizininde yeni birscenesdizini oluşturun:
mkdir custom/scenes
scenesdizininde, İşleminizdekistartsahnesini temsil edenStart.yamladlı yeni bir dosya oluşturun.
touch custom/scenes/Start.yaml
Start.yamldosyasını metin düzenleyicinizde açın.Start.yamldosyası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:
Start.yamliç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"
- 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:
- Terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview
Şuna benzer bir çıkış alırsınız:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
- Simülasyon aracına gitmek için Test'i tıklayın.
- Giriş alanına
Talk to my test appyazıpEntertuşuna basın. İşleminiz,Main invocationistemi ve eklenenStartsahne 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:

- İ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
YesveyaNogirebilirsiniz.)
İ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:
- Terminalde,
customdizinindeintentsadında yeni bir dizin oluşturun:
mkdir custom/intents
intentsdizinindeyes.yamladlı yeni bir dosya oluşturun:
touch custom/intents/yes.yaml
yes.yamldosyasını metin düzenleyicinizde açın.- Eğitim ifadelerini içeren aşağıdaki kod snippet'ini
yes.yamlaralığına yapıştırın:
yes.yaml
trainingPhrases:
- of course
- let's do it
- ok
- sure
- "y"
- "yes"
- 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:
custom/scenes/Start.yamldosyasını metin düzenleyicinizde açın.intentEventsveyesişleyicisiniStart.yamldosyası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:
- Terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview
Şuna benzer bir çıkış alırsınız:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
- Simülasyon aracına gitmek için Test'i tıklayın.
- Simülasyon aracında işleminizi test etmek için Giriş alanına
Talk to my test appyazıpEntertuşuna basın. - Giriş alanına
YesyazıpEntertuşuna basın. Alternatif olarak Evet öneri çipini de tıklayabilirsiniz.

İş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:
- Terminalde,
intentsdizinindeno.yamladlı yeni bir dosya oluşturun:
touch custom/intents/no.yaml
no.yamldosyasını metin düzenleyicinizde açın.no.yamldosyasına aşağıdaki eğitim ifadelerini yapıştırın:
no.yaml
trainingPhrases:
- nope
- I don't want
- "n"
- "no"
- nah
- no thanks
- 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:
custom/scenes/Start.yamldosyasını metin düzenleyicinizde açın.Start.yamliçindekiyesişleyicinin altına şunoiş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
- 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:
- Terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview
Şuna benzer bir çıkış alırsınız:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
- Simülasyon aracına gitmek için Test'i tıklayın.
- Giriş alanına
Talk to my test appyazıpEntertuşuna basın. - Giriş alanına
NoyazıpEntertuşuna basın. Alternatif olarakNoöneri çipini de tıklayabilirsiniz.

İşleminiz kullanıcıya servet vermek yerine yolculuğunda şans 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:
- Terminalde projenizin kök dizininde olduğunuzdan emin olun ve yeni bir
webhooksdizini oluşturun:
mkdir webhooks
webhooksdizinindeActionsOnGoogleFulfillment.yamladlı yeni bir dosya oluşturun:
touch webhooks/ActionsOnGoogleFulfillment.yaml
ActionsOnGoogleFulfillment.yamldosyasını metin düzenleyicinizde açın.greetingişleyicisini veinlineCloudFunctioniçeriğiniActionsOnGoogleFulfillment.yamldosyası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.
webhooksdizininde yeni birActionsOnGoogleFulfillmentdizini oluşturun:
mkdir webhooks/ActionsOnGoogleFulfillment
ActionsOnGoogleFulfillmentdizinindeindex.jsadlı yeni bir dosya oluşturun:
touch webhooks/ActionsOnGoogleFulfillment/index.js
index.jsdosyasını metin düzenleyicinizde açın.- Şu kodu
index.jsalanı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.
- Dosyayı kaydedin.
ActionsOnGoogleFulfillmentdizinindepackage.jsonadlı 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.
package.jsondosyasını metin düzenleyicinizde açın.- Bu GitHub deposundan kodu kopyalayın ve
package.jsondosyasına yapıştırın. - 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:
custom/global/actions.intent.MAIN.yamldosyasını metin düzenleyicinizde açın.actions.intent.MAIN.yamliçindeki kodu aşağıdaki kodla değiştirin:
actions.intent.MAIN.yaml
handler:
webhookHandler: greeting
transitionToScene: Start
- 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:
- Terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview
Şuna benzer bir çıkış alırsınız:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
- Simülasyon aracında işleminizi test etmek için Giriş alanına
Talk to my test appyazıpEntertuş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:
- Terminalde, projenizi Actions konsoluna aktarmak için aşağıdaki komutu çalıştırın:
gactions push
Şuna benzer bir çıkış alırsınız:
✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
- Sağlanan URL'yi kopyalayın ve bir tarayıcıya yapıştırın.
- İşlemler konsolunda, üst gezinme çubuğunda Geliştir'i tıklayın.
- Sahneler'in yanındaki açılır oku, ardından Başlat'ı tıklayın. Aşağıdaki ekran görüntüsünde olduğu gibi İşleminizin
Startsahnesinin görsel bir temsilini göreceksiniz:

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:
- Cloud projesini ve kaynaklarını silmek için Projeleri kapatma (silme) bölümünde listelenen adımları tamamlayın.
- İsteğe bağlı: Projenizi Actions konsolundan hemen kaldırmak için Proje silme bölümünde listelenen adımları tamamlayın. Bu adımı tamamlamazsanız projeniz yaklaşık 30 gün sonra otomatik olarak kaldırılır.
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:
- Google Asistan için İşlemler'in geliştirilmesiyle ilgili resmi belgeler sitesi
- Örnek kod ve kitaplıklar için Google GitHub sayfasındaki işlemler
- Asistan ile çalışan geliştiriciler için resmi Reddit topluluğu
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.