Lag en tilpasset slakk bot

Sep 12, 2025
hvordan
Create a custom Slack bot
[1. 3]
(Bilde Kreditt: Webdesigner)

Slack er et stadig mer populært verktøy for bedrifter og lag som trenger å kommunisere umiddelbart. Mens det kan - i noen tilfeller - betraktes som en daglig forstyrrelse, har den også et godt automatiseringspotensial, og tilbyr dusinvis av integrasjoner for å holde alt på ett sted, og det er sakte erstattet e-post.

Det er mange måter å integrere systemene dine med slakk; Plattformen gir selv en merket bot som lar deg levere påminnelser, eller meldinger på tvers av digitale arbeidsområdet. Og for enda flere samarbeidsforbedringer, prøv disse skylagring alternativer.

  • 18 av de beste samarbeidsverktøyene for designere

Slack tilbyr ulike enheter som kan betraktes som "bots":

  • Webhooks, som tillater å legge inn meldinger fra andre apper i slakk, men er en enveis form for kommunikasjon,
  • Apps, For fremskritt integrasjoner (med andre apper),
  • Bot-brukere, mer på dem snart.

I denne opplæringen ser vi spesielt på 'Bot-brukere', hvordan du programmerer dem (sjekk ut vår guide til Beste kode redaktører å gjøre livet enklere) og få dem til å passe dine behov. Dette forutsetter at du har tilgang til et slakkområde hvor du kan legge til appintegrasjoner. Hvis du ikke allerede er en del av en, er de frie til å skape.

I det som følger, bygger vi en Nodejs-app for å legge til og svare på bestemte meldinger i en slakkkanal. Vi bruker "Slackbots" -modulen, som er en wrapper for slack real-time messaging api.

Også interessert i å lage et nettsted? Velg en strålende Nettstedbygger og topp Web Hosting. Tjenesten å gå med den.

01. Kodeoppsett

Denne opplæringen forutsetter at du har node installert. Hvis ikke, gjør det nå. Deretter Last ned eiendelene du vil trenge. Vi har gitt deg et utgangspunkt og rammeverk for opplæringen.

Gjennom, bruker vi moduler som "slackbots" og "node-slack-upload". De kan fås ved å kjøre installasjonskommandoen.

npm install

02. Slakk oppsett

Create a custom Slack bot: Slack setup

Gi din bot et brukernavn og invitere det til kanalen din (Bilde Kreditt: Webdesigner)

Vi bruker integrasjonen "BOT USER". For å gjøre det må vi få et token ved å gå til 'https: // & lt; youSlackworkspace & gt ;SLack.com / Apps / A0F7ys25r-Bots' og klikk på "Legg til konfigurasjon".

Velg et brukernavn for din bot (vi kan overstyre dette programmatisk på et senere tidspunkt), og bekreft.

Inviter botten til ønsket kanal.

Ved å lage en botbruker får du et token i følgende format:

xoxb-000000-000000-x0x0xxxxx0xxxx0x

Kopier token for neste trinn.

03. Miljøvariabler

Vi benytter seg av miljøvariabler (en ".ENV" -fil) for å unngå hardkoding og avslørende hemmelige tokens og nøkler, som Slack Token vi har generert, og kanalnavnet i ditt private slakk arbeidsområde.

Gå videre og fyll inn ".NOV" -filen med Token, og navnet på kanalen som du har invitert BOT-brukeren på.

 slack_token = xoxb- & lt; yourtoken & gt;
Slack_channel = & lt; channel-navn & gt; 

04. Bot parametere

Dette neste trinnet tar oss til 2 filer: 'Index.js', som vi får en kort titt på, og 'bin / lib / bot.js', hvor det meste av vår utvikling finner sted. I indeksfilen merker vi vår bot ved å gi det et navn, som er "WDMBOT".

I 'Bot.js' kontrollerer vi parametrene i hvert tilfelle med navn, token, etc.

 // index.js
const bot = krever ('./ bin / lib / bot'). init
('WDMBOT');

//bot.js.
const botparams = {
icon_emoji: ': robot_face:',
AS_USER: FALSK
};
la bot;
Funksjon Initbot (Botname) {
bot = ny slackbot ({
Token: prosess.ENV.SLACK_TOKEN,
Navn: Botname.
});
} 

05. Legg inn til kanal

Create a custom Slack bot: Post to channel

Nå kan du få botten din til å sende meldinger (Bilde Kreditt: Webdesigner)

Ta en titt på "SendMessage" -funksjonen. Vi bruker metoden "Postto". Dette vil håndtere å legge ut til enhver type kanal, offentlig eller privat. Hvis du bare vil legge inn til private kanaler, kan du bruke "Posttogroup" i stedet (eller "posttokanal" for en offentlig en). For å sende vår første melding, kan vi legge til kode i 'Initbot'.

 Funksjon Initbot (Botname) {
BOT = / * Se ovenfor * /
SendMessage ('Jeg er her!');
}
// nå kjøre 'npm start' 

06. Custom Botparams.

Du burde ha lagt merke til at en melding fra WDMBOT vises i kanalen din. Det er verdt å merke seg at i 'Botparams', 'As_User' er satt til False, som lar oss overstyre navn og bilde. Hvis det er satt til TRUE, vil det bruke navnet og bildet du angir når du får token.

Du kan endre bot emoji til et bilde som så:

 const Botparams = {
icon_url: 'https://pbs.twimg.com/
Profil_images / 976112552081010688 /
Wllqvj8d_400x400.jpg ',
AS_USER: FALSK
}; 

07. Kanalhendelser

Create a custom Slack bot: Channel events

Sett din bot opp for å lytte etter meldinger (Bilde Kreditt: Webdesigner)

Posting meldinger er nyttig, men for å gjøre botten mer interaktiv, må vi kunne identifisere innlegg fra andre brukere i kanalen. La oss høre på meldingshendelsen, og se hva som skjer når vi skriver inn i kanalen. Vi bør se forskjellige meldingstyper som er logget, som "user_typing" eller "melding".

 Funksjon Initbot (Botname) {
BOT = / * Se ovenfor * /
BOT.ON ('Melding', Data = & GT; {
konsoll.log (data);
});
} 

08. Svar på innkommende meldinger

Deretter vil vi svare på innkommende meldinger om typen "melding", og kanskje til en bestemt setning eller søkeord, for å unngå å svare på absolutt alt. Vi sørger for å sammenligne små bokstaver hvis vi ønsker å matche et eksakt uttrykk. Vi kunne også se om en melding "inkluderer () et bestemt ord.

 BOT.ON ('Melding', Data = & GT; {
hvis (data.type === 'melding') {
hvis (data.text.tolowercase () === 'hvor
er du?') {
SendMessage ('Jeg er her!');
}
}
}); 

09. Begrens til "human" brukere

Meldinger sendt av BOT-brukere har ulike egenskaper som en subtype av 'BOT_MESSAGE' og en BOT_ID. Du vil kanskje begrense å svare på bare menneskelige meldinger for å unngå uendelige løkker av bots som svarer på seg selv eller hverandre, hvis deres svar inneholder et av søkeordene du lytter etter.

 BOT.ON ('Melding', Data = & GT; {
hvis (data.type === 'melding' & amp; & amp;
SUBTYPE! == 'BOT_MESSAGE') {
hvis (data.text.tolowercase ().
inkluderer ('hallo')) {
SendMessage ('Hei, jeg er en bot!');
}
}
}); 

10. Personlig respons.

For å gi et mer personlig svar, kan du utnytte bruker-IDen til meldingen du svarer på. Slack vil automatisk konvertere en ID til brukernavnet når det er vedlagt i tagger '& lt; @ & gt;'. Identifisere hvem du svarer på, kan være nyttig, spesielt hvis flere kanalmedlemmer samhandler med din bot samtidig.

 BOT.ON ('Melding', Data = & GT; {
hvis (data.type === 'melding' & amp; & amp;
SUBTYPE! == 'BOT_MESSAGE') {
hvis (data.text.tolowercase ().
inkluderer ('hallo')) {
SendMessage ('Hello & LT; @ $ {data.user}
& gt; Jeg er en bot! ');
}
}
}); 

generate CSS

Hvis du ønsker å lære de nyeste kreative og praktiske ferdighetene til å ta din klientarbeid, karriere eller byrå til neste nivå, så bli med oss ​​på Generate CSS - vår CSS-fokuserte konferanse for webdesignere og utviklere. Finne ut mer her . Bruk spesialtilbudskode WebDesigner2. For en 10% rabatt på billetter! (Bildekreditt: Getty / Fremtid)

11. Oppdater svar

Bots kan også redigere sine svar. Bare sine egne, skjønt. Så hvis du håpet på en typo-spotting bot som ville rette opp meldingene dine automatisk når det ser en feil, er det ikke mulig med gjeldende oppsett.

For å oppdatere meldingen definerer vi en ny funksjon, og en global boolean som vi skal bruke i vår demo.

 La changereply = false;
Funksjon UpdateMessage (MessageParams) {
bot.updatemessage (messageparams.channel,
messageparams.ts, messageparams.Text,
Botparams);
} 

12. Endre meldingen

Create a custom Slack bot: Changing the message

Oppdater meldingene som BOT sender ut (Bilde Kreditt: Webdesigner)

La oss prøve å oppdatere teksten Bot sender oss. I dette tilfellet, på en meldingshendelse, må vi svare på en innkommende botmelding, så vi samsvarer med den tilstanden for oppdateringen, og vi bruker også tidsstemplet til den opprinnelige meldingen som skal oppdateres. Det er så slakk kan identifisere hvilken melding som skal oppdateres, hvis andre får lagt inn i mellom.

 hvis (data.type === 'melding' & amp; & amp; data.subtype! ==
'Bot_Message' & amp; data.Text) {
hvis (data.text.Includes ('oppdatering')) {
SendMessage ('Jeg vil oppdatere i 5
sekunder ');
changereply = sant;
}
}
hvis (data.type === 'melding' & amp; & amp; data.subtype ===
'Bot_Message' & amp; changereply) {
changereply = false;
Setttidout (() = & gt; {
UpdateMessage ({Channel: Data.Channel,
ts: data.ts, tekst: 'Jeg har oppdatert'});
}, 5000);
} 

13. Efemerale meldinger

Create a custom Slack bot: Ephemeral messages

Ephemeral meldinger er bare sett av en bruker og kan slettes (Bilde Kreditt: Webdesigner)

Efemere meldinger er, som navnet kan foreslå, midlertidig. De er også bare synlige for en bruker og kan slettes av dem. Disse typer meldinger kan være nyttige som et tips eller påminnelse som ikke trenger å være permanent.

 hvis (data.text.tolowercase (). Inkluderer ('hr')) {
ephemeralMessage ({
Kanal: Data.Kannel,
Bruker: Data.user,
Tekst: 'Hvis du trenger å kontakte HR,
deres e-post er [email protected] '
});
}

// funksjonen vi ringer
Funksjon EfemeralMessage (MessageParams) {
Bot.Postphemeral (MessageParams.Channel,
messageparams.user, messageparams.Text,
Botparams);
} 

14. Brukeroppslag

Ulike metoder vil ta litt forskjellige brukerparameter (enten ID eller navn, som er forskjellig fra Display_name og Real_name). Imidlertid er bare bruker-IDen tilgjengelig på meldingshendelser. Vi kan derfor implementere et brukernavn oppslag ved å få alle brukere og matche IDen.

 Async Function Getusername (userid) {
Return venter Bot.Getusers ()
.Den (data = & gt; {
la medlem = data.members.find
(bruker = & gt; {
returnere user.id === userid;
});
Return Member.name;
})
.Catch (err = & gt; console.log (err));
} 

15. Send direkte meldinger

Med den nye brukeroppslaget kan vi nå sende direkte meldinger til en bruker, når ephemeral meldinger bare ikke vil gjøre. Vær oppmerksom på at direkte meldinger anses å være en ny / annen kanal, med en annen ID enn den opprinnelige kanalen. Du kan også implementere en kanaloppslag på samme måte som brukeren vi har gjort tidligere.

 // i meldingshendelsen
hvis (data.text.tolowercase (). Inkluderer ('bot')) {
Senddm ({
Bruker: Data.user,
Tekst: 'Hvordan kan jeg hjelpe?'
});
}
// funksjonen vi ringer
Async Funksjon SendDM (MessageParams) {
La brukeren = venter Getusername
(messageparams.User);
Returner BOT.POSTMESSAGETOUSER (bruker, melding
Params.Text, Botparams, (Err, Data) = & GT; {
Console.log (Err)
});
} 

16. Svar med et bilde

Bot-brukere har også tillatelser til å laste opp filer og bilder til en kanal. Denne funksjonaliteten er ikke dekket av "slackbots" skjønt, så vi må instantiere en ny opplaster, som vist nedenfor. Forbered også en "Assets" -mappe på prosjektrotten, med noen bilder i den.

La oss forberede et anrop til 'SendImage ()', definert i neste trinn.

 // i initbot ()
uploader = ny slackupload (prosess.ENV.
Slack_token);

// i meldingshendelsen
hvis (data.text.Includes ('image')) {
hvis (! data.upload) {
/ * I dette tilfellet er det ingen melding
subtype,
så vi sjekker at det ikke utløses av en
forrige opplastingsmelding * /
la bilde = data.Text.Split ('') 
; SendImage ('Dette er bildet du ønsket ', bilde); } }

17. Filopplastingsfunksjonen

Create a custom Slack bot: The file upload function

Bruk opplasteren og filsystemet til å laste opp bilder (Bilde Kreditt: Webdesigner)

Vi laster opp bilder ved hjelp av Uploader og FileSystem (FS) -modulen. Forutsatt at en brukers melding er i formatet "Image & Lt; imagename.extension & gt;", og en slik fil eksisterer i "Eienskap" -mappen, vil bildet bli lest og lastet opp. Hvis ikke, sender vi tilbake en vanlig melding (det kan til og med være en ephemeral en).

Funksjon SendImage (Melding, Bilde) {
uploader.uploadfile ({
Fil: fs.createradstream (sti.join
(__dirname, '../../assets/${image}')),
Mimetype: 'Image / *',
filtype: '*',
Tittel: Bilde,
InitialComment: Melding,
Kanaler: Kanal
}, (feil, data) = & gt; {
hvis (err) {
SendMessage ("Beklager, jeg kan ikke finne
$ {image} ');
}
});
} 

18. Legg til flere kanaler

Du kan legge inn flere kanaler med samme BOT-bruker, så lenge det er medlem av hver kanal hvor du forventer et svar. La oss lage en "posttytoall" -funksjon og oppdatere miljøvariablene for å ha kanalnavn som kommaseparerte verdier.

 constanaler = prosess.ENV.SLACK_KANNEL.
dele(',');
constanal = kanaler 
; Funksjon Posttoall (Melding) { kanaler.foreach (kanal = & gt; { bot.postto (kanal, melding, botparams); }); }

19. Split kanaler

Av og til vil du kanskje bruke kanaler for feilsøking, eller svare på hendelser annerledes med samme bot i forskjellige kanaler. Det er opp til deg å trene din kanals navngivningskonvensjon. Vi antar det følgende eksempel som slack_channel = WDM-opplæring, WDM-Tutorial-Debug.

 Funksjon Splitmessages (Melding, DebugMessage) {
kanaler.foreach (kanal = & gt; {
consts msg = kanal.Includes ('debug')
? debugMessage: melding;
bot.Postto (kanal, MSG, Botparams);
});
} 

20. Ordbok av svar

Vi har vært hardkodende svar direkte i meldingen. Går fremover, for å gjøre ting mer håndterbare, vil du kanskje lagre utløsere og svar, enten i en database eller JSON-format, og bytte mellom dem, avhengig av betingelsene som er oppfylt.

 // Eksempel svarelement
{
Input: 'HR',
InputMatch: 'Inkluder',
Svar: "Hvis du trenger å kontakte HR,
deres e-post er [email protected] ',
ResponDetype: 'ephemeral'
} 

21. Ytterligere ressurser

Create a custom Slack bot: Further resources

Det er mye mer bot info å bli funnet andre steder (Bilde Kreditt: Webdesigner)

Det finnes noen andre nyttige egenskaper som er tilgjengelige i Slack API. Forhåpentligvis vil denne opplæringen ha gitt en oversikt over hva som er mulig for alle dine Bot-behov. Ytterligere ressurser kan bli funnet ved å lese 'Slackbots' dokumentasjon , eller den fulle Slack API Dokumentasjon .

Denne artikkelen ble opprinnelig publisert i utgave 289 av Creative Web Design Magazine Webdesigner . Kjøp problem 289 her eller Abonner på webdesigner her .

Relaterte artikler:

  • Bygg en AI-Powered Chatbot
  • Slakk har en massiv oppdatering, og du kommer alle til å elske det
  • Slik designer du en chatbot-opplevelse

hvordan - Mest populære artikler

Hvordan lage interiør med Blender's Eevee

hvordan Sep 12, 2025

[1. 3] Atypique-Studio: Inneholder teksturer fra Poliigon.com - Teksturer kan ikke omfordeles Da jeg begynte å jobbe ..


Hvordan bygge komplekse layouter ved hjelp av CSS

hvordan Sep 12, 2025

[1. 3] Layout for nettet har alltid vært begrenset, det har aldri vært noe egentlig dedikert til å gjøre innholdet enkelt å v..


12 tips for realistisk 3D-belysning

hvordan Sep 12, 2025

[1. 3] Belysning er grunnleggende i noen 3D Art. prosjektet du jobber med. På det mest grunnleggende nivået er de..


Lag interaktive 3D-visuelle med tre.js

hvordan Sep 12, 2025

[1. 3] Denne WebGl-opplæringen demonstrerer hvordan man lager en 3D-miljøsimulering som viser hva som skjer med verden som CO2-n..


Lag en travel by scene i Illustrator

hvordan Sep 12, 2025

[1. 3] Den beste byen er en travel by, men den travle atmosfæren er ikke en enkel ting å fange vellykket. Men med noen enkle ..


Lag sensasjonelle solnedganger i Photoshop

hvordan Sep 12, 2025

[1. 3] En vakker solnedgang er en slik ting å lure på at alle med et kamera føles nesten pliktbundet til å fange det. ..


5 måter å administrere kontantstrøm effektivt

hvordan Sep 12, 2025

[1. 3] Kontrollere kontantstrømmen din er nøkkelen til freelance suksess, og det er noen harde og raske regler for å sikre at d..


Lag 3D-klær med realistiske krøller og folder

hvordan Sep 12, 2025

[1. 3] Å gjøre realistiske virtuelle klær er en av de mest utfordrende oppgavene siden innovasjonen av CG-animasjonen. Klær er..


Kategorier