Slack - это все более популярный инструмент для бизнеса и команд, которым нужно мгновенно общаться. Хотя он может - в некоторых случаях - в некоторых случаях считается ежедневным нарушением, он также имеет большой потенциал автоматизации, предлагая десятки интеграций, чтобы все оставить в одном месте, и он медленно заменяет электронные письма.
Есть много способов интеграции ваших систем с провисанием; Платформа даже предоставляет фирменный бот, который позволяет доставить напоминания или сообщения по вашему цифровому рабочему пространству. И для еще более укреплений совместной работы, попробуйте эти облачное хранилище опции.
Slack предлагает различные объекты, которые можно считать «ботами»:
В этом руководстве мы будем смотреть, особенно на «пользователях Bot», как их программировать (проверьте наше руководство по Лучшие редакторы кода Чтобы сделать вашу жизнь проще) и заставить их соответствовать вашим потребностям. Это предполагает, что у вас есть доступ к пробаку, где вы можете добавить интеграции приложений. Если вы еще не частью одного, они могут создавать.
В дальнейшем мы создаем приложение Nodejs к последующему до и отвечать на определенные сообщения в расслоенном канале. Мы используем модуль «SLATEBOTS», который является оберткой для API обмена сообщениями SLASP.
Также заинтересованы в создании сайта? Выберите блестящий Строитель сайта и топ веб хостинг Сервис, чтобы пойти с этим.
Это руководство предполагает, что у вас установлен узел. Если нет, сделайте это сейчас. потом Скачать активы тебе понадобиться. Мы предоставили вам отправной точкой и рамки для учебника.
На протяжении всеми мы используем такие модули, как «расслабленные» и «узел-рассечка». Их можно получить, запустив команду установки.
npm install
Мы используем интеграцию «Пользователь Bot» для Slack. Для этого нам нужно получить токен, собираясь на «https: // & lt; youslackworkspace & gt; .slack.com / Apps / a0f7ys25r-bots 'и нажмите« Добавить конфигурацию ».
Выберите имя пользователя для своего бота (мы можем переопределить это программно на более позднем этапе) и подтвердить.
Пригласите бот на нужный канал.
Создавая пользователя Bot, вы получите токен в следующем формате:
xoxb-000000-000000-x0x0xxxxx0xxxx0x
Скопируйте токен для следующего шага.
Мы используем переменные среды (файл «.env»), чтобы избежать жесткого кодирования и выявления секретных токенов и ключей, таких как токен Slack, который мы сгенерировали, и название канала в вашем личном рабочем пространстве.
Продолжайте и заполните файл «.env» с вашим токеном, а имя канала, к которому вы пригласили пользователя BOT.
slack_token = xoxb- & lt; yourtoken & gt;
Slack_Channel = & lt; name-name & gt;
Этот следующий шаг отвечает нам до 2 файлов: «index.js», который у нас будет краткий поиск, а «Bin / lib / Bot.js», где происходит большая часть нашего развития. В индексном файле мы создали наш бот, давая ему имя, которое является «WDMBOT».
В «Bot.js» мы контролируем параметры каждого экземпляра с именем, токеном и т. Д.
// index.js
const bot = требует ('./ bin / lib / bot'). init
(«WDMBOT»);
//bot.js.
const botparams = {
icon_emoji: ': Robot_Face:',
AS_USER: false.
};
пусть бот;
Функция INITBOT (BOTNAME) {
BOT = New Slackbot ({{
Токен: process.env.slack_token,
Имя: botname.
});
}
Посмотрите на функцию «SendMessage». Мы используем метод «Postto». Это будет обрабатывать публикацию любым типом канала, публичного или частного. Если вы хотите опубликовать только на частные каналы, вы можете использовать вместо этого «посттогруппу» (или «постточена» для публичного). Чтобы отправить наше первое сообщение, мы можем добавить код в «INITBOT».
Функция INITBOT (BOTNAME) {
бот = / * см. Выше * /
SendMessage («Я здесь!»);
}
// Теперь запустите начать «NPM»
Вы должны были заметить сообщение от WDMBot появляться в вашем канале. Стоит отметить, что в «BotParams», «AS_USER» устанавливается на false, что позволяет переопределить имя и изображение. Если установлено значение true, он будет использовать имя и изображение, которое вы устанавливаете при получении токена.
Вы можете изменить emoji bot на изображение, как так:
const botparams = {
icon_url: 'https://pbs.twimg.com/
profile_images / 976112552081010688 /
Wllqvj8d_400x400.jpg ',
AS_USER: false.
};
Размещение сообщений полезно, но чтобы сделать бот более интерактивным, нам нужно иметь возможность идентифицировать должности от других пользователей в канале. Давайте послушаем событие сообщения, а затем посмотрите, что происходит, когда мы введем в канал. Мы должны видеть разные типы сообщений, которые зарегистрированы, например, «user_typing» или «сообщение».
Функция INITBOT (BOTNAME) {
бот = / * см. Выше * /
Bot.on («Сообщение», данные = & GT; {
console.log (данные);
});
}
Далее мы хотим ответить на входящие сообщения типа «сообщения», и, возможно, для конкретной фразы или ключевого слова, чтобы не ответить на абсолютно все. Мы обязательно сравниваем строчные строки, если мы хотим сопоставить точную фразу. Мы также могли посмотреть, включает в себя сообщение «включать ()» определенное слово.
BOT.ON («Сообщение», Data = & GT; {
если (data.type === 'сообщение') {
если (data.text.tolowercase () === 'Где
ты?') {
SendMessage («Я здесь!»);
}
}
});
Сообщения, отправленные пользователями BOT, имеют различные свойства, такие как подтип «BOT_MESSAGE» и BOT_ID. Возможно, вы захотите ограничить ответ только на сообщения о человеке, чтобы избежать бесконечных петель ботов, отвечающих на себя или друг другу, если их ответ включает в себя одно из ключевых слов, которые вы прослушиваете.
BOT.ON («Сообщение», Data = & GT; {
if (data.type === 'сообщение' & amp; & amp; данные.
подтип! == 'bot_message') {
if (data.text.tolowercase ().
включает в себя («Hello»)) {
SendMessage («Привет, я бот!»);
}
}
});
Чтобы дать более персонализированный ответ, вы можете использовать идентификатор пользователя сообщения, на который вы отвечаете. SLIC будет автоматически преобразовывать идентификатор имени пользователя при заключении в теги '& lt; @ & gt;'. Определение того, кто вы отвечаете, могут быть полезны, особенно если несколько членов канала взаимодействуют с вашим ботом одновременно.
BOT.ON («Сообщение», Data = & GT; {
if (data.type === 'сообщение' & amp; & amp; данные.
подтип! == 'bot_message') {
if (data.text.tolowercase ().
включает в себя («Hello»)) {
sendmessage (hello & lt; @ $ {data.user}
и GT; Я бот! ');
}
}
});
Боты также могут редактировать свои ответы. Только их собственные, хотя. Таким образом, если бы вы надеялись на бот опечатки, который автоматически исправит ваши сообщения, когда оно ощущает ошибку, это невозможно с текущей настройкой.
Чтобы обновить сообщение, мы определяем новую функцию, и глобальный булевой, который мы будем использовать в нашей демонстрации.
Пусть coneeereplyly = false;
Функция UpdateMessage (MessageParams) {
Bot.UpdateMessage (MessageParams.Channel,
MessageParams.ts, messageparams.text,
ботпарамс);
}
Давайте попробуем обновить текст, бот отправляет нас. В этом случае на событии сообщения нам нужно ответить на входящий бот сообщения, поэтому мы будем сопоставить это условие для обновления, и мы также используем Timestamp исходного сообщения, которое будет обновлено. Это так слабино может определить, какое сообщение обновлена, на случай, если другие размещены между ними.
Если (data.type === 'сообщение' & amp; & amp; data.subtype! ==
'bot_message' & amp; & amp; data.text) {
Если (data.text.includes («обновление»)) {
SendMessage («Я обновись в 5
секунды);
ConterePlyly = True;
}
}
если (data.type === 'сообщение' & amp; & amp; data.subtype ===
'bot_message' & amp; & amp; ConterePlyLoy) {
changelyply = false;
setimeate (() = & gt; {
UpdateMessage ({канал: data.channel,
TS: Data.ts, текст: «Я обновил»});
}, 5000);
}
Эфемерные сообщения - это, как может предложить имя, временно. Они также видны только одному пользователю и могут быть удалены их. Эти типы сообщений могут быть полезны как наконечник или напоминание, что не нужно постоянно оставаться навсегда.
Если (data.text.tolowercase (). Включает в себя ('hr')) {
эфемерная плата ({
Канал: Data.Chaneel,
Пользователь: data.user,
Текст: «Если вам нужно связаться с HR,
Их электронная почта - [email protected]
});
}
// Функция мы звоним
Функция эфемерарамага (MessageParams) {
бот.postephemeral (MessageParams.Channel,
MessageParams.User, MessageParams.text,
ботпарамс);
}
Разные методы будут принимать немного разные пользовательский параметр (ID или имя или имя, которое отличается от отображения display_name и real_name). Однако только идентификатор пользователя доступен на событиях сообщения. Поэтому мы можем реализовать поиск имени пользователя, получив все пользователи и соответствую идентификатору.
Async Function GetUnername (UserID) {
Возврат ждут bot.geteSers ()
.then (данные = & gt; {
Пусть Member = data.members.find
(user = & gt; {
return user.id === userId;
});
возвратный член.name;
})
.catch (err = & gt; console.log (err));
}
С новым поиском пользователей мы теперь можем отправлять прямые сообщения пользователю, когда эфемеральные сообщения просто не будут делать. Обратите внимание, что прямые сообщения считаются новым / другим каналом, с другим идентификатором, чем исходный канал. Вы также можете реализовать поиск канала так же, как пользователь, который мы сделали ранее.
// В событии сообщения
если (data.text.tolowercass (). Включает в себя («бот»)) {
senddm ({{{
Пользователь: data.user,
Текст: «Как я могу помочь?»
});
}
// Функция мы звоним
Async Function SendDM (MessageParams) {
Позвольте пользователя = ждать getUsername
(MessageParams.User);
return bot.postmessagetouser (пользователь, сообщение
Paramstext, botparams, (err, data) = & gt; {
Console.log (Err)
});
}
У пользователей BOT также есть разрешения для загрузки файлов и изображений на канал. Эта функциональность не покрывается «расслабленными», хотя, поэтому мы должны создавать создание нового загрузки, как показано ниже. Также приготовьте папку «Активы» в корне вашего проекта, с некоторыми изображениями в нем.
Давайте подготовим звонок для «SENDIMAGE ()», определенного на следующем шаге.
// в INITBOT ()
Uploader = New Slackupload (Process.env.
Slack_token);
// в сообщении события
Если (data.text.includes ('image')) {
Если (! data.upload) {
/ * В этом случае нет сообщения
подтип,
Итак, мы проверяем, что он не запускается
Предыдущее Загрузить сообщение * /
Пусть image = data.text.split ('') ;
sepermage ('Это изображение, которое вы
хотел ', image);
}
}
Мы загружаем изображения с помощью модуля загрузки и файловой системы (FS). При условии, что сообщение пользователя находится в формате «Image & lt; imageName.extension & gt;», и такой файл существует в папке «Активы», изображение будет прочитано и загружено. Если нет, мы отправляем обратно регулярное сообщение (это даже может быть эфемерным).
Функция searsimage (сообщение, изображение) {
Uploader.uploadFile ({
Файл: FS.CreateSeadStream (Path.join
(__dirname, '../../assets/$ quilyImage}')),
Миметип: «Изображение / *»,
тип файла: '*',
Название: изображение,
Источничество: сообщение,
Каналы: канал
}, (ERR, DATA) = & GT; {
Если (err) {
SendMessage (извините, я не могу найти
$ {image} ');
}
});
}
Вы можете опубликовать на несколько каналов с тем же пользователем BOT, если он является членом каждого канала, где вы ожидаете ответ. Давайте создадим функцию «PostToAll» и обновить переменные среды, чтобы иметь имена каналов в виде значений, разделенных запятыми.
Const Channels = Process.env.slack_channel.
расколоть(',');
Const Channel = каналы ;
Функция posttoall (сообщение) {
каналы .foreach (канал = & gt; {
bot.postto (канал, сообщение, ботпарамс);
});
}
Изредка вы можете использовать каналы для отладки или реагировать на события по-разному с тем же ботом в разных каналах. Это зависит от вас, чтобы тренировать вашу конвенцию об именах канала. Предположим, что мы предположим, что Slack_Channel = WDM-Tutorial, WDM-Tutorial-Debug.
Функция Slockmessages (сообщение, отладка) {
каналы .foreach (канал = & gt; {
const msg = channel.includes ('debug')
? Debugmessage: сообщение;
Bot.Postto (канал, MSG, BotParams);
});
}
Мы были на жестком кодировании ответов непосредственно в сообщении. Сдвиньте вперед, чтобы сделать все более управляемыми, вы можете хранить триггеры и ответы, либо в базе данных, либо формате JSON, и переключаться между ними в зависимости от условий, выполненных.
// Пример ответ ответа
{
Вход: 'hr',
inputmatch: 'включают',
Ответ: «Если вам нужно связаться с HR,
Их электронная почта - [email protected],
Открытыйype: «эфемерный»
}
Есть несколько других полезных свойств, доступных в Slack API. Надеюсь, этот учебник дал обзор того, что возможно для всех ваших потребностей в боте. Дальнейшие ресурсы можно найти, чтение Документация «Slackbots» или полный Dell API Документация Отказ
Эта статья была первоначально опубликована в номере 289 журнала Treative Web Design Веб-дизайнер Отказ Купить проблему 289 здесь или же Подписаться на веб-дизайнер здесь Отказ
Статьи по Теме:
Спецификация CSS постоянно развивается. Процесс реализации новых функц..
Инструменты цифровой живописи серьезно продвинулись в последние неск..
Этот портал эффект в докторе странно был очень особенным. Было в значи�..
Создание и композиционные 3D взрывы - это обычно задача для двух разных ..
Перемещение между программами можно запутать. Я склонен придерживать�..
Цвет и текстура предлагают идеальный способ дать вибрацию к цветочной..
Для меня апелляция цифровых Техника рисования просты В отличи..
Создание механизма меха может быть легко, но если вы хотите сделать де�..