Luz jest coraz bardziej popularnym narzędziem dla firm i zespołów, które muszą natychmiast się komunikować. Chociaż może - w niektórych przypadkach - należy uznać za codzienne zakłócenia, ma również świetny potencjał automatyki, oferując dziesiątki integracji, aby zachować wszystko w jednym miejscu, a powoli zastępuje e-maile.
Istnieje wiele sposobów na integrację systemów z luzem; Platforma zapewnia nawet markowym bot, który pozwala dostarczyć przypomnienia lub wiadomości w całym cyfrowym obszarze roboczym. I na jeszcze więcej ulepszeń współpracy, spróbuj tych magazyn w chmurze Opcje.
Luz oferuje różne podmioty, które można uznać za "boty":
W tym samouczku będziemy wyglądać szczególnie w "Bot Użytkownicy", jak je zaprogramować (sprawdź nasz przewodnik po Najlepszy edytorów kodów ułatwić swoje życie) i sprawiają, że pasują do Twoich potrzeb. To zakłada, że masz dostęp do wolnej przestrzeni, w której można dodać integracje aplikacji. Jeśli nie jesteś jeszcze częścią jednego, mogą swobodnie tworzyć.
W tym, co następuje, zbudujemy aplikację NodeJS do opublikowania i reagowania na konkretne wiadomości w kanale luźnym. Używamy modułu "Slackbots", który jest owijką dla luźnego interfejsu API wiadomości w czasie rzeczywistym.
Cię również zainteresowany Tworzeniem strony internetowej? Wybierz genialny Kreator strony internetowej i top hosting usługa, aby iść z nim.
Ten samouczek zakłada, że masz zainstalowany węzeł. Jeśli nie, teraz, prawda. Następnie Pobierz zasoby będziesz potrzebował. Dostarczyliśmy Ci punkt wyjścia i ramy dla samouczka.
Przez cały czas korzystamy z modułów, takich jak "Slackbots" i "węzeł-rozliczeniowy". Można je uzyskać, uruchomienie polecenia instalacji.
npm install
Używamy integracji "Użytkownika Bot" za luz. Aby to zrobić, musimy dostać token, przechodząc do "HTTPS: // & LT; YouSlackworkWspace i GT; .sack.com / Apps / A0F7ys25R-Bots" i kliknij "Dodaj konfigurację".
Wybierz nazwę użytkownika dla swojego bota (możemy opisać to programowo na późniejszym etapie) i potwierdzić.
Zaproś bota na żądany kanał.
Tworząc użytkownik bot, otrzymasz token w następującym formacie:
XOXB-000000-000000-X0X0XXXXX0XXXX0X
Skopiuj token na następny krok.
Skorzystamy z zmiennych środowiskowych (plik "
Idź dalej i wypełnij plik "
Slack_Token = XOXB- & LT;
Slack_channel = & LT; Nazwa kanału & GT;
Ten następny krok zabiera nas do 2 plików: "index.js", które będziemy mieli krótki wygląd, a "bin / lib / bot.js", gdzie ma miejsce większość naszego rozwoju. W pliku indeksu pojawiamy nasz bot, dając mu nazwę, która jest "WDMBOT".
W "bot.js" kontrolujemy parametry każdej instancji z nazwą, token itp.
// index.js
Const Bot = wymaga ("./ bin / lib / bot"). init
("WDMBOT");
//bot.js.
Const Botparams = {
Icon_emoji: ": Robot_face:",
as_user: false.
};
niech bot;
funkcja initbot (botname) {
bot = nowy slackbot ({
Token: proces.env.slack_Token,
Nazwa: Botname.
});
}
Spójrz na funkcję "sendmessage". Używamy metody "postto". Spowoduje to obsługę do dowolnego rodzaju kanału, publicznego lub prywatnego. Jeśli chcesz opublikować tylko kanały prywatne, możesz użyć "posttogroup" (lub "posttochannel" na publiczną). Aby wysłać naszą pierwszą wiadomość, możemy dodać kod w "initbot".
Funkcja initbot (botname) {
bot = / * patrz powyżej * /
sendmessage ("Jestem tutaj!");
}
// teraz uruchom "NPM Start"
Należy zauważyć, że wiadomość z WDMBOT pojawia się w kanale. Warto zauważyć, że w "botsparams", "as_user" jest ustawiony na false, co pozwala nam zastąpić nazwę i obraz. Jeśli jest ustawiony na true, użyje nazwy i obrazu ustawionego podczas uzyskania tokena.
Możesz zmienić bot emoji do obrazu taka:
Const Botparams = {
ICON_URL: "https://pbs.twimg.com/
profil_images / 976112552081010688 /
Wlqvj8d_400x400.jpg ',
as_user: false.
};
Przydatne jest wysyłanie wiadomości, ale aby bot był bardziej interaktywny, musimy być w stanie zidentyfikować posty od innych użytkowników w kanale. Słuchajmy wydarzenia wiadomości, a następnie zobacz, co się dzieje, gdy wpisujemy się do kanału. Powinniśmy zobaczyć różne typy wiadomości, które są rejestrowane, jak "user_typing" lub "wiadomość".
Funkcja initbot (botname) {
bot = / * patrz powyżej * /
bot.on ("wiadomość", dane = & gt; {
konsola.log (dane);
});
}
Następnie chcemy odpowiedzieć na przychodzące wiadomości typu "Message", a może do określonej frazy lub słowa kluczowego, aby uniknąć odpowiedzi na absolutnie wszystko. Upewniamy się, że porównujemy małe struny, jeśli chcemy dopasować dokładną frazę. Możemy również zobaczyć, czy wiadomość "obejmuje ()" konkretne słowo.
Bot.on ("wiadomość", dane = & gt; {
Jeśli (dane.Type === "wiadomość") {
Jeśli (dane.text.tolowercase () === 'gdzie
jesteś?') {
sendmessage ("Jestem tutaj!");
}
}
});
Wiadomości wysłane przez użytkowników Bot mają różne właściwości, takie jak podtyp "bot_message" i bot_id. Możesz ograniczyć odpowiedź na tylko ludzkie wiadomości, aby uniknąć nieskończonych pętli botów odpowiadających samodzielnie lub siebie, jeśli ich odpowiedź obejmuje jeden z słów kluczowych, dla których słuchasz.
Bot.on ("wiadomość", dane = & gt; {
Jeśli (dane.Type === "Wiadomość" & AMP; Dane.
podtyp! == 'bot_message') {
Jeśli (dane.text.tolowercase ().
obejmuje ("hello")) {
sendmessage ('hello, jestem botem!');
}
}
});
Aby dać bardziej spersonalizowaną odpowiedź, możesz wykorzystać identyfikator użytkownika wiadomości, na którą odpowiadasz. Luz automatycznie przekonwertuje identyfikator do nazwy użytkownika po zamknięciu w tagach '@ & gt;'. Identyfikacja, kto odpowiada, może być przydatny, zwłaszcza jeśli wielu członków kanału oddziałują jednocześnie z botem jednocześnie.
Bot.on ("wiadomość", dane = & gt; {
Jeśli (dane.Type === "Wiadomość" & AMP; Dane.
podtyp! == 'bot_message') {
Jeśli (dane.text.tolowercase ().
obejmuje ("hello")) {
sendmessage ('hello & lt; @ $ {dane.user}
& gt; Jestem botem!');
}
}
});
Boty mogą również edytować swoje odpowiedzi. Jednak tylko ich własne. Więc jeśli miałeś nadzieję na botek do zaopatrzenia, który skorygowałoby automatycznie wiadomości, gdy będzie spotkać błąd, nie jest to możliwe z bieżącą konfiguracją.
Aby zaktualizować wiadomość, definiujemy nową funkcję, a globalny boolean, którego użymy w naszym demo.
Let Changereply = False;
Funkcja UpdateMessage (MessageParams) {
bot.updatuMessage (MessageParams.channel,
MessageParams.ts, MessageParams.Text,
botsparams);
}
Spróbujmy zaktualizować tekst, który nas wysyła. W takim przypadku na zdarzeniu wiadomości musimy odpowiedzieć na przychodzącą wiadomość botową, więc dopasujemy ten warunek aktualizacji, a także korzystamy z znacznika czasu oryginalnej wiadomości do aktualizacji. To jest tak luźne, które może zidentyfikować, która wiadomość do aktualizacji, na wypadek, gdyby inni opublikowali pomiędzy.
Jeśli (dane.Type === "wiadomość" & AMP; & AMP; Data.subtype! ==
"bot_message" & amp; & amp; dane.text) {
Jeśli (dane.text.incudes ('Update')) {
sendmessage ("Zaktualizuję w 5
sekundy');
Changereply = true;
}
}
Jeśli (dane.TYPE === "Message '& AMP; & AMP; Data.subtype ===
"bot_message" & amp; & amp; Changereply) {
Changereply = false;
Settimeout (() = & gt; {
UpdateMessage ({kanał: dane.channel,
TS: Data.ts, Tekst: "Zaktualizowałem"});
}, 5000);
}
Wiadomości efemeryczne są, ponieważ imię może sugerować, tymczasowe. Są one również widoczne tylko dla jednego użytkownika i można je usunąć. Te typy wiadomości mogą być przydatne jako wskazówka lub przypomnienie, które nie muszą pozostać na stałe.
Jeśli (dane.Text.tolowerCase (). Zawiera ("HR")) {
efemeralmessage ({
kanał: dane.channel,
Użytkownik: Data.User,
Tekst: "Jeśli chcesz skontaktować się z HR,
Ich e-mail jest [email protected]
});
}
// Funkcja, którą dzwonisz
Funkcja EfemeralMessage (MessageParams) {
bot.postephemeral (MessageParams.channel,
MessageParams.User, MessageParams.Text,
botsparams);
}
Różne metody przyjmą nieco inny parametr użytkownika (dowolny identyfikator lub nazwę, która różni się od nazwy_włączenia i Name Real_N). Jednak tylko identyfikator użytkownika jest dostępny na zdarzeniach wiadomości. Możemy zatem wdrożyć wyszukiwanie nazwy użytkownika, otrzymując wszystkich użytkowników i dopasowując identyfikator.
Async Funkcja GetuserName (UserID) {
Powrót czek na bot.getusers ()
.The (dane = & gt; {
Niech członek = dane.members.find
(user = & gt; {{{
powrót user.id === userid;
});
Return Member.name;
})
.Catch (Err = & GT; Console.log (Err));
}
Dzięki nowym wyszukiwaniu użytkownika możemy teraz wysyłać bezpośrednie wiadomości do użytkownika, gdy wiadomości efemeryczne po prostu nie zrobią. Należy pamiętać, że komunikaty bezpośrednie są uważane za nowy / inny kanał, z innym identyfikatorem niż oryginalny kanał. Możesz także wdrożyć wyszukiwanie kanału w taki sam sposób, jak użytkownik, który wcześniej zrobiliśmy.
// W wydarzeniu wiadomości
Jeśli (dane.text.tolowercase (). Zawiera ("bot")) {
senddm ({
Użytkownik: Data.User,
Tekst: "Jak mogę pomóc?"
});
}
// Funkcja, którą dzwonisz
Async Funkcja SendDM (MessageParams) {
Pozwól użytkownikowi = czekaj na Getusername
(MessageParams.user);
Return bot.postMessageTouser (użytkownik, wiadomość
Params.text, botparams, (Err, dane) = & gt; {
Console.log (Err)
});
}
Użytkownicy botów mają również uprawnienia do przesyłania plików i obrazów do kanału. Ta funkcjonalność nie jest jednak objęta "Slackbots", więc musimy utworzyć nowy przesyłający, jak pokazano poniżej. Przygotuj również folder "Aktywa" w swoim korzeniu projektu, z niektórymi obrazami w nim.
Przygotujmy dzwonek do "Sendimage ()", zdefiniowany w następnym kroku.
// w initbot ()
Uploader = Nowy SlackUpload (proces.ENV.
Slack_Token);
// W wydarzeniu wiadomości
Jeśli (dane.text.incudes ('Image')) {
Jeśli (! data.upload) {
/ * W tym przypadku nie ma wiadomości
podtyp,
sprawdzamy więc, że nie jest wywołany przez
Poprzednia wiadomość o przesyłaniu * /
Niech obraz = dane.text.split ('') ;
sendimage ("to jest obraz ty
poszukiwany ", obraz);
}
}
Przesyłamy obrazy za pomocą modułu Uploader i Moduł FSSYSTEM (FS). Pod warunkiem, że komunikat użytkownika jest w formacie "Image & LT; Imageneame.extension & GT;", a taki plik istnieje w folderze "Aktywa", obraz zostanie przeczytany i przesłany. Jeśli nie, wysyłamy regularną wiadomość (może nawet być efemerycznym).
Funkcja Sendimage (wiadomość, obraz) {
Uploader.uploadFile ({
Plik: fs.creeneadstream (PATH.JOIN
(__dirname "../../assets/$ {image} ')),
Mimetype: "Image / *",
Typ pliku: '*',
Tytuł: obraz,
InitingComment: Wiadomość,
Kanały: kanał
} (Err, Data) = & GT; {
Jeśli (Err) {
sendmessage ("przepraszam, że nie mogę znaleźć
$ {Image} ');
}
});
}
Możesz opublikować wielu kanałów z tym samym użytkownikiem bot, o ile jest członkiem każdego kanału, w którym oczekujesz odpowiedzi. Utwórzmy funkcję "Postoall" i zaktualizuj zmienne środowiskowe, aby mieć nazwy kanałów jako wartości oddzielone przecinkami.
CING kanały = proces.env.slack_channel.
rozdzielać(',');
Const Channel = Kanały ;
Funkcja PostToall (Message) {
kanały.Forach (kanał = & gt; {{
bot.postto (kanał, wiadomość, botsparams);
});
}
Od czasu do czasu możesz chcieć korzystać z kanałów debugowania lub reagować na wydarzenia inaczej z tym samym botem w różnych kanałach. Do Ciebie zależy, aby trenować konwencję nazewnictwa kanału. Załóżmy na następujący przykład, że Slack_Channel = WDM-Tutorial, Debug WDM-Tutorial.
Funkcja Splitmessages (wiadomość, debugmessage) {
kanały.Forach (kanał = & gt; {{
Const Msg = Channel.InCludes ("Debug")
? Debugmessage: Wiadomość;
bot.postto (kanał, msg, botsparams);
});
}
Mamy trudno kodować odpowiedzi bezpośrednio w wiadomości. Idziesz naprzód, aby sprawić, by było bardziej łatwe do zarządzania, możesz przechowywać wyzwalacze i odpowiedzi, w formacie bazy danych lub JSON, a przełączanie między nimi w zależności od warunków.
// Przykładowy element odpowiedzi
{
Wejście: "Hr",
Wprowadź: "Dołącz",
Odpowiedź: "Jeśli trzeba skontaktować się z HR,
Ich e-mail jest [email protected] ",
Odpowiedzi: "Efemeryczny"
}
W luzowym interfejsie jest kilka innych przydatnych właściwości. Mam nadzieję, że to samouczek otrzyma przegląd tego, co możliwe dla wszystkich potrzeb botów. Dalsze zasoby można znaleźć przez czytanie Dokumentacja "Slackbots" lub pełny Dokumentacja luźna API .
Ten artykuł został pierwotnie opublikowany w wydaniu 289 kreatywnego magazynu projektowania stron internetowych Projektant stron internetowych . Kup problem 289 tutaj lub Subskrybuj tutaj projektant stron internetowych .
Powiązane artykuły:
Przy uwzględnieniu powtarzających się wzorów i wzorów w ilustracji, niewiele narzędzi będzie tak przydatne lub jako potę�..
Świetny sposób na poprawę doświadczenie użytkownika Na twojej stronie jest dodanie slajdów; Tworzy sposób łapania wzrok dla użytkowników, aby znaleźć ..
W tym samouczku zajmiemy się sposobami zmiany stylów CSS elementów, a także pozornie stylizując rodziców, w zależności od..
Nie przegap VEREX 2018. , nasze debiutanckie wydarzenie dla społeczności CG. Zapakowany..
Deweloperzy Frontend mają tendencję do myślenia w prostokątach; Prostokąty wewnątrz prostokątów wewnątrz prostokątów w..
Szkoda, że nie możesz odebrać nowej umiejętności, ale nie mogę znaleźć czasu, aby usiąść i uczyć się? Adobe's. Zrób teraz listę odtwarzania może być po p..
Dziś przystępne platformy rozwijające się połączone produkty cieszą się szeroką dostępnością, a my widzieliśmy na zw..
Zostanie poproszony o malowanie zły tyłek Królowej przez nikt inny niż mój ulubiony magazyn, Imaginefx, dostał mnie bardzo ..