ラベル Hipchat の投稿を表示しています。 すべての投稿を表示
ラベル Hipchat の投稿を表示しています。 すべての投稿を表示

2015年4月2日木曜日

[Ruby][Hipchat]Hipchat用のBotをLitaで作る(2)

前回に引き続き、LitaでBotを作る。
今回は簡単な応答をするようにしてみよう。

後でgemで公開するつもりなら、
$ lita handler lita-ハンドラ名称
とすれば、雛形を作ってくれるようだ。

今回は単純に、「@Bot名 hello」と書きこみがあったら、「〜さん、こんにちは。」と応答するだけのHandlerを作る。
ソースは以下の通り。
module Lita
  module Handlers
    class HelloHandler < Handler
      route(/^hello/, :hello, command: true)

      def hello(response)
        response.reply("#{response.user.name}さん、こんにちは。")
      end
    end
  end

  Lita.register_handler(Handlers::HelloHandler)
end
routeで応答するメッセージの正規表現と呼び出すメソッド(:hello)を指定し、
呼び出されるメソッドhelloでは response.user.nameでメッセージを書いたユーザ名を参照し、response#replyで、応答メッセージを返している。
routeメソッドで command: trueを渡しているのは、@Bot名で、Botを宛先にしたメッセージだけに応答するためである。
commandの詳細については、こちらを参照。

デバッグ中は lita_config.rb を以下のように設定すると、コマンドラインで動作確認できる。
config.robot.adapter = :shell
config.adapters.shell.private_chat = true 
ただし、この場合は、routeメソッドでcommand: false にし、 テスト時には、@Bot名を付けずに、helloだけにしないと応答しない。
      route(/^hello/, :hello, command: false)
コマンドラインでの実行例
$ lita
Type "exit" or "quit" to end the session.
Lita Bot > hello
Shell Userさん、こんにちは。
Lita Bot > 

2015年3月29日日曜日

[Ruby][Hipchat]Hipchat用のBotをLitaで作る

仕事場でHipchatを使い始めた。
Botを作って、いろいろと便利な機能を提供したい。
関連する情報を検索すると、Hubot + Hipchat用のアダプタという例が多数あった。
しかし、Debian Wheezy で試してみると、Hipchatのアダプタ(hubot-hipchat)のインストールに失敗してしまう。
最終的には、node.js のバージョン落として、v0.10.38でインストールできたのだけど。

気に入らなかったので、RubyでHipchatと連携できるものが無いのか調べたら、
Lita - A robot companion for your company's chat room
というのがあった。
こちらの解説記事がまとまっており、このページに書かれている手順で、動かすことができた。
以下、Botでinfo表示、whois、Googleのイメージ検索ができるようにする設定を、まとめておく

環境

環境は以下の通り。
  • Debian Wheezy
  • rbenvでruby-2.2.0をインストール済み
  • apt-getでredis-server をインストール済み

準備

Hipchatで利用するBotアカウントを作成しておく。
アカウント作成にはメールアドレスが必要。
gmailのアカウントがあれば、メールアドレスに+を使って、複数アカウトを作る方法がお手軽だ。 (ここらへんを参考に。)

Litaのインストール

Litaはgemでインストールできる。
$ gem install lita

Botの作成

Bot用のプロジェクトを作る。
$ lita new bot
botディレクトリに、新しいLitaのプロジェクトが作成される。

Gemfileを編集する。
HipChatアダプタを使う。
gem "lita-hipchat"
の行をコメントアウトする。
$ bundle install
で反映させる。

lita_config.rbを編集する。
# 名前を合わせておかないと起動時にエラーになるので注意。
config.robot.name = "Lita Bot"
# Hipchatを利用する。
config.robot.adapter = :hipchat
# ポート番号はデフォルトは1234になっていたが、6379にしないと起動しなかった。
config.redis.host = "127.0.0.1"
config.redis.port = 6379
# Hipchatの管理画面からXMPP/Jabber Account Informationに表示されるJabber IDを設定する。
config.adapters.hipchat.jid = "省略@chat.hipchat.com"
# Hipchatのアカウントのパスワード
config.adapters.hipchat.password = "省略"
# trueにしておくと、デバッグログが表示される。接続できない場合に便利。
config.adapters.hipchat.debug = true
# 利用するChat roomの名前か :all
config.adapters.hipchat.rooms = :all

Litaの起動

$ lita
設定が間違っているとエラーログが表示されるので確認する。
問題がなければ、BotはChat roomに参加する。

Hipchatで動作確認

@lita info
LitaとRedisの情報が表示される。

whoisとGoogleのイメージ検索の利用

Gemfileに次の設定を追加する。
gem "lita-google-images"
gem "lita-whois"
lisaを再起動する。
whoisは
@lita whois ホスト名
イメージ検索は
@lita image cat
で利用できる。


機能の拡張

Botが応答するwhoisやimageの処理は、Handlerとして実装できるようなので、まずは、単純に、ユーザの入力に応答をするものを作ってみよう。

参考