Actions on Google üzerine yazdığım önceki yazılarımda Action’lar hakkında detaylı bilgi vermeye çalıştım. Bu yazıda ise API.AI kullanarak bir chatbot nasıl geliştirebiliriz. Bunun üzerinde durmaya çalışacağım. Yazının sonunda Home üzerinde çalışan basit bir Chatbot’u hep beraber geliştirmiş olacağız. Önceki yazıları okumak isterseniz; v1 ve v2 linklerinden erişebilirsiniz.

conversation-action-apiai

API.AI kullanarak ilerlediğimiz durumda chatbotumuzun geliştirmesinde 5 temel adımı izliyor olacağız.

  1. Tasarım. Bu actionımız için gerekli olan dialogların, kullanıcı arayüzünün tasarımıdır. Dialogları yazmak, hatalarımızı yakalamak, doğala yakın bir ikili iletişim oluşturacak şekilde şekillendirmemiz için yardımcı olur.
  2. API.AI’da intentlerle actionların yapılandırılması. Aslında bu adım tamamen işin arkasını yazdığımız şekillendirdiğimiz adımdır. Burada invocationları, dialogları ve fullfilment’ı tanımlarız.
  3. Test. Google Home Web Simülatörde action’ımızı artık test edebiliriz.
  4. Checklist. Action’ımızı launch etmek için gerekli herşeyi içerip içermediğini kontrol etmemiz gerekli.
  5. Konfigürasyon ve deploy edilmesi.

screen-shot-2017-02-12-at-16-58-29

Kodlamaya başlamadan önce son olarak yapmamız gereken, API.AI hakkındaki bazı key concept’leri öğrenmek. Böylece artık hazır olabileceğiz.

Agents: Agents uygulamalarla ilişkilidir. Bir agent’ı eğitip, test ettiğimizde, cihazımızla ya da uygulamamızla entegre edebiliriz.

Entities: Entities, bir domain’e özel doğal dil kalıplarının, onların anlamlarına karşılık gelecek kalıplara eşlediğimiz konseptlerdir.

Intents: Intentler kullanıcının dediğine karşılık hangi action’ın alınacağını eşlemeyi temsil eder.

Actions: Actionlar, kullanıcıdan gelen istekler karşılığında uygulamamızda hangi adımların ilişkilendirileceğidir. Bazen action’lar parametre de alabilirler.

Contexts: Kullanıcının ifadesindeki o anki bağlamı ifade etmek için kullanılan string’lerdir. Nasıl söylendiğine bağlı olarak, anlamı değişen kelimeleri ayrıştırabilmek için faydalıdır.

İlk önce yapmamız gereken bir agent yaratmak. Bunun için api.ai’ın sitesinden ilgili linkten ilerleyebiliriz.

screen-shot-2017-02-18-at-14-34-30

Save’e tıkladığınızda artık intentleri girecebileceğimiz, asıl eğlenceli kısımdan oluşan ekran karşımıza geliyor 🙂

screen-shot-2017-02-18-at-15-00-42

Default Welcome Intent’ini editleyerek işe başlayarabiliriz. Welcome intent’i, kullanıcının artık farklı bir conversation’da olduğunu anlayabilmesi açısından önemlidir. Bu yüzden özenle oluşturulmalıdır. Default olarak tanımlı olan karşılama mesajlarını yanlarındaki çöp kutusu ikonuna tıklayarak temizleyebiliriz. İstediğimiz metni yazdıktan sonra “Save” ikonuna tıklayarak işlemimizi kaydedebiliriz.

screen-shot-2017-02-18-at-15-04-36

Artık kullanıcı bizim action’ımızda olduğu bilgisini aldı. Ve kullanıcıdan örnek olarak favori filminin adını söylemesini istedik. Şimdi sıra bunu karşılayacak olan intenti hazırlamakta. Bunun için sol barda yer alan menüden, intents’in yanındaki + ikonuna tıklamamız gerekmekte. Adını make_name olarak yapıp, save edebiliriz.

screen-shot-2017-02-18-at-15-37-54

Ekranın üstünde boş bıraktığımız bir User says alanı olduğunu görüyorsunuz. User says alanı ilgili intentin nasıl trigger edildiğini göstermektedir. Yani buraya yazılan söylemlerden biri eşleştiğinde ilgili intent çağrılıyor olacak. API.AI girdiğimiz söyleme yakın söylemleri de algılayabilecek şekilde genişletme yapacaktır. Algılamasını istediği temel söylemleri girmemiz yeterlidir.

Ben örnek olarak aşağıdaki söylemleri ekledim.

  • Lord of the rings
  • My favourite movie is Lord of the Rings.

Şimdi bizim intentimizin ne zaman çağrıldığını anlayabilmek için de bir action tanımlamalıyız.

Enter the action” yazan alana make_name diyebiliriz, intentle aynı isimde olacak şekilde. Sonrasında bu action’ın alacağı parametreleri tanımlayacağız. Bu parametreyle “User says” alanına yazdığımızı yani kullanıcının söyleyebileceği söylemlerden çıkaracağımız parametreler olmalı. Bizim örneğimizde kullanıcıdan tek bir parametre alıyoruz. Ancak daha önceki blog yazımda paylaştığım videodaki örnekte birden çok parametrenin kullanıcıdan alınması ihtiyacı bulunmakta. Bu durumda ise, aynı action’ın altında birden çok parametre tanımlıyor olacaktık.

Action için tanımladığımız parametrenin ise doldurulması gereken bazı alanları bulunmakta. Bunlar parameter value, entity, value gibi alanlar. Entity bizim datamızın ne tipte olacağı bilgisini vermektedir. System tanımlı bazı entity’ler bulunmaktadır. Bunlardan birini kullanma şansımız yoksa yandaki + butonuna tıklayarak yine önce gidip entity’yi tanımlayıp sonrasında bunu kullanabileceğimiz gibi aslında bize gelen herşey kullanıcıdaki söylemden geliyor. Bazı kısayollardan da faydalanabiliriz. Örneğin; aşağıdaki örnekte, lord of the rings’i işaretlediğimizde bize hangi entity tipini seçtirmeye çalışıyor. Eğer olmayan bir entity’yse yeni ekleme seçeneğiyle hızlıca ekleyebiliriz. Sonrasında eklediğimiz entity’yi seçebilir ve böylece actions altına istediğimiz parametrenin hızlıca tanımlanmasını sağlayabiliriz.

Action’ın birden çok entity’ye ihtiyacı olabileceğini söylemiştik. Tabi kullanıcının bunların hepsini tek bir seferde söyleme zorunluluğu bulunmamakta. Bu durumda action altında ilgili parametrenin en sonundaki prompts sütunu bize yardımcı olabilir. Buraya dolu gelmeyen parametreler için kullanıcıya sorulacak alternatif cevaplar ekleyebiliriz.

screen-shot-2017-02-18-at-16-38-45

Peki kullanıcı favori film bilgisini bizimle paylaştı, yada birden çok parametre vardı ve hepsini kullanıcıdan aldık. Sırada konuşması gereken ise biziz bunu da Response alanını doldurarak yapıyoruz. Response alanında düz bir metin verebileceğimiz gibi, kullanıcan aldığımız parametreleri kullanabileceğimiz bir alan da tanımlayabiliriz. Ben parametreyi kullanmayı tercih ettim. “Alright! Your favourite movie is $moviename ! Great.” olarak giriş yaptım. Şimdi artık web simülatör yardımıyla botumuzu test edebiliriz 🙂

Bunun için yine sol menüden Integrations’a tıklayıp, botumuzun hangi platformda çalışacağını seçiyoruz. Bizim case’imizde Google Home’da deneyeceğimiz için Google Home’u seçmek yeterli ancak, yazdığınız chatbotu farklı platformlarda da kullanmak istiyorsanız tabi farklı seçeneklerle de ilerleyebilirsiniz. Google Home’u aktif ettiğinizde aşağıdaki gibi bir ekranla karşılaşıyor olacaksınız.

screen-shot-2017-02-18-at-17-15-50

Burada test için invocation name’i “Test Bot Blogpost” girdim. Google Project ID’yi boş bıraktım. TTS olarak istediğinizi seçebilirsiniz. Ben Female1’i seçtim. Welcome Intent, Default Welcome Intent olmalı. Sign in required the boş kalabilir. Sonrasında Authorize ve ardından açılan sayfada da Preview’e tıklamamız gerekmekte. Artık web simülatör üzerinde test edebiliriz. 🙂

Heyecanlı ve eğlenceli kısım ise aşağıdaki gibi. Bundan sonrası sizin hayal gücünüze kalmış.

screen-shot-2017-02-18-at-17-36-43

Umarım eğlenceli ve öğretici bir yazı olmuştur. API.AI gibi piyasada çok sayıda bot geliştirme platformu bulunmakta. Tüm sistemi tabi ki kendimiz geliştirebileceğimiz gibi varolan framework’lerden destek alarak daha basitçe de botumu geliştirebiliriz. İyi hafta sonları 🙂

Referanslar:

Reklamlar