Google Asistan’a nasıl uygulama geliştirilebileceğine dair genel bir bakış açısını paylaştım bu konuyla ilgili ilk yazımı linkten okuyabilirsiniz. Bu yazıda ise biraz daha derinlere dalacağız.

Hem ilk yazıyı biraz hatırlamak adına dedik ki iki tip action vardır. Bunlardan biri Direkt Actionlar, diğeri ise Conversational Action’lar.

screen-shot-2017-02-12-at-13-41-26

Direct actionlarda aslında asistan herşeyi yapabiliyor. Teoride bize ne isteğini veriyor ve biz de ilgili servisi çalıştırıyoruz. Ancak henüz geliştirmeye açık değil.
Bizim üzerinde çalışabileceğimiz kısım ise Conversational Actions. Yani karşısındakiyle iki yönlü iletişim kurarak, ilerleyen action tipi. Burada kullanıcı bir action için istekte bulunduğunda Google asistan bu isteği işler ve karşılığındaki eğer varsa ilgili Conversation action’a yönlendirir. Bu noktadan sonra, karşılamadan kapatma cümlelerinde kadar herşey o conversation action içinde yer alır.

Yine bir önceki yazıda da kısaca değindiğimiz Conversation API çok önemli bir görev görüyor, temel görevinin broker’lık olduğunu söylemiştik. Tabi broker görevi gören google asistan olduğu için bazı standart kalıplarla hitap etmemiz gerekmekte.

let me talk to $name
I want to talk to $name
can I talk to $name
talk to $name
at $name

$name invocation name’i ifade ediyor. Ancak mesela bir önceki örnekteki gibi de let me speak with my personal assistant about homemade cannoli dediğimizde aslında burada homemade cannoliyle action phrase’i de vermiş oluyoruz. Burada yaptığımız şey deep linking.

Invocation name‘in seçimi çok önemli. Kolay telaffuz edilebilen, eşleniği olmayan bir kelime olması faydalı olur. Bu invocation name bizim agentımızı ifade eden uniqe bir kelime olacak. Tabi neler olabilir neler olamazla gibi, naming policy için actions on google altında bir döküman var. Burada bir geliştirme yapmayı düşünüyorsanız. İncelemekte fayda var. İsme karar verdiğinizde ise Googler Developer Console’dan register olabilirsiniz.

Tamam isme de karar verdiğimize göre nasıl geliştireceğimize geri dönebiliriz. Şu an elimizde action’ınımızı nasıl trigger edeceğimiz bilgisi var.

Conversation action’ınımızı iki farklı şekilde geliştirebiliriz. Bunlar; Actions SDK ve API.AI kullanımı.

Actions SDK kullanarak ilerlediğimiz durumda, SDK bize aslında iki temek component verir. Bunlar Action Package ve Node.js web servisidir. Node.js client kütüphanesi, kullanıcıdan gelen inputu işlememize ve ilgili isteğe gerekli çıktıyı üretebilmek için yapacağımız geliştirmemize yardımcı olur. Yani aslında Fullfillment stepini sorunsuz bir şekilde geliştirmemize yardımcı olur. Action package’ları ise, action’ların nasıl tetikleneceği, hangi fulfillment endpoint’in çağrılacağı gibi bilgilerin tutulduğu JSON manifest’leridir. Bunlar dışında actionları test ve deploy edebilmek için CLI ve Google Home simulatoru olarak bir Web simülatörü sağlanmış olur.

API.AI alternatifiyle ilerlenmesi, geliştirme ve deploy etmeyi bizler için biraz daha kolaylaştırır yönde. Bir arayüz yardımıyla, actionları build edebilir ve ek özellikleri basitçe ekleyebiliriz. API.AI’ın verdikleri ise; ilk olarak NLU. API.AI’a bağlı doğal dil anlama vardır ve kullanıcıdan gelen isteğin içinde de kullanılır. Tabi ilk söylediğimiz özelliği bir GUI arayüzü sunuyor olması da action’ların tanımlanması ve konfigürasyonu için çok büyük bir kolaylık. Son olarak da API.AI bize bazı ileri seviye özellikler sunar – Conversation building features. Bunlar da mesela gömülü bir simülatör, makine öğrenmesi algoritmaları ve kullanıcının isteklerini  bağlamsallaştırmamız ve bu sayede bakımını daha kolay yapmamızı sağlayan bağlamlar sunması gibi.

References: