Первоначально опубликовано на: https://pradipta.github.io/posts/hubot/

«Hubot — ваш дружелюбный робот-помощник».

Hubot с открытым исходным кодом (теперь в архиве), он был написан на Coffee Script на NodeJS компанией Github Inc. Он может автоматизировать многие вещи и развлечь офис, а также повысить эффективность некоторых задач.

Hubot поставляется с несколькими встроенными скриптами и сам по себе довольно забавен в использовании. Его можно использовать в командной строке или интегрировать в другие службы, например Slack. Вы даже можете написать свой собственный скрипт или модуль NPM и импортировать его в свой проект Hubot. Скрипт можно написать на CoffeeScript или JS.

Начать

Чтобы начать работу с Hubot, у вас должны быть установлены NodeJS и NPM.

Чтобы сгенерировать свой Hubot, запустите npm install -g yo generator-hubot

Теперь придумайте имя для вашего Hubot и создайте каталог. Я назвал своего `Альфред`

$ mkdir alfred
$ cd alfred

Теперь вы можете сгенерировать свой Hubot, запустив yo hubot

Теперь вы можете запустить hubot, запустив ./bin/hubot

Чтобы получить список всех поддерживаемых Альфредом команд, запустите alfred help. Поскольку он уже поставляется с некоторыми установленными скриптами и модулями, вы можете поиграть с ним.

Хотя это весело, они не имеют реальной помощи. Мы можем написать свои собственные сценарии, которые могут делать то, что мы хотим. Мы можем автоматизировать вещи, заставить их общаться со сторонними API, развертывать службы, устанавливать напоминания и многое другое! Вы также можете сохранить данные в собственной службе Redis (называемой Hubot Brain) или подключить ее к внешней службе базы данных.

Существуют и другие сценарии Hubot с открытым исходным кодом. Найдите их в реестре NPM для hubot-scripts <your-search-term>. Как только вы найдете его, вы можете установить его и разместить на external-scripts.json.

Создание пользовательских сценариев

Чтобы написать свой сценарий:

  • Вы должны поместить CoffeeScript или JS в каталог scripts
  • Вы должны экспортировать функцию из скрипта

Давайте создадим собственный сценарий, который даст вам представление о том, как его написать. Перейдите в каталог сценариев и создайте файл .coffee или .js. Я назвал свой alfred.coffee

cd scripts

Первое, что вам нужно сделать, это добавить этот раздел в скрипт:

# Description:
#   Alfred Hubot
#
# Dependencies:
#   None
#
# Configuration:
#   None
#
# Commands:
#   hubot hello
#
# Author:
#   pradipta.sarma

Здесь Hubot может проиндексировать вашу команду в своем списке всех команд, который появляется при нажатии alfred help.

Чтобы экспортировать функцию из скрипта:

module.exports = (robot) ->
    #Your code here

Чтобы отвечать на сообщения, мы пишем код respond как:

models.respond /hello/i, (res) ->
    res.reply("Hey, what's up?")

Этот код заставит бота слушать свое имя, за которым следует шаблон регулярного выражения /hello/i, и должен ответить “Hey, what’s up?”.

res — это объект, который содержит сведения о сообщении, имя отправителя, канал (если в slack) и т. д. Вы можете осмотреться и найти там полезную информацию. Чтобы настроить сообщение, вы можете изменить код на:

module.exports = (robot) ->
    robot.respond /hello/i, (res) ->
        res.reply("Hey "+res.envelope.user.name+", what's up?")

При попытке alfred hello сейчас ответ будет Hey Shell, what's up?. Так как он работает на Shell. Это имя будет заменено именем пользователя, если бот работал в Slack.

Это все, что вам нужно знать, чтобы добавить больше функций вашему боту. Вы можете добавить дополнительный код .respond с подходящим регулярным выражением, чтобы он срабатывал, а код, следующий за ним, выполнялся. Вы можете совершать HTTP-вызовы, запускать рабочий процесс, отправлять электронные письма, инициировать развертывание или делать с его помощью все, что вы хотите автоматизировать.

Интеграция со Slack

Slack поставляется с возможностью интеграции Hubot из коробки. Перейдите на страницу ‹your-workspace›.slack.com/apps и найдите Hubot. Введите имя бота и другие данные, которые запрашивает Slack, и после этого Slack предоставит вам токен. Нам нужен этот токен, когда мы хотим запустить бота в Slack.

Чтобы запустить бота в Slack, убедитесь, что ваш компьютер подключен к Интернету (если работает локально) или вы работаете на облачном сервере. Команда Run:

HUBOT_SLACK_TOKEN=YOUR_SLACK_TOKEN ./bin/hubot --adapter slack

Теперь он должен работать в Slack. Добавьте бота на канал и отправьте alfred ping. Он должен ответить PONG

В моей предыдущей организации, Razorpay, был дружелюбный бот Winky, который помогал разработчикам зарезервировать среду разработки и промежуточной среды, чтобы ни у кого не возникало конфликтов, никто другой не развертывал, пока кто-то тестирует функцию, а вместо этого получал подробную информацию о том, кто использует экземпляр, поэтому что он / она может связаться и, возможно, объединить изменения и развернуть вместе.

Я хотел создать что-то подобное для своей нынешней организации, и именно тогда я начал с Альфреда и научился создавать Hubot, интегрировать его со Slack и запускать на сервере. Я позаимствовал эту идею у Винки, и здесь Альфред делает почти то же самое. Спасибо Немо от Razorpay.

Загляните в этот репозиторий для кода бота, созданного для нашего рабочего пространства.

Удачи. Создайте несколько ботов. Удачного кодирования.

Найдите все мои блоги на OmniaCode.