Slack is een steeds populairder hulpmiddel voor bedrijven en teams die onmiddellijk moeten communiceren. Hoewel het in sommige gevallen - beschouwd wordt als een dagelijkse verstoring, heeft het ook een groot automatiseringspotentieel, met tientallen integraties om alles op één plaats te houden, en het wordt langzaam vervangen door e-mails.
Er zijn veel manieren om uw systemen met speling te integreren; Het platform biedt zelfs een bots met een merk waarmee u herinneringen of berichten over uw digitale werkruimte kunt leveren. En probeer deze voor nog meer samenwerkingsverbeteringen cloud opslag opties.
Slack biedt verschillende entiteiten die kunnen worden beschouwd als 'bots':
In deze tutorial kijken we vooral op 'Bot-gebruikers', hoe ze te programmeren (bekijk onze gids naar de Beste code-editors Om uw leven gemakkelijker te maken) en ervoor te zorgen dat ze passen bij uw behoeften. Dit veronderstelt dat u toegang hebt tot een slappe ruimte waar u app-integraties kunt toevoegen. Als u nog niet deel van één bent, zijn ze vrij om te creëren.
In wat volgt, bouwen we een NODEJS-app om te plaatsen naar en reageren op bepaalde berichten in een slapkanaal. We gebruiken de module 'Slackbots', die een wikkel is voor de Slack Real-Time Messaging API.
Ook geïnteresseerd in het maken van een website? Kies een briljant website bouwer en top web hosting service om ermee te gaan.
Deze tutorial gaat ervan uit dat je knooppunt hebt geïnstalleerd. Zo niet, doe dit dan nu. Vervolgens Download de activa je zal nodig hebben. We hebben u een uitgangspunt en een raamwerk gegeven voor de tutorial.
Overal maken we gebruik van modules zoals 'Slackbots' en 'Node-Slack-upload'. Ze kunnen worden verkregen door het installatieopdracht te gebruiken.
npm install
We gebruiken de integratie van de "Bot-gebruiker" voor speling. Om dit te doen, moeten we een token krijgen door naar 'HTTPS: // & LT; YousSlackworkSpace & GT; .Slack.com / Apps / A0F7ys25R-bots' en klik op "Configuratie toevoegen".
Kies een gebruikersnaam voor uw bot (we kunnen deze programmatisch in een later stadium overschrijven) en bevestigen.
Nodig de bot uit op het gewenste kanaal.
Door een BOT-gebruiker te maken krijgt u een token in het volgende formaat:
XOXB-000000-000000-X0X0XXXXXX0XXXX0X
Kopieer het token voor de volgende stap.
We maken gebruik van milieuvariabelen (een '.env'-bestand) om hardcodering en onthullende geheime tokens en sleutels te voorkomen, zoals het slappe token dat we hebben gegenereerd, en de kanaalnaam in uw privé-slappe werkruimte.
Ga je gang en vul het bestand '.NV' in met je token en de naam van het kanaal waarnaar je de Bot-gebruiker hebt uitgenodigd.
Slack_token = xoxb- & lt; yourtoken & gt;
Slack_channel = & lt; kanaalnaam & gt;
Deze volgende stap brengt ons naar 2 bestanden: 'Index.js', waar we een korte blik werpen, en 'Bin / lib / bot.js', waar de meeste van onze ontwikkeling plaatsvindt. In het indexbestand stillen we onze bot door het een naam te geven, wat 'wdmbot' is.
In 'Bot.js' regelen we de parameters van elk exemplaar met naam, token, etc.
// index.js
const Bot = vereisen ('./ bin / lib / bot'). init
('WDMBOT');
//bot.js
const botparams = {
icon_emoji: ': robot_face:',
as_user: false
laat bot;
functie initpot (botname) {
Bot = nieuwe slackbot ({
token: proces.env.slack_token,
Naam: Botname
}
Bekijk de functie 'SendMessage'. We gebruiken de methode 'Postto'. Dit behandelt de posting op elk type kanaal, publiek of privé. Als u alleen op particuliere kanalen wilt plaatsen, kunt u in plaats daarvan 'posttogroep' gebruiken (of 'posttochannel' voor een publiek). Om ons eerste bericht te verzenden, kunnen we code in 'Initbot' toevoegen.
Functie-initbot (botname) {
Bot = / * Zie hierboven * /
SendMessage ('Ik ben hier!');
// Voer nu 'NPM Start' in
U had een bericht van WDMBot in uw kanaal moeten hebben opgemerkt. Het is vermeldenswaard dat in 'botparams', 'as_user' is ingesteld op FALSE, waardoor we de naam en het beeld kunnen overschrijven. Indien ingesteld op TRUE, gebruikt het de naam en afbeelding die u instelt wanneer u het token krijgt.
Je zou de Bot Emoji kunnen veranderen in een afbeelding zoals SO:
Botparams = {
icon_url: 'https://pbs.twimg.com/
Profile_Images / 976112552081010688 /
Wllqvj8d_400x400.jpg ',
as_user: false
};
Berichten plaatsen is handig, maar om de boter interactiever te maken, moeten we posten van andere gebruikers in het kanaal kunnen identificeren. Laten we luisteren naar het berichtevenement en zie dan wat er gebeurt wanneer we in het kanaal typen. We zouden verschillende berichttypen moeten zien die worden ingelogd, zoals 'user_typing' of 'bericht'.
Functie-initbot (botname) {
Bot = / * Zie hierboven * /
Bot.on ('bericht', data = & gt; {
console.log (gegevens);
}
Vervolgens willen we antwoorden op inkomende berichten van het type 'bericht' en misschien naar een specifieke zin of trefwoord, om te voorkomen dat ze absoluut alles zijn. We zorgen ervoor dat kleine slagen in kleine letters vergelijken als we een exacte zin willen matchen. We kunnen ook zien of een bericht '()' een bepaald woord bevat.
Bot.on ('bericht', data = & gt; {
if (data.type === 'bericht') {
if (data.text.tolowercase () === 'waar
ben jij?') {
SendMessage ('Ik ben hier!');
});
Berichten verzonden door Bot-gebruikers hebben verschillende eigenschappen zoals een subtype van 'Bot_Message' en een Bot_ID. Misschien wilt u het beperken van het beperken van alleen menselijke berichten om oneindige lussen van bots te voorkomen die op zichzelf of elkaar reageren, als hun reactie een van de zoekwoorden bevat waarin u luistert.
Bot.on ('bericht', data = & gt; {
if (data.type === 'Message' & AMP; & AMP; Gegevens.
subtype! == 'Bot_Message') {
if (data.text.tolowercase ().
omvat ('hallo')) {
SendMessage ('Hallo, ik ben een bot!');
});
Om een meer gepersonaliseerde reactie te geven, kunt u gebruikmaken van de gebruikers-ID van het bericht waar u op reageert. Slack zal automatisch een ID naar de gebruikersnaam converteren wanneer hij is ingesloten in de tags '& lt; @ & GT;'. Identificatie van wie u beantwoordt, kan nuttig zijn, vooral als er meerdere kanaalleden tegelijkertijd met uw bot interageren.
Bot.on ('bericht', data = & gt; {
if (data.type === 'Message' & AMP; & AMP; Gegevens.
subtype! == 'Bot_Message') {
if (data.text.tolowercase ().
omvat ('hallo')) {
SendMessage ('HELLO & LT; @ $ {data.user}
& GT; Ik ben een robot!');
});
Bots kunnen ook hun reacties bewerken. Alleen hun eigen, hoewel. Dus als je hoopte op een typ-spotting Bot die je berichten automatisch zou corrigeren wanneer het een fout oploopt, is dat niet mogelijk met de huidige opstelling.
Om het bericht bij te werken, definiëren we een nieuwe functie en een wereldwijde boolean die we zullen gebruiken in onze demo.
Laat winstkere = false;
functie-updatemessage (berichtparams) {
bot.updatemessage (MessageParams.channel,
MessageParams.ts, MessageParams.Text,
botparams);
}
Laten we proberen de tekst bij te werken De bot verzendt ons. In dit geval moeten we op een message-evenement een inkomende BOT-bericht beantwoorden, dus wij zullen overeenkomen met die voorwaarde voor de update, en we gebruiken ook de tijdstempel van het originele bericht dat moet worden bijgewerkt. Dat is zo slap, kan identificeren welk bericht om bij te werken, in het geval dat anderen erin worden geplaatst.
IF (Data.type === 'Message' & AMP; & AMP; Data.Subtype! ==
'BOT_MESSAGE' & AMP; & AMP; data.text) {
if (data.text.inclusief ('update')) {
SendMessage ('ik zal updaten in 5
seconden ');
ChangerPLYPLY = TRUE;
if (data.type === 'bericht' & amp; & amp; data.subtype ===
'BOT_MESSAGE' & AMP; & AMP; wisseltisch) {
ChangerPLYPLY = FALSE;
SetTimeout (() = & GT; {
UpdateMessage ({kanaal: gegevens. Channel,
TS: Data.ts, Tekst: 'Ik heb'}) bijgewerkt;
}, 5000);
}
Ephemerale berichten zijn, zoals de naam kan voorstellen, tijdelijk. Ze zijn ook alleen zichtbaar voor één gebruiker en kunnen door hen worden verwijderd. Die soorten berichten kunnen nuttig zijn als een tip of herinnering die niet permanent hoeft te blijven.
if (data.text.tolowercase (). Inclusief ('HR')) {
ephemeralmessage ({
Kanaal: gegevens. Channel,
Gebruiker: gegevens.User,
Tekst: 'Als u contact moet opnemen met HR,
hun e-mail is [email protected] '
// de functie die we bellen
Functie EphemeralMessage (MessageParams) {
bot.posteephleemer (berichtparams.channel,
MessageParams.User, MessageParams.Text,
botparams);
}
Verschillende methoden zullen enigszins verschillende gebruikersparameter (ID of naam, die anders is dan het display_name en real_name). Alleen de gebruikers-ID is echter beschikbaar op berichtenevenementen. We kunnen daarom een opzoeking van een gebruikersnaam implementeren door alle gebruikers te verkrijgen en de ID te koppelen.
Async-functie GetUserName (UserID) {
Return Awain Bot.GetUSERS ()
.then (gegevens = & gt; {
laat lid = data.members.find
(Gebruiker = & GT; {
terugkeer gebruikers.id === UserID;
Retourmid.name;
.catch (err = & gt; console.log (err));
}
Met de nieuwe gebruikers-opzoeken, kunnen we nu directe berichten naar een gebruiker verzenden, wanneer efemerale berichten gewoon niet doen. Merk op dat directe berichten worden beschouwd als een nieuw / ander kanaal, met een andere ID dan het originele kanaal. U kunt ook een kanaalzoeking op dezelfde manier implementeren als de gebruiker die we eerder hebben gedaan.
// in het berichtgebeurtenis
if (data.text.tolowercase (). Inclusief ('bot')) {
SENDDM ({
Gebruiker: gegevens.User,
Tekst: 'Hoe kan ik helpen?'
// de functie die we bellen
Async-functie SENDDM (MessageParams) {
Laat gebruiker = wachten op GetUserName
(MessageParams.User);
Retourneer Bot.PostMessageTouser (gebruiker, bericht
Params.text, botparams, (err, gegevens) = & GT;
console.log (err)
}
Bot-gebruikers hebben ook machtigingen om bestanden en afbeeldingen naar een kanaal te uploaden. Deze functionaliteit wordt echter niet gedekt door 'Slackbots', dus we moeten een nieuwe uploader, zoals hieronder aangetoond. Bereid ook een map 'Assets' bij je projectwortel, met wat afbeeldingen erin.
Laten we een oproep voorbereiden op 'Sendimage ()', gedefinieerd in de volgende stap.
// in initbot ()
uploader = nieuwe slackupload (proces.env.
Slack_token);
// in het berichtgebeurtenis
if (data.text.inclusief ('image')) {
if (! data.upload) {
/ * In dit geval is er geen bericht
subtype,
Dus we controleren of het niet wordt geactiveerd door een
Vorige upload bericht * /
Laat Beeld = Data.Text.Split ('') ;
Sendimage ('Dit is de afbeelding die u bent
gezocht ', afbeelding);
}
We uploaden afbeeldingen met behulp van de uploader en het bestandssysteem (FS) -module. Op voorwaarde dat het bericht van een gebruiker in het formaat "Image & LT; Imagename.extension & GT;" is, en een dergelijk bestand bestaat in de map 'Activa', wordt de afbeelding gelezen en geüpload. Zo niet, dan sturen we een regulier bericht terug (het kan zelfs een efemerale zijn).
Functie Sendimage (bericht, afbeelding) {
uploader.uploadfile ({
Bestand: Fs.creAreadStream (Path.join
(__Dirname, '../../assets/$ entimage}')),
Mimetype: 'Afbeelding / *',
bestandstype: '*',
Titel: afbeelding,
InitialCentment: bericht,
Kanalen: kanaal
}, (err, gegevens) = & GT;
if (err) {
SendMessage (sorry dat ik niet kan vinden
$ {afbeelding} ');
}
U kunt op meerdere kanalen plaatsen met dezelfde botgebruiker, zolang het lid is van elk kanaal waar u een reactie verwacht. Laten we een 'posttoall'-functie maken en de omgevingsvariabelen bijwerken om kanaalnamen te hebben als door komma's gescheiden waarden.
Const-kanalen = proces.env.slack_channel.
Split ('', ');
Const-kanaal = kanalen ;
Functie PostToAll (bericht) {
kanalen.forreach (kanaal = & gt; {
bot.posto (kanaal, bericht, botparams);
}
Af en toe wilt u mogelijk kanalen gebruiken voor foutopsporing of reageren op gebeurtenissen anders met dezelfde bot in verschillende kanalen. Het is aan u om uw kanaalnamenconventie te trainen. We gaan ervan uit voor het volgende voorbeeld dat Slack_channel = WDM-TUTORIAL, WDM-Tutorial-Debug.
Functie Splitmessages (bericht, debugmessage) {
kanalen.forreach (kanaal = & gt; {
const msg = kanaal. Includeert ('debug')
? Debugmessage: bericht;
bot.posto (kanaal, msg, botparams);
}
We zijn hardcoderend antwoorden direct in het bericht. Doorgaan, om dingen beter te maken, wilt u mogelijk triggers en reacties opslaan, hetzij in een database- of JSON-formaat en schakelen tussen deze, afhankelijk van de omstandigheden die zijn voldaan.
// Voorbeeldresponsitem
Invoer: 'HR',
Inputmatch: 'Inclusief',
reactie: 'Als u contact moet opnemen met HR,
hun e-mail is [email protected] ',
Responsetype: 'Ephemeral'
}
Er zijn een paar andere nuttige eigenschappen beschikbaar in de Slack API. Hopelijk heeft deze tutorial een overzicht gegeven van wat mogelijk is voor al uw Bot-behoeften. Verdere bronnen zijn te vinden door het lezen van de 'Slackbots-documentatie , of het volle Slappe API-documentatie
Dit artikel is oorspronkelijk gepubliceerd in kwestie 289 van Creative Web Design Magazine Webdesigner Koop Probleem 289 hier of Abonneer u hier op Web Designer
Gerelateerde artikelen:
(Beeldkrediet: Steve GOAD) Ga aan de slag met ARTRAGE 01. Worden opgezet in artrag..
Selecties zijn een van de meest vitale taken die je zult leren beheersen Photoshop CC Een goede selectie geeft het realisme aan een beeld, om nog maar te zwijgen van de rein..
Elke eerste installatie van clipstudio-verf omvat een opgewonden verkenning van de decoratie-subtool. Het is een ware smorgasbord van natuurlijke, onnatuurlijke en ronduit goofy borstels die ..
Sommige mobiele ontwerpen lijden aan een probleem: ze zien er geweldig uit op het oppervlak, maar beginnen ze te gebruiken en je ..
Van alle Photoshop-projecten, compositerende afbeeldingen in één fantastisch frame is misschien wel de meest aangename en creat..
Toen ik een leuk stuk wilde creëren 3d kunst Met een goofy-uitdrukking zag ik een concept door Randy Bishop Ik hi..
Dit 3d kunst Tutorial zal zich richten op de oprichting van een semi-gestileerde avatar in de karakterscherm van I..
Als freelance kunstenaar werk ik aan een verscheidenheid aan kleine projecten, waarvan de meeste het creëren en textureren ..