Slack je stále populárnější nástroj pro podniky a týmy, kteří potřebují komunikovat okamžitě. Zatímco to může - v některých případech - být považován za denní narušení, má také skvělý automatizační potenciál, který nabízí desítky integrací, které mají vše na jednom místě, a pomalu nahrazuje e-maily.
Existuje mnoho způsobů, jak integrovat vaše systémy s uvolněním; Platforma dokonce poskytuje značkový bot, který vám umožní dodat připomenutí nebo zprávy napříč digitálním pracovním prostorem. A pro ještě více vylepšení spolupráce, zkuste tyto cloudové úložiště Možnosti.
Slack nabízí různé entity, které by mohly být považovány za "boty": \ t
V tomto tutoriálu budeme hledat zejména na "uživatelům bot, jak je naprogramovat (podívejte se na náš průvodce nejlepší editory kódu Aby bylo váš život jednodušší) a aby je vyhovoval vašim potřebám. Toto předpokládá, že máte přístup k uvolněnému prostoru, kde můžete přidat integraci aplikací. Pokud ještě nejste součástí jednoho, můžete si vytvořit.
V tom, co následuje, budujeme aplikaci Nodejs na post-to a reagovat na konkrétní zprávy v slack kanálu. Používáme modul "Slackbots", který je obalem pro Slack Real-time Messaging API.
Zajímá se také o vytvoření webových stránek? Vyberte si brilantní Webové stránky Builder. a top. web hosting Služba jít s ním.
Tento výukový program předpokládá, že máte nainstalovaný uzel. Pokud ne, tak teď. Pak Stáhněte si aktiva budeš potřebovat. Poskytli jsme vám výchozí bod a rámec pro tutoriál.
Po celou dobu využíváme moduly, jako jsou "Slackbots" a "Uzel-Slack-Upload". Lze získat spuštěním příkazu instalace.
npm install
Používáme integraci "BOT uživatele" pro Slack. Abychom to udělali, musíme získat token tím, že půjdete na 'https: // & lt; youslackworkspace & gt; .Slack.com / apps / A0F7ys25r-roboty' a klikněte na tlačítko "Přidat konfiguraci".
Vyberte si uživatelské jméno pro svůj bot (můžeme přepsat toto programově v pozdější fázi) a potvrďte.
Pozvěte bota na požadovaný kanál.
Vytvořením uživatele BOT získáte token v následujícím formátu:
XOXB-000000-000000-X0x0xxxxx0xxxx0x
Pro další krok zkopírujte token.
Vyučujeme proměnné prostředí (souboru ".env"), abyste se vyhnuli tvrdým kódováním a odhalením tajných žetonů a klíčů, jako je token, který jsme vygenerovali, a název kanálu ve vašem soukromém prostoru Slack.
Pokračujte a vyplňte soubor '.env' soubor s tokenem a název kanálu, ke kterému jste pozvali uživatel bot.
SLACK_TOKEN = XOXB- & LT; YOUTHONED & GT;
SLACK_CHANNEL = & lt; kanál-name & gt;
Tento další krok nás bere na 2 soubory: 'index.js', které budeme mít stručný pohled na, a 'bin / lib / bot.js', kde se koná většina z našeho vývoje. V indexovém souboru instanci našeho bota tím, že mu dáte jméno, které je 'wdmbot'.
V "bot.js" řídíme parametry každé instance s názvem, token atd.
// index.js
CONST BOT = Vyžadovat ("./ bin / lib / bot"). init
('Wdmbot');
//bot.js.
const botparams = {
ICON_EMOJI: ': ROBOT_FACE:',
AS_USER: FALSE.
};
nechat bot;
Funkce InitBot (botname) {
bot = nový slackbot ({
token: proces.env.slack_token,
Jméno: botname.
});
}
Podívejte se na funkci 'SendMessage'. Používáme metodu "postto". To zvládne vysílání na jakýkoliv typ kanálu, veřejnosti nebo soukromého. Pokud chcete poslat pouze do soukromých kanálů, můžete použít "posttogroup" místo toho (nebo "posttochannel" pro veřejnost). Chcete-li poslat první zprávu, můžeme přidat kód v 'initbot'.
Funkce InitBot (botname) {
bot = / * viz výše * /
sendmessage ('Jsem tady!');
}
// nyní spustit 'npm start'
Měli jste si všimnout zprávy z WDMBOT v kanálu. Stojí za zmínku, že v "botpaparams", "as_user" je nastaven na hodnotu false, což nám umožňuje přepsat jméno a obrázek. Pokud je nastaven na hodnotu true, použije se název a obrázek, který jste nastavili při získávání tokenu.
Můžete změnit bot emoji na obrázek jako tak:
CONST BOTPAAMS = {
ICON_URL: 'https://pbs.twimg.com/
Profil_images / 976112552081010688 /
Wllqvj8d_400x400.jpg ',
AS_USER: FALSE.
};
Vysílání zpráv je užitečné, ale aby se bot více interaktivnější, musíme být schopni identifikovat příspěvky od jiných uživatelů v kanálu. Poslechněte si událost zprávy a pak uvidíte, co se stane, když zadáme do kanálu. Měli bychom vidět různé typy zpráv, které jsou zaznamenány, jako "user_typing" nebo "Zpráva".
Funkce InitBot (botname) {
bot = / * viz výše * /
bot.on ("zpráva", data = & gt; {
konzole.log (data);
});
}
Dále chceme odpovědět na příchozí zprávy typu "a možná na konkrétní frázi nebo klíčové slovo, aby se zabránilo odpovědi na absolutně všechno. Ujistěte se, že porovneme malých řetězců, pokud chceme odpovídat přesné frázi. Mohli bychom také vidět, zda zpráva obsahuje () konkrétní slovo.
bot.on ("zpráva", data = & gt; {
Pokud (data.Type === 'zpráva') {
Pokud (data.text.tolowercase () === 'Kde
jsi ty?') {
sendmessage ('Jsem tady!');
}
}
});
Zprávy odeslané uživateli bot mají různé vlastnosti, jako je podtyp "bot_message" a bot_id. Možná budete chtít omezit odpovědi pouze na sdělení s lidmi, aby se zabránilo nekonečné smyčky botů, které odpovídají sami nebo navzájem, pokud jejich odpověď obsahuje jeden z klíčových slov, pro které posloucháte.
bot.on ("zpráva", data = & gt; {
Pokud (data.Type === 'Zpráva' & AMP; & AMP;
Podtyp! == 'bot_message') {
Pokud (data.text.tolowercase ().
zahrnuje ('hello')) {
sendmessage ('Ahoj, jsem bot!');
}
}
});
Chcete-li poskytnout personalizovanější odpověď, můžete využít ID uživatele zprávy, na kterou odpovídáte. Slack automaticky převádí ID uživatelského jména, když je přiloženo ve značkách '& lt; @ & gt;'. Identifikace, koho odpovídáte, můžete být užitečné, zejména pokud více členů kanálů interagují se svým botem současně.
bot.on ("zpráva", data = & gt; {
Pokud (data.Type === 'Zpráva' & AMP; & AMP;
Podtyp! == 'bot_message') {
Pokud (data.text.tolowercase ().
zahrnuje ('hello')) {
sendmessage ('hello & lt; @ $ {data.user}
& gt; Jsem bot! ');
}
}
});
BOTS mohou také upravovat své odpovědi. Jen jejich vlastní. Takže pokud jste doufali, že pro šablonu typu-špinění, který by automaticky opravil vaše zprávy, když se spojí chybu, to není možné s aktuálním nastavením.
Chcete-li zprávu aktualizovat, definujeme novou funkci a globální boolean, který budeme používat v našem demu.
Nechte mění = nepravdivé;
Funkce Updatemessage (MessageParams) {
bot.updatemessage (messageParams.channel,
MessageParams.ts, MessageParams.Text,
botparams);
}
Pokusme se aktualizovat text, který nám posílá bot. V tomto případě na události zpráv musíme odpovědět na příchozí zprávu bot, takže budeme odpovídat této podmínce pro aktualizaci, a také používáme časová značka původní zprávy, která má být aktualizována. To je tak slack, může identifikovat, která zpráva se aktualizovat, v případě, že jiní budou zaslány mezi nimi.
Pokud (data.Type === 'Zpráva' & Amp; & amp; data.Subtype! ==
'bot_message' & amp; Data.text) {
Pokud (data.text.includes ('Update')) {
sendmessage ('Budu aktualizovat v 5
sekundy');
Changereply = true;
}
}
Pokud (Data.Type === 'Zpráva' & AMP; & amp; data.subtype ===
'bot_message' & amp; Changereply) {
Changereply = false;
osískání (() = & gt; {
Updatemessage ({Channel: Data.Channel,
TS: Data.TS, Text: 'I aktualizoval'});
}, 5000);
}
Efemérní zprávy jsou, jak by se název mohlo navrhnout, dočasné. Jsou také viditelné pouze pro jednoho uživatele a mohou být odstraněny. Tyto typy zpráv mohou být užitečné jako tip nebo připomínka, která nemusí zůstat trvale.
Pokud (data.text.tolowercase (). Zahrnuje ('HR')) {
EphemeralMessage ({
Channel: Data.Channel,
Uživatel: Data.USER,
Text: 'Pokud potřebujete kontaktovat HR,
Jejich e-mail je [email protected] '
});
}
// funkce, kterou voláme
Funkce EphemeralMessage (MessageParams) {
bot.postephemeral (MessageParams.channel,
MessageParams.user, MessageParams.Text,
botparams);
}
Různé metody budou trvat mírně odlišný uživatelský parametr (buď ID nebo jméno, které se liší od display_name a real_name). Pouze ID uživatele je však k dispozici na událostech zpráv. Můžeme proto implementovat vyhledávání uživatelského jména tím, že získáte všechny uživatele a odpovídat ID.
ASync Funkce Getusername (UserID) {
návrat na bot.getUsers ()
.then (data = & gt; {
Nechte člen = data.Members.find
(User = & gt; {
Vraťte uživatele.Id === UserID;
});
vrátit člen.name;
})
.catch (err = & gt; konzole.log (err));
}
S novým vyhledáváním uživatele nyní můžeme posílat přímé zprávy uživateli, když efemérní zprávy nebudou dělat. Všimněte si, že přímé zprávy jsou považovány za nový / jiný kanál, s jiným ID než původní kanál. Můžete také implementovat vyhledávání kanálů stejným způsobem jako uživatel dříve, co jsme udělali dříve.
// Ve zprávě
Pokud (data.text.tolowercase (). Zahrnuje ("bot") {
senddm ({
Uživatel: Data.USER,
Text: "Jak mohu pomoci?"
});
}
// funkce, kterou voláme
Async Function SendDM (MessageParams) {
Nechte user = Await Getusername
(MessageParams.user);
vrátit bot.postmessagetouser (uživatel, zpráva
Params.Text, Botparams, (Err, data) = & gt; {
console.log (err)
});
}
Uživatelé bot mají také oprávnění k nahrání souborů a obrázků na kanál. Tato funkce není pokryta "Slackbots", takže musíme vytvořit nový uploader, jak bylo prokázáno níže. Připravte také složku "aktiva" na kořen projektu, s některými obrázky v něm.
Pojďme připravit hovor na 'sendimage ()', definovaný v dalším kroku.
// v initbot ()
Uploader = New SlackuPload (Process.env.
Slack_token);
// Ve zprávě
Pokud (data.text.includes ('Image')) {
Pokud (!! Data.upload) {
/ * V tomto případě neexistuje žádná zpráva
podtyp,
Takže zkontrolujeme, že to není spuštěno
Předchozí zpráva UPLOAD * /
Nechte image = data.text.Split ('') ;
sendimage ('Toto je obrázek
chtěl ", obraz);
}
}
Nahráváme snímky pomocí modulu Uploader a FileSystem (FS). Za předpokladu, že zpráva uživatele je ve formátu "Image & lt; imagename.extension & gt; Pokud ne, posíláme pravidelnou zprávu (mohlo by to být dokonce efemérní).
Funkce sendimage (zpráva, obrázek) {
Uploader.uploadFile ({
Soubor: fs.createreadstream (path.join
(__dirname, '../../assets/$IMAGE}'),
MIMETTYE: 'IMAGE / *',
typ souboru: '*',
Název: Obrázek,
Informace: Zpráva,
Kanály: Channel
}, (Err, data) = & gt; {
Pokud (err) {
sendmessage ('Promiň, že nemůžu najít
$ {image} ');
}
});
}
Můžete poslat na více kanálů se stejným uživatelem bot, pokud je členem každého kanálu, kde očekáváte odpověď. Vytvořme funkci "posttoall" a aktualizovat proměnné prostředí, které mají názvy kanálů jako hodnoty oddělených čárkami.
Koncové kanály = proces.env.slack_Channel.
rozdělit(',');
Koncový kanál = kanály ;
Funkce PostToall (zpráva) {
kanály.Foreach (kanál = & gt; {
bot.postto (kanál, zpráva, botparamky);
});
}
Příležitostně budete chtít používat kanály pro ladění nebo reagovat na události jinak se stejným botem v různých kanálech. Je na vás, abyste cvičili konvenci pojmenování kanálu. Předpokládáme následující příklad, který SLACK_CHANNEL = WDM-TUTORIAL, WDM-TUTORIAL-ladění.
Funkce SplitMessages (zpráva, debugmessage) {
kanály.Foreach (kanál = & gt; {
CONST MSG = kanál.Includes ('ladění')
Debugmessage: Zpráva;
bot.postto (kanál, msg, botparamky);
});
}
Ve zprávě jsme byli pevně kódující odpovědi. Jít dopředu, aby se věci zvládl, možná budete chtít uložit spouštěče a odpovědi, buď v databázi nebo ve formátu JSON, a přepínat mezi nimi v závislosti na podmínkách splněných.
// příklad položky odezvy
{
Vstup: 'HR',
IntingMatch: 'Zaměstnejte',
Odpověď: 'Pokud potřebujete kontaktovat HR,
Jejich e-mail je [email protected] ',
Odezvenec: 'Ephemeral'
}
V SLACK API je k dispozici několik dalších užitečných vlastností. Doufejme, že tento tutoriál obdrží přehled o tom, co je možné pro všechny vaše potřeby bot. Další zdroje lze nalézt čtením Dokumentace "Slackbots" nebo plné Slack API dokumentace .
Tento článek byl původně publikován v čísle 289 časopisu Creative Web Design Web Designer. . Prodám vydání 289 zde nebo Přihlásit se zde web designer zde .
Související články:
Pokud jste zvládli Jak nakreslit psa Měli byste být odpuštěni, abyste si mysleli, že bys mohl být také schopen kreslit vlka. Zatímc..
Prakticky každý web je nyní postaven s alespoň kývnutím na reagující web design. Způsob, jakým strukturalizujeme tyto c..
Studoval jsem výtvarné umění a Malířské techniky A po dlouhou dobu byl úplně proti myšlence jít digitá..
Pravděpodobně jste slyšeli, že byste měli používat relativní jednotky pro velikost písma. To je dobré pravidlo pro přístupný web design; Pokud uživatel změní výchozí velikos..
Když jsem dostal svou první tarotovou palubu, byl jsem okouzlen krásnou kresbou a příběhy, které doprovázely každou kart..
Západy jsou něco, co jsem vždy miloval. V tomto tutoriálu vytvoříme obraz v typickém manga stylu, ale nastaven v divokém ..
Když jsem chtěl vytvořit zábavný kus 3D umění S goofy výrazem jsem viděl koncept randy biskupa, který js..
Než začnu pracovat na osobním obrázku, obvykle začínám přemýšlet o tom, co chci vidět v hotové práci. Ve většině ..