July 24, 2016 · chatbot Lambda serverless

Lambda ile Slack Command/ChatBot'u Nasıl Yazarız ?

Botlar giderek micro apps olarak mobil uygulamaların yerine almaya başladılar.

Bot

Mobil uygulamaların fazlalığı, insanların sadece belli uygulamalarda zaman geçirmesi, geliştiricileri başka bir ekosisteme doğru itiyor.

Aşağıdaki resimde Mesajlaşma Uygulamaların aktiflik durumunun Sosyal Medya uygulamalarıni geçtiğini görebilirsiniz.

MessagingAppsAndBots

Burada basit bir Slack Bot'unun APIGateway ve Lambda kullanılarak nasıl yapıldığını anlatacağım.

Basit bir taxi komutu oluşturacağım. Bunu soru cevap şekline getireceğim. Bunu isterseniz arkaplanda bir taksi çağırma botuna dönüştürebilirsiniz.

Slack Ayarları

Kendinize ait olan team.slack.com/apps/manage/custom-integrations adresine girin. Buradan karşınıza gelen ekrandan Slash Commands linkine tıklayın

Slack CustomIntegrations

Slash Commands ekranından Add Configuration basın

Slash Commands

Ve /taxi chatbot komutlarını girin.

Slash Commands2

Not: URL kısmını şimdilik uyduruk bir şeyler girin.

Slack ekranına gidip /taxi komutunu denediğimizde bize bu mesaja izin vermediğini dair karşıdaki URL yazdığımız sunucudan cevap döndü.

Slash Screen

Amazon Lambda Ayarları

AWS Konsolundan Lambda sekmesine geçin ve Blueprint'ler arasından Slack olanları filtreleyin.

Lambda Slack

Bu ekranda APIGateway mevcut ise doldurun. Ben burda Remove düğmesine basarak bu bölümü atlıyorum.

Lambda Slack2

Zaten bu kısımda Blueprint kodu otomatik olarak geliyor. APIGateway Lamda fonksiyonunu çalıştıracak rolüde tanımlayın

Lambda Slack3

Taxibot Lamda fonksiyonunu oluşturun.

Lambda Slack4

Amazon APIGateway Ayarları

AWS APIGateway konsolundan TaxiAPI'sini tanımlıyoruz.

APIGateway Slack1

APIGateway'in altında POST metodu oluşturup TaxiBot Lambda'sı ile bağlıyoruz.

APIGateway Slack2

Oluşturduğumuz API'yi prod olarak deploy ediyoruz.

APIGateway Slack2

Not: URL kısmını artık bu oluşturduğumuz API'yi verebiliriz. Slack Settings ekranına dönerek bu API'nin URL adresini Slack yazıyoruz.

APIGateway İnce Ayarlar

Slack ekranına gidip tekrar bir deneme yaptığımızda bu sefer json parse hatası alırız. Çünkü APIGateway'ın bağlantılı olduğu Lambda Json Request beklemektedir fakat Slack'den çağrılan komut aşağıdaki şekildedir.

YourServerURL?token=gIkuvaNzQIHg97ATvDxqgjtO&command=/taxi&text=abc

Slack Call

APIGateway'de Integration Request Mapping yapmamız gerekiyor

Slack Call2

BodyMapping Template aşağıdaki resimdeki ContentType ve içeriğini ekleyerek dönüşümü gerçekleştiririz.

Slack Call3

Lambda TaxiBot Kodlama

Tekrar /taxi ankara dediğimizde bu sefer Token hatası alırız

Slack Call3

Bu hatayı gidermek için SlackSetting'de tanımlanan Token'ı Lambda fonkiyonun içerisinde tanımlıyoruz ve basit soru cevaplarımızıda kodluyoruz.

En sonunda başarılı sonucu elde ettik. Bundan sonra bu ChatBot'un arkasına başka kurallar veya yapay zeka ekleyebilirsiniz.

Lambda Code

Lambda Code

  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket
Comments powered by Disqus