Varlık Kontrolü için bir sohbet robotu
Bu yazıda, Eğlenceli küçük bir proje olarak Asset Control için bir chatbot oluşturuyorum. Neden? Çünkü bir süredir bir chatbot uygulamak istiyordum - sadece bunu nasıl yapacağımı anlamak için - ve bunu AC alanında yapmak çok doğal görünüyor. Bunun zaten mevcut araçlarıma ve iş akışıma nasıl uyacağını görmek için onu Slack ile entegre edeceğim.
Ne yapmak için bir chatbot?
Şimdiye kadar birden fazla yerde sohbet robotlarına rastlamış olacaksınız. Şirket web sitelerinde olabilirler ve sık sorulan soruların yanıtlanmasına yardımcı olabilirler, rezervasyon yapmanıza vb.
Bu durumda, Varlık Kontrolü ile iletişim kurmama izin veren Slack ile entegre olmak için bir sohbet botunun bir prototipini uygulamak istiyorum. AC ortamımın durum bilgilerini sormak veya veri talep etmek isteyebilirim.
Uygulamaya rehberlik etmek için, botun cevaplayabilmesi gereken aşağıdaki soruları kullandım:
- XYZ için son fiyat nedir?
- XYZ için bu ayların en yüksek seviyesi neydi?
- Bugün kaç şüpheli var?
- Çoğaltma güncel mi?
Peki, botu sıfırdan mı uyguluyoruz? Tabii ki değil. Orada bir dizi çözüm var ve hızlı bir şekilde Google Dialogflow'a yerleştim. Bunun nasıl çalıştığını görelim.
Botu Dialogflow'da oluşturma
Botumuzu Google Dialogflow'da oluşturmak için birkaç kavramı anlamamız gerekir:
- Amaçlar
- Varlıklar
- Yerine getirme
Bir amaç, botun ele alması gereken belirli bir dar tanımlanmış konuya ait her şeyi bir araya getirir. Bizim durumumuzda bu, bir hisse senedinin mevcut son fiyatının sistemimizden alınmasıdır. Dialogflow'u, botu konuşmanın ne zaman böyle bir niyetle ilgili olduğunu anlamak üzere eğitmek için ona eğitim cümleleri vererek kullanacağız. Bunu bir dakika sonra göreceğiz.
O halde varlıklar, konuşmamızı oluşturan ve özellikle ilgi çekici olan yapı taşlarıdır, böylece onları parametre olarak yakalamak isteriz. Şimdi, bizim durumumuzda bu, "AAPL için son fiyat nedir?"
Son olarak, yerine getirme konsepti, sohbet botunun arkasındaki hizmetlere web kancaları aracılığıyla ulaşmamızı sağlar. Yani, verilen stoku sorgulamak ve mevcut son fiyatı almak için Varlık Kontrolü ile iletişim kuracaktık.
Şimdi botumuzu oluşturalım.
1. Adım: Botunuzu kurun.
Git https://dialogflow.cloud.google.com/#/login ve oturum açın. Ardından bir AcChatBot Aracı oluşturun:
Adım 2: Bir Stock varlığı oluşturun
Soldaki menüden Varlıklar'ın yanındaki Artı'yı tıklayın, Stok [A-Z][A-Z0-9]{1,6}
olarak adlandırın ve normal ifade olarak girin . Ticker sembolleri için tamamen bir eşleşme olmasa da, örneğimiz için yeterlidir ve Dialogflow'un kendisi tarafından gerçekleştirilen normal ifadeler üzerindeki kontrollerle çalışır (örn. Çok geniş değil vb.). O zaman kaydedin.
3. Adım: Son fiyat amacını oluşturun
Son fiyat niyetimizin zamanı geldi. Yine, soldaki menüden Amaçların yanındaki Artı'yı seçin, arayın Last price
ve EĞİTİM CÜMLECİKLERİ EKLE'ye tıklayın:
Girin What is the last price for AAPL?
. Ardından AAPL
farenizle vurgulayın . Bu bir pop-up açacaktır. Arayın Stock
, ardından sunulan seçeneği seçin:
Doğru yapılırsa, Dialogflow'un Stok varlığını doğru şekilde yakaladığından emin olmak için sonuç şöyle görünecektir:
ÖNEMLİ! Ardından aşağı kaydırın, Yerine Getirme bölümünü açın, Yerine Getirmeyi Etkinleştir'i tıklayın ve ardından şu şekilde geçiş yapın Enable webhook call for this intent
:
Bu, kendi arka uç işlevimizi çağırmamıza ve Varlık Kontrolü ile iletişim kurmamıza olanak tanır.
Devam etmeden önce amacı kaydettiğinizden emin olun.
4. Adım: Varlık Kontrol verilerini almak için bir REST hizmeti uygulayın
Yine, bunu yapmanın birçok yolu var. Spring Boot'u bizim için tüm ağır işleri yaptığı gibi kullanacağız ve Java'da kalıyoruz ve bu nedenle Adetta'nın kullandığı aynı Asset Control Java API'sini anında kullanabiliriz .
Henüz bilmiyorsanız Adetta, Varlık Kontrolü için test otomasyon yazılımımızdır. Burada Adetta'ya Giriş'e bir göz attığınızdan emin olun .
İlginç olan, aşağıda gösterildiği gibi bir sınıf AcBotController
ve handleIntent
yöntemidir:
Dialogflow yerine getirilmesi için webhook'un bir POST isteğini işlediğini görebilirsiniz. Hem girişi hem de çıkışı JSON'dur. Ve bizim için GoogleCloudDialogflowV2Webhook*
hem istek hem de yanıt JSON'unu işlemek için sınıfları kullanıyoruz .
Niyetin gerçek işlenmesi, çağrıdan aldığımız bir AcBotIntentHandler'a aktarılır AcBotIntents.getHandlerFor(request)
. Bu sınıfa bakalım:
Last price
İşleyicilerle amaçların bir eşlemesini oluşturuyoruz (amacımızı hatırlıyor musunuz?) Ve istek nesnesinde kodlanmış amaç verilmişse uygun bir işleyiciyi almak için bir yöntem uyguluyoruz. Ayrıca gerçek bir işleyici bulamamamız durumunda varsayılan bir işleyici tanımlarız:
Şimdi, belirli bir hisse senedi için son fiyatımızı öğrenmek için bakalım AcBotLastPriceIntentHandler
:
Stock varlık parametremizi kullanarak istek nesnesinden nasıl aldığımızı request.getQueryResult().getParameters().getOrDefault("Stock", "")
ve getLastPriceMessageForStock
burada gösterildiği gibi çağırdığımızı görüyorsunuz :
Stok için eksik bir değere karşı kendimizi koruyoruz. Aksi takdirde, verilen hisse senedi ile hisse senetleri için Varlık Kontrol sistemimize göz atarız. Böyle bir ADO'ya sahip olmamız durumunda, ilgili mesajı görüntüleriz. Aksi takdirde, bulduğumuz her ADO için fiyatlandırma verilerini almaya devam ederiz (bu yalnızca tek bir ADO olması gerekirken, uygulama gerekirse yalnızca birden fazla mesaj döndürür.)
İşte son fiyatı şu şekilde buluyoruz:
ADO'nun zaman serilerini yükleriz, son kaydı alırız ve - eğer varsa - olarak okunacak bir mesaj oluştururuz The last price for AAPL (C0.EQY.100101) is from 2020-06-12 at $338.00
. Ve yine fiyat bulamadığımız davalara karşı kendimizi koruyoruz.
Spring Boot'u kullanarak bunu başlatabilir ve REST hizmetimizin localhost: 8080 / ac-bot üzerinde çalışmasını sağlayabiliriz. Sırada ne var?
Açıkçası, bu hizmeti hiçbir yerde dağıtmadığımız için biraz hile yapıyoruz, bu yüzden dışarıdan kullanılabilir hale getirmek için, bizim için bir tünel kurmak için ngrok'u kullanacağız :
5. Adım: Kendi sipariş karşılama web kancamızı oluşturun
Daha sonra Dialogflow'a REST hizmetimizin nerede olduğunu bildirmemiz gerekiyor, bu yüzden oraya geri dönün ve soldaki menüden Yerine Getirme'yi tıklayın:
Ardından https://...
ngrok tarafından verilen adresi girin /ac-bot
ve sonuna eklediğinizden emin olun .
Tamam, gerçek anı. Sağ üst köşeye Try it now
yazabiliriz What is the last price for AAPL?
ve her şey yolunda giderse aşağıdaki cevabı almalıyız:
Bu heyecan verici!
Adım 6: Sohbet botumuzu Slack ile entegre edin
Şimdi, botumuzla oynamak için Dialogflow konsolunu kullanmaya devam etmeyeceğiz. Bunun yerine onu Slack ile entegre edeceğiz. Sol taraftaki menüden Entegrasyonlar'ı seçin, Slack'i bulun ve bir test botu başlatın:
Ardından Slack'e gidin ve botla sohbet etmeye başlayın:
Ardından makalenin başında ana hatlarıyla belirtilen diğer soruları / amaçları uygulamak için döngüyü tekrarlayabiliriz.
Kapanış sözleri
Bunun eğlenceli olduğunu düşündüm. Ve düşündüğümden daha kolay. Tabii ki, birkaç kısa yol aldım:
- Hizmeti yalnızca yerel olarak çalıştırmak.
- Güvenlik, erişim kontrolü ve Varlık Kontrol ortamı seçimi dikkate alınmaz.
- Botun çok sınırlı kullanımı.
Umarım bu makaleyi beğenmişsinizdir. Düşüncelerinizi paylaşmak, sorular sormak vb. İçin iletişime geçin. Size yardım etmek için buradayız.