एसेट कंट्रोल के लिए एक चैटबॉट
इस लेख में, मैं एक मजेदार छोटी परियोजना के रूप में एसेट कंट्रोल के लिए एक चैटबॉट डाल रहा हूं। क्यों? क्योंकि मैं थोड़ी देर के लिए एक चैटबोट को लागू करना चाहता था - अगर केवल यह समझने के लिए कि ऐसा कैसे करना है - और ऐसा करने से एसी डोमेन में यह स्वाभाविक है। मैं इसे स्लैक के साथ भी एकीकृत करूंगा, यह देखने के लिए कि यह मेरे पहले से मौजूद टूल और वर्कफ़्लो के साथ कैसे फिट हो सकता है।
एक चैटबॉट क्या करना है?
आप अब तक कई स्थानों पर चैटबॉट में आ चुके होंगे। वे कंपनी की वेबसाइटों पर हो सकते हैं और आम तौर पर पूछे जाने वाले सवालों के जवाब पाने में आपकी मदद कर सकते हैं, जिससे आप बुकिंग आदि कर सकते हैं।
इस मामले में, मैं स्लैक के साथ एकीकृत करने के लिए एक चैटबोट के प्रोटोटाइप को लागू करना चाहता हूं जो मुझे एसेट कंट्रोल के साथ संवाद करने की अनुमति देता है। मैं इसे अपने एसी env की स्थिति की जानकारी के लिए पूछना चाहता हूं या डेटा का अनुरोध कर सकता हूं।
कार्यान्वयन को निर्देशित करने के लिए, मैंने निम्नलिखित प्रश्नों का उपयोग किया, जो कि बॉट जवाब देने में सक्षम होना चाहिए:
- XYZ के लिए अंतिम मूल्य क्या है?
- XYZ के लिए यह महीना कितना ऊँचा था?
- आज कितने संदिग्ध हैं?
- क्या प्रतिकृति आज तक है?
तो, क्या हम बॉट को खरोंच से लागू कर रहे हैं? बिलकूल नही। वहाँ समाधान के एक नंबर रहे हैं और मैं जल्दी से Google Dialogflow के लिए बसे। आइए देखें कि यह कैसे काम करता है।
डायलॉगफ्लो में बॉट का निर्माण
में हमारे बॉट का निर्माण करने के लिए https://dialogflow.com/ हमें कुछ अवधारणाओं को समझने की आवश्यकता है:
- इंटेंट
- संस्थाओं
- पूर्ति
एक आशय सब कुछ बंडल करता है जो एक निश्चित रूप से परिभाषित विषय से संबंधित है जिसे बॉट को संभालना चाहिए। हमारे मामले में कि हमारे सिस्टम से एक स्टॉक के अंतिम उपलब्ध मूल्य की पुनर्प्राप्ति है। हम बॉट को प्रशिक्षित करने के लिए डायलॉगफ़्लो का उपयोग करेंगे यह समझने के लिए कि जब बातचीत उसे प्रशिक्षण वाक्यांश देकर ऐसी मंशा के बारे में है। हम एक मिनट में देखेंगे।
तब इकाइयाँ ब्लॉक बना रही हैं जो हमारी बातचीत को बनाते हैं और विशेष रुचि रखते हैं ताकि हम उन्हें मापदंडों के रूप में पकड़ना चाहते हैं। अब, हमारे मामले में कि टिकर प्रतीक AAPL होगा जब हम सवाल पूछेंगे "AAPL के लिए अंतिम मूल्य क्या है?"
अंत में, पूर्णता की अवधारणा हमें वेबहॉट्स के माध्यम से चैटबॉट के पीछे सेवाओं तक पहुंचने की अनुमति देती है। यह हम दिए गए स्टॉक के लिए क्वेरी करने के लिए एसेट कंट्रोल के साथ संवाद करेंगे और पिछले उपलब्ध मूल्य को पुनः प्राप्त करेंगे।
अब हम अपने बॉट का निर्माण करें।
चरण 1: अपना बॉट सेट करें।
की ओर जाना https://dialogflow.cloud.google.com/#/login और साइन इन करें। फिर एक एजेंट बनाएं AcChatBot:
चरण 2: एक स्टॉक इकाई बनाएं
बाईं ओर स्थित मेनू से, Entities के बगल में प्लस पर क्लिक करें, इसे स्टॉक कहें और [A-Z][A-Z0-9]{1,6}
एक नियमित अभिव्यक्ति के रूप में दर्ज करें । जबकि पूरी तरह से टिकर प्रतीकों के लिए एक मेल नहीं है यह हमारे उदाहरण के लिए पर्याप्त है और डायलॉगफ्लो द्वारा किए गए नियमित अभिव्यक्तियों पर जांच के साथ काम करता है (उदाहरण के लिए बहुत व्यापक नहीं)। फिर इसे सेव करें।
चरण 3: अंतिम मूल्य आशय बनाएँ
हमारे अंतिम मूल्य इरादे के लिए समय। फिर, बाईं ओर के मेनू में Last price
Intents के आगे प्लस का चयन करें, इसे कॉल करें और ADD TRAINING PHRASES पर क्लिक करें:
दर्ज करें What is the last price for AAPL?
। फिर AAPL
अपने माउस से हाइलाइट करें। यह एक पॉप-अप लाएगा। इसके लिए खोजें Stock
, फिर प्रस्तुत विकल्प चुनें:
यदि सही किया जाता है, तो परिणाम यह सुनिश्चित करने के लिए दिखेगा कि डायलॉगफ़्लो स्टॉक इकाई को सही ढंग से कैप्चर करता है:
महत्वपूर्ण! फिर नीचे स्क्रॉल करें, पूर्ति अनुभाग खोलें, क्लिक करें पूर्ति सक्षम करें और फिर Enable webhook call for this intent
ऐसा करने के लिए टॉगल करें:
यह हमें अपने स्वयं के बैकएंड फ़ंक्शन को कॉल करने और एसेट कंट्रोल के साथ संवाद करने की अनुमति देता है।
आगे बढ़ने से पहले इरादे को बचाना सुनिश्चित करें।
चरण 4: एसेट कंट्रोल डेटा को पुनः प्राप्त करने के लिए एक पुनर्स्थापना सेवा को लागू करें
फिर, ऐसा करने के कई तरीके हैं। हम स्प्रिंग बूट का उपयोग करेंगे क्योंकि यह हमारे लिए सभी भारी लिफ्टिंग करता है और हम जावा में रहते हैं और इसलिए समान एसेट कंट्रोल एपीआई का तत्काल उपयोग कर सकते हैं।https://terrafino-solutions.com/adetta/ का उपयोग करता है।
यदि आप इसे अभी तक नहीं जानते हैं, तो एसेटा एसेट कंट्रोल के लिए हमारा टेस्ट ऑटोमेशन सॉफ्टवेयर है। पर एक नज़र रखना सुनिश्चित करेंhttps://terrafino-solutions.com/blog/adetta/adetta-introduction/।
दिलचस्प बिट एक वर्ग AcBotController
और इसकी handleIntent
विधि है जैसा कि नीचे दिखाया गया है:
आप देख सकते हैं कि Dialogflow पूर्ति के लिए webhook एक POST अनुरोध को संभाल रहा है। इसके इनपुट और आउटपुट दोनों JSON हैं। और हम GoogleCloudDialogflowV2Webhook*
हमारे लिए JSON के अनुरोध और प्रतिक्रिया दोनों को संभालने के लिए कक्षाओं का उपयोग करते हैं।
आशय की वास्तविक हैंडलिंग हमें कॉल करने से प्राप्त AcBotIntentHandler पर होती है AcBotIntents.getHandlerFor(request)
। आइए इस वर्ग को देखें:
हम हैंडलर के इरादों की एक मैपिंग का निर्माण करते हैं (हमारे Last price
इरादे को याद करते हैं ?) और एक उपयुक्त हैंडलर को पुनः प्राप्त करने के लिए एक विधि को लागू करते हैं, जो कि अनुरोध ऑब्जेक्ट में एन्कोड किए गए इरादे को देखते हैं। हम उस डिफ़ॉल्ट हैंडलर को भी परिभाषित करते हैं, जब हम एक वास्तविक हैंडलर नहीं ढूंढ सकते हैं:
अब, किसी दिए गए स्टॉक के लिए हमारी अंतिम कीमत पाने के लिए AcBotLastPriceIntentHandler
:
आप देखते हैं कि हम कैसे उपयोग की गई वस्तु से हमारे स्टॉक एंटिटी पैरामीटर को पुनः प्राप्त करते हैं request.getQueryResult().getParameters().getOrDefault("Stock", "")
और फिर getLastPriceMessageForStock
यहाँ दिखाए अनुसार कॉल करते हैं:
हम स्टॉक के लिए एक लापता मूल्य से खुद को बचाते हैं। अन्यथा हम दिए गए टिकर के साथ इक्विटी के लिए हमारे एसेट कंट्रोल सिस्टम को ब्राउज़ करते हैं। यदि हमारे पास ऐसा कोई ADO नहीं है, तो हम संबंधित संदेश प्रदर्शित करते हैं। अन्यथा हम प्रत्येक एडीओ के लिए मूल्य निर्धारण डेटा प्राप्त करना जारी रखते हैं (जबकि यह केवल एक एडीओ होना चाहिए, कार्यान्वयन केवल जरूरत पड़ने पर कई संदेश लौटाएगा।)
यहां बताया गया है कि हम अंतिम कीमत कैसे पाते हैं:
हम एडीओ के समयों को लोड करते हैं, अंतिम रिकॉर्ड प्राप्त करते हैं और - यदि मौजूद है - एक संदेश बनाएं जो के रूप में पढ़ा जाएगा The last price for AAPL (C0.EQY.100101) is from 2020-06-12 at $338.00
। और फिर से हम खुद को उन मामलों से बचाते हैं, जहाँ हमें कोई कीमत नहीं मिलती।
स्प्रिंग बूट का उपयोग करके हम इसे आग लगा सकते हैं और हमारी REST सेवा लोकलहोस्ट: 8080 / ac-bot पर चल रही है। आगे क्या?
ठीक है, हम स्पष्ट रूप से थोड़ा धोखा दे रहे हैं क्योंकि हम इस सेवा को कहीं भी तैनात नहीं कर रहे हैं, इसलिए इसे बाहर से उपलब्ध कराने के लिए, हम इसका उपयोग करेंगे https://ngrok.com/ हमारे लिए एक सुरंग स्थापित करना:
चरण 5: हमारी अपनी पूर्ति वेबहूक सेट करें
आगे हमें डायलॉगफ़्लो को यह बताना होगा कि हमारी REST सेवा कहाँ है, इसलिए वहाँ वापस जाएँ और बाईं ओर के मेनू से पूर्ति पर क्लिक करें:
फिर https://...
ngrok द्वारा दिए गए पते को दर्ज करें और सुनिश्चित करें कि आप /ac-bot
अंत में जोड़ते हैं ।
ठीक है, सच्चाई का क्षण। शीर्ष दाएं कोने में जहां यह कहता है Try it now
, हम टाइप कर सकते हैं What is the last price for AAPL?
और यदि सब कुछ ठीक काम कर रहा है तो हमें निम्नलिखित उत्तर प्राप्त करना चाहिए:
यह रोमाँचक है!
चरण 6: हमारे चैटबोट को स्लैक के साथ एकीकृत करें
अब, हम अपने बॉट के साथ खेलने के लिए डायलॉगफ़्लो कंसोल का उपयोग जारी रखने वाले नहीं हैं। इसके बजाय हम इसे स्लैक के साथ एकीकृत करेंगे। इसलिए, बाईं ओर स्थित मेनू से एकीकरण चुनें, स्लैक ढूंढें और एक परीक्षण बॉट शुरू करें:
फिर स्लैक पर जाएं और बॉट से बातचीत शुरू करें:
फिर हम लेख की शुरुआत में उल्लिखित अन्य प्रश्नों / इरादों को लागू करने के लिए चक्र को दोहरा सकते हैं।
समापन शब्द
मुझे लगा कि करने में मजा आया। और जितना मैंने सोचा था, उससे भी आसान है। बेशक, मैंने कई छोटे कट लिए:
- केवल स्थानीय रूप से सेवा चला रहा है।
- सुरक्षा, अभिगम नियंत्रण और एसेट कंट्रोल पर्यावरण की पसंद के लिए कोई विचार नहीं।
- बॉट का बहुत सीमित उपयोग।
मुझे उम्मीद है कि आपको यह लेख पसंद आया होगा। अपने विचारों को साझा करने के लिए संपर्क करें, प्रश्न पूछें आदि हम यहाँ हैं मदद करने के लिए।