Actions Builder ile Google Asistan'a Action Geliştirme (1. Seviye)

Giriş

Google Assistant üzerinde kendi sesli uygulamalarınızı, yani Action'larınızı, yapmak ve bunları yayına almak konusunda hiç tecrübeniz olmasa bile bu atölye çalışmasını tamamlayarak platformun temel çalışma mantığını kavrayabilir, konsola aşina olabilir ve öğrendiklerinizi kendi sesli uygulamalarınızı geliştirmek için kullanabilirsiniz.

Bu çalışma, Google Assistant Developer Relations tarafından yazılan Build Actions for Google Assistant using Actions Builder (Level 1) isimli codelab'in çevirisidir.

Geliştirecekleriniz

Bu çalışmanın sonunda:

  • Uygulamanıza gelen kullanıcılara için hoşgeldin mesajı oluşturmayı,
  • Kullanıcılara sorular sormayı,
  • Kullanıcının verdiği cevaba göre uygulamanızın vereceği cevabı özelleştirmeyi,
  • Kullanıcının sorunuza hızlıca yanıt verebilmeleri için öneri butonları koymayı,
  • Kullanıcı uygulamanızı ilk kez kullanmıyorsa, uygulamanın karşılama mesajını özelleştirmeyi

öğreneceksiniz.

Bu çalışmayı bitirdiğinizde, geliştirdiğiniz Action aşağıdaki gibi çalışacak

Geliştireceğiniz Action'ın konuşma akışı
Geliştireceğiniz Action'ın konuşma akışı

Öğrenecekleriniz

Bu çalışmanın sonunda:

  • Actions konsolda proje oluşturmayı
  • Kullanıcı uygulamanıza geldiğinde onu karşılamayı
  • Kullanıcının söylediklerini anlamayı ve cevaplamayı
  • Uygulamanızı Actions Simulator'de test etmeyi
  • Uygulamanızın fulfillment'ını (mantığını) Cloud Functions kullanarak geliştirmeyi

öğreneceksiniz.

Gerekenler

  • Bir web tarayıcı

Kurulum

Geliştirmeye başlamadan önce bir Actions on Google projesi oluşturmamız ve geliştirmeye hazır hale getirmemiz gerekiyor.

Google etkinlik ayarlarınızı kontrol edin

Çalışmanın devamında geliştirdiğiniz uygulamayı Actions Simulator üzerinde test edebilmek için gerekli bazı izinleri vermeniz gerekiyor. Bu izinleri açmak için:

  1. Google Etkinlik Kontrolleri sayfasına gidin
  2. Zaten hesabınıza giriş yapmadıysanız, giriş yapın
  3. Web ve Uygulama Etkinliği (Web & App Activity) iznini aktif hale getirin ve "Chrome geçmişini ve Google hizmetlerini kullanan site, uygulama ve cihazlardaki etkinlikleri ekle" (Include Chrome history and activity from sites, apps, and devices that use Google services.) seçeneğini işaretleyin.

Bir Actions projesi oluşturun

Action projenizi, Action'ınızı da içinde barındıran bir paket olarak düşünebilirsiniz. Bu Action'a bağlı başka Google Cloud hizmetleri kullanmanız halinde bunları da aynı proje içerisinde barındırabilir ve yönetimi, kolaylaştırabilirsiniz.

  1. Actions konsolu açın
  2. New Project'e tıklayın
  3. Projenize bir isim verin, bu isim uygulamanızın kullanıcılar tarafından görülen ismi değil. Bu yüzden sizin tarafınızdan anlaşılabilir olması yeterli
    Projenizi isimlendirme
    Projenizi isimlendirme
  4. Create Project'e tıklayın
  5. What kind of Action do you want to build? yani Ne tür bir Action geliştirmek istiyorsunuz? diye sorulduğunda Custom yani özel seçeneğini seçin
  6. Next'e basın
  7. Herhangi bir template kullanmayacağımız için Blank project yazan kartı seçin
  8. Geliştirmeye başlamak için Start Building'e basın.

Bir faturalandırma hesabı bağlayın

Çalışmanın son aşamasında fulfillment'ımızı Google Cloud Functions üzerinde geliştireceğimiz için, yeni oluşturduğumuz Actions on Google projesine bir faturalandırma hesabı bağlamamız gerekiyor. Eğer projenize bir faturalandırma hesabı zaten bağlı ise diğer adıma geçebilirsiniz.

Projenize bir faturalandırma hesabı eklemek için:

  1. Google Cloud Console faturalandırma sayfasına gidin
  2. Faturalandırma hesabı ekle (Add billing account) butonuna tıklayın
  3. Ödeme bilgilerinizi girin ve Ücretsiz Denememi Başlat (Start My Free Trial) veya Gönder ve Faturalandırmayı Başlat seçeneklerinden birine basın
  4. Sayfanın üstünde yer alan Projelerim'e (My Projects) tıklayın
  5. Yukarıda oluşturduğunuz projenin yanındaki Actions'ın altındaki üç noktaya tıklayın
  6. Faturalandırmayı değiştir'e (Change billing) tıklayın
  7. Açılan menüde yukarıdaki adımlarda oluşturduğunuz faturalandırma hesabını seçin. Hesabı Belirle'ye (Set Account) tıklayın

Gereksiz ödemelerden kaçınmak için, çalışmanın sonunda faturalandırma hesabınızı ve projenizi silmeyi unutmayın

Diyalogu başlatalım

Kullanıcılar, Action'larınız ile diyaloglarını invokation (çağrı) ile başlatıyorlar. Örneğin Türkiye Gezgini isimli bir Action'ınız varsa, kullanıcılar "Hey Google, Türkiye Gezgini ile konuş" demek suretiyle Action'ınızı çağırabilirler.

Yayınlamak istediğiniz Action'larınıza bu şekilde çağrı ismi vermeniz gerekiyor ancak test aşamasındaki Action'larınızı "Hey Google, Test Uygulamam ile konuş" demek suretiyle hem simülatörde hem de cihazda test edebilirsiniz.

Kullanıcı sesli uygulamanızı çağırdığında onu nasıl karşılayacağınızı belirlemek için main invocation'ı düzenlemeniz gerekiyor.

Main invocation: Kullancıların Action ile konuşma başlatmak için kullandıkları giriş noktası. Kullanıcı "Hey Google, 'uygulama ismi' ile konuş" veya benzeri bir şey söylediğinde main invocation tetiklenir ve kullanıcıya cevap verir.

Varsayılan olarak Actions Builder main invocation için genel geçer bir prompt (cevap) vermektedir.

Prompt: Action'ın kullanıcıya verdiği cevap. Prompt yazı ve sesten oluşan simple response (basit cevap) olabileceği gibi, kart ve resimler içeren rich response da olabilir. Kullanıcıya tam ekran görseller şekliden cevap vermek için Canvas isimli özel cevap türünü de kullanabilirsiniz.

Bir sonraki bölümde, Actions konsolda sesli uygulamanız için belirlenmiş olan main invocation'ı özelleştirmeyi öğreneceksiniz.

Main invocation'ı özelleştirmek

Action'ın tetiklendiğinde verdiği cevabı özelleştirmek için şu adımları izleyin:

  1. Soldaki menüden Main invocation'ı seçin
    Main Invocation'ı özelleştirmek
    Main Invocation'ı özelleştirmek
  2. Kod editöründe, speech (konuşma) alanını şu karşılama mesajı ile değiştirin: Selam olsun maceracı! Efsanevi Gryffinberg'e hoşgeldin. Kıyafetlerine bakılırsa buralı değilsin. Destansı bir yolculuğa çıkmışsın.

Not: Prompt'ları düzenlemek için ister YAML ister JSON kullanabilirsiniz.

  1. Save'e (Kaydet) basın.

Simülatorde main invocation'ı test etmek

Actions konsol, Action'larınızı web üzerinde test etmeniz için bir Simülatör sunuyor. Bu simülatör, cihazları ve özelliklerini taklit ederek Action ile sanki o Action'ı bir akıllı telefonda, hoparlörde, ekranda veya KaiOS'ta kullanıyormuş gibi konuşmanıza olanak sağlar.

Actions simülatör ile ilgili en güncel bilgiyi Simulator Guide sayfasında bulabilirsiniz.

Şimdi, Action'ı çağırdığınızda yukarı belirlediğiniz prompt ile cevap vermeli.

Action'ı test etmek için aşağıdaki adımları izleyin:

  1. Üst menüden Test'e tıklayarak Simülatör'ü açın
  2. Action'ı çağırmak için sol üstteki kutucuğa "Test uygulamam ile konuş" yazın ve Enter'a basın.
    Actions simülatör
    Actions simülatör

İpucu: Kutucuğa yazmak yerine "Test uygulamam ile konuş" öneri butonuna da basabilir veya mikrofon simgesine tıklayarak "Test uygulamam ile konuş" diyebilirsiniz.

Artık Action'ın main invocation'ı tetiklendiğinde, kullanıcı özelleştirdiğiniz hoşgeldiniz mesajını duyuyor. Bu aşamada diyalog, Asistan'ın cevabından sonra bitiyor. Bir sonraki adımda diyalogu devamettirmek için Action'ı nasıl geliştireceğinizi öğreneceksiniz.

Event loglarını görüntüleyin

Test sekmesindeyken, sağdaki panel event loglarını (olay günlüklerini) gösterir. Event loglarına bakarak diyalogun geçmişini görebilirsiniz. Her bir log, diyalogun o turunda gerçekleşen olayları gösterir.

Action'ınızın şu an yalnızca kullanıcının girdisini ve Action'ın cevabını içeren tek bir event logu var.

Event logları
Event logları

Eğer event logundaki aşağı ok tuşuna basarsanız, konuşmanın o turunda gerçekleşen eventleri kronolojik sıra ile görebilirsiniz.

  • user input: Kullanıcı girdisi
  • interactionMatch: Kullanıcının girdisi ile tetiklenmiş olan Action'ın main invocation cevabını gösterir. Eğer bu satırı oka tıklayarak genişletirseniz main invocation için eklediğiniz prompt'u görebilirsiniz.
  • endConversation: Main invocation için belirlenmiş olan transition (geçiş) yapılacak diyalog durumunu ifade ediyor, şimdilik test Action'ında konuşma burada bitiyor. (Bu çalışmanın bir sonraki adımında transition'lara dair daha detaylı bilgi yer almaktadır.)

Event logları uygulamanızın nasıl çalıştığını gösterir ve bir sorun olduğunda debug etmeyi kolaylaştırır. bir event'in detaylarını görmek için, aşağıda gösterildiği gibi event'in yanındaki ok tuşuna basın:

Event loglarının detayları
Event loglarının detayları

Action'ın diyalogunu oluşturma

Action'ın karşılama mesajını özelleştirdiğinize göre, Action'ın diyalogunun kalanını oluşturmaya geçebiliriz. Bu çalışmaya devam etmeden önce, aşağıdaki terimlere aşina olmanız, Action'ın nasıl çalıştığını anlamanız için faydalı olacaktır.

Scene (Sahne): Action'ın kullanıcı girdisini işleyen ve genelde kullanıcıya cevap veren yapıtaşı.
User Intent (Kullanıcının Amacı): Action tarafından anlaşılabilen kullanıcı girdilerini ifade eder. Intent'ler için örnek cümleleri (training phrase) belirlersiniz. Kullanıcı, bu örnek cümlelerden birini veya buna yakın bir cümleyi söylediğinde intent eşleşmiş (match) olur.
Training phrases (Örnek Cümleler): Kullanıcının bir intent'i (amacı) ifade etmek için kullanabileceği örnek cümleler. Assistant'ın NLU (Natural Language Understanding - Doğal Dil İşleme) motoru, bu cümlelere yakın cümleleri de tanımak için training phrase'lerden öğrenir.
Transition (Geçiş): Koşullar gerçekleştiğinde hangi sahneden sahneye geçilmesi

Action bir veya daha fazla sahneden oluşabilir. Sahnelerin çalışmaları için tetiklenmeleri gerekir. (Bu çalışmada geliştireceğiniz Action'ın Start isimli tek bir sahnesi olacak) Bir sahneyi tetiklemenin en kolay yolu, Action'ın bir başka sahnesinde bir intent eşleştiğinde diğer sahneye geçilmesi için trasition tanımlamaktır.

Örneğin, kullanıcılara hayvanlarla ilgili bilgiler veren farazi bir Action olduğunu düşünelim. Kullanıcı bu Action'ı çağırdığında, Main invocation intent'i eşleşir ve Facts isimli bir sahneye geçişi tetikler. Bu geçiş Facts isimli sahneyi tetikler ve o sahne de kullaınıcıya "Kedilerle ilgili mi yoksa köpeklerle ilgili mi bilgi almak istersiniz?" diye bir cevap döner. Facts sahnesi içerisinde kullanıcının kedi ile ilgili bilgi almak istediğinde söyleyebileceği bazı training phrase'ler ile tanımlanmış Cat isminde bir intent vardır. Kullanıcı kedilerle ile ilgili bilgi almak istediğini söylediğinde Cat intent'i eşleşir ve Cat fact isimli bir başka sahneye geçişi tetikler.

Actions Builder ile geliştirilmiş bir Action'daki bir konuşma turu
Actions Builder ile geliştirilmiş bir Action'daki bir konuşma turu

Sahneler, intentler ve geçişler bir araya gelerek Action'ın mantığını oluştururlar ve kullanıcının Action içerisinde gidebileceği farklı yolları belirlerler. Bir sonraki bölümde bir sahne oluşturmayı ve kullanıcı uygulamanızı çağırdığında bu sahnenin nasıl tetikleneceğini öğreneceksiniz.

Main invocation'dan sahneye geçiş

Bu bölümde kullanıcıya falına bakılmasını isteyip istemediğini soran Start isminde bir sahne oluşturacaksınız. Aynı zamanda main invocation'dan Start sahnesine bir geçiş oluşturacaksınız.

Bu sahneyi oluşturmak ve geçiş eklemek için aşağıdaki adımları takip edin:

  1. Üst menüden Develop sekmesine gelin. Daha sonra sol menüden main invocation’ı seçin.
  2. Sağdaki Transition (geçiş) bölümünde yer alan açılır menüye tıklayın ve kutucuğa Start yazın
    Transition oluşturma
    Transition oluşturma
  3. Add’e tıklayın. Böylece Start isminde bir sahne oluşturmuş ve Action'ı kullanıcıya karşılama mesajını verdikten sonra Start sahnesine geçecek şekilde ayarlamış oldunuz
  4. Sahnelerinizin listesini görmek için sol menüden Scenes’e tıklayın.
  5. Scenes’in altında Start sahnesini görmek için Start’a basın.
  6. Start sahnesinin On enter (giriş yapılınca) bölümünde yer alan + tuşuna basın
  7. Sağda Send prompts’u (cevap gönder) işaretleyin
  8. speech (konuşma) alanındaki cevap cümlesini kullanıcıya sormak istediğiniz soru ile değiştirin: Macerana devam etmeden önce falına bakılmasını ister misin?
    Start sahnesi
    Start sahnesi
  9. Save’e tıklayarak kaydedin.

Artık Google Asistan, kullanıcı sahneye girdiğinde yazdığınız soruyu soracaktır.

Öneri butonları ekleyin

Suggestion chips (öneri butonları) kullanıcıların sesle girdi yapmak yerine üzerine tıklayabilecekleri öneriler sunan araçlardır. Bu bölümde, ekranı olan bir cihazda Action'ı kullanan kullanıcılara sorulan soruya cevap olarak verilebilecek seçenekleri öneri butonu olarak göstermeyi öğreneceksiniz.

Start sahnesinin sorusuna öneri butonu eklemek için aşağıdaki adımları takip edin:

  1. Start sahnesinde, kod editörünün altındaki suggestions’a basın. Bu işlem bir adet öneri butonu oluşturacaktır
  2. title alanında, Suggested Response (önerilen cevap) kısmını 'Evet' ile değiştirin
  3. Aynı formatı kullanarak 'Hayır' için de bir öneri butonu ekleyin. kodunuz aşağıdaki gibi gözükmelidir.
 suggestions:
      - title: 'Evet'
      - title: 'Hayır'
  1. Save’e tıklayarak kaydedin.

Start sahnesi
Start sahnesi

Action’ı Simülatörde test edin

Bu aşamada Action main invocation'dan Start sahnesine geçiş yapmalı ve kullanıcıya falına bakılmasını isteyip istemediğini sorabilmeli. Aynı zamanda simülatör ekranında öneri butonlarını da görebiliyor olmalıyız.

Action'ı simülatörü test etmek için aşağıdaki adımları izleyin:

  1. Üst menüden Test sekmesine gelin
  2. Action'ı simülatörde test etmek için Input kutucuğuna Test uygulamam ile konuş yazın ve Enter’a basın.
  3. Action, main invocation cevabı ile cevap vermeli daha sonra Start sahnesi için belirlediğiniz soruyu sormalıdır: Macerana devam etmeden önce falına bakılmasını ister misin? Etkileşim şu şekilde olmalıdır:

Öneri butonlarının testi
Öneri butonlarının testi

Event log'ları güncel oturumunuz için simülatördeki tüm etkileşimlerinizi göstermektedir. Dolayısıyla bu çalışmada yaptığınız önceki test de event log üzerinde görülmektedir. Event log’larını temizlemek için Reset Test’e tıklayabilirsiniz.

  1. Soru sorulduğunda cevap vermek için Evet veya Hayır öneri butonlarından birine tıklayın (Dilerseniz mikrofonu kullanarak "Evet" veya "Hayır" diyebilir yahut Input kutucuğuna Evet ya da Hayır yazabilirsiniz)

Soruya cevap verdiğinizde Action size ne söylediğinizi anlamadığını söyleyerek cevap verecektir. Çünkü henüz Action’ın seçeneklere nasıl cevap vereceğini belirlemediniz. Bu nedenle NO_MATCH intent’i eşleşti.

NO_MATCH: Kullanıcının söyledikleri Action içerisindeki herhangi bir intent ile eşleşmediğinde devreye giren bir kapsayıcı intent’tir.
System intent: Varsayılan olarak ayarlanmış olan genel geçer sistem olaylarını karşılayan intent’lerdir. (Örneğin kullanıcının anlaşılmayan bir şey söylemesi gibi) NO_MATCH ve main invocation'ı çağıran intent system intent’lerin örnekleridirler.

Varsayılan olarak NO_MATCH sistem intent’i genel bir cevap vermektedir. Ancak bu cevabı özelleştirebilirsiniz. Asistan eğer üç kez kullanıcının ne söylediğini anlayamaz ise Action ve kullanıcı arasındaki diyaloğu bitirecektir.

Evet ve Hayır intent’lerini ekleyin

Artık kullanıcılar Action’ın sorduğu soruya yanıt verebildiğine göre, Action’ı da kullanıcının yanıtını anlayacak şekilde geliştirmeliyiz. Bu bölümde kullanıcı 'Evet' veya 'Hayır' dediğinde tetiklenecek olan intent’leri oluşturulmasını ve bunları Start sahnesine eklenmesini öğreneceğiz.

yes intent’ini oluşturun

Evet intent’ini oluşturmak için aşağıdaki adımları takip edin:

  1. Üst menüden Develop sekmesine gelin
  2. Soldaki menüden Intents’e tıklayarak intent’lerin listesini açın
  3. Intent listesinin sonundaki +‘ya basın. Yeni intent’in adını yes koyun ve Enter’a basın
  4. Soldaki menüde yes’e tıklayarak yes intent’ini görüntüleyin
  5. Add training phrases bölümünde, örnek cümleler eklemek için Enter Phrase kutucuğuna aşağıdaki cümleleri ekleyin:
  • Evet
  • E
  • Olur
  • İsterim
  • Bak
  1. Save’e basarak kaydedin

yes intent’ini Start sahnesine ekleyin

Artık Action kullanıcının yes intent’ini tetiklediğini anlayabiliyor. Kullanıcı Start sahnesinin sorusuna yanıt olarak "Evet" dediği için yes intent’ini Start sahnesine ekleyelim.

Bu intent’i Start sahnesinde eklemek için aşağıdaki adımları uygulayın

  1. Sol menüden Scenes’in altında Start sahnesini seçin
  2. Start sahnesi altında yer alan User intent handling kısmının yanındaki +’ya tıklayın
  3. Açılan menüde yes seçeneğini seçin
    Evet intent'i
    Evet intent'i
  4. Sağdaki bölümden Send prompts’u işaretlerin ve speech alanını Geleceğin, macera için seçeceğin yardıma bağlı. Seçimini akıllıca yap! Elveda, yabancı. olarak değiştirin

Editördeki kod şu şekilde gözükmeli:

candidates:
  - first_simple:
      variants:
        - speech: >-
        Geleceğin, macera için seçeceğin yardıma bağlı. Seçimini akıllıca yap! Elveda, yabancı.
  1. Transition bölümünde açılan menüden End conversation’ı seçerek konuşmayı bitirin
  2. Save’e tıklayarak kaydedin

**yes intent’ini Simülatörde test edin**

Bu aşamada Action kullanıcının falına bakılmasını istediğini anlıyor ve uygun bir cevap verebiliyor.

Bu intent’i simülatörde test etmek için aşağıdaki adımları izleyin:

  1. Üst menüden Test sekmesine gelin
  2. Action'ı simülatörde test etmek için Input kutucuğuna Test uygulamam ile konuş yazın ve Enter’a basın.
  3. Input kutucuğuna Evet yazın veya öneri butonlarından “Evet”i seçin
    Evet intent'inin testi
    Evet intent'inin testi

Gördüğünüz gibi artık Action kullanıcıya cevap veriyor ve geleceklerinin seçecekleri yardıma bağlı olduğunu söylüyor. Daha sonra ise transition olarak End conversation belirlediğimiz için Action konuşmayı bitiriyor.

no intent’ini oluşturun

Evet intent’ini oluşturmak için aşağıdaki adımları takip edin:

  1. Üst menüden Develop sekmesine gelin
  2. Soldaki menüden Intents’e tıklayarak intent’lerin listesini açın
  3. Intent listesinin sonundaki +‘ya basın. Yeni intent’in adını no koyun ve Enter’a basın
  4. Soldaki menüde no’ya tıklayarak no intent’ini görüntüleyin
  5. Add training phrases bölümünde, örnek cümleler eklemek için Enter Phrase kutucuğuna aşağıdaki cümleleri ekleyin:
  • Hayor
  • H
  • Olmaz
  • İstemrm
  • Bakma
  1. Save’e basarak kaydedin

no intent’ini Start sahnesine ekleyin

Artık Action kullanıcının no intent’ini tetiklediğini anlayabiliyor. Kullanıcı Start sahnesinin sorusuna yanıt olarak "Hayır" dediği için no intent’ini Start sahnesine ekleyelim.

Bu intent’i Start sahnesinde eklemek için aşağıdaki adımları uygulayın

  1. Sol menüden Scenes’in altında Start sahnesini seçin
  2. Start sahnesi altında yer alan User intent handling kısmının yanındaki +’ya tıklayın
  3. Açılan menüde no seçeneğini seçin
    Hayır intent'i
    Hayır intent'i
  4. Sağdaki bölümden Send prompts’u işaretlerin ve speech alanını Anlıyorum yabancı. Maceranda bol şans! Elveda. olarak değiştirin

Editördeki kod şu şekilde gözükmeli:

candidates:
  - first_simple:
      variants:
        - speech: >-
            Anlıyorum yabancı. Maceranda bol şans! Elveda.
  1. Transition bölümünde açılan menüden End conversation’ı seçerek konuşmayı bitirin
  2. Save’e tıklayarak kaydedin

no intent’ini Simülatörde test edin

Bu aşamada Action kullanıcının falına bakılmasını istediğini anlıyor ve uygun bir cevap verebiliyor.

Bu intent’i simülatörde test etmek için aşağıdaki adımları izleyin:

  1. Üst menüden Test sekmesine gelin
  2. Action'ı simülatörde test etmek için Input kutucuğuna Test uygulamam ile konuş yazın ve Enter’a basın.
  3. Input kutucuğuna Hayır yazın veya öneri butonlarından “Hayır”ı seçin
    Hayır intent'inin testi
    Hayır intent'inin testi
    Gördüğünüz gibi artık Action kullanıcının falına bakmak yerine macerasında ona başarılar diliyor. Daha sonra ise transition olarak End conversation belirlediğimiz için Action konuşmayı bitiriyor.

Fulfillment geliştirin

Şimdilik sesli uygulamanız yalnızca statik cevaplar verebiliyor. Diğer bir ifade ile kullanıcı aynı sahneyi tetiklediğinde hep aynı cevap alıyor. Bu bölümde dinamik bir cevap oluşturmanızı sağlayacak bir mantığı nasıl geliştireceğinizi öğreneceksiniz.

Fulfillment: Action’ın çalışma mantığını içeren kod. Bir webhook sayesinde Action’da gerçekleşen olaylara göre fulfillment’ınıza çağrı yapabilirsiniz.

Fulfillment’ınız kullanıcının yeni bir kullanıcı mı yoksa uygulamanıza geri dönen bir kullanıcı mı olduğunu algılayabilir ve buna göre uygulamanıza ilk kez gelmeyen kullanıcılara onlara özgü bir karşılama mesajı vermenizi sağlayabilir. Özelleştirilmiş karşılama mesajı, geri dönen kullanıcılar için daha kısa olacaktır ve kullanıcının yeni değil, geri dönen bir kullanıcı olduğunu belli edecektir: “Merhaba maceracı! Gryffinber’in sihirli dünyasına tekrar hoşgeldin!”

Bu çalışmada fulfillment geliştirmek ve yayına almak için Actions konsolda yer alan Cloud Functions editörünü kullanacağız.

Cloud Functions editör: Actions konsol içerisinde yer alan ve Firebase Cloud Functions kullanarak fulfillment kodunuzu yazmanızı ve yayına almanızı sağlayan bir editör.

Uygulamanız; çağrıldığında veya sahnelerin bazı bölümlerine gelindiğinde fulfillment’ınıza bazı event’lerin gerçekleştiğini bir webhook’u tetiklemek suretiyle bildirebilir. Bir webhook tetiklendiğinde, Action’ınız fulfillment’ınıza bir JSON payload ile gerçekleşen event’in adını içeren bir request gönderir. Fulfillment’ınızda bu event için geliştirdiğiniz handler mantığı çalışır ve kullanıcıya vermek istediğiniz cevabı içeren bir JSON payload ile cevap verir.

Fulfillment’ı geliştirin

Artık fulfillment’ınızı editörde yeni kullanıcılara ve geri dönen kullanıcılara farklı cevaplar vermek üzere geliştirebilirsiniz.

Fulfillment’ınıza bu mantığı eklemek için aşağıdaki adımları takip edin:

  1. Üst menüden Develop sekmesine gelin
  2. Soldaki menüden Webhook’u seçin
  3. Inline Cloud Functions’ı seçin ve Confirm’e basarak onaylayın. index.js ve package.json içerisine şablon kodlar otomatik olarak eklenecektir.
    Webhook geliştirme türü
    Webhook geliştirme türü
  4. index.js’in içeriğini aşağıdaki kodla değiştirin:
const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');

const app = conversation({debug: true});

app.handle('greeting', conv => {
 let message = 'Merhaba maceracı! Gryffinber’in sihirli dünyasına tekrar hoşgeldin!';
 if (!conv.user.lastSeenTime) {
   message = 'Selam olsun maceracı! Efsanevi Gryffinberg\'e hoşgeldin. Kıyafetlerine bakılırsa buralı değilsin. Destansı bir yolculuğa çıkmışsın.';
 }
 conv.add(message);
});

exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);
  1. Save fulfillment’a basarak kaydedin.
  2. Deploy fulfillement’a basarak yayına alın.

Cloud Functions’ın kodunuzu yayına alması için birkaç dakika bekleyin. Beklerken editörün üstünde "Cloud Function deployment in progress..." mesajını göreceksiniz. Kod yayına alındığında ise bu mesaj "Your Cloud Function deployment is up to date." Olarak değişecektir.

Fulfillment, Node.js Actions on Google Fulfillment kütüphanesini kullanarak Asistan’dan gelen HTTP request’lerini cevaplıyor.

Yukarıdaki kodda, greeting isminde bir event handler tanımladınız. Bu handler fonksiyon, lastSeenTime property’sine bakarak kullanıcının daha önce Action’ı kullanıp kullanmadığını kontrol ediyor. Eğer lastSeenTime tanımlanmadıysa, kullanıcının yeni bir kullanıcı olduğunu anlıyor ve ilk kez gelen kullanıcılar için özelleştirilmiş olan karşılama mesajını veriyor.

Main invocation’ı bir webhook’u tetiklemek üzere değiştirin

Artık greeting fonksiyonunu tanımladığınıza göre, main invocation’ı bu handler fonksiyonu çağıracak şekilde ayarlayabilirsiniz.

Action’ı greeting handler’ını çağırmak üzere ayarlamak için aşağıdaki adımları takip edin:

  1. Soldaki menüden Main invocation’ı seçin
  2. Send prompts’tan işareti kaldırın ve Call your webhook’u işaretleyin
  3. Kutucuğa greeting yazın
    Webhook handle'ını girmek
    Webhook handle'ını girmek
  4. Save’e basarak kaydedin

Main invocation’ın son halini simülatörde test edin

Action’ı simülatörde test etmek için aşağıdaki adımları izleyin:

  1. Üstteki menüden Test sekmesine gelin
  2. Action’ı simülatörde test etmek için kutucuğa Test uygulamam ile konuş yazın ve Enter’a basın

Bu çalışmada Action’ı daha evvel test ettiğiniz için yeni bir kullanıcı değilsiniz. Bu yüzden kısaltılmış karşılama mesajı ile karşılanmış olmalısınız: “Merhaba maceracı! Gryffinber’in sihirli dünyasına tekrar hoşgeldin!”

Sırada ne var?

Tebrikler!

Artık Google Asistan için Action geliştirmenin temellerini biliyorsunuz.

Öğrendikleriniz

  • Actions konsolda bir Actions projesi oluşturmak
  • Main invocation’a cevap eklemek
  • Sahneleri, intent’leri, geçişleri, öneri butonlarını ve fulfillment’ı kullanarak bir diyalog oluşturmak
  • Action’ı Actions simülatörde test etmek

Projenizi ve faturalandırma hesabınızı silmeyi unutmayın

Eğer kullanmaya devam etmeyeceksiniz projenizi ve faturalandırma hesabınızı silmeyi unutmayın. Aksi halde beklenmedik ödemelerle karşılaşabilirsiniz.