Slack を XMPP プロトコルで Hubot と連携する

·1 分で読めます

個人でもリモコンとして活用している Hubot ですが、いつもの Heroku ではなく、Raspberry PI の中で起動しようとして、アダプター設定で苦労したので、メモします。

要件

  • ポートフォワーディングを設定していない (したくない)。
  • 複数の bot が、同じ Room に常駐し、bot 同士で支持の出し合いを行う必要がある。

不採用

hubot-gtalk

今まで hubot-irkitGoogle Talk を Mac OS X の Messages.app に登録して使っていました。

ただ、Google Talk のチャットに複数の bot を常駐させるには、その分アカウント作成が必要になり、スケーラビリティが低いため、不採用にしました。

hubot-slack

仕事でも愛用している Slack がオフィシャルで提供している hubot-slack アダプタの場合、Webhook を使いメッセージの送受信をしているため、ポートフォワーディングが必要なので、不採用でした。

採用

Slack + hubot-xmpp

Slack は、XMPP で会話をするゲートウェイを用意しており、それと hubot-xmpp アダプタを連携して、Hubot を動かすことにしました。

設定方法

前提として、Owner 権限が必要です。

Admin Settings の Gateways セクションを展開し、上記の様に、XMPP を有効にします。

次に、個人の Gateway 情報画面 を開き、Host, User, Pass 情報を取得し、Raspberry PI 側で、以下の様に環境変数を書き出します。

HUBOT_XMPP_HOST: Gateway 情報画面 にある、Host の先頭に、conference. を付与したもの。

HUBOT_XMPP_ROOMS: #{ルーム名}@$HUBOT_XMPP_HOST の形式で、カンマ区切りの文字列。

HUBOT_XMPP_USERNAME: ユーザー名。#{User}@$HUBOT_XMPP_HOST の形式。

HUBOT_XMPP_PASSWORD: Gateway 情報画面 にある、Pass

Hubot の起動

あとは、通常と同じく、hubot-xmpp を採用した bot を起動するだけです。

もし、新規から始める場合は Hubot プロジェクトを作成し、

起動します。

しばらくすると ping に応答する様になります。

god の設定

死活管理と自動起動に god を使います。

/etc/god/hubot.god

/etc/init.d/god

引用元: https://gist.github.com/cwsaylor/17522