1. Genel Bakış
Google Asistan geliştirici platformu, sanal bir kişisel asistan olan Google Asistan'ın işlevlerini akıllı hoparlörler, telefonlar, arabalar, TV'ler, kulaklıklar ve diğer 1 milyardan fazla cihaza genişletmenizi sağlayacak yazılımlar oluşturmanıza olanak tanır. Kullanıcılar, market alışverişi veya araç randevusu alma gibi işlemler için Asistan'la konuşur. Geliştirici olarak, kullanıcılar ile kendi üçüncü taraf sipariş karşılama hizmetiniz arasındaki keyifli ve etkili sohbet deneyimlerini kolayca oluşturmak ve yönetmek için Asistan geliştirici platformunu kullanabilirsiniz.
Bu codelab'de, Google Asistan için Actions SDK'sı ile uygulama geliştirmeyle ilgili başlangıç düzeyindeki kavramlar ele alınmaktadır; tamamlamak için platformla ilgili deneyiminiz olmasına gerek yok. Bu codelab'de, Gryffinberg'in efsanevi diyarında maceralarına başlayan kullanıcılara servetlerini söyleyen basit bir Google Asistan İşlemi geliştireceksiniz. İşlemler SDK'sı düzey 2 codelab'inde, bu işlemi daha da geliştirerek kullanıcının kazancına göre özelleştiriyorsunuz.
Neler oluşturacaksınız?
Bu codelab'de aşağıdaki işlevleri kullanarak basit bir Action derleyeceksiniz:
- Kullanıcılara bir karşılama mesajıyla yanıt verir
- Kullanıcılara soru sorar ve kullanıcının seçimine uygun şekilde yanıt verir
- Kullanıcıların giriş yapmak için tıklayabileceği öneri çipleri sunar
- Karşılama mesajını kullanıcının geri gelen kullanıcı olup olmadığına göre değiştirir
Bu codelab'i tamamladığınızda, tamamladığınız İşleminiz aşağıdaki konuşma akışına sahip olur (mikrofonun yanındaki metin kullanıcının girişini, konuşmacının yanındaki metin ise işlemin yanıtını temsil eder):
Neler öğreneceksiniz?
- Actions konsolunda proje oluşturma
- İşlem projenizi Actions konsolu ile yerel dosya sisteminiz arasında aktarmak ve çekmek için işlemler aracını kullanma
- İşleminizi çağırdıktan sonra kullanıcıya istem gönderme
- Bir kullanıcının girişini işleme ve yanıt döndürme
- Actions simülatöründe işleminizi test etme
- Cloud Functions düzenleyicisini kullanarak istek karşılamayı uygulama
İhtiyacınız olanlar
Ortamınızda aşağıdaki araçlar bulunmalıdır:
- Tercih ettiğiniz bir IDE veya metin düzenleyici
- Node.js ve npm için kabuk komutlarının çalıştırılacağı bir terminal
- Google Chrome gibi bir web tarayıcısı
2. Kur
Aşağıdaki bölümlerde, geliştirme ortamınızı nasıl ayarlayacağınız ve Actions projenizi nasıl oluşturacağınız açıklanmaktadır.
Google izin ayarlarınızı kontrol etme
Bu codelab'de derlediğiniz İşlemi test etmek için simülatörün İşleminize erişebilmesi için gerekli izinleri etkinleştirmeniz gerekir.
İzinleri etkinleştirmek için şu adımları uygulayın:
- 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-codelab
gibi 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.yaml
dosyasını çağırır.custom/
: İşleminizi değiştirmek için çalışacağınız dizin.global/
: Bu dizin, platformun projenize otomatik olarak eklediği sistem amaçlarını içerir. Bu codelab'de sistem amaçları hakkında daha fazla bilgi edineceksiniz.manifest.yaml
: Aktarılabilir veya belirli bir projeye özgü olmayan bilgiler içeren ve projeler arasında taşınabilen dosyadır.settings/
: Bir Actions projesinin görünen ad, varsayılan yerel ayar ve kategori gibi ayarlarını temsil eder.
3. Sohbet başlatma
Kullanıcılar, İşleminizle sohbeti çağrı üzerinden başlatır. Örneğin, MovieTime adlı bir İşleminiz varsa kullanıcılar "Ok Google, MovieTime ile konuş" gibi bir ifade söyleyerek İşleminizi çağırabilir. Burada MovieTime, görünen addır. İşleminizi üretime dağıtmak istiyorsanız İşleminizin görünen adı olmalıdır; ancak İşleminizi test etmek için görünen adı tanımlamanız gerekmez. Bunun yerine, işleminizi çağırmak için simülatörde "Test uygulamamla konuş" ifadesini kullanabilirsiniz. Bu bölümün ilerleyen kısımlarında simülasyon aracı hakkında daha fazla bilgi edinebilirsiniz.
Bir kullanıcı işleminizi çağırdıktan sonra ne olacağını tanımlamak için ana çağrıyı düzenlemeniz gerekir.
İşleminiz varsayılan olarak, çağrınız tetiklendiğinde genel bir istem sunar ("Ana çağrı tanımlayarak İşleminizi oluşturmaya başlayın.").
Sonraki bölümde, custom/global/actions.intent.MAIN.yaml
dosyasındaki ana çağrınızın istemini özelleştireceksiniz.
Ana çağrıyı ayarla
actions.intent.MAIN.yaml
dosyasında ana çağrı isteminizi düzenleyebilirsiniz.
İşleminizin, kullanıcı işleminizi çağırdığında kullanıcıya geri gönderdiği istemi değiştirmek için aşağıdaki adımları uygulayın:
custom/global/actions.intent.MAIN.yaml
dosyasını metin düzenleyicinizde açın.speech
alanındaki (Start building your action...
) metni şu karşılama mesajıyla değiştirin:A wondrous greeting, adventurer! Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you're on your way to an epic journey.
actions.intent.MAIN.yaml
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: A wondrous greeting, adventurer! Welcome to the mythical land of
Gryffinberg! Based on your clothes, you are not from around these lands.
It looks like you're on your way to an epic journey.
transitionToScene: actions.scene.END_CONVERSATION
- 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 app
yazıpEnter
tuş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 invocation
niyetindeki seçili geçişe karşılık gelir ve o anda görüşme sonlandırılır. Bu codelab'in sonraki bölümünde geçişler hakkında daha fazla bilgi edineceksiniz.
Etkinlik günlükleri, işleminizin nasıl çalıştığına dair görünürlük sağlar ve herhangi bir sorun yaşadığınızda İşleminizde hata ayıklamak için yararlı araçlardır. Bir etkinliğin ayrıntılarını görmek için aşağıdaki ekran görüntüsünde gösterildiği gibi etkinlik adının yanındaki oku tıklayın:
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.yaml
dosyasını metin düzenleyicinizde açın.transitionToScene
alanındaki (actions.scene.END_CONVERSATION
) metni şununla değiştirin:transitionToScene: Start
actions.intent.MAIN.yaml
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Welcome to the mythical land of Gryffinberg! Based on your clothes,
you are not from around these lands. It looks like you're on your way
to an epic journey.
transitionToScene: Start
Bu, İşleminize ana çağrıdan Start
sahnesine geçiş yapmasını söyler.
- Dosyayı kaydedin.
- Terminalde,
custom
dizininde yeni birscenes
dizini oluşturun:
mkdir custom/scenes
scenes
dizininde, İşleminizdekistart
sahnesini temsil edenStart.yaml
adlı yeni bir dosya oluşturun.
touch custom/scenes/Start.yaml
Start.yaml
dosyasını metin düzenleyicinizde açın.Start.yaml
dosyasına aşağıdaki kodu yapıştırın:
Start.yaml
onEnter:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Before you continue on your quest, would you like your fortune
told?
Start.yaml
dosya kodunda, bir sahnenin yaşam döngüsündeki ilk aşama olan onEnter
adlı bir alan vardır.
Bu durumda, kullanıcı Start
sahnesine ilk kez girdiğinde istem (Before you continue on your quest...
) istem sırasına eklenir.
Öneri çipi ekleme
Öneri çipleri, İşleminizin kullanıcı girişi olarak işlediği kullanıcıya tıklanabilir öneriler sunar. Bu bölümde, ekranlı cihazlardaki kullanıcıları desteklemek için az önce yapılandırdığınız istemin (Before you continue on your quest, would you like your fortune told?
) altına Yes
ve No
öneri çipleri eklersiniz.
Start
sahnesinin istemine öneri çipleri eklemek için şu adımları uygulayın:
Start.yaml
içindeki kodu, öneri çiplerini yapılandırmaya yönelik kodu içeren aşağıdaki kod snippet'iyle eşleşecek şekilde güncelleyin:
Start.yaml
onEnter:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Before you continue on your quest, would you like your fortune
told?
suggestions:
- title: "Yes"
- title: "No"
- 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 app
yazıpEnter
tuşuna basın. İşleminiz,Main invocation
istemi ve eklenenStart
sahne istemiyle yanıt vermelidir. Buna "Görevinize devam etmeden önce falınızın söylenmesini ister misiniz?" ve öneri çipleri gösterilir.
Aşağıdaki ekran görüntüsünde bu etkileşim gösterilmektedir:
- İsteme yanıt vermek için Evet veya Hayır öneri çipini tıklayın. (Ayrıca "Yes" veya "No" diyebilir ya da Giriş alanına
Yes
veyaNo
girebilirsiniz.)
İsteme yanıt verdiğinizde İşleminiz, girişinizi anlayamadığını belirten bir mesajla yanıt verir: "Maalesef anlayamadım. Tekrar deneyebilir misiniz?" İşleminizi "Evet" veya "Hayır" girişinizi anlayıp yanıt verecek şekilde henüz yapılandırmadığınız için İşleminiz, girişinizi bir NO_MATCH
amacıyla eşleştiriyor.
Varsayılan olarak NO_MATCH
sistem amacı, genel yanıtlar sağlar ancak bu yanıtları kullanıcıya, girişini anlamadığınızı belirtecek şekilde özelleştirebilirsiniz. Asistan, kullanıcı girişini üç kez eşleştiremediğinde kullanıcının İşleminizle olan görüşmesini sonlandırır.
yes
ve no
intent ekle
Kullanıcılar İşleminizin sorduğu soruya yanıt verebildiğine göre İşleminizi kullanıcıların davranışlarını anlayacak şekilde yapılandırabilirsiniz. ("Evet" veya "Hayır"). Aşağıdaki bölümlerde kullanıcı "Evet" veya "Hayır" dediğinde eşleşen özel niyetler oluşturup bu amaçları Start
sahnesine ekleyeceksiniz.
yes
intent oluştur
yes
amacını oluşturmak için şu adımları uygulayın:
- Terminalde,
custom
dizinindeintents
adında yeni bir dizin oluşturun:
mkdir custom/intents
intents
dizinindeyes.yaml
adlı yeni bir dosya oluşturun:
touch custom/intents/yes.yaml
yes.yaml
dosyasını metin düzenleyicinizde açın.- Eğitim ifadelerini içeren aşağıdaki kod snippet'ini
yes.yaml
aralığına yapıştırın:
yes.yaml
trainingPhrases:
- of course
- let's do it
- ok
- sure
- "y"
- "yes"
- 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.yaml
dosyasını metin düzenleyicinizde açın.intentEvents
veyes
işleyicisiniStart.yaml
dosyasının sonuna ekleyin:
Start.yaml
intentEvents:
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Your future depends on the item you choose to use for your quest. Choose wisely! Farewell, stranger.
intent: "yes"
transitionToScene: actions.scene.END_CONVERSATION
yes
niyeti eşleştiğinde istem sırasına "Geleceğiniz, göreviniz için kullanmayı seçtiğiniz öğeye bağlı olarak..." istemi eklenir. Ardından Start
sahnesi, actions.scene.END_CONVERSATION
sistem sahnesine geçer. Böylece istem sırasında istemler gösterilir ve görüşme sonlandırılır.
Simülasyon aracında yes
amacını test edin
Bu noktada İşleminiz kullanıcının talihini ne zaman dinlemek istediğini anlar ve uygun yanıtı döndürür.
Bu amacı simülasyon aracında test etmek için aşağıdaki adımları izleyin:
- 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 app
yazıpEnter
tuşuna basın. - Giriş alanına
Yes
yazıpEnter
tuş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,
intents
dizinindeno.yaml
adlı yeni bir dosya oluşturun:
touch custom/intents/no.yaml
no.yaml
dosyasını metin düzenleyicinizde açın.no.yaml
dosyasına aşağıdaki eğitim ifadelerini yapıştırın:
no.yaml
trainingPhrases:
- nope
- I don't want
- "n"
- "no"
- nah
- no thanks
- 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.yaml
dosyasını metin düzenleyicinizde açın.Start.yaml
içindekiyes
işleyicinin altına şuno
işleyiciyi ekleyin:
Start.yaml
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: I understand, stranger. Best of luck on your quest! Farewell.
intent: "no"
transitionToScene: actions.scene.END_CONVERSATION
- 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 app
yazıpEnter
tuşuna basın. - Giriş alanına
No
yazıpEnter
tuşuna basın. Alternatif olarakNo
öneri çipini de tıklayabilirsiniz.
İşleminiz kullanıcıya servet vermek yerine yolculuğunda şanslar diliyor. İşleminiz, no
amacı için End conversation
geçişini yapılandırdığınızdan oturumu sonlandırıyor.
5. İstek karşılamayı uygulama
Şu anda İşleminizin yanıtları statik; İstem içeren bir sahne etkinleştirildiğinde İşleminiz her seferinde aynı istemi gönderir. Bu bölümde, dinamik bir diyaloğa dayalı yanıt oluşturma mantığı içeren sipariş karşılama yöntemini uygulayacaksınız.
Karşılamanız, kullanıcının geri gelen kullanıcı mı yoksa yeni kullanıcı mı olduğunu tanımlar ve geri gelen kullanıcılar için İşlemin karşılama mesajını değiştirir. Karşılama mesajı, geri gelen kullanıcılar için kısaltılır ve kullanıcının söz konusu geri dönüşü onaylar: "Müthiş bir selamlama, maceracı! Gryffinberg'in mitolojik topraklarına tekrar hoş geldiniz!"
Bu codelab'de Cloud Functions düzenleyicisini kullanarak sipariş karşılama kodunuzu düzenleyip dağıtacaksınız.
İşleminiz, bir çağrı sırasında veya bir sahnenin yürütülmesinin belirli bölümlerinde gerçekleşen bir etkinliği karşıladığınızı bildiren webhook'ları tetikleyebilir. Webhook tetiklendiğinde, İşleminiz etkinliği işlemek için kullanılacak işleyici adıyla birlikte gönderiminize JSON yükü içeren bir istek gönderir. Bu işleyici bir mantık yürütür ve karşılık gelen bir JSON yanıtı döndürür.
İstek karşılama sürecinizi geliştirin
Bu bölümde, geri gelen kullanıcılar ve yeni kullanıcılar işleminizi çağırdığında bu kullanıcılar için farklı istemler oluşturacak şekilde sipariş karşılamayı değiştirirsiniz.
Sipariş karşılamanıza bu mantığı eklemek için şu adımları uygulayın:
- Terminalde projenizin kök dizininde olduğunuzdan emin olun ve yeni bir
webhooks
dizini oluşturun:
mkdir webhooks
webhooks
dizinindeActionsOnGoogleFulfillment.yaml
adlı yeni bir dosya oluşturun:
touch webhooks/ActionsOnGoogleFulfillment.yaml
ActionsOnGoogleFulfillment.yaml
dosyasını metin düzenleyicinizde açın.greeting
işleyicisini veinlineCloudFunction
içeriğiniActionsOnGoogleFulfillment.yaml
dosyasına ekleyin:
ActionsOnGoogleFulfillment.yaml
handlers:
- name: greeting
inlineCloudFunction:
executeFunction: ActionsOnGoogleFulfillment
ActionsOnGoogleFulfillment.yaml
dosyası, webhook işleyicilerinizi (ör. greeting
işleyici) tanımlar ve İşleminize webhook uç noktası olarak Cloud Functions'ı kullanmasını söyler.
webhooks
dizininde yeni birActionsOnGoogleFulfillment
dizini oluşturun:
mkdir webhooks/ActionsOnGoogleFulfillment
ActionsOnGoogleFulfillment
dizinindeindex.js
adlı yeni bir dosya oluşturun:
touch webhooks/ActionsOnGoogleFulfillment/index.js
index.js
dosyasını metin düzenleyicinizde açın.- Şu kodu
index.js
alanına ekleyin:
index.js
const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');
const app = conversation({debug: true});
app.handle('greeting', conv => {
let message = 'A wondrous greeting, adventurer! Welcome back to the mythical land of Gryffinberg!';
if (!conv.user.lastSeenTime) {
message = 'Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you\'re on your way to an epic journey.';
}
conv.add(message);
});
exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);
Bu kod, greeting
işleyicisini tanımlar ve bu işleyici, uygun karşılama mesajını
belirtir.
- Dosyayı kaydedin.
ActionsOnGoogleFulfillment
dizinindepackage.json
adlı yeni bir dosya oluşturun:
touch webhooks/ActionsOnGoogleFulfillment/package.json
package.json
dosyası, webhook'unuzla ilişkili bağımlılıkları ve diğer meta verileri belirtir.
package.json
dosyasını metin düzenleyicinizde açın.- Bu GitHub deposundan kodu kopyalayın ve
package.json
dosyası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.yaml
dosyasını metin düzenleyicinizde açın.actions.intent.MAIN.yaml
iç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 app
yazıpEnter
tuşuna basın.
İşleminizi bu codelab'de daha önce test ettiğiniz için yeni bir kullanıcı değilsiniz. Bu nedenle şu kısa selamlamayı alırsınız: "Harika bir selamlama, maceracı! Gryffinberg'in mitolojik topraklarına tekrar hoş geldiniz!..."
6. Actions Builder ile İşlemi Görselleştirin
Actions SDK, Actions konsoluna entegre edilmiş Actions Builder adlı web tabanlı bir IDE ile birlikte çalışabilirlik özelliğine sahiptir. Konsolda gactions push
komutunu kullanarak yerel dosya sisteminizi İşleminizin taslağına aktarabilirsiniz. İşleminizi yalnızca simülatörde test etmenize olanak tanıyan gactions deploy preview
seçeneğinin aksine gactions push
, yerel dosyalarınızdaki tüm içeriği İşlem Oluşturucu'ya taşır.
Actions konsolu, işleminizin yapılandırmasının görsel bir temsilini sağlar. İşleminizin görsel olarak eşlendiğini görmek, geliştirme sırasında faydalı olabilir ve işleminizin test için sunulan sürümünü etkilemez.
Actions projenizi aktarmak ve Actions konsolunda görüntülemek için şu adımları uygulayın:
- 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
Start
sahnesinin 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.