Hubot을 도입한다면 알아야 할 실제로 사용하는 최소한의 구현 스크립트 3선

Hubot을 도입한다면 알아야 할 실제로 사용하고 있는 최소한의 구현 스크립트 3선



소개



ChatOps로 Hubot을 사용하는 개발 회사도 점점 늘어나고 있는 가운데, 실제로 어떤 Hubot 스크립트를 사용하고 있는지 소개합니다.

덧붙여서 Hubot 자체는 CoffeeScript이므로, 약간의 스크립트를 쓰는데 매우 편하고 좋네요.

조금이지만 내 소개를 · ·

Software Design 2016년 1월호에 기사 썼습니다!





이번 본지 26P~의 「시작하고 있습니다.ChatOps - Slack+Hubot으로 환경 구축 해설」이라고 하는 기사를 썼습니다!
내용으로서는 ChatOps를 사용해 개발 업무로부터 사내 교류 등 폭넓게 ChatOps로 개선한 이야기가 되고 있습니다, 부디 여러분 사 읽어 주시면!

실제로 사용하는 스크립트 소개



부르셨나요 스크립트





자주 Slack로 멘션만으로 상대를 불러일으키는 사태가 된 것은 상당히 체험으로서 많은 것이 아닐까 생각합니다
만약 Hubot에 대해 부르면, 그냥 반응 해주는 스크립트가 여기
module.exports = (robot) ->

  robot.respond /(.*)/i, (msg) ->
    inputString = msg.match[1]
    if inputString.length == 0
      msg.reply "呼びましたか?"

예, 단지 length가 0인지 여부로 판단하는 간단한 스크립트입니다.
Hubot은 respond와 hear라는 함수가 준비되어 있어 반응의 패턴이 바뀌게 되었습니다.

respond의 경우는 이번 예와 같이 설정한 정규 표현에 매치했을 경우에 발신자의 멘션 첨부로 메세지를 보내 주는 것에 대해, hear는 채팅상에서 설정한 정규 표현에 매치하는 문언이 채팅 위에 흐르면 문답 무용으로 반응합니다, 재료적으로 자주(잘) 사용되는 말에 넣으면 우케 잡히는 것 틀림없네요.

일기 예보 스크립트





오늘부터 내일까지 날씨를 가르쳐주는 스크립트입니다.
이용하고 있는 스크립트는 WeatherHacks 라고 하는 서비스로, 현재 전국 142곳의 오늘·내일·저녁의 일기 예보·예상 기온과 도도부현의 날씨 개황 정보를 제공해 줍니다.
request = require 'request'

module.exports = (robot) ->

  robot.respond /天気/i, (msg) ->
    request 'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010', (error, res, body) ->
      json = JSON.parse body
      todayWeather = json['forecasts'][0]
      msg.reply todayWeather['dateLabel'] + 'の天気は' + todayWeather['telop'] + 'です\n' + todayWeather['image']['url']

  robot.respond /今日の天気/i, (msg) ->
    request 'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010', (error, res, body) ->
      json = JSON.parse body
      todayWeather = json['forecasts'][0]
      msg.reply todayWeather['dateLabel'] + 'の天気は' + todayWeather['telop'] + 'です\n' + todayWeather['image']['url']

  robot.respond /明日の天気/i, (msg) ->
    request 'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010', (error, res, body) ->
      json = JSON.parse body
      todayWeather = json['forecasts'][1]
      msg.reply todayWeather['dateLabel'] + 'の天気は' + todayWeather['telop'] + 'です\n' + todayWeather['image']['url']

  robot.respond /明後日の天気/i, (msg) ->
    request 'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010', (error, res, body) ->
      json = JSON.parse body
      todayWeather = json['forecasts'][2]
      msg.reply todayWeather['dateLabel'] + 'の天気は' + todayWeather['telop'] + 'です\n' + todayWeather['image']['url']

공통화 · 이상계를 전혀 고려하지 않는 느슨한 솜털 코드이지만, 채팅으로 이용 목적이므로 좋다고합니다 w
npm의 모듈로 요청

실제로 이용하면 이런 느낌으로 내일의 날씨를 가르쳐줍니다



아침회 스크립트





아침부터 부드럽게 아침회의 시간을 가르쳐 주는 스크립트입니다.
CronJob = require('cron').CronJob
request = require 'request'

module.exports = (robot) ->

  new CronJob
    cronTime: "0 15 10 * * 1-5"
    onTick: ->
      robot.send {room: "office"}, "朝会ですよ!"
      return
    timeZone: "Asia/Tokyo"
    start: true

cron의 설명은 아시는 분이 많다고 생각합니다만 생각을 위해서 설명해 두면, 왼쪽으로부터 이러한 정의치를 설정합니다




시간


요일


0-59
0-59
0-23
1-31
0-11
0-6


결론



조금 뛰어난 느낌이 되어 버렸습니다만, 실제로 Hubot의 스크립트는 이것 정도 밖에 사용하지 않는다고 생각하기 때문에 용도로서는 충분한 것일까라고 생각합니다.
꼭 소프트웨어 디자인과이 기사를 보면서도 아직 사용되지 않은 분은 체험해 보는 것은 어떻습니까!

현장에서는 이상입니다.

좋은 웹페이지 즐겨찾기