Ruboty 用 の ChatWork Adapter に任意のルームで発言できる機能を追加しました

Ruboty 用 の ChatWork Adapter

こちらになります。

任意のルームでの発言をしたい

現在の上記 Adapter の機能では、「発言を監視するルーム」と「発言を行うルーム」が同一となっています*1。そこで、新たに、「任意のルームで発言をする」機能を追加しました。

プルリクエストは提出済みです。プルリクエストをしたコミット(フォークした私のリポジトリ)はこちらになります。

具体的な方法

4つの方法があります。上位に設定してある方法が優先されます(有効な方法が認められればそれ以下は無視される)。

1. 発言の最後に room_id:12345678 と付与する

Ruboty に対しての発言内容の最後に、room_id:12345678 という形で発言するルーム番号を指定する方法です*2

2. ボットの reply メソッドの引数として room_id: 12345678 と付与する

実際にボットの挙動を書くときの reply メソッドに与える引数に、room_id: 12345678 と付与します。具体的には以下のようになります。

def this_is_bot_reply_method(message)
  foo = 'Hello'
  bar = 'World'
  hogehoge = "#{foo}, #{bar}!"

  message.reply("#{hogehoge}", room_id: 12345678)
end

3. 環境変数 CHATWORK_ROOM_FOR_SAYING に指定されたルーム番号

これはそのままです。「1.」と「2.」が満たされない場合にこの環境変数が指定されていれば、そのルームで発言がなされます。

4. 環境変数 CHATWORK_ROOM のルーム番号

CHATWORK_ROOM という環境変数は発言を監視するルーム番号のことです。すなわち、これまでの動作と同一です。

補足

ChatWork は基本的にポーリングでしか bot の動作ができない*3のがつらいです。ただ、Ruboty および ChatWork Adapter のおかげで ChatOps の可能性が広がりました。感謝です。

*1:環境変数で設定する

*2:コロンの後にすぐに続けて番号を書くことに注意して下さい

*3:Webhook も一応ある

Powered by はてなブログ