Slack ist ein zunehmend beliebtes Werkzeug für Unternehmen und Teams, die sofort kommunizieren müssen. Während es in einigen Fällen - als tägliche Unterbrechung betrachtet wird, hat sie auch ein großartiges Automatisierungspotenzial, das Dutzende von Integrationen bietet, um alles an einem Ort zu halten, und es wird langsam E-Mails ersetzt.
Es gibt viele Möglichkeiten, Ihre Systeme mit der Suche zu integrieren. Die Plattform bietet sogar ein Branded Bot, mit dem Sie Erinnerungen oder Nachrichten in Ihrem digitalen Arbeitsbereich liefern können. Und probieren Sie diese für noch mehr Collaboration-Verbesserungen aus Cloud-Speicherung. Optionen.
Slack bietet verschiedene Entitäten an, die als "Bots" betrachtet werden könnten:
In diesem Tutorial sehen wir besonders auf "Bot-Benutzer" an, wie Sie sie programmieren können (checken Sie unseren Leitfaden an beste Code-Editoren. um dein Leben einfacher zu machen) und mache sie deinen Bedürfnissen. Dies setzt voraus, dass Sie Zugriff auf einen Slack-Speicherplatz haben, in dem Sie App-Integrationen hinzufügen können. Wenn Sie noch kein Teil eines Teils sind, können sie erstellen.
In dem, was folgt, erstellen wir eine Nodejs-App, um auf dem Post zu posten und auf bestimmte Nachrichten in einem Slack-Kanal zu antworten. Wir verwenden das Modul 'Slackbots', das ist ein Wrapper für die Slack Echt-Time-Messaging-API.
Auch interessiert an einer Website? Wählen Sie einen brillanten Webseitenersteller und Top. Web-Hosting Service, um damit zu gehen.
Dieses Tutorial geht davon aus, dass Sie den Knoten installiert haben. Wenn nicht, tun Sie dies jetzt. Dann Laden Sie das Assets herunter Du brauchst. Wir haben Ihnen einen Ausgangspunkt und einen Rahmen für das Tutorial zur Verfügung gestellt.
Inszeit nutzen wir Module wie 'Slackbots' und 'Node-Slack-Upload'. Sie können durch Ausführen des Installationsbefehls erhalten werden.
npm install
Wir verwenden die Integration "Bot User" für den Spielraum. Dazu müssen wir ein Token bekommen, indem wir zu "https: // & lt; youslackworkspace & gt; .slack.com / apps / a0f7ys25r-Bots" und auf "Konfiguration hinzufügen" klicken.
Wählen Sie einen Benutzernamen für Ihren Bot (wir können diese programmgesteuerlich später überschreiben) und bestätigen.
Laden Sie den Bot in den gewünschten Kanal ein.
Wenn Sie einen Bot-Benutzer erstellen, erhalten Sie ein Token im folgenden Format:
xoxb-000000-000000-x0x0xxxxx0xxxx0x
Kopieren Sie das Token für den nächsten Schritt.
Wir nutzen von Umgebungsvariablen (A '.env' -Datei), um Hartkodierungen zu vermeiden und geheime Token und Schlüssel aufzuzeigen, wie das Slack-Token, das wir generiert haben, und den Kanalnamen in Ihrem privaten Slack-Arbeitsbereich.
Gehen Sie weiter und füllen Sie die Datei '.env' mit Ihrem Token ein und den Namen des Kanals, an den Sie den Bot-Benutzer eingeladen haben.
slack_token = xoxb- & lt; yourtoken & gt;
Slack_channel = & lt; Kanal-Name & GT;
Dieser nächste Schritt führt uns auf 2 Dateien: 'Index.js', die wir kurz ansehen, und "bin / lib / bot.js", wo der größte Teil unserer Entwicklung stattfindet. In der Indexdatei, instanziieren wir unseren Bot, indem wir ihm einen Namen geben, der "WDMBOT" ist.
In 'bot.js' steuern wir die Parameter jeder Instanz mit Namen, Token usw.
// index.js
const bot = erfordern ('./ bin / lib / bot'). init
('Wdmbot');
//bot.js.
const botparams = {
icon_emoji: ': robot_face:',
AS_USER: FALSE.
};
Lass Bot;
Funktion InitBot (Botname) {
Bot = New Slackbot ({{
Token: process.env.slack_token,
Name: Botname.
});
}
Schauen Sie sich die Funktion "SendMessage" an. Wir verwenden die "Postto" -Methode. Dies wird mit der Buchung an jede Art von Kanal, Öffentlichkeit oder Privatbewertung umgehen. Wenn Sie nur auf private Kanäle posten möchten, können Sie stattdessen 'posttogroup' (oder 'postochannel' für eine öffentliche) verwenden. Um unsere erste Nachricht zu senden, können wir Code in 'InitBot' hinzufügen.
Funktion InitBot (Botname) {
bot = / * siehe oben * /
SendMessage ('Ich bin hier!');
}
// Jetzt rennen 'NPM Start'
Sie sollten eine Nachricht von WDMBOT in Ihrem Kanal festgestellt haben. Es ist erwähnenswert, dass in 'BOTARAMS', 'AS_USER' auf FALSE gesetzt ist, mit dem wir den Namen und das Bild überschreiben können. Wenn auf TRUE eingestellt ist, wird der Name und das Bild verwendet, das Sie bei der Herausforderung des Tokens einstellen.
Sie könnten den Bot Emoji in ein Bild wie so ändern:
const botparams = {
icon_url: 'https://pbs.twimg.com/
Profil_images / 976112552081010688 /
Wllqvj8d_400x400.jpg ',
AS_USER: FALSE.
};
Die Buchungsnachrichten sind nützlich, aber um den Bot mehr interaktiv zu machen, müssen wir in der Lage sein, Beiträge von anderen Benutzern im Kanal identifizieren zu können. Lassen Sie uns das Message-Event anhören, und dann sehen Sie, was passiert, wenn wir in den Kanal eingeben. Wir sollten verschiedene Nachrichtenarten sehen, die angemeldet sind, wie 'user_typing' oder 'Nachricht'.
Funktion InitBot (Botname) {
bot = / * siehe oben * /
bot.on ('Nachricht', Daten = & gt; {
console.log (Daten);
});
}
Als nächstes möchten wir auf eingehende Meldungen des Typs "Nachricht" und vielleicht auf einen bestimmten Satz oder ein bestimmtes Schlüsselwort antworten, um es zu vermeiden, auf absolut alles zu antworten. Wir stellen sicher, dass Sie Kleinbuchstaben vergleichen, wenn wir mit einem exakten Satz entsprechen möchten. Wir könnten auch sehen, ob eine Nachricht 'einschließlich ()' ein bestimmtes Wort enthält.
bot.on ('Nachricht', Daten = & gt; {
if (Data.type === 'Nachricht') {
if (data.text.towercase () === 'wo
bist du?') {
SendMessage ('Ich bin hier!');
}
}
});
Nachrichten, die von Bot-Benutzern gesendet werden, haben verschiedene Eigenschaften wie ein Subtyp von 'bot_message' und einem bot_id. Vielleicht möchten Sie die Beantwortung auf nur menschliche Botschaften einschränken, um unendliche Schlaufen von Bots zu vermeiden, die auf sich selbst oder einander antworten, wenn ihre Antwort eines der Schlüsselwörter enthält, für die Sie hören.
bot.on ('Nachricht', Daten = & gt; {
if (Data.type === 'Nachricht' & amp; & amp; Daten.
Subtyp! == 'bot_message') {
if (Data.text.towercase ().
beinhaltet ('hallo')) {
SendMessage ('Hallo, ich bin ein Bot!');
}
}
});
Um eine personalisierte Antwort anzugeben, können Sie die Benutzer-ID der von Ihnen beantworteten Nachricht nutzen. Slack konvertiert automatisch eine ID in den Benutzernamen, wenn er in den Tags '& lt; @ & gt;' eingeschlossen ist. Wenn Sie identifizieren, auf wen Sie antworten, können nützlich sein, insbesondere wenn mehrere Kanalmitglieder gleichzeitig mit Ihrem Bot interagieren.
bot.on ('Nachricht', Daten = & gt; {
if (Data.type === 'Nachricht' & amp; & amp; Daten.
Subtyp! == 'bot_message') {
if (Data.text.towercase ().
beinhaltet ('hallo')) {
SendMessage ('hallo & lt; @ $ {data.user}
& gt; Ich bin ein Bot!');
}
}
});
Bots können auch ihre Antworten bearbeiten. Nur ihre eigenen. Wenn Sie also auf einen Tippfehler-Bot hoffen, der Ihre Nachrichten automatisch korrigieren würde, wenn er einen Fehler spott, ist das mit dem aktuellen Setup nicht möglich.
Um die Nachricht zu aktualisieren, definieren wir eine neue Funktion und einen globalen Boolean, den wir in unserer Demo verwenden werden.
Lassen Sie sich von ChangeReply = FALSE;
Funktion UpdateMessage (MessageParams) {
bot.updatemessage (MessageParams.Channel,
MessageParams.ts, MessageParams.text,
Botparams);
}
Lassen Sie uns versuchen, den Text zu aktualisieren, den der Bot uns sendet. In diesem Fall müssen wir auf einem Message-Ereignis auf eine eingehende Bot-Nachricht antworten, sodass wir diesem Zustand für das Update übereinstimmen, und wir verwenden auch den Zeitstempel der ursprünglichen Nachricht, die aktualisiert werden sollen. Das ist so selten, dass die Meldung zur Aktualisierung identifiziert wird, falls andere eingeht.
if (Data.type === 'Nachricht' & amp; & amp; data.syl! ==
'bot_message' & amp; & amp; data.text) {
if (Data.text.includes ('update')) {
SendMessage ('Ich werde in 5 aktualisieren
Sekunden ');
ChangeRePly = true;
}
}
if (data.type === 'Nachricht' & amp; & amp; daty.syn ===
'bot_message' & amp; & amp; changeReply) {
ChangeRePly = FALSE;
settimeout (() = & gt; {
UpdateMessage ({Kanal: Data.Channel,
TS: Data.ts, Text: 'Ich habe aktualisiert'});
}, 5000);
}
Ephemal-Nachrichten sind, wie der Name vorschlagen kann, vorübergehend. Sie sind auch nur für einen Benutzer sichtbar und können von ihnen gelöscht werden. Diese Arten von Nachrichten können als Tipp oder Erinnerung nützlich sein, die nicht dauerhaft bleiben müssen.
if (Data.text.towercase (). Beinhaltet ('hr')) {
ephemeralmessage ({{
Kanal: Data.Channel,
Benutzer: data.user,
Text: 'Wenn Sie mit HR kontaktieren müssen,
Ihre E-Mail ist [email protected] '
});
}
// Die Funktion, die wir anrufen
Funktion Ephemeralmessage (MessageParams) {
bot.postoperal (MessageParams.Channel,
MessageParams.user, MessageParams.text,
Botparams);
}
Verschiedene Methoden dauern ein wenig unterschiedlicher Benutzerparameter (entweder von ID oder Name, der sich vom Display_name und Real_name unterscheidet). Nur die Benutzer-ID ist jedoch bei Nachrichtenereignissen verfügbar. Wir können daher einen Benutzernamen-Lookup implementieren, indem wir alle Benutzer erhalten und mit der ID abgestimmt sind.
Async-Funktion GetUSername (UserID) {
Rückkehr warten Sie bot.getusers ()
.das (data = & gt; {
Lassen Sie Mitglied = Data.members.find
(user = & gt; {
return user.id === userid;
});
Return Member.name;
})
.Catch (ERR = & GT; console.log (ERR));
}
Mit dem neuen Benutzer-Lookup können wir nun direkte Nachrichten an einen Benutzer senden, wenn ephemerale Nachrichten einfach nicht tun. Beachten Sie, dass direkte Nachrichten als neuer / unterschiedlicher Kanal angesehen werden, mit einer anderen ID als der ursprüngliche Kanal. Sie können auch einen Kanal-Lookup auf dieselbe Weise implementieren wie der Benutzer, den wir zuvor gemacht haben.
// In der Meldungsereignis
if (data.text.towercase (). beinhaltet ('bot')) {
senddm ({{
Benutzer: data.user,
Text: 'Wie kann ich helfen?'
});
}
// Die Funktion, die wir anrufen
Async-Funktion SendDM (MessageParams) {
LASSEN SIE User = GetUserName warten
(MessageParams.user);
Bot.PostmessAgsetouser zurückgeben (Benutzer, Nachricht
Params.text, botparams, (ERR, Daten) = & gt; {
console.log (ERR)
});
}
Bot-Benutzer verfügen auch über Berechtigungen, um Dateien und Bilder auf einen Kanal hochzuladen. Diese Funktionalität wird jedoch nicht von "Slackbots" behandelt, sodass wir einen neuen Uploader instanziieren müssen, wie nachstehend gezeigt. Bereiten Sie auch einen Ordner "Assets" an Ihre Projektwurzel vor, mit einigen Bildern darin.
Lassen Sie uns einen Anruf zu "SendImage ()" vorbereiten, der im nächsten Schritt definiert ist.
// in initBot ()
Uploader = New SlackuLoad (Prozess.env.
Slack_token);
// Im Nachrichtenereignis
if (Data.text.includes ('Image')) {
if (! Data.UPLOAD) {
/ * In diesem Fall gibt es keine Nachricht
subtyp,
Also prüfen wir, dass es nicht von einem ausgelöst wird
Vorherige Upload-Nachricht * /
lass Bild = data.text.split ('') ;
SENDIMAGE ('Dies ist das Bild, das Sie
gewünscht ', Bild);
}
}
Wir laden Bilder mit dem Uploader und dem Dateisystem (FSYSystem (FS) hoch. Sofern eine Benutzermeldung im Format "Image & lt; imageName.exteny & gt;" ist, und eine solche Datei ist im Ordner "Assets" vorhanden, das Bild wird gelesen und hochgeladen. Wenn nicht, senden wir eine reguläre Nachricht zurück (es könnte sogar ein ephemerales sein).
Funktion SendImage (Nachricht, Bild) {
Uploader.UPLOADFILE ({
Datei: Fs.CreaterAheArtstream (Pfad.join
(__dirname, '../../assets/$,})),
Mimeterype: 'Bild / *',
Dateityp: '*',
Titel: Bild,
InitialComment: Nachricht,
Kanäle: Kanal
}, (ERR, Daten) = & gt; {
Wenn (ERR) {
SendMessage ("Entschuldigung, ich kann nicht finden
$ {Bild} ');
}
});
}
Sie können an mehrere Kanäle mit demselben Bot-Benutzer posten, solange es sich um ein Mitglied jedes Kanals handelt, in dem Sie eine Antwort erwarten. Lassen Sie uns eine "Posttoall" -Funktion erstellen und die Umgebungsvariablen aktualisieren, um Kanalnamen als Kommas getrennte Werte zu erhalten.
COND-Kanäle = Prozess.env.sheck_channel.
Teilt(',');
const Channel = Kanäle ;
Funktion posttoall (Nachricht) {
Channels.foreach (channel = & gt; {
bot.postto (Kanal, Nachricht, Botparams);
});
}
Gelegentlich möchten Sie möglicherweise Kanäle zum Debuggen verwenden oder auf Ereignisse anders mit demselben Bot in verschiedenen Kanälen reagieren. Es liegt an Ihnen, Ihre Kanalnamenskonvention zu trainieren. Wir gehen aus dem folgenden Beispiel davon aus, dass Slack_Channel = WDM-Tutorial, WDM-TUTORIAL-Debugy.
Funktion SplitMessages (Nachricht, Debugmessage) {
Channels.foreach (channel = & gt; {
const msg = channel.includes ('debug')
? Debugmessage: Nachricht;
bot.postto (Kanal, MSG, Botparams);
});
}
Wir sind auf der Nachricht anhörende Antworten direkt in der Nachricht gewesen. Um die Dinge vorwärts zu machen, können Sie die Dinge überschaubarer machen, Sie möchten möglicherweise Auslöser und Antworten speichern, entweder in einem Datenbank- oder JSON-Format, und wechseln Sie je nach den erfüllten Bedingungen zwischen ihnen.
// Beispiel Antwortelement
{
Eingabe: 'hr',
inputmatch: 'einschließen',
Antwort: 'Wenn Sie mit HR kontaktieren müssen,
Ihre E-Mail ist [email protected] ',
Responseype: 'Ephemeral'
}
Es gibt ein paar andere nützliche Eigenschaften in der Slack-API. Hoffentlich hat dieses Tutorial einen Überblick darüber erhalten, was für alle Ihre Bot-Bedürfnisse möglich ist. Weitere Ressourcen finden Sie mit dem Lesen der 'Slackbots' Dokumentation oder der volle Lockere API-Dokumentation. .
Dieser Artikel wurde ursprünglich in Ausgabe 289 des kreativen Webdesign-Magazins veröffentlicht Webdesigner . AUSGABEN 289 Kaufen oder Abonnieren Sie den Webdesigner hier .
Zum Thema passende Artikel:
(Bild Kredit: artem solop) Ich habe immer bemüht, meinen persönlichen Stil zu entwickeln, eine künstlerische Stimm..
(Bildkredite: Zukunft) GRAV ist ein Content-Management-System (CMS) mit einem Unterschied. Content-Management-Systeme..
Der Mahlstick (oder Maulstick, wie es manchmal bekannt ist) ist ein stabilisierendes Trägerwerkzeug, das von Malern verwendet wi..
Wenn Sie schon immer wissen wollten, wie man Federn zieht, und sie super realistisch machen, sind Sie an der richtigen Stelle. Dieser Schritt-für-Schritt-Guide bietet Hinweise und Tipps, um ..
In dieser Meisterklasse zeige ich die grundlegenden Schritte, die Sie benötigen, um zu lernen Wie zeichnet man Zahlen? ..
UX-Strategie ist ein Prozess, der vor dem Entwurf oder der Entwicklung eines digitalen Produkts begonnen werden sollt..
In den letzten Jahren habe ich meine Fähigkeiten in Beleuchtung und Rendering sowie in einigen anderen Techniken mit verschieden..
Mit Pixate können Sie schnell prototype interaktive mobile Mobiles, die auf Android- und iOS-Geräten in der Vorschau angezeigt werden können. In diesem Tutorial werden wir es verwenden, um..