İçeriğe geç

.Net Core ile Chatbot Hazırlama

Chatbot, popüleritesi artmakta olan bir teknoloji olarak karşımıza çıkıyor. Büyük çaplı teknoloji firmaları(Microsoft, Facebook, Amazon) bu konu üzerine çalışmalar yapmaktalar. Bu yazıda Microsoft firmasına ait olan .Net Core ile basit bir chatbot hazırlayıp chatbot dünyasına giriş yapacağız.

Öncelikle Chatbot Nedir?
Chatbot, son kullanıcı ile belirli yöntemler çerçevesinde etkileşime geçen bir servistir diyebiliriz. Bir nevi dijital asistan gibi düşünebiliriz. Chatbotlar, kullanıcı ile etkileşim kurabilmek için metin, resim ve aksiyon butonları içeren karmaşık kartları kullanabilirler. Örneğin size tuttuğunuz futbol takımını sorabilir ve bazı futbol takımlarını size seçenek olarak listeler. Chatbot’ları pek çok alanda kullanmak mümkün olabilir. Örneğin e-ticaret, kurye, bankacılık ve daha pek çok alan…

Ayrıca son kullanıcıların chatbotlarla daha doğal ve anlamlı bir şekilde etkileşime girmesine olanak sağlayan dil seçenekleri eklemek mümkün olabilmektedir.

Şimdi biraz kod…

Gereklilikler
Başta da belirttiğim üzere Net Core ile basit bir chatbot hazırlayacağız ve bunun için öncelikle bilgisayarınıza Visual Studio 2017 indirmelisiniz. Buna ilaveten yazacağımız chatbot’u test edebilmemiz için BotFramework Emulator indirin.

Başlayalım
Basit olması açısından şöyle bir senaryo düşünebiliriz. Euro para biriminin diğer para birimlerindeki karşılığını bize söyleyen bir chatbot hazırlayalım. Bunun için input olarak sadece istediğimiz para birimini girmemiz yeterli olacak. Örneğin TRY, USD, GBP, BTC…

Visual Studio içinden File > New > Project adımlarından sonra aşağıdaki gibi bir ekran bizi karşılamalı ve buradan Bot Framework seçeneğini seçmeliyiz.

Identity Server 1

Bu aşamadan sonra karşımıza Web API projesine benzer bir proje şablonu gelecek ki zaten chatbot dediğimiz de işin özünde bir servistir. Oluşan proje şablonu içinde yabancı olacağımız bazı kavramları tanımlamaya çalışayım.

Activity Nedir
Activity, son kullanıcı ile Chatbot arasındaki bağlantıyı sağlayan yapıdır. En çok kullanılan activity çeşidi yazışma(mesajlaşma) olarak karşımıza çıkar ama buna ilaveten başka çeşit Activity tipleri de bulunur. Bunlar aksiyon butonları, öneri mesajları ve resimlerdir.

Dialog Nedir
Bir chatbot hazırlayacağınız zaman chatbot ile etkileşimi yönetmek için dialoglardan faydalanırız. Tüm dialog nesneleri IDialog arayüzünü miras alır. Son kullanıcının gönderdiği bir mesajı elde edebildiğimiz yer dialog nesnesidir ve son kullanıcıdan elde edilen verilere göre alınacak aksiyonlar bu nesne yardımıyla sağlanır. Örneğin son kullanıcı bir pizza siparişi vermek istediğini belirttiğinde ne tip bir pizza istediğini ve içeriğinde hangi malzemelerin olacağını bilmek adına chatbot son kullanıcıyla etkileşime geçebilir.

Bu basit tanımlamalardan sonra kaldığımız yerden devam edelim. Basit anlamda kullanıcıdan bir para birimi bekleyen ve sonrasında Euro olarak karşılığını output olarak gösteren bir chatbot hazırlayacağız demiştik. Visual studio’nun bize sunduğu hazır proje şablonu içinde hali hazırda RootDialog isminde bir dialog bulunmakta. Bu dialog içinde kullanıcıdan elde ettiğimiz para birimini bir REST servisine göndererek Euro değeri elde ediyoruz ve son kullanıcıya bunu gösteriyoruz.

        private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
        {
            var activity = await result as Activity;
            string key = ""; //Servis için anahtar girmelisiniz.
            string serviceURL = "http://data.fixer.io/api/latest?access_key=" + key + "&symbols=" + activity.Text;
            string serviceResult;
            string currency;

            using (WebClient client = new WebClient())
            {
                serviceResult = await client.DownloadStringTaskAsync(serviceURL).ConfigureAwait(false);
                currency = serviceResult.Split('\n')[0].Split(',')[4].Split(':')[2].Split('}')[0];
            }

            await context.PostAsync($"1€ = {currency} {activity.Text}");
            context.Wait(MessageReceivedAsync);
        }

Identity Server 1

Görüldüğü üzere chatbot için bir para birimini input olarak gönderiyoruz ve sonrasında chatbot bunu bir servise gönderip bize değer döndürmekte.

Chatbot dünyasına giriş yapmak adına umarım yararlı bir yazı olmuştur. Herkese mutlu günler…

Tarih:ASP .NET Core

Tek Yorum

  1. burak toprak burak toprak

    Hocam kolay gelsin , acaba chatbot u database bağlantısı yapıp database ile nasıl haberleştirebiliriz

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.