Slack là một công cụ ngày càng phổ biến cho các doanh nghiệp và các đội cần giao tiếp ngay lập tức. Mặc dù có thể - trong một số trường hợp - được coi là một sự gián đoạn hàng ngày, nhưng nó cũng có tiềm năng tự động hóa tuyệt vời, cung cấp hàng chục tích hợp để giữ mọi thứ ở một nơi, và nó đang dần thay thế các email.
Có nhiều cách để tích hợp hệ thống của bạn với sự chậm chạp; Nền tảng thậm chí còn cung cấp một bot có thương hiệu cho phép bạn cung cấp lời nhắc hoặc tin nhắn trên không gian làm việc kỹ thuật số của bạn. Và để cải tiến nhiều hơn nữa, hãy thử những lưu trữ đám mây tùy chọn.
Slack cung cấp các thực thể khác nhau có thể được coi là 'bot':
Trong hướng dẫn này, chúng ta sẽ tìm kiếm đặc biệt tại 'Người dùng Bot', cách lập trình chúng (kiểm tra hướng dẫn của chúng tôi về Biên tập viên mã tốt nhất để làm cho cuộc sống của bạn dễ dàng hơn) và làm cho chúng phù hợp với nhu cầu của bạn. Presupposes này bạn có quyền truy cập vào một không gian chùng trong đó bạn có thể thêm các tích hợp ứng dụng. Nếu bạn chưa có một phần của một, họ có thể tự do tạo.
Trong những gì sau, chúng tôi xây dựng một ứng dụng NodeJS để đăng và trả lời các tin nhắn cụ thể trong một kênh chùng. Chúng tôi sử dụng mô-đun 'Slackbots', đó là trình bao bọc cho API nhắn tin thời gian thực chùng.
Cũng quan tâm đến việc tạo một trang web? Chọn một thứ rực rỡ người tạo ra trang web và đầu trang web hosting dịch vụ đi với nó.
Hướng dẫn này giả định bạn đã cài đặt nút. Nếu không, hãy làm như vậy bây giờ. Sau đó Tải tài sản có thể bạn sẽ cần. Chúng tôi đã cung cấp cho bạn một điểm khởi đầu và khung cho hướng dẫn.
Trong suốt, chúng tôi sử dụng các mô-đun như 'Slackbots' và 'node-slack-upload'. Chúng có thể có được bằng cách chạy lệnh cài đặt.
npm install
Chúng tôi đang sử dụng tích hợp "người dùng bot" để chùng. Để làm như vậy, chúng ta cần phải có mã thông báo bằng cách đi đến 'https: // & lt; bạnslackworkspace & gt; .slack.com / apps / a0f7ys25r-bot' và nhấp vào "Thêm cấu hình".
Chọn tên người dùng cho Bot của bạn (chúng tôi có thể ghi đè theo chương trình này theo chương trình ở giai đoạn sau) và xác nhận.
Mời bot đến kênh mong muốn.
Bằng cách tạo người dùng BOT, bạn sẽ nhận được mã thông báo theo định dạng sau:
XOXB-000000-000000-X0XXXXXXX0XXXX0X
Sao chép mã thông báo cho bước tiếp theo.
Chúng tôi sử dụng các biến môi trường (tệp '.env') để tránh mã hóa cứng và tiết lộ các mã thông báo và phím bí mật, như mã thông báo chùng chúng tôi đã tạo và tên kênh trong không gian làm việc chùng riêng của bạn.
Hãy tiếp tục và điền vào tệp '.env' bằng mã thông báo của bạn và tên của kênh mà bạn đã mời người dùng bot.
Slack_Token = XOXB- & lt; yourtoken & gt;
Slack_Channel = & lt; Kênh-Tên & GT;
Bước tiếp theo này đưa chúng tôi đến 2 tệp: 'index.js', chúng tôi sẽ có một cái nhìn ngắn gọn và 'bin / lib / bot.js', nơi hầu hết sự phát triển của chúng tôi diễn ra. Trong tệp chỉ mục, chúng tôi khởi tạo bot của chúng tôi bằng cách đặt tên cho nó, đó là 'wdmbot'.
Trong 'bot.js', chúng tôi kiểm soát các tham số của từng phiên bản với tên, mã thông báo, v.v.
// index.js
const bot = yêu cầu ('./ bin / lib / bot'). init
('Wdmbot');
//bot.js.
const botparams = {
icon_emoji: ': robot_face:',
as_user: sai.
};
để bot;
Chức năng initBot (BOTNAME) {
bot = sladbot mới ({
mã thông báo: process.env.slack_token,
Tên: BOTNAME.
});
}
Hãy xem chức năng 'SendMessage'. Chúng tôi sử dụng phương pháp 'postto'. Điều này sẽ xử lý việc đăng lên bất kỳ loại kênh, công cộng hoặc riêng tư. Nếu bạn chỉ muốn đăng lên các kênh riêng tư, bạn có thể sử dụng 'posttogroup' thay vào đó (hoặc 'posttochannel' cho một công khai). Để gửi tin nhắn đầu tiên của chúng tôi, chúng tôi có thể thêm mã trong 'initbot'.
Chức năng initBot (BOTNAME) {
bot = / * xem ở trên * /
SendMessage ('Tôi ở đây!');
Không thể
// Bây giờ chạy 'Bắt đầu NPM'
Bạn nên nhận thấy một thông báo từ WDMBOT xuất hiện trong Kênh của bạn. Điều đáng chú ý là trong 'botparams', 'as_user' được đặt thành false, cho phép chúng ta ghi đè tên và hình ảnh. Nếu được đặt thành TRUE, nó sẽ sử dụng tên và hình ảnh bạn đặt khi nhận mã thông báo.
Bạn có thể thay đổi biểu tượng cảm xúc BOT thành một hình ảnh như vậy:
Const botparams = {
icon_url: 'https://pbs.twimg.com/
hồ sơ_images / 976112552081010688 /
Wllqvj8d_400x400.jpg ',
as_user: sai.
};
Gửi tin nhắn là hữu ích, nhưng để làm cho bot tương tác nhiều hơn, chúng ta cần có thể xác định các bài đăng từ những người dùng khác trong kênh. Hãy lắng nghe sự kiện tin nhắn, sau đó xem điều gì xảy ra khi chúng ta nhập vào kênh. Chúng ta sẽ thấy các loại tin nhắn khác nhau đang được ghi lại, giống như 'user_typing' hoặc 'tin nhắn'.
Chức năng initBot (BOTNAME) {
bot = / * xem ở trên * /
bot.on ('tin nhắn', dữ liệu = & gt; {
Console.log (dữ liệu);
});
}
Tiếp theo, chúng tôi muốn trả lời các tin nhắn đến của loại 'tin nhắn' và có thể đến một cụm từ hoặc từ khóa cụ thể, để tránh trả lời hoàn toàn mọi thứ. Chúng tôi đảm bảo so sánh các chuỗi chữ thường nếu chúng tôi muốn kết hợp một cụm từ chính xác. Chúng ta cũng có thể xem nếu một thông báo 'bao gồm ()' một từ cụ thể.
bot.on ('tin nhắn', dữ liệu = & gt; {
if (data.type === 'tin nhắn') {
if (data.text.tlovase () === 'ở đâu
Bạn có phải?') {
SendMessage ('Tôi ở đây!');
Không thể
Không thể
});
Các tin nhắn được gửi bởi người dùng bot có nhiều thuộc tính khác nhau như một kiểu con 'bot_message' và bot_id. Bạn có thể muốn hạn chế trả lời các tin nhắn được đăng ở người để tránh các vòng lặp vô hạn của bot trả lời chính họ hoặc nhau, nếu phản hồi của chúng bao gồm một trong những từ khóa bạn đang nghe.
bot.on ('tin nhắn', dữ liệu = & gt; {
if (data.type === 'tin nhắn' & amp; & amp; dữ liệu.
subtype! == 'bot_message') {
if (data.text.tlovase ().
bao gồm ('xin chào')) {
SendMessage ('Xin chào, tôi là một bot!');
Không thể
Không thể
});
Để đưa ra một phản hồi được cá nhân hóa hơn, bạn có thể tận dụng ID người dùng của tin nhắn bạn đang trả lời. Slack sẽ tự động chuyển đổi ID thành tên người dùng khi được đính vào trong các thẻ '& lt; @ & gt;'. Xác định người bạn đang trả lời ai có thể hữu ích, đặc biệt nếu nhiều thành viên kênh đang tương tác với BOT của bạn cùng một lúc.
bot.on ('tin nhắn', dữ liệu = & gt; {
if (data.type === 'tin nhắn' & amp; & amp; dữ liệu.
subtype! == 'bot_message') {
if (data.text.tlovase ().
bao gồm ('xin chào')) {
SendMessage ('Xin chào & lt; @ $ {data.user}
& gt; Tôi là một bot! ');
Không thể
Không thể
});
Bot cũng có thể chỉnh sửa câu trả lời của họ. Chỉ của riêng họ, mặc dù. Vì vậy, nếu bạn đang hy vọng một bot phát hiện lỗi chính tả sẽ tự động sửa tin nhắn của mình khi nó phát hiện ra lỗi, điều đó là không thể với thiết lập hiện tại.
Để cập nhật tin nhắn, chúng tôi xác định một chức năng mới và Boolean toàn cầu mà chúng tôi sẽ sử dụng trong bản demo của chúng tôi.
Hãy để changereply = false;
Chức năng UpdateMessage (MessageParams) {
bot.updatemessage (MessageParams.Channel,
MessageParams.ts, MessageParams.Text,
botparams);
}
Hãy thử cập nhật văn bản Bot gửi cho chúng tôi. Trong trường hợp này, trên một sự kiện tin nhắn, chúng ta cần trả lời tin nhắn BOT đến, vì vậy chúng tôi sẽ khớp với điều kiện đó cho bản cập nhật và chúng tôi cũng sử dụng dấu thời gian của thông điệp ban đầu sẽ được cập nhật. Đó là quá chậm có thể xác định thông báo nào để cập nhật, trong trường hợp những người khác được đăng ở giữa.
Nếu (data.type === 'tin nhắn' & amp; & amp; data.subtype! ==
'bot_message' & amp; & amp; data.text) {
if (data.text.includes ('update')) {
SendMessage ('Tôi sẽ cập nhật trong 5
giây ');
Changereply = TRUE;
Không thể
Không thể
if (data.type === 'tin nhắn' & amp; & amp; data.subtype ===
'bot_message' & amp; & amp; changereply) {
changereply = false;
setTimeout (() = & gt; {
updateMessage ({kênh: data.channel,
TS: Data.ts, văn bản: 'Tôi đã cập nhật'});
}, 5000);
}
Tin nhắn phù du là, như tên có thể đề xuất, tạm thời. Họ cũng chỉ hiển thị cho một người dùng và có thể bị xóa bởi họ. Những loại tin nhắn đó có thể hữu ích như một mẹo hoặc nhắc nhở không cần phải ở lại vĩnh viễn.
if (data.text.tlovase (). Bao gồm ('HR')) {
ephemeralmessage ({
Kênh: Data.Channel,
Người dùng: Data.user,
Văn bản: 'Nếu bạn cần liên hệ với nhân sự,
email của họ là [email protected] '
});
Không thể
// chức năng chúng ta đang gọi
Chức năng EphemeralMessage (MessageParams) {
bot.posephemeral (MessageParams.Channel,
MessageParams.user, MessageParams.Text,
botparams);
}
Các phương thức khác nhau sẽ lấy tham số người dùng khác nhau (ID hoặc tên, khác với Display_name và real_name). Tuy nhiên, chỉ có ID người dùng có sẵn trên các sự kiện tin nhắn. Do đó, chúng tôi có thể thực hiện tra cứu tên người dùng bằng cách nhận tất cả người dùng và phù hợp với ID.
GetUserName chức năng Async (userid) {
trả về await bot.getusers ()
.then (dữ liệu = & gt; {
Hãy để thành viên = data.members.find
(user = & gt; {
trả về user.id === userid;
});
TRẢ LẠI THÀNH VIÊN.NAME;
})
.catch (err = & gt; console.log (err));
}
Với tra cứu người dùng mới, giờ đây chúng ta có thể gửi tin nhắn trực tiếp đến người dùng, khi tin nhắn phù du sẽ không làm. Lưu ý rằng các tin nhắn trực tiếp được coi là một kênh mới / khác nhau, với một ID khác với kênh gốc. Bạn cũng có thể thực hiện một tra cứu kênh giống như cách mà người dùng chúng tôi đã thực hiện trước đó.
// trong sự kiện tin nhắn
if (data.text.tlovase (). Bao gồm ('bot')) {
senddm ({
Người dùng: Data.user,
Văn bản: 'Làm thế nào tôi có thể giúp đỡ?'
});
Không thể
// chức năng chúng ta đang gọi
Hàm async senddm (MessageParams) {
Hãy để người dùng = đang chờ getUsername
(MessageParams.user);
return bot.postmessagetouser (người dùng, tin nhắn
Params.text, botparams, (err, data) = & gt; Đồn là
Console.log (ERR)
});
}
Người dùng BOT cũng có quyền để tải tệp và hình ảnh lên kênh. Chức năng này không được bảo vệ bởi 'Slackbots', vì vậy chúng tôi phải khởi tạo trình tải lên mới, như được chứng minh dưới đây. Cũng chuẩn bị thư mục 'tài sản' tại gốc dự án của bạn, với một số hình ảnh trong đó.
Hãy chuẩn bị một cuộc gọi đến 'SendImage ()', được xác định trong bước tiếp theo.
// trong initbot ()
Trình tải lên = Slackupload mới (Process.env.
Slack_token);
// trong sự kiện tin nhắn
if (data.text.includes ('image')) {
Nếu (! Data.upload) {
/ * Trong trường hợp này, không có tin nhắn
Subtype,
Vì vậy, chúng tôi kiểm tra xem nó không được kích hoạt bởi một
Tin nhắn tải lên trước đó * /
Đặt image = data.text.split ('') ;
SendImage ('Đây là hình ảnh bạn
muốn ', hình ảnh);
Không thể
}
Chúng tôi tải lên hình ảnh bằng trình tải lên và mô-đun hệ thống tệp (FS). Với điều kiện là thông báo của người dùng nằm trong định dạng "hình ảnh & lt; hình ảnh.extension & gt;", và một tệp như vậy tồn tại trong thư mục 'Tài sản', hình ảnh sẽ được đọc và tải lên. Nếu không, chúng tôi gửi lại một tin nhắn thông thường (thậm chí có thể là một tin nhắn phù du).
Chức năng SendImage (tin nhắn, hình ảnh) {
uploader.uploadfile ({
Tập tin: fs.createreadstream (PATH.JOIN
(__dirname, '../../assets/$ {image}')),
Mimetype: 'hình ảnh / *',
loại tệp: '*',
Tiêu đề: Hình ảnh,
Khởi tạo: Tin nhắn,
Kênh: Kênh.
}, (err, dữ liệu) = & gt; Đồn là
nếu (err) {
SendMessage ('xin lỗi tôi không thể tìm thấy
$ {image} ');
Không thể
});
}
Bạn có thể đăng lên nhiều kênh với cùng một người dùng bot, miễn là nó là thành viên của mỗi kênh mà bạn đang mong đợi phản hồi. Hãy tạo chức năng 'posttoall' và cập nhật các biến môi trường để có tên kênh dưới dạng các giá trị được phân tách bằng dấu phẩy.
Const Kênh = Process.env.slack_Channel.
chia (',');
Const Kênh = Kênh ;
hàm posttoall (tin nhắn) {
kênh.foreach (kênh = & gt; {
bot.postto (kênh, tin nhắn, botparams);
});
}
Thỉnh thoảng, bạn có thể muốn sử dụng các kênh để gỡ lỗi hoặc đáp ứng các sự kiện khác nhau với cùng một bot trong các kênh khác nhau. Tùy thuộc vào bạn để tập luyện quy ước đặt tên kênh của bạn. Chúng tôi sẽ giả định cho ví dụ sau đây rằng Slack_Channel = WDM-HƯỚNG DẪN, WDM-DEBUG-DEBUG.
Chức năng SplitMessages (thông báo, DebugMessage) {
kênh.foreach (kênh = & gt; {
const msg = channel.includes ('gỡ lỗi')
? DebugMessage: Tin nhắn;
bot.postto (Kênh, MSG, BotParams);
});
}
Chúng tôi đã được đáp ứng mã hóa cứng trực tiếp trong tin nhắn. Đi về phía trước, để làm cho mọi thứ dễ quản lý hơn, bạn có thể muốn lưu trữ các kích hoạt và phản hồi, trong cơ sở dữ liệu hoặc định dạng JSON và chuyển đổi giữa chúng tùy thuộc vào các điều kiện đáp ứng.
// Mục phản hồi ví dụ
Đồn là
Đầu vào: 'HR',
InputMatch: 'Bao gồm',
phản ứng: 'Nếu bạn cần liên hệ với nhân sự,
email của họ là [email protected] ',
Phản hồi: 'Iphemeral'
}
Có một số tính chất hữu ích khác có sẵn trong API chùng. Hy vọng, hướng dẫn này sẽ đưa ra một cái nhìn tổng quan về những gì có thể cho tất cả các nhu cầu bot của bạn. Tài nguyên khác có thể được tìm thấy bằng cách đọc Tài liệu của 'Slackbots' , hoặc đầy đủ Tài liệu API Slack. .
Bài viết này ban đầu được xuất bản trong số 289 của Tạp chí thiết kế web sáng tạo Nhà thiết kế web . MUA VẤN ĐỀ 289 TẠI ĐÂY hoặc là Đăng ký nhà thiết kế web ở đây .
Những bài viết liên quan:
[số 8] (Tín dụng hình ảnh: pexels.com) Thoạt nhìn, xử lý song song nghe có vẻ như một lời mời ..
[số 8] Bạn muốn biết cách tạo một cuộc tấn công kiến trúc 3D thực tế nhưng không chắc chắn n�..
Khi vẽ cảnh đại dương trong Photoshop CC. , như với hầu hết các dự án vẽ tranh của tôi, tôi bắt đầu bằng cách thu thập một số tài liệ..
[số 8] [số 8] Một cách tuyệt vời để thu hút sự chú ý - và giữ nó - là tạo ra một Bố trí trang web ..
[số 8] Nhà phân tích hiệu suất Web Henri Helvetica. sẽ chia sẻ các mẹo chu..
Sketchable. là một ứng dụng tranh cho Windows 10. Nó cho phép bạn vẽ những nét lớn trên những hình ảnh lớn không có độ trễ. Hình ảnh được t..
[số 8] Lão hóa một bức ảnh trong Photoshop là một kỹ thuật cổ điển có thể biến ngay cả một hình �..
[số 8] Thật dễ dàng để bị cuốn vào cố gắng phát triển một ý tưởng trong một công cụ vẽ tập ti..