1. Genel Bakış
Google Asistan geliştirici platformu, sanal kişisel asistan olan Google Asistan'ın işlevlerini akıllı hoparlörler, telefonlar, arabalar, TV'ler, kulaklıklar ve daha fazlası dahil olmak üzere 1 milyardan fazla cihazda genişletmek için yazılım oluşturmanıza olanak tanır. Kullanıcılar, market alışverişi yapmak veya araç çağırmak gibi işlerini halletmek için Asistan ile sohbet eder. Geliştirici olarak, kullanıcılar ile kendi üçüncü taraf karşılama hizmetiniz arasında keyifli ve etkili yapay zeka destekli kampanya oluşturma deneyimi kolayca oluşturup yönetmek için Asistan geliştirici platformunu kullanabilirsiniz.
Bu codelab'de, Google Asistan için Actions SDK ile geliştirme yapmaya yönelik başlangıç düzeyindeki kavramlar ele alınmaktadır. Bu codelab'i tamamlamak için platformla ilgili önceden deneyim sahibi olmanız gerekmez. Bu codelab'de, Google Asistan için basit bir işlem oluşturacaksınız. Bu işlem, kullanıcılara Gryffinberg'in efsanevi topraklarındaki maceralarına başlarken fallarını söyleyecek. Actions SDK 2. düzey codelab'inde, kullanıcının girişine göre falını özelleştirmek için bu işlemi daha da geliştirirsiniz.
Ne oluşturacaksınız?
Bu codelab'de, aşağıdaki işlevlere sahip basit bir işlem oluşturacaksınız:
- Kullanıcılara karşılama mesajıyla yanıt verir.
- Kullanıcılara soru sorar ve kullanıcının seçimine uygun şekilde yanıt verir.
- Kullanıcıların giriş sağlamak için tıklayabileceği öneri çipleri sunar.
- Kullanıcıya gösterilen karşılama mesajını, kullanıcının geri gelen kullanıcı olup olmadığına göre değiştirir.
Bu codelab'i tamamladığınızda, tamamlanan İşleminiz aşağıdaki konuşma akışına sahip olur (mikrofonun yanındaki metin kullanıcının girişini, hoparlörün yanındaki metin ise İşlemin yanıtını temsil eder):


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

- Proje oluştur'u tıklayın.
- What kind of Action do you want to build? (Ne tür bir İşlem oluşturmak istiyorsunuz?) ekranında Custom (Özel) kartını seçin.
- İleri'yi tıklayın.
- Nasıl oluşturmak istiyorsunuz? ekranında Boş proje kartını seçin.
- Oluşturmaya başla'yı tıklayın.
İşleminizin proje kimliğini kaydedin.
Proje kimliği, İşleminizin benzersiz tanımlayıcısıdır. Bu codelab'deki birkaç adım için proje kimliğiniz gerekir.
Proje kimliğinizi almak için aşağıdaki adımları uygulayın:
- Actions konsolunda üç dikey noktayı (buraya simge 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 faturalandırma hesabı oluşturmanız ve bunu Google Cloud'daki projenizle ilişkilendirmeniz gerekir. Böylece, karşılama hizmetinizi daha sonra Cloud Functions ile dağıtabilirsiniz.
Bir faturalandırma hesabını projenizle ilişkilendirmek için aşağıdaki adımları uygulayın:
- 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 için Actions 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ünde yer alan adımları uygulayın.
gactions komut satırı arayüzünü yükleme
Bu codelab'de, Actions projenizi Actions konsolu ile yerel dosya sisteminiz arasında senkronize etmek için gactions komut satırı arayüzü (CLI) aracını kullanırsınız.
gactions CLI'yı yüklemek için gactions komut satırı aracını yükleme bölümündeki talimatları uygulayın.
Actions projenizi indirme
Actions projenizi Actions konsolundan indirerek İşleminizi geliştirmeye başlayın.
Actions projenizi indirmek için aşağıdaki adımları uygulayın:
- Yeni bir dizin oluşturmak ve bu dizine geçmek için aşağıdaki komutları çalıştırın:
mkdir myproject cd myproject
- İşlemler projenizin yapılandırmasını yerel dosya sisteminize kopyalamak için aşağıdaki komutu çalıştırın:
gactions pull --project-id <projectID>
Dosya yapısını anlama
Actions konsolundan indirdiğiniz Actions projesi, YAML dosya yapısında temsil edilir. Aşağıdaki resimde, dosya yapısının üst düzey bir temsili gösterilmektedir:

Dosya yapısı aşağıdakilerden oluşur:
actions/: Actions 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 dizin, platformun projenize otomatik olarak eklediği sistem amaçlarını içerir. Sistem intent'leri hakkında daha fazla bilgiyi bu codelab'in ilerleyen bölümlerinde edineceksiniz.manifest.yaml: Taşınabilir veya belirli bir projeye özgü olmayan ve projeler arasında taşınabilen bilgiler içeren bir dosya.settings/: Görünen ad, varsayılan yerel ayar ve kategori gibi bir Actions projesinin ayarlarını temsil eder.
3. Sohbet başlatma
Kullanıcılar, çağrı aracılığıyla İşleminizle sohbet başlatır. Örneğin, MovieTime adlı bir İşleminiz varsa kullanıcılar "Ok Google, MovieTime ile konuş" gibi bir ifade söyleyerek İşleminizi çağırabilir. Burada MovieTime, görünen addır. İşleminizi üretime dağıtmak istiyorsanız görünen adı olmalıdır. Ancak işleminizi test etmek için görünen adı tanımlamanız gerekmez. Bunun yerine, simülatörde "Test uygulamamla konuş" ifadesini kullanarak İşleminizi çağırabilirsiniz. Simülasyon aracı hakkında daha fazla bilgiyi bu bölümün ilerleyen kısımlarında bulabilirsiniz.
Kullanıcı, İşleminizi çağırdıktan sonra ne olacağını tanımlamak için ana çağrıyı düzenlemeniz gerekir.
Varsayılan olarak, Action'ınız tetiklendiğinde genel bir istem sağlar ("Ana çağrıyı tanımlayarak Action'ınızı oluşturmaya başlayın.").
Sonraki bölümde, custom/global/actions.intent.MAIN.yaml dosyasındaki ana çağrınız için istemi özelleştireceksiniz.
Ana çağrıyı ayarlama
Ana başlatma isteminizi actions.intent.MAIN.yaml dosyasında düzenleyebilirsiniz.
İşleminiz çağrıldığında kullanıcıya gönderdiği istemi değiştirmek için aşağıdaki adımları uygulayın:
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örde ana çağrıyı test etme
Actions konsolu, Action'ınızı test etmek için simülatör adında bir web aracı sunar. Arayüz, donanım cihazlarını ve ayarlarını simüle eder. Böylece, Akıllı Ekran, telefon, hoparlör veya KaiOS üzerinde çalışıyormuş gibi İşleminizle sohbet edebilirsiniz.
İşleminizi çağırdığınızda, eklediğiniz özelleştirilmiş istemle ("Harika bir karşılama, maceracı!...") yanıt vermesi gerekir.
İşlemler projenizin sürümünü güncellemeden İşleminizi konsolda test etmek için gactions deploy preview komutunu kullanabilirsiniz. Bu komutu çalıştırdığınızda, yerel dosya sisteminizde yaptığınız değişikliklerin hiçbiri İşlemler projenizin dağıtılan sürümlerine yayılmaz ancak bunları bir önizleme sürümünde test edebilirsiniz.
İşleminizin ana çağrısını simülatörde test etmek için aşağıdaki adımları uygulayın:
- Projenizi test etmek üzere Actions konsoluna dağıtmak için terminalde aşağıdaki komutu çalıştırın:
gactions deploy preview
Aşağıdakine benzer bir çıkış alırsınız:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Sağlanan URL'yi kopyalayıp bir tarayıcıya yapıştırın.
- Simülatörde İşleminizi çağırmak için Giriş alanına
Talk to my test appyazın veEntertuş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 karşılama mesajıyla yanıt verdikten sonra görüşme sona erer. Sonraki bölümde, sohbetin devam etmesi için işleminizi değiştireceksiniz.
Olay günlüklerini görüntüleme
Actions konsolundaki Test sekmesindeyken panelde, görüşme geçmişini olay günlüğü olarak gösteren olay günlükleri yer alır. Her olay günlüğü, görüşmenin o sırasındaki olayları gösterir.
İşleminizde şu anda hem kullanıcının girişini ("Test uygulamamla konuş") hem de İşleminizin yanıtını gösteren bir olay günlüğü var. Aşağıdaki ekran görüntüsünde İşleminizin olay günlüğü gösterilmektedir:

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

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

Şekil 1. Actions SDK ile oluşturulan bir işlemde tipik bir görüşme sırasının akışı.
Sahneler, niyetler ve geçişler bir araya gelerek görüşmenizin mantığını oluşturur ve kullanıcınızın İşleminizin görüşmesinde izleyebileceği çeşitli yolları tanımlar. Aşağıdaki bölümde bir sahne oluşturacak ve kullanıcı İşleminizi çağırdıktan sonra bu sahnenin nasıl etkinleştirileceğini tanımlayacaksınız.
Ana çağrıdan sahneye geçiş
Bu bölümde, Start adlı yeni bir sahne oluşturacaksınız. Bu sahne, kullanıcıya falına bakılmasını isteyip istemediğini soran bir istem gönderir. Ayrıca ana çağrıdan yeni Start sahnesine bir geçiş de eklersiniz.
Bu sahneyi oluşturmak ve sahneye geçiş eklemek için aşağıdaki adımları uygulayın:
custom/global/actions.intent.MAIN.yamldosyasını metin düzenleyicinizde açın.transitionToScenealanındaki (actions.scene.END_CONVERSATION) metni şu metinle değiştirin:transitionToScene: Start
actions.intent.MAIN.yaml
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Welcome to the mythical land of Gryffinberg! Based on your clothes,
you are not from around these lands. It looks like you're on your way
to an epic journey.
transitionToScene: Start
Bu, İşleminize ana çağrıdan Start sahnesine geçmesini söyler.
- 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.- 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 vardır.
Bu durumda, kullanıcı Start sahnesine ilk girdiğinde istem (Before you continue on your quest...) istem sırasına eklenir.
Öneri çipleri ekleme
Öneri çipleri, kullanıcı için tıklanabilir öneriler sunar. Bu öneriler, işleminiz tarafından kullanıcı girişi olarak işlenir. Bu bölümde, ekranlı cihazlardaki kullanıcıları desteklemek için az önce yapılandırdığınız istemin (Before you continue on your quest, would you like your fortune told?) altında görünen Yes ve No öneri çiplerini eklersiniz.
Start sahnesinin istemine öneri çipleri eklemek için aşağıdaki adımları uygulayın:
Start.yamldosyasındaki kodu, öneri çipleri yapılandırma kodunu içeren aşağıdaki kod snippet'iyle eşleşecek şekilde güncelleyin:
Start.yaml
onEnter:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Before you continue on your quest, would you like your fortune
told?
suggestions:
- title: "Yes"
- title: "No"
- Dosyayı kaydedin.
İşleminizi simülatörde test etme
Bu noktada, İşleminiz ana çağrıdan Start sahnesine geçmeli ve kullanıcıya falına bakılmasını isteyip istemediğini sormalıdır. Öneri çipleri, simülasyon ekranında da görünmelidir.
İşleminizi simülatörde test etmek için aşağıdaki adımları uygulayın:
- 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ın veEntertuşuna basın. İşleminiz,Main invocationistemi ve eklenenStartsahne istemiyle ("Before you continue on your quest, would you like your fortune told?") yanıt vermeli ve öneri çipleri gösterilmelidir.
Aşağıdaki ekran görüntüsünde bu etkileşim gösterilmektedir:

- İ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
YesveyaNoyazabilirsiniz.)
İstemi yanıtladığınızda İşleminiz, girişinizi anlayamadığını belirten bir mesajla yanıt verir: "Maalesef anlayamadım. Tekrar deneyebilir misiniz?" İşleminizi henüz "Evet" veya "Hayır" girişini anlayıp yanıtlayacak şekilde yapılandırmadığınız için İşleminiz, girişinizi bir NO_MATCH niyetiyle eşleştirir.
Varsayılan olarak NO_MATCH sistem niyeti genel yanıtlar verir ancak bu yanıtları, kullanıcıya girişini anlamadığınızı belirtecek şekilde özelleştirebilirsiniz. Asistan, kullanıcı girişini üç kez eşleştiremediğinde kullanıcının İşleminizle olan görüşmesini sonlandırır.
yes ve no amaçları ekleyin
Kullanıcılar artık İşleminizin sorduğu soruyu yanıtlayabildiğine göre, İşleminizi kullanıcıların yanıtlarını ("Evet" veya "Hayır") anlayacak şekilde yapılandırabilirsiniz. Aşağıdaki bölümlerde, kullanıcı "Evet" veya "Hayır" dediğinde eşleşen özel amaçlar oluşturacak ve bu amaçları Start sahnesine ekleyeceksiniz.
yes niyetini oluştur
yes niyetini oluşturmak için aşağıdaki adımları uygulayın:
- 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.yamldosyasına yapıştırın:
yes.yaml
trainingPhrases:
- of course
- let's do it
- ok
- sure
- "y"
- "yes"
- Dosyayı kaydedin.
Start sahnesine yes niyet ekleyin
Artık işlem, kullanıcının "evet" niyetini ifade ettiğini anlayabilir. Kullanıcı Start istemine ("Görevinize devam etmeden önce falınıza bakılmasını ister misiniz?") yanıt verdiği için yes özel niyetini Start sahnesine ekleyebilirsiniz.
Bu özel amacı Start sahnesine eklemek için aşağıdaki adımları uygulayın:
custom/scenes/Start.yamldosyasını metin düzenleyicinizde açın.Start.yamldosyasının sonunaintentEventsveyesişleyicisini ekleyin:
Start.yaml
intentEvents:
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Your future depends on the item you choose to use for your quest. Choose wisely! Farewell, stranger.
intent: "yes"
transitionToScene: actions.scene.END_CONVERSATION
yes intent'i eşleştiğinde "Your future depends on the item you choose to use for your quest..." istemi, istem sırasına eklenir. Ardından Start sahnesi, istem sırasındaki istemleri ileten ve görüşmeyi sonlandıran actions.scene.END_CONVERSATION sistem sahnesine geçer.
Simülatörde yes niyetini test etme
Bu noktada, İşleminiz kullanıcının falını ne zaman duymak istediğini anlar ve uygun yanıtı döndürür.
Bu intent'i simülatörde test etmek için aşağıdaki adımları uygulayın:
- 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ın veEntertuşuna basın. Alternatif olarak, Evet öneri çipini tıklayın.

İşleminiz kullanıcıya yanıt verir ve falının seçtiği yardıma bağlı olduğunu söyler. Ardından, yes niyeti için End conversation geçişini yapılandırdığınızdan işleminiz oturumu sonlandırır.
no niyetini oluştur
Şimdi, no niyetini oluşturabilirsiniz. Böylece İşleminiz, falını dinlemek istemeyen kullanıcıyı anlayabilir ve ona yanıt verebilir.
Bu niyeti oluşturmak için aşağıdaki adımları uygulayın:
- 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 niyet ekleyin
Artık işlem, kullanıcının "hayır" veya "hayır" anlamına gelen "yok" gibi bir ifade kullandığını anlayabilir. Kullanıcı Start istemine ("Maceranıza devam etmeden önce falınıza bakılmasını ister misiniz?") yanıt verdiği için no özel niyetini Start sahnesine eklemeniz gerekir.
Start sahnesi için bu niyeti eklemek üzere aşağıdaki adımları uygulayın:
custom/scenes/Start.yamldosyasını metin düzenleyicinizde açın.Start.yamldosyasındakiyesiş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 niyetini test etme
Bu noktada, işleminiz kullanıcının falını dinlemek istemediğini anlar ve uygun yanıtı döndürür.
Bu intent'i simülatörde test etmek için aşağıdaki adımları uygulayın:
- 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ın veEntertuşuna basın. - Giriş alanına
Noyazın veEntertuşuna basın. Alternatif olarak,Noöneri çipini tıklayın.

İşleminiz, kullanıcıya falını söylemek yerine yolculuğunda iyi şanslar diler. Ardından, no niyeti için End conversation geçişini yapılandırdığınızdan işleminiz oturumu sonlandırır.
5. Sipariş karşılamayı uygulama
Şu anda İşleminizin yanıtları statiktir. İstem içeren bir sahne etkinleştirildiğinde İşleminiz her seferinde aynı istemi gönderir. Bu bölümde, dinamik bir etkileşimli yanıt oluşturma mantığını içeren karşılamayı uygulayacaksınız.
Yerine getirme, kullanıcının geri gelen bir kullanıcı mı yoksa yeni bir kullanıcı mı olduğunu belirler ve geri gelen kullanıcılar için İşlem'in karşılama mesajını değiştirir. Karşılama mesajı, geri dönen kullanıcılar için kısaltılır ve kullanıcının geri döndüğünü belirtir: "Harika bir karşılama, maceracı! Gryffinberg'in efsanevi topraklarına tekrar hoş geldiniz."
Bu codelab'de, karşılama kodunuzu düzenlemek ve dağıtmak için Cloud Functions düzenleyicisini kullanacaksınız.
İşleminiz, bir çağrı sırasında veya bir sahnenin yürütülmesinin belirli bölümlerinde gerçekleşen bir etkinliğin karşılandığını bildiren webhook'ları tetikleyebilir. Bir webhook tetiklendiğinde İşleminiz, etkinliği işlemek için kullanılacak işleyicinin adıyla birlikte JSON yükü içeren bir isteği karşılamanıza gönderir. Bu işleyici, belirli bir mantığı uygular ve ilgili JSON yanıtını döndürür.
Sipariş karşılama sisteminizi oluşturma
Bu bölümde, geri gelen kullanıcılar ve yeni kullanıcılar İşleminizi çağırdığında farklı istemler oluşturmak için karşılamanızı değiştirirsiniz.
Bu mantığı karşılama hizmetinize eklemek için aşağıdaki adımları uygulayın:
- 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.ActionsOnGoogleFulfillment.yamldosyasınagreetingişleyicisini veinlineCloudFunctioniçeriğini ekleyin:
ActionsOnGoogleFulfillment.yaml
handlers:
- name: greeting
inlineCloudFunction:
executeFunction: ActionsOnGoogleFulfillment
ActionsOnGoogleFulfillment.yaml dosyası, webhook işleyicilerinizi (greeting işleyici gibi) tanımlar ve İşleminize webhook uç noktası olarak Cloud Functions'ı kullanmasını söyler.
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(>39;greeting', conv = {
let message = 'A wondrous greeting, adventurer! Welcome back to the mythical land of Gryffinberg!';
if (!conv.user.lastSeenTime) {
message = 'Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you\'re on your way to an epic journey.';
}
conv.add(message);
});
exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);
Bu kod, kullanıcıya uygun karşılama mesajını gönderen greeting işleyicisini tanımlar.
kullanıcı.
- Dosyayı kaydedin.
ActionsOnGoogleFulfillmentdizinindepackage.jsonadlı yeni bir dosya oluşturun:
touch webhooks/ActionsOnGoogleFulfillment/package.json
package.json dosyası, webhook'unuzun bağımlılıklarını ve diğer meta verilerini belirtir.
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 karşılama kitaplığını kullanan karşılamanız, Google Asistan'dan gelen HTTP isteklerine yanıt verir.
Önceki kod snippet'inde, kullanıcının daha önce lastSeenTime özelliğiyle İşlem'i ziyaret edip etmediğini kontrol eden greeting işleyicisini tanımlarsınız. lastSeenTime özelliği tanımlanmamışsa kullanıcı yenidir ve yeni kullanıcılara yönelik karşılama mesajını alır. Aksi takdirde mesaj, kullanıcının geri döndüğünü onaylar ve değiştirilmiş bir karşılama mesajı oluşturur.
Web kancasını tetiklemek için ana çağrıyı güncelleme
greeting işlevini tanımladığınıza göre, ana çağrı niyetinizde greeting etkinlik işleyicisini yapılandırabilirsiniz. Böylece, kullanıcı İşleminizi çağırdığında İşleminiz bu işlevi çağıracağını bilir.
İşleminizi yeni greeting işleyiciyi çağıracak şekilde yapılandırmak için aşağıdaki adımları uygulayın:
custom/global/actions.intent.MAIN.yamldosyasını metin düzenleyicinizde açın.actions.intent.MAIN.yamldosyasındaki 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şleyici çağrılır.
Güncellenen ana çağrıyı simülatörde test etme
İşleminizi simülatörde test etmek için aşağıdaki adımları uygulayın:
- 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 İşleminizi daha önce test ettiğiniz için yeni bir kullanıcı değilsiniz. Bu nedenle aşağıdaki kısaltılmış karşılama mesajını alırsınız: "Harika bir karşılama, maceracı! Gryffinberg'in efsanevi topraklarına tekrar hoş geldiniz..."
6. Actions Builder ile İşlemleri Görselleştirme
Actions SDK, Actions konsoluna entegre edilmiş Actions Builder adlı web tabanlı bir IDE ile birlikte çalışabilir. gactions push komutuyla yerel dosya sisteminizi konsoldaki İşleminizin taslağına aktarabilirsiniz. İşleminizi yalnızca simülatörde test etmenize olanak tanıyan gactions deploy preview aracının aksine gactions push, yerel dosyalarınızdaki tüm içeriği Actions Builder'a taşır.
Actions konsolu, İşleminizin yapılandırmasının görsel bir temsilini sunar. İşleminizin görsel olarak eşlendiğini görmek, geliştirme sırasında faydalı olabilir ve İşleminizin test için sunulan sürümünü etkilemez.
İşlemler projenizi göndermek ve Actions Console'da görüntülemek için aşağıdaki adımları uygulayın:
- Terminalde aşağıdaki komutu çalıştırarak projenizi Actions konsoluna aktarın:
gactions push
Aşağıdakine benzer bir çıkış alırsınız:
✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
- Sağlanan URL'yi kopyalayıp bir tarayıcıya yapıştırın.
- Actions konsolunda, üst gezinme çubuğunda Develop'ı (Geliştir) 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örürsünüz:

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ı uygulayın.
- İsteğe bağlı: Projenizi Actions Console'dan hemen kaldırmak için Proje silme bölümünde listelenen adımları uygulayın. Bu adımı tamamlamazsanız projeniz yaklaşık 30 gün sonra otomatik olarak kaldırılır.
7. Tebrikler!
Actions SDK ile Google Asistan için işlem oluşturmanın temel adımlarını öğrendiniz.
İşlediğiniz konular
- Actions Console'da Actions projesi oluşturma
- Actions projenizi yerel dosya sisteminizde oluşturmak için Actions SDK'yı kullanma
- Kullanıcıların İşleminizle sohbet başlatabilmesi için ana çağrıya istem ekleme
- Sahneler, niyetler, geçişler, öneri çipleri ve karşılama ile etkileşimli arayüz oluşturma
- İşleminizi Actions simülatörü ile test etme
Daha fazla bilgi
Google Asistan için işlem oluşturma hakkında daha fazla bilgi edinmek isterseniz aşağıdaki kaynakları inceleyebilirsiniz:
- Google Asistan için işlem geliştirme ile ilgili resmi dokümanlar 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 hesabını takip edin ve geliştirdiğiniz uygulamaları paylaşmak için #AoGDevs etiketiyle tweet atın.
Geri bildirim anketi
Ayrılmadan önce lütfen deneyiminizle ilgili kısa bir anket doldurun.