Flutter’ da Dialogflow Kullanarak Chatbot Oluşturmak

Görkem Toprak
6 min readJul 3, 2022

--

Öncelikle herkese selamlar, ilk yazım olan bu yazıda sizlere Dialogflow ile nasıl chatbot oluşturulacağını ve Flutter entegrasyonunun nasıl yapılacağını anlatacağım. Şimdiden keyifli okumalar.

Chatbot Nedir?

Chatbot veya Türkçe anlamı ile sohbet robotları, insan konuşmasını taklit eden ve işleyen, kullanıcıların gerçek bir insanla konuşuyormuş gibi dijital aygıtlarla iletişim kurmasını sağlayan bir tür bilgisayar yazılımıdır. Sohbet robotları, tek satırlık bir yanıtla her zaman basit bir soruya yanıt verebilecek basit programlardan, veri toplarken ve analiz ederken öğrenen ve büyüyen dijital asistanlara kadar çeşitlilik gösterebilir. Sohbet robotları, önceden belirlenmiş belirli sözcüklere veya anlamı olmayan emirlere yanıt verme yeteneklerini sınırlayan bir dizi kısıtlamaya uyar. Sonuç olarak, botla etkileşimde bulunurken uygun terimi kullanmazsanız, sohbet botu şaşkına dönebilir ve “üzgünüm, anlamıyorum, lütfen tekrarlayın” yanıtlarıyla geri dönüş yapabilir. Yapay zeka ile güçlendirildikleri için sohbet robotlarıyla gerçek insanlarmış gibi sohbet edebilirsiniz.

Dialogflow Nedir?

Dialogflow, Google’ın sohbet botunuzun dili anlamasını sağlayan doğal dil anlama aracıdır. Dialogflow, verdiğiniz eğitim ifadelerine dayanarak kullanıcının amacını anlamaya çalışır. Bu eğitim ifadelerine dayanarak kullanıcılarınızdan gelen sorgulara otomatik olarak nasıl yanıt verileceğini bilir. İlk olarak bir API olarak piyasaya sürülülmüştür daha sonra aşağıdaki çeşitli özellikler eklenmiştir:

  • Doğal dil işleme (NLP) kullanarak verilen her konuşmadan kullanıcı niyetlerini çıkarma yeteneği.
  • Makine öğrenimi, botunuzu giderek daha yararlı yanıtlar sağlamak için eğitmek için kullanılır.
  • Çeşitli sohbet uygulamaları ve mesajlaşma sistemleri ile entegrasyonu.
Dialogflow Yapısı

Dialogflow’ daki Önemli Terimler

1-) Intents (Niyetler): Bir iletişim sırasında, kullanıcılardan gelebilecek niyetlerin belirlenmesi, uygun cevapların hazırlanması ve eğitiminin yapılmasını sağlar. Ayrıca her aracıya çeşitli amaçlar atanabilmektedir.

2-) Entities (Varlıklar): Her intent parametresi, verilerin kullanıcı ifadesinden nasıl çıkarılması gerektiğini belirten bir varlık türüne sahiptir. Yani, Dialogflow’ un bir görevi anlamlandırabilmesi için kullanıcıdan aldığımız kelimelerin belli değerler altında toplanmasını sağlar. Örneğin, kullanıcının hangi kategoride yemek yemek istediği.

Entity (Varlık), kısaca uygulamanızın veya cihazınızın harekete geçtiği nesnelerdir.

3-) Fulfilment (Yerine getirme): Webhook ve inline editor aracılığı ile diyalog sisteminin dışarıdan beslenmesine ve geliştirilmesine olanak sağlayan modüldür.

4-) Training (Eğitim): Genellikle eğitim cümleleri olarak bilinen kullanıcı ifadeleri, kullanıcıların yazabileceği veya söyleyebileceği varsayımsal ifadeleri bir denetçi tarafından kontrol edilmesini ve NLP motorunun yaptığı hataların düzeltilmesini ve akabinde makine öğrenmesini tetiklenmesini sağlar. Örneğin, yemek yiyeceğimiz bir restoran bulmak istiyorsak, “Bana yakındaki restoranları listele veya lütfen yiyebileceğim bir yer önerin” diyebiliriz. Bunlar eğitim ifadeleri olarak bilinir ve kullanıcının isteklerine uyacak şekilde eğitilip kullanılır.

5-) Integration(Entegrasyon): Dialogflow üzerinde hazırlanmış olan diyalog sisteminin çeşitli ortak platformlara entegre edilmesini sağlar.

6-) Response (Yanıt): Bütün işlemlerden sonra kullanıcıya bir cevap vermemiz gerekmektedir. Bunu Intent içindeki Response kısmını kullanarak yapıyoruz. Dialogflow’ da birden çok yanıt yapılandırabiliriz. Ayrıca platforma özel yanıtları da yapılandırabiliriz.

Peki hazırsak yavaştan başlayalım…

  • İlk olarak Dialogflow hesabı oluşturmak için https://cloud.google.com/dialogflow/docs/ uzantısına tıklıyoruz. Açılan bu sayfada Dialogflow ES (Essential) olana tıklıyoruz ve Dialogflow ES Konsoluna Git butonuna tıklayarak Dialogflow’ a erişiyoruz. Açılan Dialogflow penceresinden ise Create Agent butonuna tıklayarak botumuzu yavaştan ayağa kaldırıyoruz.
  • Karşımıza çıkan bu sayfada botumuzu oluşturacağız. İlk olarak bir isim vermemiz gerek, istersek dil ve saat ayarlamalarını yapabilir ve varsa projelerimizi entegre edebiliriz. Ben var olan projelerimden birini entegre edeceğim. Gerekli yerleri doldurduktan sonra, sağ üst köşede bulunan CREATE butonuna tıklayarak botumuzu oluşturuyoruz.

Botu oluşturduktan sonra Dialogflow sizin için varsayılan Intents (Niyetler) oluşturacaktır. Peki Default Intents nedir?

1-) Default Welcome Intent (Varsayılan Karşılama Amacı): Bu amaç kullanıcıları selamlamaya yardımcı olur.

2-) Default Fallback Intent (Varsayılan Geri Dönüş Amacı): Bu amaç, kullanıcının yazdığı ve botunuzun anlamadığı herhangi bir kelimeyi girdiğinde tetiklenir.

Şimdi ilk olarak Default Welcome Intent kısmını açalım. Karşımıza çıkan bu sayfada Dialogflow tarafından verilen hazır eğitim cümleleri ve botumuzun vereceği yanıtlar bulunmaktadır. Eğer sizde isterseniz ‘Add user expression’ kutucuğunun içine bazı cümleler ekleyip eğitebilirsiniz. Ve aynı şekilde eğitmiş olduğunuz bu cümlelere farklı yanıtlar vermek isterseniz, ‘Enter a text response variant’ kısmına yeni cümlelerinizi ekleyebilirsiniz.

Peki farklı Niyetler (Intents) oluşturmak istersek ne yapmamız gerekmektedir?

Sol menüdeki Intents kısmının sağındaki + simgesine tıklayarak veya Intents ekranında üstte bulunan Create Intent butonuna tıklayarak yeni Intentlerimizi oluşturabiliriz.

Botumuzun eğitimini tamamladıktan sonra uygulamalarımıza entegre etmeye hazırız demektir. Flutter entegrasyonuna geçmeden önce, Google Cloud Console’ dan bir JSON dosyası indirmemiz gerekmektedir. Bunu yapmak için aşağıdaki adımları sırasıyla izlemeliyiz:

  • Google Cloud Console’ u açalım ve projemizi seçelim.
  • Yan menüden API’s & Services’ e tıklayalım.
  • Açılan bu pencerede sol tarafda bulunan Credentials kısmını seçip CREATE CREDENTIALS’ a tıklayıp Service account’ u seçmemiz gerekmektedir.
  • Karşımıza çıkan bu sayfada ilk adım olarak oluşturacağımız servis hesabımızın detaylarını doldurmamız gerekmektedir. İkinci adımda ise, servis hesabımızın rolünü belirlemeliyiz. Burada ki önemli bir nokta rolümüzü Dialogflow API Admin olarak seçmeliyiz. Bu adımları tamamladıktan sonra, üçüncü adıma gerek kalmadan altta bulunan Done butonuna tıklayıp hesabımızı aktif hale getirebiliriz.
  • Daha sonra karşımıza çıkan konsoldan, oluşturduğumuz servis hesabının üzerine tıklıyoruz. Açılan bu pencerede KEYS kısmına tıklayıp ADD KEY üzerinden Create new key’ e tıklayarak yeni bir anahtar oluşturuyoruz.
  • Açılan pop-up penceresinden JSON olanı seçip CREATE’ e tıklıyoruz. İşte bu kadar, sonraki adımlarda ihtiyacımız olacak JSON dosyamızı indirmiş bulunmaktayız.

Dialogflow’u Flutter Uygulamalarımıza Entegre Etmek

Artık botumuzu hazırlayıp eğittiğimize göre, onu Flutter uygulamamıza entegre etmeye hazırız.

  • İlk olarak aşağıdaki paketi pubspec.yaml dosyamızdaki dependencies kısmına ekleyelim.
dependencies: 

dialog_flowtter: ^0.3.3
  • Daha sonra projelerimizde assets adında bir klasör oluşturalım ve indirmiş olduğumuz JSON dosyamızı bu klasörün içine taşıyalım.
  • pubspec.yaml dosyasını açalım ve aşağıdaki gibi JSON dosyamızı assets kısmına ekleyelim.

Not: Burada ki önemli nokta, indirmiş olduğumuz JSON dosyamızın adı ve pubspec.yaml’ a eklemeye çalıştığımız dosyanın adı aynı olmalıdır ayrıca dosyamızın adıda dialog_flow_auth.json şeklinde olmalıdır.

flutter:
uses-material-design: true
assets:
- assets/dialog_flow_auth.json

JSON dosyamızı pubspec.yaml’ a ekledikten sonra aşağıda bulunan kodu main.dart dosyamıza ekleyelim.

Chatbotumuzun Örnek Bir Ekran Görüntüsü

İşte bu kadar! Chatbotumuzu oluşturmuş ve kullanmaya hazır hale getirmiş bulunmaktayız.

Chatbot' un kaynak kodu aşağıdaki linkte bulunmaktadır. Repoyu indirdikten sonra kendi JSON dosyanızı projeye eklemeyi unutmayın. Umarım sizler için faydalı bir içerik olmuştur, eğer bu yazıyı yararlı bulduysanız lütfen paylaşmayı unutmayın.

--

--