Slack — это все более популярный инструмент для предприятий и команд, которым необходимо мгновенно общаться. Хотя это может — в некоторых случаях — считаться ежедневным нарушением, оно также имеет большой потенциал автоматизации, предлагая десятки интеграций для хранения всего в одном месте, и оно постепенно вытесняет электронные письма.
Существует много способов интеграции ваших систем со Slack; платформа даже предоставляет фирменного бота, который позволяет вам доставлять напоминания или сообщения по всей вашей цифровой рабочей области.
Slack предлагает различные объекты, которые можно считать «ботами»:
- webhooks, которые позволяют публиковать сообщения из других приложений в Slack, но являются односторонней формой общения,
- приложения, для улучшений интеграции (с другими приложениями),
- пользователей ботов, подробнее о них в ближайшее время.
В этом уроке мы рассмотрим, в частности, «пользователей ботов», как их программировать (ознакомьтесь с наше руководство по лучшим редакторам кода, чтобы сделать вашу жизнь проще) и сделать их соответствовать вашим потребностям. Это предполагает, что у вас есть доступ к пространству Slack, где вы можете добавить интеграцию приложений. Если вы еще не являетесь частью этого, они могут свободно создавать.
Далее мы создадим приложение NodeJS для отправки сообщений и ответов на конкретные сообщения в канале Slack. Мы используем модуль 'slackbots', который является оболочкой для Slack Real-Time Messaging API.
Содержание статьи
- 1 01. Настройка кода
- 2 02. Slack setup
- 3 03. Переменные среды
- 4 04. Параметры бота
- 5 05. Запись на канал
- 6 06. Custom botParams
- 7 07. События канала
- 8 08. Отвечать на входящие сообщения
- 9 09. Только для пользователей-людей
- 10 10. Персонализированный ответ
- 11 11. Обновление ответов
- 12 12. Измените сообщение
- 13 13. Эфемерные сообщения
- 14 14. Поиск пользователя
- 15 15. Отправка прямых сообщений
- 16 16. Ответ с изображением
- 17 17. Функция загрузки файла
- 18 18. Публикация на нескольких каналах
- 19 19. Разделение каналов
- 20 20. Словарь ответов
- 21 21. Другие ресурсы
01. Настройка кода
В этом руководстве предполагается, что у вас установлен узел. Если нет, сделайте это сейчас. Затем загрузите необходимые ресурсы. Мы предоставили вам отправную точку и основу для учебного пособия.
Везде мы используем такие модули, как 'slackbots' и 'node-slack-upload'. Их можно получить, выполнив команду install.
npm install
02. Slack setup
Мы используем интеграцию «Пользователь бота» для Slack. Для этого нам нужно получить токен, перейдя в «https: //
Выберите имя пользователя для вашего бот (мы можем переопределить это программно на более позднем этапе) и подтвердить.
Пригласите бота на нужный канал.
Создав пользователя бота, вы получите токен в следующем формате :
xoxb-000000-000000-x0x0xxXxX0XXxx0x
Скопируйте токен для следующего шага.
03. Переменные среды
Мы используем переменные среды (файл .env), чтобы избежать жесткого кодирования и раскрытия секретных токенов и ключей, таких как сгенерированный токен Slack, и имени канала в вашем приватном Свободное рабочее пространство.
Заполните файл .env токеном и названием канала, на который вы пригласили пользователя бота.
SLACK_TOKEN = xoxb- SLACK_CHANNEL =
04. Параметры бота
Этот следующий шаг переносит нас в 2 файла: «index.js», который мы кратко рассмотрим, и «bin / lib / bot.js», где большая часть нашей разработки занимает место. В индексном файле мы создаем экземпляр нашего бота, присваивая ему имя, которое называется «WDMBot».
В «bot.js» мы контролируем параметры каждого экземпляра с помощью имени, токена и т. Д.
// index.js const bot = require ('./ bin / lib / bot'). Init ('WDMBot'); //bot.js const botParams = {icon_emoji: ': robot_face:', as_user: false}; пусть бот; function initBot (botName) {bot = new slackbot ({token: process.env.SLACK_TOKEN, name: botName}); }
05. Запись на канал
Посмотрите на функцию sendMessage. Мы используем метод postTo. Это будет обрабатывать сообщения на любой тип канала, публичный или частный. Если вы хотите публиковать сообщения только в частных каналах, вы можете использовать вместо них «postToGroup» (или «postToChannel» для общедоступных). Чтобы отправить наше первое сообщение, мы можем добавить код в 'initBot'.
function initBot (botName) {bot = / * см. Выше * / sendMessage ('I'm here!'); } // Теперь запустите 'npm start'
06. Custom botParams
Вы должны были заметить сообщение от WDMBot, появившееся на вашем канале. Стоит отметить, что в 'botParams' для as_user установлено значение false, что позволяет нам переопределять имя и изображение. Если установлено значение true, оно будет использовать имя и изображение, которые вы задали при получении токена.
Вы можете изменить смайлик бота на изображение, например:
const botParams = { icon_url: 'https://pbs.twimg.com/ profile_images / 976112552081010688 / WLlQvj8D_400x400.jpg', as_user: false};
07. События канала
Публикация сообщений полезна, но чтобы сделать бота более интерактивным, мы должны иметь возможность идентифицировать посты других пользователей на канале. Давайте послушаем событие сообщения, а затем посмотрим, что произойдет, когда мы введем канал. Мы должны видеть, что в журнале регистрируются разные типы сообщений, например user_typing или message.
function initBot (botName) {bot = / * см. Выше * / bot.on ('message', data => {console.log (data);}); }
08. Отвечать на входящие сообщения
Далее мы хотим ответить на входящие сообщения типа «сообщение» и, возможно, на определенную фразу или ключевое слово, чтобы не отвечать абсолютно на все. Мы обязательно сравниваем строчные строки, если хотим найти точную фразу. Мы также могли бы увидеть, если сообщение «включает ()» определенное слово.
bot.on ('message', data => {if (data.type === 'message') { if (data.text.toLowerCase () === 'где ты?') {sendMessage ('I'm here!');}}});
09. Только для пользователей-людей
Сообщения, отправляемые пользователями ботов, имеют различные свойства, такие как подтип «bot_message» и bot_id. Возможно, вы захотите ограничить ответ только сообщениями, отправленными человеком, чтобы избежать бесконечных циклов ответов ботов, отвечающих самим себе или друг другу, если в их ответ входит одно из ключевых слов, которые вы слушаете.
бот. on ('message', data => {if (data.type === 'message' && data. subtype! == 'bot_message') {if (data.text.toLowerCase (). includes ('hello')) {sendMessage ('Здравствуйте, я бот!');}}});
10. Персонализированный ответ
Чтобы дать более персонализированный ответ, вы можете использовать идентификатор пользователя сообщения, на которое вы отвечаете. Slack автоматически преобразует идентификатор в имя пользователя, когда заключено в теги «<@>». Определение того, на кого вы отвечаете, может быть полезно, особенно если несколько участников канала одновременно взаимодействуют с вашим ботом.
bot.on ('message', data => {if (data.type ==) = 'message' && data. subtype! == 'bot_message') {if (data.text.toLowerCase (). includes ('hello')) {sendMessage ('Hello <@${data.user} > Я бот!'); }}});
11. Обновление ответов
Боты также могут редактировать свои ответы. Только свои. Так что, если вы надеялись найти бота для опечатки, который автоматически исправит ваши сообщения, когда обнаружит ошибку, это невозможно при текущей настройке.
Чтобы обновить сообщение, мы определим новую функцию и глобальный логический тип, который мы будем использовать в нашей демонстрации.
let changeReply = false; function updateMessage (messageParams) {bot.updateMessage (messageParams.channel, messageParams.ts, messageParams.text, botParams); }