1. Genel Bakış
Google Asistan geliştirici platformu, Google Asistan'ın işlevselliğini akıllı hoparlörler, telefonlar, arabalar, TV'ler ve kulaklıklar dahil olmak üzere 1 milyardan fazla cihazda genişletmek için yazılım oluşturmanıza olanak tanır. Kullanıcılar, alışveriş yapmak veya araç çağırmak gibi işlemleri gerçekleştirmek için Asistan ile etkileşime girer. Geliştirici olarak, kullanıcılar ile kendi üçüncü taraf karşılama hizmetiniz arasında keyifli ve etkili sohbet deneyimleri oluşturup yönetmek için Asistan geliştirici platformunu kolayca kullanabilirsiniz.
Bu codelab'de, Google Asistan için İşlemler SDK'sı ile geliştirme yapmaya yönelik başlangıç düzeyindeki kavramlar ele alınmaktadır. Bu codelab'i tamamlamak için platformla ilgili herhangi bir deneyime ihtiyacınız yoktur. Bu codelab'de, Google Asistan için basit bir işlem oluşturacaksınız. Bu işlem, Gryffinberg'in efsanevi topraklarında maceraya atılan kullanıcılara fal bakacak. Actions SDK 2. seviye codelab'inde, kullanıcının kaderini girişine göre özelleştirmek için bu işlemi daha da geliştirirsiniz.
Ne oluşturacaksınız?
Bu codelab'de aşağıdaki işlevlere sahip basit bir İşlem oluşturacaksınız:
- Kullanıcılara karşılama mesajıyla yanıt verir.
- Kullanıcılara soru sorar ve kullanıcının seçimine uygun şekilde yanıt verir.
- Kullanıcıların tıklayarak giriş yapabileceği öneri çipleri sunar.
- Kullanıcının geri gelen kullanıcı olup olmamasına göre karşılama mesajını değiştirir.
Bu codelab'i tamamladığınızda, tamamlanan İşleminiz aşağıdaki sohbet akışına sahip olur (mikrofonun yanındaki metin kullanıcının girişini, hoparlörün yanındaki metin ise İşlemin yanıtını temsil eder):


Neler öğreneceksiniz?
- Actions Console'da proje oluşturma
- İşlem projenizi İşlemler konsolu ile yerel dosya sisteminiz arasında göndermek ve çekmek için gactions aracını kullanma
- Kullanıcı, İşleminizi çağırdıktan sonra ona nasıl istem gönderilir?
- Kullanıcı girişini işleme ve yanıt döndürme
- İşleminizi Actions simülatöründe test etme
- Cloud Functions Düzenleyici'yi kullanarak karşılama işlemini uygulama
İhtiyacınız olanlar
Ortamınızda aşağıdaki araçlar bulunmalıdır:
- Seçtiğiniz bir IDE veya metin düzenleyici
- Node.js ve npm için kabuk komutlarını çalıştırmak üzere bir terminal
- Google Chrome gibi bir web tarayıcısı
2. Kur
Aşağıdaki bölümlerde geliştirme ortamınızı nasıl ayarlayacağınız ve İşlemler projenizi nasıl oluşturacağınız açıklanmaktadır.
Google izin ayarlarınızı kontrol etme
Bu codelab'de oluşturduğunuz işlemi test etmek için simülatörün işleminize erişebilmesi için gerekli izinleri etkinleştirmeniz gerekir.
İzinleri etkinleştirmek için aşağıdaki adımları uygulayın:
- 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 dahil et onay kutusunu işaretleyin.
Actions projesi oluşturma
Actions projeniz, işleminiz için bir kapsayıcıdır.
Bu codelab için Actions projenizi oluşturmak üzere aşağıdaki adımları uygulayın:
- Actions Console'u açın.
- Yeni proje'yi tıklayın.
actions-codelabgibi bir Proje adı girin. (Bu ad, dahili referansınız içindir. Daha sonra projeniz için harici bir ad belirleyebilirsiniz.)

- Proje oluştur'u 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 istiyorsunuz? ekranında Boş proje kartını seçin.
- Derlemeye başla'yı tıklayın.
İşleminizin proje kimliğini kaydetme
Proje kimliği, işleminizin benzersiz tanımlayıcısıdır. Bu codelab'deki çeşitli adımlar için proje kimliğinize ihtiyacınız vardır.
Proje kimliğinizi almak için şu adımları uygulayın:
- İşlemler konsolunda üç dikey noktayı (simgeyi buraya ekleyin) tıklayın.
- Proje ayarları'nı tıklayın.

- Proje kimliğini kopyalayın.
Faturalandırma hesabı ilişkilendirme
Henüz bir faturalandırma hesabınız yoksa daha sonra Cloud Functions ile karşılama işleminizi dağıtmak için bir faturalandırma hesabı oluşturmanız ve bu hesabı Google Cloud'daki projenizle ilişkilendirmeniz gerekir.
Faturalandırma hesabını projenizle ilişkilendirmek için aşağıdaki adımları uygulayın:
- 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 Faturalandırmayı gönder ve etkinleştir'i tıklayın.
- Google Cloud Platform faturalandırma sayfasına gidin.
- Projelerim sekmesini tıklayın.
- Codelab'in İşlemler projesinin yanındaki İşlemler bölümünde üç noktayı tıklayın.
- Faturalandırmayı değiştir'i tıklayın.
- Açılır menüden yapılandırdığınız faturalandırma hesabını seçin.
- Hesap belirle'yi tıklayın.
Ücretlendirilmemek için bu codelab'in sonundaki Projenizi temizleme bölümündeki adımları uygulayın.
gactions komut satırı arayüzünü yükleme
Bu codelab'de, İşlemler projenizi İşlemler Konsolu ile yerel dosya sisteminiz arasında senkronize etmek için gactions komut satırı arayüzü (KSA) aracını kullanacaksınız.
gactions CLI'yı yüklemek için Install the gactions command-line tool (gactions komut satırı aracını yükleme) başlıklı makaledeki talimatları uygulayın.
Actions projenizi indirme
Actions projenizi Actions Console'dan indirerek İşleminizi geliştirmeye başlayın.
İşlemler projenizi indirmek için aşağıdaki adımları uygulayın:
- Yeni bir dizin oluşturmak ve bu dizine geçmek 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
İşlemler Konsolu'ndan indirdiğiniz İşlemler projesi, YAML dosya yapısında gösterilir. Aşağıdaki resimde, dosya yapısının üst düzey bir temsili gösterilmektedir:

Dosya yapısı şunlardan oluşur:
actions/: İşlemler projenizi temsil eder. Sistem, İşleminiz çağrıldığındaactions.yamldosyasını çağırır. Bu dosya dacustom/global/actions.intent.MAIN.yamldosyasını çağırır.custom/: İşleminizi değiştirmek için çalışacağınız dizin.global/: Bu dizinde, platformun projenize otomatik olarak eklediği sistem amaçları bulunur. Sistem amaçları hakkında daha fazla bilgiyi bu Codelab'in ilerleyen bölümlerinde edineceksiniz.manifest.yaml: Taşınabilir veya belirli bir projeye özgü olmayan ve projeler arasında taşınabilen bilgileri içeren bir dosya.settings/: Görünen ad, varsayılan yerel ayar ve kategori gibi bir Actions projesinin ayarlarını temsil eder.
3. Sohbet başlatma
Kullanıcılar, çağırma yoluyla İşleminizle sohbet başlatır. Örneğin, MovieTime adlı bir İşleminiz varsa kullanıcılar "Ok Google, MovieTime ile konuş" gibi bir ifade söyleyerek İşleminizi çağırabilir. Burada MovieTime, görünen addır. İşleminizi üretime dağıtmak istiyorsanız işleminizin bir görünen adı olmalıdır. Ancak İşleminizi test etmek için görünen adı tanımlamanız gerekmez. Bunun yerine, İşleminizi çağırmak için simülatörde "Test uygulamamla konuş" ifadesini kullanabilirsiniz. Simülasyon aracı hakkında daha fazla bilgiyi bu bölümün ilerleyen kısımlarında bulabilirsiniz.
Kullanıcı, işleminizi çağırdıktan sonra ne olacağını tanımlamak için ana çağırmayı düzenlemeniz gerekir.
Varsayılan olarak, çağırma işleminiz tetiklendiğinde İşleminiz genel bir istem sağlar ("Ana çağırmayı tanımlayarak İşleminizi oluşturmaya başlayın.").
Bir sonraki bölümde, custom/global/actions.intent.MAIN.yaml dosyasında ana çağırma işleminiz için istemi özelleştireceksiniz.
Ana çağırma işlemini ayarlama
Ana çağırma isteminizi actions.intent.MAIN.yaml dosyasında düzenleyebilirsiniz.
İşleminiz çağrıldığında kullanıcıya gönderilen istemi değiştirmek için aşağıdaki adımları uygulayın:
custom/global/actions.intent.MAIN.yamldosyasını metin düzenleyicinizde açın.speechalanındaki metni (Start building your action...) aşağıdaki karşılama mesajıyla değiştirin:A wondrous greeting, adventurer! Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you're on your way to an epic journey.
actions.intent.MAIN.yaml
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: A wondrous greeting, adventurer! Welcome to the mythical land of
Gryffinberg! Based on your clothes, you are not from around these lands.
It looks like you're on your way to an epic journey.
transitionToScene: actions.scene.END_CONVERSATION
- Dosyayı kaydedin.
Ana çağırmayı simülatörde test etme
Actions Console, İşleminizi test etmek için simülatör adlı bir web aracı sunar. Arayüz, donanım cihazlarını ve ayarlarını simüle eder. Böylece, akıllı ekranda, telefonda, hoparlörde veya KaiOS'te çalışıyormuş gibi İşleminizle konuşabilirsiniz.
İşleminizi çağırdığınızda artık eklediğiniz özelleştirilmiş istemle ("Maceracı, harika bir karşılama!..." ) yanıt vermesi gerekir.
İşlemler projenizin sürümünü güncellemeden konsolda İşleminizi test etmek için gactions deploy preview komutunu kullanabilirsiniz. Bu komutu çalıştırdığınızda, yerel dosya sisteminizde yaptığınız değişikliklerin hiçbiri Actions projenizin dağıtılan sürümlerine yayılmaz ancak bunları bir önizleme sürümünde test edebilirsiniz.
İşleminizin ana çağırma ifadesini simülatörde test etmek için aşağıdaki adımları uygulayın:
- Projenizi test için İşlemler konsoluna dağıtmak üzere terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview
Aşağıdakine benzer bir çıkış alırsınız:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Sağlanan URL'yi kopyalayıp bir tarayıcıya yapıştırın.
- İşleminizi simülatörde ç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 karşılama mesajıyla yanıt verdikten sonra görüşme sona erer. Sonraki bölümde, görüşmenin devam etmesi için İşleminizi değiştirirsiniz.
Olay günlüklerini görüntüleme
İşlemler Konsolu'ndaki Test sekmesindeyken panelde, görüşme geçmişini etkinlik günlükleri olarak gösteren etkinlik günlükleri gösterilir. Her etkinlik günlüğünde, görüşmenin o dönüşünde gerçekleşen etkinlikler gösterilir.
İşleminizde şu anda hem kullanıcının girişini ("Test uygulamamla konuş") hem de İşleminizin yanıtını gösteren bir etkinlik günlüğü var. Aşağıdaki ekran görüntüsünde İşleminizin etkinlik günlüğü gösterilmektedir:

Etkinlik günlüğünde Talk to my test app simgesinin yanındaki aşağı oku tıklarsanız konuşmanın o dönüşünde gerçekleşen etkinlikleri kronolojik olarak sıralanmış şekilde görebilirsiniz:
userInput: Kullanıcının girişine ("Test uygulamamla konuş") karşılık gelir.interactionMatch: Kullanıcının girişiyle tetiklenen İşleminizin ana çağırma yanıtına karşılık gelir. Bu satırı oku tıklayarak genişletirseniz ana çağırma için eklediğiniz istemi görebilirsiniz (A wondrous greeting, adventurer!...).endConversation: Şu anda görüşmeyi sonlandıranMain invocationamacında seçilen geçişe karşılık gelir. Geçişler hakkında daha fazla bilgiyi bu codelab'in sonraki bölümünde edineceksiniz.
Etkinlik günlükleri, işleminizin nasıl çalıştığına dair görünürlük sağlar ve sorun yaşamanız durumunda işleminizde hata ayıklama yapmak için kullanışlı araçlardır. Bir etkinliğin ayrıntılarını görmek için aşağıdaki ekran görüntüsünde gösterildiği gibi etkinlik adının yanındaki oku tıklayın:

4. İşleminizin sohbetini oluşturma
Kullanıcılar İşleminizi çağırdıktan sonra ne olacağını tanımladığınıza göre, İşleminizin görüşmesinin geri kalanını oluşturabilirsiniz. Bu codelab'e devam etmeden önce, İşleminizin görüşmesinin nasıl çalıştığını anlamak için aşağıdaki terimleri öğrenin:
İşleminizde bir veya daha fazla sahne olabilir. Her sahnenin çalışabilmesi için etkinleştirilmesi gerekir. Bu codelab'de oluşturduğunuz İşlem'de yalnızca Start adlı bir sahne var. Bir sahneyi etkinleştirmenin en yaygın yolu, kullanıcı girişi bir sahnedeki bir amaca eşleştiğinde bu amacın başka bir sahneye geçişi tetikleyip bu sahneyi etkinleştirecek şekilde İşleminizi yapılandırmaktır.
Örneğin, kullanıcıya hayvanlarla ilgili bilgiler veren varsayımsal bir İşlem düşünün. Kullanıcı bu işlemi çağırdığında Main invocation niyeti eşleştirilir ve Facts. adlı sahneye geçiş tetiklenir. Bu geçiş, Facts sahnesini etkinleştirir ve kullanıcıya şu istemi gönderir: Would you like to hear a fact about cats or dogs? Facts sahnesinde, kullanıcının kediyle ilgili bir bilgi duymak için söyleyebileceği eğitim ifadelerini (ör. "Kediyle ilgili bir bilgi duymak istiyorum" veya "kedi") içeren Cat adlı özel amaç bulunur. Kullanıcı kediyle ilgili bir bilgi edinmek istediğinde Cat niyetiyle eşleşme sağlanır ve Cat fact. adlı sahneye geçiş tetiklenir. Cat fact sahnesi etkinleştirilir ve kullanıcıya kediyle ilgili bir bilgi içeren istem gönderilir.

Şekil 1. Actions SDK ile oluşturulan bir Action'daki tipik bir etkileşimli dönüşün akışı.
Sahneler, niyetler ve geçişler birlikte konuşmanızın mantığını oluşturur ve kullanıcınızın İşleminizin konuşmasında izleyebileceği çeşitli yolları tanımlar. Aşağıdaki bölümde bir sahne oluşturacak ve kullanıcının İşleminizi çağırmasından sonra bu sahnenin nasıl etkinleştirileceğini tanımlayacaksınız.
Ana çağırmadan sahneye geçiş
Bu bölümde, Start adlı yeni bir sahne oluşturursunuz. Bu sahne, kullanıcıya geleceği hakkında bilgi almak isteyip istemediğini soran bir istem gönderir. Ayrıca, ana çağırmadan yeni Start sahnesine geçiş ekleyin.
Bu sahneyi oluşturmak ve sahneye geçiş eklemek için aşağıdaki adımları uygulayın:
custom/global/actions.intent.MAIN.yamldosyasını metin düzenleyicinizde açın.transitionToScenealanındaki metni (actions.scene.END_CONVERSATION) aşağıdaki metinle değiştirin:transitionToScene: Start
actions.intent.MAIN.yaml
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Welcome to the mythical land of Gryffinberg! Based on your clothes,
you are not from around these lands. It looks like you're on your way
to an epic journey.
transitionToScene: Start
Bu, İşleminizin ana çağırmadan Start sahnesine geçiş yapmasını sağlar.
- Dosyayı kaydedin.
- Terminalde,
customdizininde yeni birscenesdizini oluşturun:
mkdir custom/scenes
scenesdizinindeStart.yamladlı yeni bir dosya oluşturun. Bu dosya, İşleminizdekistartsahnesini temsil eder:
touch custom/scenes/Start.yaml
Start.yamldosyasını metin düzenleyicinizde açın.- Aşağıdaki kodu
Start.yamldosyasına yapıştırın:
Start.yaml
onEnter:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Before you continue on your quest, would you like your fortune
told?
Start.yaml dosya kodunda, bir sahnenin yaşam döngüsünde çalışan ilk aşama olan onEnter adlı bir alan bulunur.
Bu durumda, kullanıcı ilk kez Start sahnesine girdiğinde istem (Before you continue on your quest...) istem sırasına eklenir.
Öneri çipleri ekleme
Öneri çipleri, kullanıcının tıklayabileceği ve İşleminizin kullanıcı girişi olarak işleyeceği öneriler sunar. Bu bölümde, ekranlı cihazlardaki kullanıcıları desteklemek için az önce yapılandırdığınız istemin (Before you continue on your quest, would you like your fortune told?) altında görünen Yes ve No öneri çipleri ekleyin.
Start sahnesinin istemine öneri çipleri eklemek için aşağıdaki adımları uygulayın:
Start.yamliçindeki kodu, öneri çipleri yapılandırma kodunu içeren aşağıdaki kod snippet'iyle eşleşecek şekilde güncelleyin:
Start.yaml
onEnter:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Before you continue on your quest, would you like your fortune
told?
suggestions:
- title: "Yes"
- title: "No"
- Dosyayı kaydedin.
İşleminizi simülatörde test etme
Bu noktada, İşleminiz ana çağırmadan Start sahnesine geçiş yapmalı ve kullanıcıya geleceği hakkında bilgi verilmesini isteyip istemediğini sormalıdır. Öneri çipleri, simüle edilmiş ekranda da görünmelidir.
İşleminizi simülatörde test etmek için aşağıdaki adımları uygulayın:
- 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
- Sağlanan URL'yi kopyalayıp 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 ("Görevine devam etmeden önce geleceğin hakkında bilgi edinmek ister misin?") yanıt vermeli ve öneri çipleri gösterilmelidir.
Aşağıdaki ekran görüntüsünde bu etkileşim gösterilmektedir:

- İ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
YesveyaNogirebilirsiniz.)
İsteme yanıt verdiğinizde İşleminiz, girişinizi anlayamadığını belirten bir mesajla yanıt veriyor: "Üzgünüm, anlayamadım. Tekrar deneyebilir misiniz?" İşleminizi henüz "Evet" veya "Hayır" girişini anlayıp yanıtlayacak şekilde yapılandırmadığınız için İşleminiz, girişinizi bir NO_MATCH niyetiyle eşleştiriyor.
NO_MATCH sistem amacı varsayılan olarak genel yanıtlar verir ancak bu yanıtları, kullanıcının girişini anlamadığınızı belirtmek için özelleştirebilirsiniz. Asistan, kullanıcı girişini üç kez eşleştiremedikten sonra kullanıcının İşleminizle olan görüşmesini sonlandırır.
yes ve no amaçlarını ekleme
Kullanıcılar artık İşleminizin sorduğu soruya yanıt verebildiğinden İşleminizi, kullanıcıların yanıtlarını ("Evet" veya "Hayır") anlayacak şekilde yapılandırabilirsiniz. Aşağıdaki bölümlerde, kullanıcı "Evet" veya "Hayır" dediğinde eşleşen özel amaçlar oluşturup bu amaçları Start sahnesine ekleyeceksiniz.
yes amacı oluşturma
yes amacı oluşturmak için aşağıdaki adımları uygulayın:
- Terminalde,
customdizinindeintentsadlı 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.yamliçine yapıştırın:
yes.yaml
trainingPhrases:
- of course
- let's do it
- ok
- sure
- "y"
- "yes"
- Dosyayı kaydedin.
Start sahnesine yes amacı ekle
Artık İşlem, kullanıcının "evet" niyetini ifade ettiğini anlayabiliyor. Kullanıcı, Start istemine ("Maceranıza devam etmeden önce geleceğiniz hakkında bilgi edinmek ister misiniz?") yanıt verdiğinden yes özel amacını Start sahnesine ekleyebilirsiniz.
Bu özel amaca Start sahnesine eklemek için aşağıdaki adımları uygulayın:
custom/scenes/Start.yamldosyasını metin düzenleyicinizde açın.intentEventsveyesişleyiciyiStart.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 amacı eşleştirildiğinde istem kuyruğuna "Geleceğiniz, görevinizde kullanmayı seçtiğiniz öğeye bağlı..." istemi eklenir. Start sahnesi, istem kuyruğundaki istemleri sunan ve görüşmeyi sonlandıran actions.scene.END_CONVERSATION sistem sahnesine geçer.
Simülatörde yes amacını test etme
Bu noktada, İşleminiz kullanıcının falını dinlemek istediğini anlar ve uygun yanıtı döndürür.
Bu amacı simülatörde test etmek için aşağıdaki adımları uygulayın:
- 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
- Sağlanan URL'yi kopyalayıp bir tarayıcıya yapıştırın.
- Simülasyon aracına gitmek için Test'i tıklayın.
- İşleminizi simülatörde 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 tıklayın.

İşleminiz kullanıcıya yanıt veriyor ve seçtiği yardıma göre geleceğinin şekilleneceğini söylüyor. Ardından, yes niyeti için End conversation geçişini yapılandırdığınızdan işleminiz oturumu sonlandırır.
no amacı oluşturma
Artık no amacını oluşturabilirsiniz. Böylece İşleminiz, kullanıcılar falını öğrenmek istemediğinde onları anlayıp yanıtlayabilir.
Bu amacı oluşturmak için aşağıdaki adımları uygulayın:
- Terminalde,
intentsdizinindeno.yamladlı yeni bir dosya oluşturun:
touch custom/intents/no.yaml
no.yamldosyasını metin düzenleyicinizde açın.- Aşağıdaki eğitim ifadelerini
no.yamldosyasına yapıştırın:
no.yaml
trainingPhrases:
- nope
- I don't want
- "n"
- "no"
- nah
- no thanks
- Dosyayı kaydedin.
Start sahnesine no amacı ekle
Artık İşlem, kullanıcının "hayır" veya "hayır"'a benzer bir ifade (ör. "yok") kullandığını anlayabilir. Kullanıcı, Start istemine ("Maceranıza devam etmeden önce geleceğiniz hakkında bilgi almak ister misiniz?") yanıt verdiği için no özel amacını Start sahnesine eklemeniz gerekir.
Start sahnesi için bu amacı eklemek üzere aşağıdaki adımları uygulayın:
custom/scenes/Start.yamldosyasını metin düzenleyicinizde açın.Start.yamliçindeyesişleyicisinin altına aşağıdakinoiş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
- Dosyayı kaydedin.
Simülatörde no amacını test etme
Bu noktada, işleminiz kullanıcının geleceği hakkında bilgi almak istemediğini anlar ve uygun yanıtı döndürür.
Bu amacı simülatörde test etmek için aşağıdaki adımları uygulayın:
- 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
- Sağlanan URL'yi kopyalayıp 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 olarak,Noöneri çipini tıklayın.

Kullanıcıya geleceği hakkında bilgi vermek yerine, İşleminiz yolculuğunda ona başarılar diler. Ardından, no niyeti için End conversation geçişini yapılandırdığınızdan işleminiz oturumu sonlandırır.
5. Sipariş karşılama özelliğini uygulama
Şu anda İşleminizin yanıtları statik. Bir istem içeren sahne etkinleştirildiğinde İşleminiz her seferinde aynı istemi gönderiyor. Bu bölümde, dinamik bir sohbet yanıtı oluşturma mantığını içeren karşılama işlevini uygulayacaksınız.
Karşılama mesajınız, kullanıcının geri gelen bir kullanıcı mı yoksa yeni bir kullanıcı mı olduğunu belirler ve geri gelen kullanıcılar için İşlem'in karşılama mesajını değiştirir. Geri gelen kullanıcılar için karşılama mesajı kısaltılır ve kullanıcının geri geldiği belirtilir: "Maceraperest, hoş geldin! Efsanevi Gryffinberg diyarına tekrar hoş geldiniz!"
Bu codelab'de, karşılama kodunuzu düzenlemek ve dağıtmak için Cloud Functions düzenleyicisini kullanacaksınız.
İşleminiz, çağırma sırasında veya bir sahnenin yürütülmesinin belirli bölümlerinde gerçekleşen bir etkinliğin yerine getirilmesiyle ilgili sizi bilgilendiren webhook'ları tetikleyebilir. Bir webhook tetiklendiğinde Action'ınız, etkinliği işlemek için kullanılacak işleyicinin adıyla birlikte istek karşılama mantığınıza JSON yükü içeren bir istek gönderir. Bu işleyici, bazı mantık işlemlerini gerçekleştirir ve karşılık gelen bir JSON yanıtı döndürür.
İstek karşılama sürecinizi oluşturun
Bu bölümde, kullanıcılar İşleminizi çağırdığında geri gelen kullanıcılar ve yeni kullanıcılar için farklı istemler oluşturmak üzere karşılamanızı değiştirirsiniz.
Bu mantığı karşılama işleminize eklemek için aşağıdaki adımları uygulayın:
- 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şleyiciyi 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.- Aşağıdaki kodu
index.jsdosyasına ekleyin:
index.js
const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');
const app = conversation({debug: true});
app.handle('greeting', conv => {
let message = 'A wondrous greeting, adventurer! Welcome back to the mythical land of Gryffinberg!';
if (!conv.user.lastSeenTime) {
message = 'Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you\'re on your way to an epic journey.';
}
conv.add(message);
});
exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);
Bu kod, greeting işleyicisini tanımlar. Bu işleyici, uygun selamlama mesajını
kullanıcı.
- Dosyayı kaydedin.
ActionsOnGoogleFulfillmentdizinindepackage.jsonadlı yeni bir dosya oluşturun:
touch webhooks/ActionsOnGoogleFulfillment/package.json
package.json dosyası, webhook'unuz için bağımlılıkları ve diğer meta verileri belirtir.
package.jsondosyasını metin düzenleyicinizde açın.- Bu GitHub deposundaki kodu kopyalayıp
package.jsondosyasına yapıştırın. - Dosyayı kaydedin.
Kodu anlama
Node.js için Actions on Google İstek Karşılama Kitaplığı'nı kullanan istek karşılama mantığınız, Google Asistan'dan gelen HTTP isteklerine yanıt verir.
Önceki kod snippet'inde, kullanıcının daha önce lastSeenTime özelliğiyle işlemi ziyaret edip etmediğini kontrol eden greeting işleyicisini tanımlıyorsunuz. lastSeenTime özelliği tanımlanmamışsa kullanıcı yenidir ve yeni kullanıcılara yönelik karşılama mesajını alır. Aksi takdirde, mesaj kullanıcının dönüşünü onaylar ve değiştirilmiş bir karşılama mesajı oluşturur.
Webhook'u tetiklemek için ana çağırmayı güncelleme
greeting işlevini tanımladığınıza göre, ana çağırma amacınızda greeting etkinlik işleyicisini yapılandırabilirsiniz. Böylece, kullanıcı İşleminizi çağırdığında İşleminiz bu işlevi çağırması gerektiğini bilir.
İşleminizi yeni greeting işleyiciyi çağıracak şekilde yapılandırmak için aşağıdaki adımları uygulayın:
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ştirildiğinde greeting webhook işleyicisi çağrılıyor.
Güncellenen ana çağırmayı simülatörde test etme
İşleminizi simülatörde test etmek için aşağıdaki adımları uygulayın:
- 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
- Sağlanan URL'yi kopyalayıp bir tarayıcıya yapıştırın.
- İşleminizi simülatörde test etmek için Giriş alanına
Talk to my test appyazıpEntertuşuna basın.
Bu codelab'de daha önce İşleminizi test ettiğiniz için yeni kullanıcı değilsiniz. Bu nedenle, aşağıdaki kısaltılmış selamlama mesajını alırsınız: "Maceraperest, harika bir selamlama! Welcome back to the mythical land of Gryffinberg!..."
6. Actions Builder ile İşlemi Görselleştirme
Actions SDK, Actions Console'a entegre edilmiş Actions Builder adlı web tabanlı bir IDE ile birlikte çalışabilir. gactions push komutuyla yerel dosya sisteminizi konsoldaki İşleminizin taslağına aktarabilirsiniz. Yalnızca simülatörde işleminizi test etmenize olanak tanıyan gactions deploy preview'dan farklı olarak gactions push, yerel dosyalarınızdaki tüm içeriği Actions Builder'a taşır.
İşlemler Konsolu, İşleminizin yapılandırmasının görsel bir temsilini sunar. İşleminizin görsel olarak haritasını görmek geliştirme sırasında faydalı olabilir ve İşleminizin test için sunulan sürümünü etkilemez.
Actions projenizi göndermek ve Actions Console'da görüntülemek için aşağıdaki adımları uygulayın:
- Projenizi Actions Console'a göndermek için terminalde aşağıdaki komutu çalıştırın:
gactions push
Aşağıdakine benzer bir çıkış alırsınız:
✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
- Sağlanan URL'yi kopyalayıp bir tarayıcıya yapıştırın.
- Actions Console'da üst gezinme çubuğundaki Geliştir'i tıklayın.
- 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
Startsahnesinin görsel bir temsilini görmeniz gerekir:

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:
- 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 hemen Actions Console'dan kaldırmak için Proje silme bölümünde listelenen adımları uygulayın. Bu adımı tamamlamazsanız projeniz yaklaşık 30 gün sonra otomatik olarak kaldırılır.
7. Tebrikler!
Actions SDK ile Google Asistan için İşlemler oluşturmanın temel bilgilerine sahip olmalısınız.
İşlediğiniz konular
- Actions Console'da Actions projesi oluşturma
- İşlemler projenizi yerel dosya sisteminizde oluşturmak için Actions SDK'yı kullanma
- Kullanıcıların İşleminizle görüşme başlatabilmesi için ana çağırmaya nasıl istem eklenir?
- Sahneler, amaçlar, geçişler, öneri çipleri ve karşılama ile etkileşimli arayüz oluşturma
- İşleminizi Actions simülatörü ile test etme
Daha fazla bilgi
Google Asistan için işlem oluşturma hakkında daha fazla bilgi edinmek üzere aşağıdaki kaynakları inceleyin:
- Google Asistan için İşlemler geliştirme ile ilgili resmi doküman sitesi
- Örnek kod ve kitaplıklar için Actions on Google GitHub sayfası
- Asistan ile çalışan geliştiriciler için resmi Reddit topluluğu
En son duyurular için Twitter'da @ActionsOnGoogle'ı takip edin ve geliştirdiklerinizi paylaşmak için #AoGDevs etiketiyle tweet atın.
Geri bildirim anketi
Ayrılmadan önce lütfen deneyiminizle ilgili kısa bir anket doldurun.