Slack er et stadig mere populært værktøj til virksomheder og teams, der har brug for at kommunikere med det samme. Mens det i nogle tilfælde - i nogle tilfælde - betragtes som en daglig forstyrrelse, har det også et stort automatiseringspotentiale, der tilbyder snesevis af integrationer for at holde alt på ét sted, og det er langsomt erstattet e-mails.
Der er mange måder at integrere dine systemer med slap; Platformen giver endda en branded bot, der lader dig levere påmindelser eller meddelelser på tværs af dit digitale arbejdsområde. Og for endnu flere samarbejdsforbedringer, prøv disse Sky lagring muligheder.
Slack tilbyder forskellige enheder, der kunne betragtes som 'bots':
I denne vejledning ser vi især på 'Bot-brugere', hvordan man programmerer dem (tjek vores vejledning til Bedste Kode Redaktioner at gøre dit liv lettere) og få dem til at passe dine behov. Dette forudsætter du har adgang til et slap plads, hvor du kan tilføje app integrationer. Hvis du ikke allerede er en del af en, er de fri til at skabe.
I det følgende følger vi en Nodeejs app til at sende til og reagere på bestemte meddelelser i en slapkanal. Vi bruger 'slackbots' modulet, som er en wrapper til den slack real-time messaging API.
Også interesseret i at lave en hjemmeside? Vælg en strålende Website Builder. og top. Web Hosting. service til at gå med det.
Denne vejledning forudsætter, at du har installeret node. Hvis ikke, gør det nu nu. Derefter Download aktiverne. Du skal bruge. Vi har givet dig et udgangspunkt og ramme for vejledningen.
Gennem, bruger vi moduler som 'slackbots' og 'node-slack-upload'. De kan fås ved at køre installationskommandoen.
npm install
Vi bruger "bot bruger" integration til slap. For at gøre det skal vi få et token ved at gå til 'HTTPS: // & lt; sLACK.com / apps / a0f7ys25r-bots' og klik på "Tilføj konfiguration".
Vælg et brugernavn til din bot (vi kan tilsidesætte dette programmatisk på et senere tidspunkt) og bekræfte.
Inviter bot til den ønskede kanal.
Ved at oprette en bot-bruger får du et token i følgende format:
XOXB-000000-000000-X0X0XXXXX0XXXX0X
Kopier token for det næste trin.
Vi gør brug af miljøvariabler (en '.env' -filer) for at undgå hardkodende og afslørende hemmelige tæpper og nøgler, som det slanke token, vi har genereret, og kanalnavnet i dit private slap arbejdsområde.
Gå videre og udfyld filen '.env' med dit token, og navnet på den kanal, som du har inviteret bot-brugeren.
Slack_token = XOXB- & LT; COURTOKEN & GT;
Slack_channel = & lt; kanal-navn & gt;
Dette næste trin tager os til 2 filer: 'index.js', som vi får et kort kig på, og 'bin / lib / bot.js', hvor det meste af vores udvikling finder sted. I indeksfilen instantierer vi vores bot ved at give det et navn, som er 'wdmbot'.
I 'Bot.js' kontrollerer vi parametrene for hver instans med navn, token osv.
// index.js
const bot = krav ('./ bin / lib / bot'). init
('WDMBOT');
//bot.js.
const botparams = {
Icon_emoji: ': robot_face:',
AS_USER: FALSE
};
Lad bot;
FUNCTION INITBOT (BOTNAME) {
bot = ny slackbot ({
TOKEN: PROCESS.ENV.SLACK_TOKEN,
NAVN: BOTNAME.
});
}
Se på funktionen 'Sendmessage'. Vi bruger "postto" -metoden. Dette vil håndtere udstationering til enhver form for kanal, offentlig eller privat. Hvis du kun vil sende til private kanaler, kan du bruge 'posttogruppe' i stedet (eller 'posttottochannel' for en offentlighed). For at sende vores første besked kan vi tilføje kode i 'initbot'.
FUNCTION INITBOT (BOTNAME) {
Bot = / * Se ovenfor * /
SendMessage ('Jeg er her!');
}
// nu Kør 'NPM Start'
Du skulle have bemærket en besked fra WDMBOT vises i din kanal. Det er værd at bemærke, at i 'Botparams', 'AS_USER' er sat til FALSE, som lader os tilsidesætte navnet og billedet. Hvis det er indstillet til TRUE, vil den bruge navnet og billedet, du indstiller, når du får token.
Du kunne ændre bot emoji til et billede som sådan:
Const Botparams = {
icon_url: 'https://ps.twimg.com/
Profil_Images / 976112552081010688 /
Wllqvj8d_400x400.jpg ',
AS_USER: FALSE
};
Udstationering af meddelelser er nyttig, men for at gøre bot mere interaktive, skal vi kunne identificere stillinger fra andre brugere i kanalen. Lad os lytte til meddelelsesbegivenheden, og se så hvad der sker, når vi skriver ind i kanalen. Vi bør se forskellige meddelelsestyper, der er logget, som 'user_typing' eller 'besked'.
FUNCTION INITBOT (BOTNAME) {
Bot = / * Se ovenfor * /
bot.on ('besked', data = & gt; {
console.log (data);
});
}
Dernæst ønsker vi at svare på indgående meddelelser af typen 'besked', og måske til en bestemt sætning eller søgeord for at undgå at svare på absolut alt. Vi sørger for at sammenligne små bogstaver, hvis vi vil matche en præcis sætning. Vi kunne også se, om en besked 'indeholder ()' et bestemt ord.
bot.on ('besked', data = & gt; {
hvis (data.type === 'besked') {
hvis (data.text.tolowercase () === 'hvor
er du?') {
SendMessage ('Jeg er her!');
}
}
});
Meddelelser sendt af bot-brugere har forskellige egenskaber som en subtype af 'bot_message' og en bot_id. Du vil måske begrænse svar på kun menneskelige meddelelser for at undgå uendelige sløjfer af bots, der svarer til sig selv eller hinanden, hvis deres svar indeholder et af de søgeord, du lytter til.
bot.on ('besked', data = & gt; {
hvis (data.type === 'besked' & amp; & amp; data.
Subtype! == 'bot_message') {
hvis (data.text.tolowercase ().
Inkluderer ('hej')) {
SendMessage ('Hej, jeg er en bot!');
}
}
});
For at give et mere personlig svar kan du udnytte bruger-id'et til den besked, du svarer på. Slack konverterer automatisk et id til brugernavnet, når de er vedlagt i tags '& lt; @ & gt;'. Identifikation af, hvem du svarer på, kan være nyttig, især hvis flere kanalmedlemmer interagerer med din bot samtidigt.
bot.on ('besked', data = & gt; {
hvis (data.type === 'besked' & amp; & amp; data.
Subtype! == 'bot_message') {
hvis (data.text.tolowercase ().
Inkluderer ('hej')) {
SendMessage ('Hej & lt; @ $ {data.User}
& gt; Jeg er en bot! ');
}
}
});
Bots kan også redigere deres svar. Kun deres egne, selvom. Så hvis du håbede på en typo-spotting bot, der ville rette dine beskeder automatisk, når det pletter en fejl, er det ikke muligt med den aktuelle opsætning.
For at opdatere beskeden definerer vi en ny funktion og en global boolean, som vi bruger i vores demo.
Lad ChangerePly = False;
FUNKTION UPDATEMESSAGE (MESSAGEPARAMS) {
bot.updatemessage (messageparams.channel,
MessageParams.ts, MessageParams.Text,
botparams);
}
Lad os prøve at opdatere teksten, som botten sender os. I dette tilfælde skal vi på en beskedhændelse svare på en indgående bot-besked, så vi stemmer overens med denne betingelse for opdateringen, og vi bruger også timestampen for den oprindelige besked, der skal opdateres. Det er så slap kan identificere, hvilken meddelelse der skal opdateres, hvis andre bliver indsendt imellem.
IF (DATA.TYPE === 'MEDDELELSE' & AMP; & AMP; DATA.SUBTYPE! ==
'bot_message' & amp; & amp; data.Text) {
hvis (data.text.includes ('update')) {
SendMessage ('Jeg opdaterer i 5
sekunder ');
Changerply = TRUE;
}
}
hvis (data.type === 'besked' & amp; & amp; data.subtype ===
'bot_message' & amp; & amp; changerply) {
changerply = false;
Setimeout (() = & gt; {
Updatemessage ({kanal: data.channel,
TS: Data.TS, tekst: 'Jeg har opdateret'});
}, 5000);
}
Ephemeral beskeder er, som navnet kan foreslå, midlertidigt. De er også kun synlige for en bruger og kan slettes af dem. Disse typer af meddelelser kan være nyttige som et tip eller påmindelse, der ikke behøver at forblive permanent.
IF (DATA.TEXT.TOlowerCase (). Inkluderer ('HR')) {
EphemeralMessage ({
Kanal: Data.Channel,
Bruger: Data.User,
Tekst: 'Hvis du har brug for at kontakte HR,
deres email er [email protected] '
});
}
// den funktion, vi ringer
Funktion EphemeralMessage (MessageParams) {
bot.postephemeral (messageparams.channel,
MessageParams.User, MessageParams.Text,
botparams);
}
Forskellige metoder vil tage lidt forskellige brugerparameter (enten ID eller navn, som er forskelligt fra Display_Name og Real_Name). Men kun bruger-id'et er tilgængeligt på meddelelsesbegivenheder. Vi kan derfor implementere et brugernavn opslag ved at få alle brugere og matche ID'et.
Async Funktion GetUserName (UserID) {
retur venter bot.getusers ()
.then (data = & gt; {
lad medlem = data.Members.find
(bruger = & gt; {
returnere user.id === userid;
});
returnere medlem. Name;
})
.catch (err = & gt; konsol.log (fejl));
}
Med den nye User Lookup kan vi nu sende direkte beskeder til en bruger, når ephemerale meddelelser bare ikke vil gøre det. Bemærk, at direkte meddelelser anses for at være en ny / anden kanal, med et andet id end den oprindelige kanal. Du kan også implementere en kanalopslag på samme måde som den bruger, vi har gjort tidligere.
// i meddelelsesbegivenheden
hvis (data.text.tolowercase (). Inkluderer ('bot')) {
SendDM ({
Bruger: Data.User,
Tekst: 'Hvordan kan jeg hjælpe?'
});
}
// den funktion, vi ringer
Async Funktion SendDM (MessageParams) {
Lad brugeren = afventer GetUserName
(MessageParams.User);
returnere bot.postmessagetouser (bruger, besked
Params.Text, botparams, (fejl, data) = & gt; {
Console.log (Err)
});
}
Bot-brugere har også tilladelser til at uploade filer og billeder til en kanal. Denne funktionalitet er dog ikke dækket af 'slackbots', så vi er nødt til at instantiere en ny uploader, som det fremgår af nedenfor. Forbered også en 'Asset' -mappe på dit projektrot, med nogle billeder i den.
Lad os forberede et opkald til 'SendImage ()', defineret i det næste trin.
// i initbot ()
Uploader = ny slackupload (Process.env.
Slack_token);
// i meddelelsesbegivenheden
hvis (data.text.includes ('image')) {
Hvis (! Data.upload) {
/ * I dette tilfælde er der ingen besked
subtype,
så vi kontrollerer, at det ikke er udløst af en
Forrige Upload besked * /
Lad Image = Data.Text.Split ('') ;
SendImage ('Dette er billedet du
Ønsket ', billede);
}
}
Vi uploader billeder ved hjælp af Uploader og FileSystem (FS) -modulet. Forudsat at en brugers besked er i formatet "image & lt; imagename.extension & gt;", og en sådan fil eksisterer i mappen 'Aktiver', vil billedet blive læst og uploadet. Hvis ikke, sender vi tilbage en regelmæssig besked (det kan endda være en ephemeral en).
Funktion SendImage (besked, billede) {
uploader.uploadfile ({
Fil: FS.CreaterAdstream (PATH.JOIN
(__dirname, '../../ASSETS/${Image}')),
Mimetype: 'billede / *',
filtype: '*',
Titel: Billede,
InitialComment: Meddelelse,
Kanaler: Channel.
}, (fejl, data) = & gt; {
hvis (fejl) {
SendMessage ('Undskyld jeg kan ikke finde
$ {image} ');
}
});
}
Du kan sende til flere kanaler med samme bot-bruger, så længe det er medlem af hver kanal, hvor du forventer et svar. Lad os oprette en 'Posttotall' -funktion og opdatere miljøvariablerne for at have kanalnavne som komma-adskilte værdier.
Const Channels = Process.env.Slack_Channel.
dele(',');
const kanal = kanaler ;
FUNKTION POSTTOALL (besked) {
kanaler. Forhandling (kanal = & gt; {
bot.postto (kanal, besked, botparams);
});
}
Lejlighedsvis vil du måske bruge kanaler til debugging eller reagere på begivenheder anderledes med samme bot i forskellige kanaler. Det er op til dig at træne din kanalnavnkonvention. Vi vil påtage os for det følgende eksempel, at slack_channel = WDM-tutorial, WDM-Tutorial-Debug.
Funktion splitmessages (besked, debugmessage) {
kanaler. Forhandling (kanal = & gt; {
const msg = channel.includes ('debug')
? Debugmessage: besked;
bot.postto (kanal, msg, botparams);
});
}
Vi har været hårde kodende svar direkte i meddelelsen. Går frem for at gøre tingene mere håndterbare, du måske vil gemme udløsere og svar, enten i en database eller JSON-format, og skifte mellem dem afhængigt af betingelserne.
// Eksempel Response Item
{
Input: 'HR',
InputMatch: 'inkludere',
Svar: 'Hvis du har brug for at kontakte HR,
deres email er [email protected] ',
Responsetype: 'Ephemeral'
}
Der er et par andre nyttige egenskaber, der er tilgængelige i Slack API. Forhåbentlig vil denne vejledning have givet et overblik over, hvad der er muligt for alle dine bot behov. Yderligere ressourcer kan findes ved at læse 'slackbots' dokumentation , eller den fulde Slack API-dokumentation .
Denne artikel blev oprindeligt offentliggjort i udstedelse 289 af Creative Web Design Magazine Webdesigner . Køb problem 289 her eller Abonner på Web Designer her .
Relaterede artikler:
Side 1 af 2: Sådan tegner du en hest: Trin for trin Sådan tegner du en ..
Dette projekt vil blive opdelt i forskellige dele. Vi vil give en kort introduktion til Heroku, vise, hvordan man bruger fysijs m..
Oprettelse af illustrationer til en begivenhed er en fantastisk kreativ udfordring, der involverer at fortælle historier med din..
Skitserbar er en maleri app til Windows 10. Det giver dig mulighed for at male store slagtilfælde på store billeder uden forsinkelse. Billeder er oprettet i 'tidsskrifter', hvor..
Skitsering er et simpelt, men kraftfuldt værktøj til alle involveret i at lave digitale produkter. Penner, papir og whiteboards er let tilgængelige på hvert kontor; Der er ikk..
Ved hjælp af My Unreal Engine 4 Projekt det sidste stop som et eksempel, vil jeg vise dig nogle vigtige skridt til at følge, n�..
Afgørelser, beslutninger, beslutninger ... Hvis der er et centralt aspekt til processen med at arbejde med type, er det, at designeren eller typografen skal gøre en lang række beslutninger..