Durgunluk, anında iletişim kurması gereken işletmeler ve ekipler için giderek daha popüler bir araçtır. Olabilirken - bazı durumlarda - günlük bir bozulma olarak kabul edilirken, aynı zamanda her şeyi tek bir yerde tutmak için onlarca entegrasyon sunan harika bir otomasyon potansiyeli vardır ve e-postaları yavaşça değiştirir.
Sistemlerinizi gevşeklikle entegre etmenin birçok yolu vardır; Platform bile, dijital çalışma alanınızdaki hatırlatıcı veya mesajları teslim etmeni sağlayan markalı bir bot sağlar. Ve daha da fazla işbirliği geliştirmeleri için bunları deneyin Bulut depolama Seçenekler.
Slack 'Bot' olarak kabul edilebilecek çeşitli varlıklar sunar:
Bu eğitimde, özellikle 'bot kullanıcıları', nasıl programlayacağız (rehberimize göz atın. En İyi Kod Editörleri Hayatınızı kolaylaştırmak için) ve ihtiyaçlarınızı karşılamalarını sağlayın. Bu, uygulama entegrasyonlarını ekleyebileceğiniz gevşek bir alana erişiminiz olduğunu varsayar. Eğer birinin bir parçası değilseniz, oluşturmakta özgürler.
Noktalarında, belirli mesajları gevşek bir kanalda yayınlamak ve yanıtlamak için bir NODEJS uygulaması oluştururuz. Gevşek gerçek zamanlı mesajlaşma API için bir sarmalayıcı olan 'Slackbots' modülünü kullanıyoruz.
Ayrıca bir web sitesi yapmak ister misiniz? Parlak bir seçim Web Sitesi Oluşturucu ve üst ağ sağlayıcısı onunla gitmek için servis.
Bu öğretici, düğüm kurulu olduğunuzu varsayar. Değilse, şimdi yap. Sonra Varlıkları indirin ihtiyacın olacak. Size öğretici için bir başlangıç noktası ve çerçeve sağladık.
Boyunca, 'Slackbots' ve 'Düğüm-Slack-Upload' gibi modülleri kullanıyoruz. Kurulum komutunu çalıştırarak elde edilebilirler.
npm install
Boşluk için "Bot Kullanıcı" entegrasyonunu kullanıyoruz. Bunu yapmak için, 'https: // & lt; younlackworkspace & gt; .slack.com / APPS / A0F7YS25R-Botlar' olacak şekilde bir jeton almamız gerekiyor ve "Yapılandırma Ekle" ye tıklayın.
Botunuz için bir kullanıcı adı seçin (bu programsal olarak daha sonraki bir aşamada geçersiz kılabiliriz) ve onaylayın.
Botu istenen kanala davet edin.
Bir bot kullanıcısı oluşturarak aşağıdaki formatta bir belirteç elde edersiniz:
xoxb-000000-000000-x0x0xxxxx0xxxx0x
Bir sonraki adım için belirteci kopyalayın.
Ürettiğimiz gevşek belirteç ve özel gevşek çalışma alanınızdaki kanal ismi gibi, gizli belirteçleri ve anahtarları ve kanal adını ve özel gevşek çalışma alanındaki kanal adını ve açığa çıkarmak için çevre değişkenlerini (bir '.Env' dosyasını) kullanıyoruz.
Devam edin ve '.env' dosyasını belirteçlerinizle doldurun ve bot kullanıcısını davet ettiğiniz kanalın adı.
slack_token = xoxb- & lt; yourtoken & gt;
Slack_Channel = & lt; kanal adı ve GT;
Bu bir sonraki adım bizi 2 dosyaya götürür: 'index.js', hangisinin kısa bir bakışına sahip olacağımız ve gelişimimizin çoğunun gerçekleştiği 'Bin / Lib / Bot.js'. Endeks dosyasında, botumuzu 'wdmbot' olan bir isim vererek başlatırız.
'Bot.js' de, her bir örneğin parametrelerini isim, jeton vb. İle kontrol ediyoruz.
// index.js
Const Bot = ('./ bin / lib / bot') gerektirir. init
('Wdmbot');
//bot.js
const botparams = {
icon_emoji: ': robot_face:',
as_user: yanlış
};
bot olsun;
İşlev Initbot (Botname) {
bot = yeni slackbot ({
jeton: proses.env.slack_token,
İsim: botname
});
}
'SendMessage' işlevine bir göz atın. 'Postto' yöntemini kullanıyoruz. Bu, herhangi bir kanala, halka açık veya özel olarak ilan yapacak. Yalnızca özel kanallara göndermek istiyorsanız, bunun yerine 'PostToGROUP' kullanabilirsiniz (veya halka açık olanı için 'PostToChannel'. İlk mesajımızı göndermek için 'initbot' için kod ekleyebiliriz.
İşlev Initbot (Botname) {
bot = / * Yukarıya bakın * /
SendMessage ('Buradayım!');
}
// Şimdi 'NPM Başlat'ı çalıştırın
Kanalınızda WDMBot göründüğü bir mesajı fark etmeliydiniz. 'Botparams', 'as_user' de yanlış olarak ayarlandığını belirtmekte fayda var, bu da ismi ve imajı geçersiz kılar. Doğru olarak ayarlanırsa, belirteç alırken ayarladığınız ad ve resmi kullanır.
Bot emoji'yi böyle bir resme değiştirebilirsiniz:
const botparams = {
icon_url: 'https://pbs.twimg.com/
profili_images / 976112552081010688 /
Wllqvj8d_400x400.jpg ',
as_user: yanlış
};
Mesajlar göndermek faydalıdır, ancak botu daha etkileşimli hale getirmek için, kanaldaki diğer kullanıcılardan gönderileri tanımlayabilmemiz gerekir. Mesaj olayını dinleyelim ve ardından kanala girdiğimizde ne olacağını görün. 'User_typing' veya 'Mesaj' gibi farklı mesaj türlerini görmeliyiz.
İşlev Initbot (Botname) {
bot = / * Yukarıya bakın * /
bot.on ('mesaj', veri = ve gt; {
konsol.log (veriler);
});
}
Daha sonra, kesinlikle her şeyi yanıtlamaktan kaçınmak için 'Mesaj' türünün gelen mesajlarına ve belki belirli bir cümleye veya anahtar sözcüğe cevap vermek istiyoruz. Kesin bir cümleyi eşleştirmek istiyorsak, küçük harfleri karşılaştırdığınızdan emin olun. Ayrıca, bir mesajın belirli bir kelimeyi içerip içermediğini de görebiliriz.
Bot.on ('Mesaj', Veri = ve GT; {
Eğer (data.type === 'mesajı') {
Eğer (Data.Text.TolowerCase () === 'ise
sen?') {
SendMessage ('Buradayım!');
}
}
});
BOT kullanıcıları tarafından gönderilen mesajlar 'Bot_Message' alt tipi ve bir BOT_ID tipi gibi çeşitli özelliklere sahiptir. Cevaplarını kendilerine veya birbirlerine cevap veren sonsuz döngülerden kaçınmak için sadece insandan gönderilen mesajların yanıtlamasını kısıtlamak isteyebilirsiniz, eğer cevapları dinlersiniz anahtar kelimelerden birini içeriyorsa.
Bot.on ('Mesaj', Veri = ve GT; {
if (data.type === 'mesajı' ve amp; ve amp; veriler.
alt tip! == 'bot_message') {
if (Data.Text.TolowerCase ().
içerir ('merhaba')) {
sendmessage ('Merhaba, ben bir bot!');
}
}
});
Daha kişiselleştirilmiş bir yanıt vermek için, cevapladığınız mesajın kullanıcı kimliğini kaldırabilirsiniz. Gevşekleme, etiketlerde bulunduğunuzda bir kimliği otomatik olarak kullanıcı adına dönüştürecektir. Kimi yanıtladığınızı belirlemek, özellikle birden fazla kanal üyesi botunuzla aynı anda etkileşime giriyorsa, faydalı olabilir.
Bot.on ('Mesaj', Veri = ve GT; {
if (data.type === 'mesajı' ve amp; ve amp; veriler.
alt tip! == 'bot_message') {
if (Data.Text.TolowerCase ().
içerir ('merhaba')) {
SendMessage ('Hello & LT; @ $ {Data.User}
& gt; Ben bir robotum!');
}
}
});
Botlar da cevaplarını düzenleyebilir. Yine de sadece kendi. Öyleyse, mesajlarınızı otomatik olarak bir hata yaptığında otomatik olarak düzeltecek bir botu umuyorsanız, geçerli kurulumda mümkün değildir.
Mesajı güncellemek için, yeni bir işlevi ve demosumuzda kullanacağımız küresel bir Boolean'ı tanımlıyoruz.
ChangerPree = false izin verin;
İşlev Updatemessage (MessageParams) {
bot.Updatemessage (MessageParams.Channel,
MessageParams.ts, MessageParams.Text,
botparams);
}
Bot bizi gönderen metni güncellemeye çalışalım. Bu durumda, bir mesaj olayında, gelen bir bot mesajına cevap vermemiz gerekir, bu yüzden güncelleme için bu durumla eşleşeceğiz ve ayrıca güncellenecek orijinal mesajın zaman damgasını da kullanırız. Bu kadar gevşek, başkalarının arada yayınlanması durumunda, hangi mesajın güncelleneceğini belirleyebilir.
Eğer (data.type === 'mesajı' ve amp; Data.SubType! ==
'Bot_Message' & amp; & amp; data.text) {
if (data.text.includes ('güncelleme')) {
SendMessage ('5'te güncelleyeceğim
saniye ');
ChangerPleply = Doğru;
}
}
Eğer (data.type === 'mesajı' ve amp; ve amp; data.subtype ===
'Bot_Message' & amp; & amp; changerly) {
ChangerePly = Yanlış;
settimeout (() = & gt; {
Updatemessage ({Kanal: Data.Channel,
TS: DATA.TS, Metin: 'Ben güncelledim'});
}, 5000);
}
Efemeral mesajlar, isim önerebileceğinden, geçicidir. Ayrıca sadece bir kullanıcıya görülebilir ve onlar tarafından silinebilirler. Bu tür mesajlar, kalıcı olarak kalması gerekmeyen bir ipucu veya hatırlatma olarak faydalı olabilir.
Eğer (Data.Text.TolowerCase (). ('HR') dahildir ('hr')) {
ephemeralmessage ({
Kanal: Data.Channel,
Kullanıcı: Data.User,
Metin: 'HR ile iletişime geçmeniz gerekiyorsa,
e-postaları [email protected] '.
});
}
// aradığımız işlev
fonksiyon ephemeralmessage (messageParams) {
Bot.Postephemeral (MessageParams.Channel,
MessageParams.USer, MessageParams.Text,
botparams);
}
Farklı yöntemler biraz farklı kullanıcı parametresini (kimlik veya isim, ekran_adı ve real_ adından farklı olan) alacaktır. Ancak, mesaj olaylarında yalnızca kullanıcı kimliği mevcuttur. Bu nedenle, tüm kullanıcıları alıp kimliğe eşleştirerek bir kullanıcı adı araması uygulayabiliriz.
Async Function GetUserName (userid) {
geri dönüş bot.getusers ()
.Then (veri = ve gt; {
Üye = data.members.find
(kullanıcı = ve gt; {
geri dönüş user.id === userid;
});
iade üyesi.Name;
})
.catch (err = & gt; console.log (err));
}
Yeni kullanıcı aramasıyla, şimdi geçici mesajlar sadece yapmayacaksa, bir kullanıcıya doğrudan mesaj gönderebiliriz. Doğrudan mesajların, orijinal kanaldan farklı bir kimliği olan yeni / farklı bir kanal olarak kabul edildiğini unutmayın. Ayrıca, daha önce yaptığımız kullanıcı ile aynı şekilde bir kanal araması uygulayabilirsiniz.
// Mesaj olayında
if (Data.Text.TolowerCase (). ('Bot')))
senddm ({
Kullanıcı: Data.User,
Metin: 'Nasıl yardımcı olabilirim?'
});
}
// aradığımız işlev
Async Function SendDM (MessageParams) {
Kullanıcının = GetUserName'i bekletmesine izin verin
(MessageParams.USER);
bot.postmessagetouser dönüş (kullanıcı, mesaj
Param.text, botparams, (err, veri) = & gt; {
console.log (err)
});
}
BOT kullanıcılarının ayrıca dosya ve görüntüleri bir kanala yükleme izinleri vardır. Bu işlevsellik olsa da 'Slackbots' tarafından karşılanmıyor, bu yüzden aşağıda gösterildiği gibi yeni bir yükleyiciyi başlatmak zorundayız. Ayrıca, içindeki bazı görüntülerle proje kökünüzde bir 'varlıklar klasörü hazırlayın.
Bir sonraki adımda tanımlanan 'Sendimage ()' için bir arama hazırlayalım.
// initbot () 'de
Yükleyici = Yeni SlackUpload (Proses.Env.
Slack_token);
// Mesaj olayında
if (data.text.includes ('image')) {
if (! data.upload) {
/ * Bu durumda, mesaj yok
Alt tipi,
Bu yüzden bir tarafından tetiklenmediğini kontrol ediyoruz.
Önceki Yükleme Mesajı * /
image = data.text.split ('') ;
Sendimage ('Bu resim
aranıyor ', görüntü);
}
}
Yükleyiciyi ve dosya sistemi (FS) modülünü kullanarak görüntüler yükleriz. Bir kullanıcının mesajının "görüntü" formatında olması şartıyla ve böyle bir dosya 'varlıklar' klasöründe bulunur, görüntü okunur ve yüklenir. Değilse, normal bir mesajı geri göndeririz (hatta bir efemeral olanı bile olabilir).
fonksiyon sendimage (mesaj, resim) {
uploader.uploadfile ({
Dosya: Fs.CreateadStream (Path.Join
(__dirname, '../../assets/$Image}')),
Mimetype: 'Görüntü / *',
dosya tipi: '*',
Başlık: Görüntü,
Site: Mesaj,
Kanallar: Kanal
}, (err, veriler) = & gt; {
if (err) {
SendMessage ('Üzgünüm bulamıyorum
$ {image} ');
}
});
}
Bir yanıt beklediğiniz her bir kanalın üyesi olduğu sürece, aynı bot kullanıcısına sahip birden fazla kanala gönderebilirsiniz. Bir 'Posttoall' işlevi yaratalım ve çevre değişkenlerini virgülle ayrılmış değerler olarak kanal adlarına sahip olacak şekilde güncelleyelim.
Const Channels = proses.env.slack_channel.
Bölünmüş(',');
Const Channel = Kanallar ;
fonksiyon posttoall (mesaj) {
channels.foreach (kanal = ve gt; {
bot.postto (kanal, mesaj, botparams);
});
}
Bazen, hata ayıklama için kanalları kullanmak veya farklı kanallarda aynı botla farklı olaylara cevap vermek isteyebilirsiniz. Kanal adlandırma kuralınızı antrenman yapmak size kalmış. Slack_Channel = WDM-Tutorial, WDM-Tutorial-Debug'un aşağıdaki örneği kabul edeceğiz.
İşlev SplitMessages (Mesaj, DebugMessage) {
channels.foreach (kanal = ve gt; {
const msg = kanal.inkudes ('hata ayıklama')
? DebugMessage: Mesaj;
bot.postto (kanal, msg, botparams);
});
}
Doğrudan mesajda doğrudan kodlama cevapları verdik. İleriye doğru ilerlemek, işleri daha yönetilebilir hale getirmek için, bir veritabanı veya JSON formatında tetikleyicileri ve yanıtları saklamak isteyebilirsiniz ve bunlarla karşılaşılan koşullara bağlı olarak aralarında geçiş yapabilirsiniz.
// Örnek Yanıt Öğesi
{
Giriş: 'Hr',
Giriş Match: 'Dahil Et',
Yanıt: 'HR ile iletişime geçmeniz gerekiyorsa,
e-postaları [email protected] ',
Sorumlu: 'efemeral'
}
Slack API'de başka birkaç faydalı özellik var. Umarım, bu öğretici, tüm botlarınızın ihtiyaçlarınız için mümkün olanlara genel bir bakış vermiş olacaktır. Daha fazla kaynak, okunarak bulunabilir. 'Slackbots' belgeleri ya da dolu Gevşek API belgeleri .
Bu makale başlangıçta yaratıcı web tasarım dergisinin 289 sayısında yayınlandı. Web tasarımcısı . Sayı 289 burada satın al veya Burada web tasarımcısına abone olun .
İlgili Makaleler:
3B endüstrinin büyüme yılı yılın büyüklüğünde, işinizin kalabalıktan çıktığından emin olmaktan her zamankinden daha önemlidir. Beceri seviyeniz 3D sanatçı olarak ne olur..
Bir kedi nasıl çizileceğini bilmek ister misin? Doğru yere geldiniz. Çizim hayvanlar zor olabilir, ancak doğru aldıktan so..
Profesyonel olarak çalışan herkes için karakter tasarımı , bir karakter İncil, iş akışınızın en önem..
Sayfa 1/2: Sayfa 1 Sayfa 1 Sayfa 2 ..
Bir fantezi yaratığı için bir fikir bulduktan sonra, bir sonraki adım inanılır renk ve dokularla boyayarak hayata geçirme..
Garipteki bu portal etkisi çok özeldi. Bu, bu konuda görsel efektlerden daha fazla hareketli grafiklere yaslanmayan filmdeki t..
Kabartılabilir Windows 10 için bir resim uygulamasıdır. LAG olmadan büyük görüntülerde büyük görüntüleri boyamanızı sağlar. Görüntüler, herhangi bir boyutta he..
Sanat sadece yaratıcı değil, aynı zamanda paylaşım hakkında. Gurur duyduğunuz güzel bir iş çıkardığınızda, sadece başkalarının da görmesini istemeyeceğiniz doğaldır. Bu..