स्लैक व्यवसायों और टीमों के लिए एक तेजी से लोकप्रिय उपकरण है जिन्हें तुरंत संवाद करने की आवश्यकता है। हालांकि, कुछ मामलों में - दैनिक व्यवधान माना जाता है, इसमें एक महान स्वचालन क्षमता भी होती है, जो सबकुछ एक ही स्थान पर रखने के लिए दर्जनों एकीकरण की पेशकश करती है, और यह धीरे-धीरे ईमेल को पीछे छोड़ रही है।
अपने सिस्टम को ढीले के साथ एकीकृत करने के कई तरीके हैं; मंच भी एक ब्रांडेड बॉट प्रदान करता है जो आपको अनुस्मारक, या आपके डिजिटल वर्कस्पेस में संदेश देने देता है। और और भी सहयोगी संवर्द्धन के लिए, इन्हें आज़माएं घन संग्रहण विकल्प।
स्लैक विभिन्न इकाइयों को प्रदान करता है जिन्हें 'बॉट' माना जा सकता है:
इस ट्यूटोरियल में हम विशेष रूप से 'बॉट उपयोगकर्ताओं' पर देख रहे होंगे, उन्हें कैसे प्रोग्राम करें (हमारी मार्गदर्शिका देखें सर्वश्रेष्ठ कोड संपादक अपने जीवन को आसान बनाने के लिए) और उन्हें अपनी जरूरतों के अनुरूप बनाएं। यह presupposes आपके पास एक ढीला स्थान तक पहुंच है जहां आप ऐप एकीकरण जोड़ सकते हैं। यदि आप पहले से ही एक का हिस्सा नहीं हैं, तो वे बनाने के लिए स्वतंत्र हैं।
निम्नानुसार, हम एक नोडेज ऐप का निर्माण करने के लिए एक नोडेज ऐप बनाते हैं और एक सुस्त चैनल में विशेष संदेशों का जवाब देते हैं। हम 'स्लैकबॉट्स' मॉड्यूल का उपयोग करते हैं, जो स्लैक रीयल-टाइम मैसेजिंग एपीआई के लिए एक रैपर है।
वेबसाइट बनाने में भी रुचि रखते हैं? एक शानदार चुनें वेबसाइट निर्माता और शीर्ष वेब होस्टिंग इसके साथ जाने के लिए सेवा।
यह ट्यूटोरियल मानता है कि आपके पास नोड स्थापित है। यदि नहीं, तो ऐसा करें। फिर संपत्ति डाउनलोड करें आपको ज़रूरत होगी। हमने आपको ट्यूटोरियल के लिए एक प्रारंभिक बिंदु और ढांचा प्रदान किया है।
पूरे दौरान, हम 'slackbots' और 'नोड-स्लैक-अपलोड' जैसे मॉड्यूल का उपयोग करते हैं। उन्हें इंस्टॉल कमांड चलाकर प्राप्त किया जा सकता है।
npm install
हम ढीले के लिए "बॉट उपयोगकर्ता" एकीकरण का उपयोग कर रहे हैं। ऐसा करने के लिए, हमें 'https: // & lt; yslackworkspace & gt; .slack.com / apps / a0f7ys25r-bots' पर जाकर एक टोकन प्राप्त करने की आवश्यकता है और "कॉन्फ़िगरेशन जोड़ें" पर क्लिक करें।
अपने बॉट के लिए उपयोगकर्ता नाम चुनें (हम बाद के चरण में इस प्रोग्रामेटिक रूप से ओवरराइड कर सकते हैं), और पुष्टि करें।
बॉट को वांछित चैनल में आमंत्रित करें।
एक बॉट उपयोगकर्ता बनाकर आपको निम्नलिखित प्रारूप में एक टोकन मिलेगा:
xoxb-00000000000000-x0x0xxxx0xxxx0x
अगले चरण के लिए टोकन की प्रतिलिपि बनाएँ।
हम हार्ड-कोडिंग से बचने और गुप्त टोकन और चाबियों को प्रकट करने के लिए पर्यावरण चर (एएनवी 'फ़ाइल) का उपयोग करते हैं, जैसे कि हमने जेनरेट किए गए स्लैक टोकन की तरह, और आपके निजी स्लैक वर्कस्पेस में चैनल का नाम।
आगे बढ़ें और अपने टोकन के साथ '.env' फ़ाइल भरें, और उस चैनल का नाम जिसे आपने बॉट उपयोगकर्ता को आमंत्रित किया है।
slack_token = xoxb- & lt; आपकी ओर से & gt;
Slack_channel = & lt; चैनल-नाम & gt;
यह अगला कदम हमें 2 फाइलों में ले जाता है: 'index.js', जिसे हमारे पास एक संक्षिप्त रूप होगा, और 'बिन / lib / bot.js', जहां हमारे अधिकांश विकास होते हैं। इंडेक्स फ़ाइल में, हम इसे एक नाम देकर हमारे बॉट को तत्काल करते हैं, जो 'डब्लूडीएमबीओटी' है।
'Bot.js' में हम नाम, टोकन इत्यादि के साथ प्रत्येक उदाहरण के पैरामीटर को नियंत्रित करते हैं।
// index.js
कॉन्स बॉट = आवश्यकता ('/ बिन / lib / bot ')। init
('Wdmbot');
//bot.js
const botparams = {
icon_emoji: ': robot_face:',
as_user: गलत
};
बीओटी;
समारोह initbot (botname) {
बॉट = न्यू स्लैकबॉट ({
टोकन: process.env.slack_token,
नाम: बोटनाम
});
}
'SendMessage' फ़ंक्शन पर एक नज़र डालें। हम 'posto' विधि का उपयोग करते हैं। यह किसी भी प्रकार के चैनल, सार्वजनिक या निजी पर पोस्टिंग को संभालेगा। यदि आप केवल निजी चैनलों को पोस्ट करना चाहते हैं तो आप इसके बजाय 'पोस्टटोग्रुप' का उपयोग कर सकते हैं (या किसी सार्वजनिक के लिए 'posttochannel')। हमारा पहला संदेश भेजने के लिए, हम 'initbot' में कोड जोड़ सकते हैं।
समारोह initbot (botname) {
bot = / * ऊपर देखें * /
SendMessage ('मैं यहाँ हूँ!');
}
// अब रन 'एनपीएम स्टार्ट'
आपको अपने चैनल में WDMBot से एक संदेश दिखाना चाहिए था। यह ध्यान देने योग्य है कि 'botparams' में, 'as_user' गलत पर सेट है, जो हमें नाम और छवि को ओवरराइड करने देता है। यदि सत्य पर सेट किया गया है, तो यह टोकन प्राप्त करते समय सेट नाम और छवि का उपयोग करेगा।
आप बॉट इमोजी को एक छवि में बदल सकते हैं जैसे:
कॉन्स बोटपाराम = {
icon_url: 'https://pbs.twimg.com/
profile_images / 976112552081010688 /
Wllqvj8d_400x400.jpg ',
as_user: गलत
};
संदेश पोस्ट करना उपयोगी है, लेकिन बॉट को अधिक इंटरैक्टिव बनाने के लिए, हमें चैनल में अन्य उपयोगकर्ताओं के पदों की पहचान करने में सक्षम होना चाहिए। आइए संदेश ईवेंट सुनें, और फिर देखें कि जब हम चैनल में टाइप करते हैं तो क्या होता है। हमें अलग-अलग संदेश प्रकार लॉग किए जा रहे हैं, जैसे 'USER_TYPING' या 'संदेश'।
समारोह initbot (botname) {
bot = / * ऊपर देखें * /
bot.on ('संदेश', डेटा = & gt; {
Console.log (डेटा);
});
}
इसके बाद, हम बिल्कुल सब कुछ जवाब देने से बचने के लिए 'संदेश' के आने वाले संदेशों और शायद एक विशिष्ट वाक्यांश या कीवर्ड के लिए उत्तर देना चाहते हैं। यदि हम एक सटीक वाक्यांश से मेल खाना चाहते हैं तो हम लोअरकेस स्ट्रिंग की तुलना करना सुनिश्चित करते हैं। हम यह भी देख सकते हैं कि एक संदेश '()' एक विशेष शब्द शामिल है या नहीं।
Bot.on ('संदेश', डेटा = & gt; {
यदि (data.type === 'संदेश') {
if (data.text.tolowerceast () === 'कहां
क्या आप?') {
SendMessage ('मैं यहाँ हूँ!');
}
}
});
बीओटी उपयोगकर्ताओं द्वारा भेजे गए संदेशों में 'bot_message' और bot_id के उप प्रकार जैसे विभिन्न गुण होते हैं। यदि आप अपने प्रतिक्रिया में से एक कीवर्ड में से एक कीवर्ड में से एक हैं, तो आप केवल मानव-पोस्ट किए गए संदेशों को केवल मानव-पोस्ट किए गए संदेशों को जवाब देने के लिए केवल मानव-पोस्ट किए गए संदेशों को उत्तर देने के लिए प्रतिबंधित करना चाहते हैं।
Bot.on ('संदेश', डेटा = & gt; {
यदि (data.type === 'संदेश' & amp; & amp; डेटा।
उप प्रकार! == 'bot_message') {
यदि (data.text.tolowercelecte ()।
शामिल हैं ('हैलो')) {
SendMessage ('हैलो, मैं एक बॉट हूँ!');
}
}
});
अधिक व्यक्तिगत प्रतिक्रिया देने के लिए, आप उस संदेश की उपयोगकर्ता आईडी का लाभ उठा सकते हैं जिसका आप उत्तर दे रहे हैं। टैग '& lt; @ & gt;' में संलग्न होने पर स्लैक स्वचालित रूप से उपयोगकर्ता नाम को उपयोगकर्ता नाम में परिवर्तित कर देगा। यह पहचानना कि आप किस प्रकार का जवाब दे रहे हैं, खासकर यदि एकाधिक चैनल सदस्य एक साथ आपके बॉट के साथ बातचीत कर रहे हैं।
Bot.on ('संदेश', डेटा = & gt; {
यदि (data.type === 'संदेश' & amp; & amp; डेटा।
उप प्रकार! == 'bot_message') {
यदि (data.text.tolowercelecte ()।
शामिल हैं ('हैलो')) {
SendMessage ('हैलो & lt; @ $ {data.user}
& gt; मैं रोबोट हूं!');
}
}
});
बॉट भी अपने प्रतिक्रियाओं को संपादित कर सकते हैं। हालांकि, केवल अपना ही। तो यदि आप एक टाइपो-स्पॉटिंग बॉट की उम्मीद कर रहे थे जो आपके संदेशों को स्वचालित रूप से सही करेगा जब यह गलती को स्पॉट करता है, तो यह वर्तमान सेटअप के साथ संभव नहीं है।
संदेश को अद्यतन करने के लिए, हम एक नया फ़ंक्शन, और एक वैश्विक बूलियन परिभाषित करते हैं जिसे हम अपने डेमो में उपयोग करेंगे।
changereply = false चलो;
समारोह अद्यतन (MessageParams) {
bot.updatemessage (messageparams.channel,
MessageParams.ts, MessageParams.text,
बोटपाराम्स);
}
आइए टेक्स्ट को अपडेट करने का प्रयास करें बॉट हमें भेजता है। इस मामले में, एक संदेश घटना पर, हमें आने वाले बॉट संदेश का जवाब देने की आवश्यकता है, इसलिए हम उस स्थिति को अपडेट के लिए मेल खाते हैं, और हम अद्यतन करने के लिए मूल संदेश के टाइमस्टैम्प का भी उपयोग करते हैं। ऐसा लगता है कि कौन सा संदेश अपडेट करने के लिए पहचान सकता है, अगर अन्य के बीच में पोस्ट किया जाता है।
यदि (data.type === 'संदेश' & amp; & amp; data.subtype! ==
'bot_message' & amp; & amp; data.text) {
यदि (data.text.includes ('अपडेट')) {
SendMessage ('मैं 5 में अपडेट करूंगा
सेकंड ');
Changerepleply = सत्य;
}
}
यदि (data.type === 'संदेश' & amp; & amp; data.subtype ===
'bot_message' & amp; & amp; Changereply) {
changerepleply = false;
Settimeout (() = & gt; {
UpdateMessage ({चैनल: Data.Channel,
टीएस: डेटा। टीएस, टेक्स्ट: 'मैंने अपडेट किया है'});
}, 5000);
}
क्षणिक संदेश हैं, क्योंकि नाम का सुझाव दिया जा सकता है, अस्थायी। वे केवल एक उपयोगकर्ता के लिए भी दिखाई देते हैं और उनके द्वारा हटाया जा सकता है। उन प्रकार के संदेश एक टिप या अनुस्मारक के रूप में उपयोगी हो सकते हैं जिन्हें स्थायी रूप से रहने की आवश्यकता नहीं होती है।
अगर (data.text.tolowercase ()। शामिल ('hr')) {
ephemeralmessage ({
चैनल: data.channel,
उपयोगकर्ता: data.user,
पाठ: 'यदि आपको एचआर से संपर्क करने की आवश्यकता है,
उनका ईमेल [email protected] है '
});
}
// वह फ़ंक्शन जिसे हम कॉल कर रहे हैं
समारोह epheralmessage (messageparams) {
bot.postephemeral (messageparams.channel,
MessageParams.user, MessageParams.text,
बोटपाराम्स);
}
विभिन्न तरीकों में थोड़ा अलग उपयोगकर्ता पैरामीटर (या तो आईडी या नाम, जो DISPLAIN_NAME और REAL_NAME से अलग है) ले जाएगा। हालांकि, केवल उपयोगकर्ता आईडी संदेश घटनाओं पर उपलब्ध है। इसलिए हम सभी उपयोगकर्ताओं को प्राप्त करके और आईडी से मेल करके उपयोगकर्ता नाम लुकअप को कार्यान्वित कर सकते हैं।
Async फ़ंक्शन GetUserName (UserID) {
वापसी awit bot.getUsers ()
.then (डेटा = & gt; {
सदस्य = data.members.find
(उपयोगकर्ता = & gt; {
USER.ID === USERID;
});
वापसी सदस्य। नाम;
})
.कैच (ERR = & gt; console.log (ERR));
}
नए उपयोगकर्ता लुकअप के साथ, अब हम किसी उपयोगकर्ता को प्रत्यक्ष संदेश भेज सकते हैं, जब क्षणिक संदेश सिर्फ नहीं करेंगे। ध्यान दें कि मूल संदेशों को मूल चैनल की तुलना में एक अलग आईडी के साथ एक नया / अलग चैनल माना जाता है। आप एक चैनल लुकअप को उसी तरह भी लागू कर सकते हैं जैसा कि हमने पहले किया है।
// संदेश घटना में
यदि (data.text.tolowerceast ()। शामिल ('बॉट')) {
SendDM ({
उपयोगकर्ता: data.user,
पाठ: 'मैं कैसे मदद कर सकता हूं?'
});
}
// वह फ़ंक्शन जिसे हम कॉल कर रहे हैं
async समारोह SendDM (MessageParams) {
USER = AWAIT GETUSERNAME
(MessageParams.user);
वापसी bot.postmessagetouser (उपयोगकर्ता, संदेश
Param.text, Botparams, (ERR, डेटा) = & gt; {
Console.log (ERR)
});
}
बॉट उपयोगकर्ताओं को एक चैनल में फ़ाइलों और छवियों को अपलोड करने की अनुमति भी होती है। यह कार्यक्षमता 'स्लैकबॉट्स' द्वारा कवर नहीं की जाती है, इसलिए हमें नीचे प्रदर्शित किए गए एक नए अपलोडर को तत्काल करना होगा। इसमें कुछ छवियों के साथ, अपनी प्रोजेक्ट रूट पर 'संपत्तियां' फ़ोल्डर भी तैयार करें।
आइए अगले चरण में परिभाषित 'sendimage ()' को एक कॉल तैयार करें।
// initbot () में
अपलोडर = नया slackupload (process.env।
Slack_token);
// संदेश घटना में
यदि (data.text.includes ('छवि')) {
अगर (data.upload) {
/ * इस मामले में, कोई संदेश नहीं है
उप प्रकार,
इसलिए हम जांचते हैं कि यह एक द्वारा ट्रिगर नहीं है
पिछला अपलोड संदेश * /
छवि = data.text.split ('' ;
sendimagage ('यह आप छवि है
चाहता था ', छवि);
}
}
हम अपलोडर और फाइल सिस्टम (एफएस) मॉड्यूल का उपयोग करके छवियों को अपलोड करते हैं। बशर्ते कि उपयोगकर्ता का संदेश "छवि & lt; imagename.extension & gt;" प्रारूप में है, और ऐसी फ़ाइल 'संपत्तियों' फ़ोल्डर में मौजूद है, छवि को पढ़ा और अपलोड किया जाएगा। यदि नहीं, तो हम एक नियमित संदेश वापस भेजते हैं (यह एक क्षणिक भी हो सकता है)।
फंक्शन सेंडिमेज (संदेश, छवि) {
अपलोडर। uploadfile ({
फ़ाइल: fs.createreadstream (path.join
(__dirname, '.. /../assets/${image}')),
mimetype: 'छवि / *',
फाइल का प्रकार: '*',
शीर्षक: छवि,
प्रारंभिक: संदेश,
चैनल: चैनल
}, (ERR, डेटा) = & gt; {
यदि (ERR) {
SendMessage ('क्षमा करें मुझे नहीं मिल रहा है
$ {छवि} ');
}
});
}
आप एक ही बॉट उपयोगकर्ता के साथ कई चैनलों को पोस्ट कर सकते हैं, जब तक कि यह प्रत्येक चैनल का सदस्य है जहां आप प्रतिक्रिया की उम्मीद कर रहे हैं। आइए एक 'पोस्टटॉल' फ़ंक्शन बनाएं और कॉमा नामों के रूप में चैनल नामों के लिए पर्यावरण चर को अपडेट करें।
कॉन्स चैनल = process.env.slack_channel।
विभाजित करें(',');
कॉन्स चैनल = चैनल ;
समारोह posttoall (संदेश) {
Channels.foreach (चैनल = & gt; {
bot.postto (चैनल, संदेश, botparams);
});
}
कभी-कभी, आप डिबगिंग के लिए चैनलों का उपयोग करना चाहते हैं, या विभिन्न चैनलों में एक ही बॉट के साथ अलग-अलग घटनाओं का जवाब देना चाह सकते हैं। यह आपके चैनल नामकरण सम्मेलन को कसरत करने के लिए आप पर निर्भर है। हम निम्न उदाहरण के लिए मान लेंगे कि slack_channel = wdm-tutorial, डब्लूडीएम-ट्यूटोरियल-डीबग।
समारोह splitmessages (संदेश, debugmessage) {
Channels.foreach (चैनल = & gt; {
const msg = channown.includes ('डीबग')
? Debugmessage: संदेश;
bot.postto (चैनल, एमएसजी, बोटाप्राम);
});
}
हम सीधे संदेश में हार्ड कोडिंग प्रतिक्रियाएं हैं। आगे बढ़ने के लिए, चीजों को और अधिक प्रबंधनीय बनाने के लिए, आप डेटाबेस या JSON प्रारूप में ट्रिगर्स और प्रतिक्रियाओं को स्टोर करना चाहेंगे, और उन शर्तों के आधार पर उनके बीच स्विच करें।
// उदाहरण प्रतिक्रिया आइटम
{
इनपुट: 'एचआर',
इनपुटमैच: 'शामिल',
प्रतिक्रिया: 'यदि आपको एचआर से संपर्क करने की आवश्यकता है,
उनका ईमेल [email protected] 'है,
प्रतिक्रिया: 'क्षणिक'
}
स्लैक एपीआई में कुछ अन्य उपयोगी गुण उपलब्ध हैं। उम्मीद है कि, इस ट्यूटोरियल ने आपके सभी बॉट की जरूरतों के लिए क्या संभव है इसका एक अवलोकन दिया होगा। आगे के संसाधनों को पढ़कर पाया जा सकता है 'स्लैकबॉट्स' प्रलेखन , या पूर्ण स्लैक एपीआई प्रलेखन ।
यह लेख मूल रूप से रचनात्मक वेब डिज़ाइन पत्रिका के अंक 28 9 में प्रकाशित किया गया था वेब डिजाइनर । [3 9 8] यहां अंक 289 खरीदें
या वेब डिजाइनर की सदस्यता लें ।संबंधित आलेख:
(छवि क्रेडिट: Pexels पर आंद्रे Furtado) [1 9] एक साधारण वे..
(छवि क्रेडिट: गेट्टी छवियां) [1 9] यदि आपके चश्म..
लौ पेंटर एक स्टैंडअलोन पेंट और कण प्रभाव पैकेज है जो आपको मूल चित्रों, हल�..
(छवि क्रेडिट: पॉल क्वोन) [1 9] बनाना चरित्र ड�..
इस ट्यूटोरियल में हम कुछ बुनियादी सिद्धांतों पर जाएंगे जो आपके अपने टुक�..
2 का पृष्ठ 1: चार्ट.जेएस का उपयोग करना: चरण..
एफ़िनिटी डिजाइनर मैक और विंडोज के लिए उपलब्ध वेक�..
फ्रीलांस 3 डी कलाकार और वर्टेक्स पैनलिस्ट माया �..