Opret en brugerdefineret slap bot

Sep 16, 2025
hvordan
Create a custom Slack bot
(Billedkredit: webdesigner)

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.

  • 18 af de bedste samarbejdsværktøjer til designere

Slack tilbyder forskellige enheder, der kunne betragtes som 'bots':

  • Webhooks, som giver mulighed for at sende beskeder fra andre apps til slap, men er en envejsform for kommunikation,
  • apps, for fremskridt integrationer (med andre apps),
  • bot brugere, mere på dem kort tid.

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.

01. Kode Setup.

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

02. Slack setup.

Create a custom Slack bot: Slack setup

Giv din bot et brugernavn og inviter det til din kanal (Billedkredit: webdesigner)

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.

03. Miljøvariabler

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; 

04. Bot parametre

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.
});
} 

05. Post til kanal

Create a custom Slack bot: Post to channel

Nu kan du få din bot til at sende beskeder (Billedkredit: webdesigner)

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' 

06. Custom Botparams.

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
}; 

07. Kanalbegivenheder

Create a custom Slack bot: Channel events

Indstil din bot op for at lytte til meddelelser (Billedkredit: webdesigner)

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);
});
} 

08. Svar på indgående meddelelser

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!');
}
}
}); 

09. Begræns til "Human" -brugere

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!');
}
}
}); 

10. Personligt svar.

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! ');
}
}
}); 

generate CSS

Hvis du søger at lære de nyeste kreative og praktiske færdigheder til at tage dit klientarbejde, karriere eller agentur til næste niveau, så kom med os på generere CSS - vores CSS-fokuserede konference for webdesignere og udviklere. Find ud af mere her . Brug Special Tilbudskode Webdesigner2. For en 10% rabat på billetter! (Billedkredit: Getty / Future)

11. Opdater svar

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);
} 

12. Skift beskeden

Create a custom Slack bot: Changing the message

Opdater de meddelelser, som bot sender ud (Billedkredit: webdesigner)

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);
} 

13. Ephemeral Beskeder.

Create a custom Slack bot: Ephemeral messages

Ephemerale meddelelser ses kun af en bruger og kan slettes (Billedkredit: webdesigner)

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);
} 

14. BRUGER LOOKUP.

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));
} 

15. Send direkte meddelelser

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)
});
} 

16. Svar med et billede

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); } }

17. Filen Upload funktion

Create a custom Slack bot: The file upload function

Brug uploaderen og filsystemet til at uploade billeder (Billedkredit: webdesigner)

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} ');
}
});
} 

18. Send til flere kanaler

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); }); }

19. Split-kanaler

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);
});
} 

20. Ordbog af svar

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'
} 

21. Yderligere ressourcer.

Create a custom Slack bot: Further resources

Der er meget mere bot info, der findes andre steder (Billedkredit: webdesigner)

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:

  • Byg en AI-Powered Chatbot
  • Slacks havde en massiv opdatering, og du vil elske det
  • Sådan designer du en chatbot oplevelse

hvordan - Mest populære artikler

Sådan tegner du en hest

hvordan Sep 16, 2025

Side 1 af 2: Sådan tegner du en hest: Trin for trin Sådan tegner du en ..


Byg dit eget WebGL Physics-spil

hvordan Sep 16, 2025

Dette projekt vil blive opdelt i forskellige dele. Vi vil give en kort introduktion til Heroku, vise, hvordan man bruger fysijs m..


Sådan illustreres til en begivenhed

hvordan Sep 16, 2025

Oprettelse af illustrationer til en begivenhed er en fantastisk kreativ udfordring, der involverer at fortælle historier med din..


malingstyret og glatte streger med skitserbar

hvordan Sep 16, 2025

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..


Skærpe dine skitseringsfærdigheder

hvordan Sep 16, 2025

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..


Model Darth Vader i Zbrush

hvordan Sep 16, 2025

Side 1 af 2: Side 1 Side 1 Side 2. ..


Opret et spilmiljø i Unreal Engine 4

hvordan Sep 16, 2025

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�..


Oplev stil og stof af typografi

hvordan Sep 16, 2025

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..


Kategorier