LINEで送る
Pocket

最近社内でhubot × slackを使って、社内のコミュニケーションを取りやすくするために盛り上げてます。
そもそもhubotとは何なのか、から雑談対話APIを導入するまでブログしていきたいと思います。


■HUBOTとは

GitHub社が開発したチャットbot開発・実行フレームワークで、
開発フローに組み込むことで開発を楽にすることができます。
本来の使い方はそんな感じなんですが、せっかくなのでbotくんとコミュニケーション取りたいなと思い、
docomo雑談対話APIを使ってみました。
まずはhubotの環境構築から説明します。


■インストールする前に

slack側でhubotの設定をしましょう

1. slack hubotのapiを作成

https://slack.com/apps/search?q=hubot

アクセスしたら以下のように画面が出るのでトークンキーなど確認しましょう

h01

h02

トークンキーはあとで使うのでメモしときましょう。saveしたらhubotの構築です。


■hubotのインストール

1. まさかの二行でインストール

結局何をインストールしているのか

・hubotの本体
・命令を書くためのcoffee-script
・bot作成の作業を簡略化してくれるyeoman
・yeomanが利用するbot作成ジェネレータ generator-hubot

2. yoコマンドでbot作成だyo

ちゃんと適宜変更してくださいね。今回はadapterはslackです。

3. 起動スクリプトの作成

4. hubotの起動

5. slackチャンネルにhubotを追加する

好きなチャンネルにhubotユーザを追加して上げてください!
テストとしてpingと打ってみてください。
できたら雑談対話apiを導入しましょう!!


■docomo雑談対話APIの登録~設定まで

1.API取得

https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=dialogue&p_name=api_usage_scenario

登録は無料なので、適当に新規でAPIを発行しましょう。
ポチポチとな。

2. APIをslack.shに追加する

どこでもいいので追加します

3. hubot-docomo-dialogue

4.scriptsディレクトリにてcoffeeスクリプトを設置

# Description:
# DOCOMOの雑談APIを利用した雑談
#
# Author:
# FromAtom
getTimeDiffAsMinutes = (old_msec) ->
now = new Date()
old = new Date(old_msec)
diff_msec = now.getTime() old.getTime()
diff_minutes = parseInt( diff_msec / (60*1000), 10 )
return diff_minutes
module.exports = (robot) ->
robot.respond /(\S+)/i, (msg) ->
DOCOMO_API_KEY = process.env.DOCOMO_API_KEY
message = msg.match[1]
return unless DOCOMO_API_KEY && message
## ContextIDを読み込む
KEY_DOCOMO_CONTEXT = 'docomo-talk-context'
context = robot.brain.get KEY_DOCOMO_CONTEXT || ''
## 前回会話してからの経過時間調べる
KEY_DOCOMO_CONTEXT_TTL = 'docomo-talk-context-ttl'
TTL_MINUTES = 20
old_msec = robot.brain.get KEY_DOCOMO_CONTEXT_TTL
diff_minutes = getTimeDiffAsMinutes old_msec
## 前回会話してから一定時間経っていたらコンテキストを破棄
if diff_minutes > TTL_MINUTES
context = ''
url = 'https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=' + DOCOMO_API_KEY
user_name = msg.message.user.name
request = require('request');
request.post
url: url
json:
utt: message
nickname: user_name if user_name
context: context if context
, (err, response, body) ->
## ContextIDの保存
robot.brain.set KEY_DOCOMO_CONTEXT, body.context
## 会話発生時間の保存
now_msec = new Date().getTime()
robot.brain.set KEY_DOCOMO_CONTEXT_TTL, now_msec
msg.send body.utt

view raw
docomoapi.coffee
hosted with ❤ by GitHub

5.hubotの再起動

6.コミュニケーションを取ってみる

チャンネルの場合はちゃんと@付けてお話してくださいね。

h04


■まとめ

これはワロス。
他にもデプロイあと何分で終わるよーとか
ランチ勝手に決めてもらったりなどなど。
なんか作ったらブログします−3−

参考:http://bitwave.showcase-tv.com/slack%E3%81%A8%E9%80%A3%E6%90%BA%E3%81%99%E3%82%8Bhubot%E3%82%923%E5%88%86%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/

LINEで送る
Pocket

カテゴリー: BlogCentOShubot

adachin

1989年生まれのLancers SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、AnsibleやTerraformでのインフラコード化を推進。副業では数社サーバー保守、未経験によるエンジニアのメンターなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、グループ会社のインフラをECS/Fargateへ移行、CakePHP4での管理画面作成、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください