Slack adalah alat yang semakin populer untuk bisnis dan tim yang perlu berkomunikasi secara instan. Meskipun mungkin - dalam beberapa kasus - dianggap sebagai gangguan harian, ia juga memiliki potensi otomatisasi yang hebat, menawarkan puluhan integrasi untuk menjaga semuanya di satu tempat, dan perlahan-lahan menggantikan email.
Ada banyak cara untuk mengintegrasikan sistem Anda dengan kendur; Platform bahkan menyediakan BOT bermerek yang memungkinkan Anda memberikan pengingat, atau pesan di ruang kerja digital Anda. Dan bahkan lebih banyak peningkatan kolaborasi, cobalah ini penyimpanan awan pilihan.
Slack menawarkan berbagai entitas yang dapat dianggap 'bot':
Dalam tutorial ini kita akan melihat terutama pada 'pengguna bot', cara memprogramnya (lihat panduan kami ke Editor Kode Terbaik Untuk membuat hidup Anda lebih mudah) dan membuatnya sesuai dengan kebutuhan Anda. Ini mengandaikan Anda memiliki akses ke ruang kendur di mana Anda dapat menambahkan integrasi aplikasi. Jika Anda belum menjadi bagian dari satu, mereka bebas untuk membuat.
Dalam hal berikut, kami membangun aplikasi nodejs ke pasca-ke dan menanggapi pesan-pesan tertentu di saluran kendur. Kami menggunakan modul 'slackbots', yang merupakan pembungkus untuk API Pesan Real-Time Slack.
Juga tertarik membuat situs web? Pilih brilian Pembangun Situs Web dan top hosting web. layanan untuk pergi dengan itu.
Tutorial ini mengasumsikan Anda menginstal node. Jika tidak, lakukanlah sekarang. Kemudian Unduh aset kamu akan membutuhkan. Kami telah memberi Anda titik awal dan kerangka kerja untuk tutorial.
Sepanjang, kami menggunakan modul seperti 'slackbots' dan 'node-slack-upload'. Mereka dapat diperoleh dengan menjalankan perintah install.
npm install
Kami menggunakan integrasi "Pengguna Bot" untuk Slack. Untuk melakukannya, kita perlu mendapatkan token dengan pergi ke 'https: // & lt; youslackworkspace & gt; .slack.com / apps / a0f7ys25r-bot' dan klik "Tambahkan Konfigurasi".
Pilih nama pengguna untuk bot Anda (kami dapat mengesampingkan ini secara terprogram pada tahap selanjutnya), dan konfirmasi.
Undanglah bot ke saluran yang diinginkan.
Dengan membuat pengguna bot, Anda akan mendapatkan token dalam format berikut:
xoxb-000000-000000-x0x0xxxxx0xxxx0x
Salin token untuk langkah selanjutnya.
Kami menggunakan variabel lingkungan (file '.env') untuk menghindari hard-coding dan mengungkapkan token dan kunci rahasia, seperti token kendur yang telah kami hasilkan, dan nama saluran di ruang kerja slack pribadi Anda.
Silakan dan isi file '.env' dengan token Anda, dan nama saluran tempat Anda mengundang pengguna bot.
slack_token = xoxb- & lt; yourstoken & gt;
Slack_channel = & lt; saluran-nama & gt;
Langkah selanjutnya membawa kami ke 2 file: 'index.js', yang kami akan lihat singkat, dan 'bin / lib / bot.js', di mana sebagian besar pengembangan kami berlangsung. Dalam file indeks, kami instantiate bot kami dengan memberikan nama, yaitu 'WDMBOT'.
Dalam 'bot.js' kami mengontrol parameter setiap contoh dengan nama, token, dll.
// index.js
const bot = membutuhkan ('./ bin / lib / bot'). init
('Wdmbot');
//bot.js.
const botparams = {
icon_emoji: ': robot_face:',
As_user: Salah
};
biarkan bot;
Fungsi initbot (botname) {
bot = baru slackbot ({{
token: proses.env.slack_token,
Nama: Botname.
});
}
Lihatlah fungsi 'sendmessage'. Kami menggunakan metode 'Postto'. Ini akan menangani posting ke semua jenis saluran, publik atau pribadi. Jika Anda hanya ingin memposting ke saluran pribadi, Anda dapat menggunakan 'posttogroup' sebagai gantinya (atau 'posttochannel' untuk umum). Untuk mengirim pesan pertama kami, kami dapat menambahkan kode di 'initbot'.
Fungsi initbot (botname) {
Bot = / * Lihat di atas * /
sendMessage ('Saya di sini!');
}
// sekarang jalankan 'NPM Start'
Anda seharusnya memperhatikan pesan dari WDMBOT muncul di saluran Anda. Perlu dicatat bahwa dalam 'Botparams', 'as_user' diatur ke FALSE, yang memungkinkan kami menimpa nama dan gambar. Jika diatur ke true, itu akan menggunakan nama dan gambar yang Anda tetapkan saat mendapatkan token.
Anda dapat mengubah bot emoji ke gambar seperti:
Botparam Const = {
ICON_URL: 'https://pbs.twimb.com/
ProfilE_Images / 9761125520810688 /
Wllqvvj8d_400x400.jpg ',
As_user: Salah
};
Posting Pesan berguna, tetapi untuk membuat bot lebih interaktif, kita harus dapat mengidentifikasi posting dari pengguna lain di saluran. Mari kita dengarkan acara pesan, dan kemudian lihat apa yang terjadi ketika kita mengetik ke saluran. Kita harus melihat berbagai jenis pesan yang dicatat, seperti 'user_typing' atau 'pesan'.
Fungsi initbot (botname) {
Bot = / * Lihat di atas * /
bot.on ('pesan', data = & gt; {
konsol.log (data);
});
}
Selanjutnya, kami ingin membalas pesan-pesan yang masuk dari jenis 'pesan', dan mungkin untuk frasa atau kata kunci tertentu, untuk menghindari jawaban yang benar-benar. Kami memastikan untuk membandingkan string huruf kecil jika kami ingin mencocokkan frasa yang tepat. Kita juga bisa melihat apakah pesan 'mencakup ()' kata tertentu.
bot.on ('pesan', data = & gt; {
Jika (data.type === 'pesan') {
if (data.text.tolowercase () === 'di mana
Apakah kamu?') {
sendMessage ('Saya di sini!');
}
}
});
Pesan yang dikirim oleh pengguna BOT memiliki berbagai properti seperti subtipe 'bot_message' dan bot_id. Anda mungkin ingin membatasi balasan untuk hanya pesan yang diposting manusia untuk menghindari loop bot yang tak terbatas yang membalas diri mereka sendiri atau satu sama lain, jika respons mereka mencakup salah satu kata kunci yang Anda dengarkan.
bot.on ('pesan', data = & gt; {
Jika (data.type === 'pesan' & amp; & amp; data.
subtipe! == 'bot_message') {
if (data.text.tolowercase ().
termasuk ('halo')) {
sendMessage ('Halo, aku bot!');
}
}
});
Untuk memberikan respons yang lebih personal, Anda dapat memanfaatkan ID pengguna dari pesan yang Anda balas. Slack akan secara otomatis mengonversi ID ke nama pengguna saat tertutup di tag '& lt; @ & gt;'. Mengidentifikasi siapa yang Anda balas dapat bermanfaat, terutama jika beberapa anggota saluran berinteraksi dengan bot Anda secara bersamaan.
bot.on ('pesan', data = & gt; {
Jika (data.type === 'pesan' & amp; & amp; data.
subtipe! == 'bot_message') {
if (data.text.tolowercase ().
termasuk ('halo')) {
SendMessage ('Hello & Lt; @ $ {data.User}
& gt; Saya bot! ');
}
}
});
Bot juga dapat mengedit respons mereka. Hanya saja mereka sendiri. Jadi, jika Anda berharap untuk bot ketik-tiko yang akan memperbaiki pesan Anda secara otomatis ketika itu membintal kesalahan, itu tidak mungkin dengan pengaturan saat ini.
Untuk memperbarui pesan, kami mendefinisikan fungsi baru, dan boolean global yang akan kami gunakan dalam demo kami.
Biarkan ChangeReply = FALSE;
Fungsi UpdateMessage (MessageParams) {
bot.updatemessage (messageparams.channel,
messageparams.ts, messageparams.text,
Botparams);
}
Mari kita coba perbarui teks bot mengirim kita. Dalam hal ini, pada acara pesan, kami perlu membalas pesan bot yang masuk, jadi kami akan mencocokkan kondisi itu untuk pembaruan, dan kami juga menggunakan cap waktu pesan asli untuk diperbarui. Itu sangat kendur dapat mengidentifikasi pesan mana yang akan diperbarui, jika orang lain diposting di antaranya.
Jika (data.type === 'pesan' & amp; & amp; data.subtype! ==
'Bot_message' & amp; & amp; data.text) {
if (data.text.includes ('update')) {
sendMessage ('Saya akan memperbarui dalam 5
detik);
ChangeReply = Benar;
}
}
Jika (data.type === 'Pesan' & amp; & amp; data.subtype ===
'Bot_Message' & amp; & amp; ChangeReply) {
changeReply = false;
SetteOut (() = & gt; {
UpdateMessage ({Channel: Data.channel,
TS: data.ts, teks: 'Saya telah memperbarui'});
}, 5000);
}
Pesan-pesan fana, karena namanya mungkin menyarankan, sementara. Mereka juga hanya terlihat oleh satu pengguna dan dapat dihapus oleh mereka. Jenis-jenis pesan tersebut mungkin berguna sebagai tip atau pengingat yang tidak perlu tetap secara permanen.
Jika (data.text.tolowercase (). Termasuk ('SDM')) {
EphemeralMessage ({
saluran: data.channel,
Pengguna: Data.User,
Teks: 'Jika Anda perlu menghubungi HR,
Email mereka adalah [email protected] '
});
}
// fungsi yang kami panggil
Fungsi EphemeralMessage (MessageParams) {
bot.postephemeral (messageparams.channel,
messageparams.user, messageparams.text,
Botparams);
}
Metode yang berbeda akan mengambil parameter pengguna yang sedikit berbeda (ID atau nama, yang berbeda dari display_name dan real_name). Namun, hanya ID pengguna yang tersedia di acara pesan. Karena itu kami dapat mengimplementasikan pencarian nama pengguna dengan mendapatkan semua pengguna dan mencocokkan ID.
fungsi async getusername (userid) {
kembali menunggu bot.getusers ()
. Kemudian (data = & gt; {
Biarkan anggota = data.members.find
(pengguna = & gt; {
Kembalikan user.id === userid;
});
anggota kembali.name;
})
.catch (err = & gt; console.log (err));
}
Dengan pencarian pengguna baru, kami sekarang dapat mengirim pesan langsung ke pengguna, ketika pesan fana tidak akan melakukannya. Perhatikan bahwa pesan langsung dianggap sebagai saluran baru / berbeda, dengan ID yang berbeda dari pada saluran asli. Anda juga dapat menerapkan pencarian saluran dengan cara yang sama seperti yang kami lakukan sebelumnya.
// di acara pesan
if (data.text.tolowercase (). Termasuk ('bot')) {
Senddm ({
Pengguna: Data.User,
Teks: 'Bagaimana saya bisa membantu?'
});
}
// fungsi yang kami panggil
Fungsi Async Senddm (MessageParams) {
Biarkan pengguna = menunggu getusername
(messageparams.user);
Kembalikan bot.postmessagetouser (pengguna, pesan
Params.text, botparams, (err, data) = & gt; {
konsol.log (err)
});
}
Pengguna BOT juga memiliki izin untuk mengunggah file dan gambar ke saluran. Fungsi ini tidak ditanggung oleh 'slackbots', jadi kami harus instantiate pengunggah baru, seperti yang ditunjukkan di bawah ini. Juga menyiapkan folder 'Aset' di root proyek Anda, dengan beberapa gambar di dalamnya.
Mari menyiapkan panggilan ke 'sendimage ()', didefinisikan pada langkah berikutnya.
// di initbot ()
Uploader = baru slackupload (proses.env.
Slack_token);
// di acara pesan
if (data.text.includes ('gambar')) {
Jika (! Data.Upload) {
/ * Dalam hal ini, tidak ada pesan
subtipe,
jadi kami memeriksa bahwa itu tidak dipicu oleh a
Pesan unggahan sebelumnya * /
biarkan gambar = data.text.split ('') ;
sendimage ('ini gambar Anda
ingin ', gambar);
}
}
Kami mengunggah gambar menggunakan modul pengunggah dan sistem file (FS). Asalkan pesan pengguna dalam format "image & lt; imagename.extension & gt;", dan file seperti itu ada di folder 'Aset', gambar akan dibaca dan diunggah. Jika tidak, kami mengirim kembali pesan biasa (bahkan bisa menjadi ephemeral).
Fungsi Sendimage (Pesan, Gambar) {
uploader.uploadfile ({{
File: fs.cteigheadstream (path.join
(__dirname, '../../assets/$mage}'),
Mimetype: 'Image / *',
Filetype: '*',
Judul: Gambar,
Inisial: Pesan,
Saluran: Channel.
}, (err, data) = & gt; {
if (err) {
sendMessage ('Maaf saya tidak dapat menemukan
$ {image} ');
}
});
}
Anda dapat memposting ke beberapa saluran dengan pengguna bot yang sama, selama ini adalah anggota dari setiap saluran di mana Anda mengharapkan respons. Mari kita buat fungsi 'posttoad' dan perbarui variabel lingkungan untuk memiliki nama saluran sebagai nilai yang dipisahkan koma.
Const Channels = Process.env.slack_channel.
membagi(',');
const channel = saluran ;
Fungsi posttoall (pesan) {
saluran. Tukar (saluran = & gt; {
bot.postto (saluran, pesan, botparams);
});
}
Kadang-kadang, Anda mungkin ingin menggunakan saluran untuk debugging, atau menanggapi peristiwa secara berbeda dengan bot yang sama di berbagai saluran. Terserah Anda untuk berolahraga konvensi penamaan saluran Anda. Kami akan berasumsi untuk contoh berikut bahwa slack_channel = wdm-tutorial, wdm-tutorial-debug.
Fungsi SplitMessages (Pesan, DebugMessage) {
saluran. Tukar (saluran = & gt; {
const msg = channel.includes ('debug')
? debugmessage: pesan;
bot.postto (saluran, msg, botparams);
});
}
Kami telah melakukan tanggapan keras secara langsung dalam pesan. Ke depan, untuk membuat segalanya lebih mudah dikelola, Anda mungkin ingin menyimpan pemicu dan tanggapan, baik dalam format basis data atau JSON, dan beralih di antara mereka tergantung pada kondisinya.
// contoh item respons
{
Input: 'SDM',
InputMatch: 'termasuk',
Tanggapan: 'Jika Anda perlu menghubungi HR,
Email mereka adalah [email protected] ',
ResponseType: 'Ephemeral'
}
Ada beberapa sifat berguna lainnya yang tersedia dalam API Slack. Mudah-mudahan, tutorial ini akan diberikan gambaran tentang apa yang mungkin untuk semua kebutuhan bot Anda. Sumber daya lebih lanjut dapat ditemukan dengan membaca Dokumentasi 'Slackbots' , atau penuh Dokumentasi API Slack. .
Artikel ini awalnya diterbitkan dalam Edisi 289 dari Majalah Desain Web Kreatif Desainer web . Beli masalah 289 di sini atau berlangganan desainer web di sini .
Artikel terkait:
(Kredit Gambar: Phil Nolan) Realitas Capture adalah cara yang bagus untuk membuat pemindaian 3D Anda sendiri. Yang An..
(Kredit Gambar: Desainer Web) Memiliki area yang memungkinkan pengguna untuk masuk dan mengunduh atau melihat dokumen..
Dalam tutorial ini kami akan membawa Anda melalui proses membuat aplikasi Anda dapat diakses dan ramah pengguna untuk orang-orang..
Apa alat jembatan? Jika Anda baru mengenal CGI, ada terlalu banyak alat untuk dipilih dalam berbagai perangkat luna..
Untuk kampanye pemasaran email untuk bekerja, email harus mencapai kotak masuk dan menonjol dari yang lainnya. Namun, ceritanya tidak berakhir di sana. Email Anda harus render jika Anda ingin..
Potret kucing jadi kami Lukisan hewan peliharaan dan menggambar binatang bisa sangat menyenangk..
Saya menggunakan semprotan stiker di Artrage. - Alat seni yang luar biasa, terutama jika Anda membuat kepala sikat..