Tech Sketch Bucket of Technical Chips by TIS Inc.

Node.jsのアプリでHipChatに通知する

Pocket

この記事はeXcale Developer's Blogから移転されたものです。

hipchat_maileXcale 開発チームの松尾です。

今回は、Node.js のアプリケーションで HipChat にメッセージを通知する方法をご紹介します。

今回ご紹介する内容は以下の通りです。

  • HipChatについて
  • Node.jsでHipChatと連携するには?
  • Node.jsのアプリでHipChatに通知してみる

HipChatについて

HipChat とは、開発者向けのホスティング型プライベートチャットサービスです。
このチャットサービスでは、GitHub や Pivotal Tracker 等の各種開発者向けサービスと連携して、更新があれば HipChat にメッセージを通知するといったことが簡単にできます。また、API が公開されており、アプリケーションからメッセージの通知を簡単に行うことも可能です。

現在 eXcale では、チームの作業履歴を管理するのにNode.jsのアプリケーションを利用しています。このアプリケーションでは、作業履歴が更新された際に、HipChat に通知する機能が実装されています。


Node.jsでHipChatと連携するには?

HipChat では API を利用するためのライブラリが複数言語に対して用意されており、Node.js 用のライブラリも用意されています。
※詳細については、こちらをご覧ください。

このライブラリを用いることで簡単にメッセージの通知等を行うことができます。また、インストールは npm で簡単に行えます。ライブラリの名前は 'node-hipchat' です。

インストールが完了すれば、Node.js で HipChat を利用する準備は完了です。

ライブラリを用いて HipChat にメッセージの通知を行う場合は、以下のように postMessage メソッドに引数としてパラメータを渡すだけで、簡単にメッセージを通知することができます。


Node.jsのアプリでHipChatに通知してみる

それでは、実際に Node.js のアプリから HipChat へ通知してみましょう。
今回は、eXcale にアプリをデプロイし、アクセスがあった際にアクセス元の IP を HipChat に通知する、といったことを行います。

まずは、以下の画像のように、デプロイ先となる eXcale のアプリを任意の名前で作成してください。言語は 'Node.js' 、バージョンは 'v0.10.9' 、タイプは 'free' にします。

eXcale でのアプリの作成方法について詳しく知りたい方はこちらの記事を参考にしてください。eXcale のサインアップからアプリの作成までを行います。アプリの作成は無料です。

次に、Node.js のアプリを作成して行きます。
express-generator を用いて、Node.js の雛形アプリを作成します。

雛形アプリが作成できたら、ディレクトリ配下の package.json を以下のように編集します。ここで、node-hipchat のバージョン 0.4.5 以上を使用するように設定しています。

ディレクトリ配下の routes/index.js を編集します。HipChat の API KEY と Room ID はご自身の環境に合わせて設定してください。
HipChat の API KEY の取得方法については、こちらの記事の「ZabbixのアラートをHipChatに通知するの項に書いてありますので、そちらを参照してください

このファイルで、トップページにアクセスがあった際に HipChat への通知されるように設定を行っています。
eXcale では、アクセス元の IP はリクエストヘッダの 'x-forwarded-for' で参照できますので、それを message: に設定し、HipChat に通知するようにしています。

このアプリを eXcale にデプロイしようと思いますが、eXcale に Node.js のアプリをデプロイする際には以下のようにする必要があります。

  • アプリのディレクトリ直下に「index.js」という名前でエンドポイントを置くこと
  • アプリのポートは8080を指定すること

今回作成した雛形アプリには、./bin 配下に www という名前でアプリ起動用のファイルが作成されていますので、これを index.js という名前でアプリのディレクトリ直下に置き、以下のように編集します。

編集ができたら、アプリのディレクトリ直下で以下のコマンドを実行し、eXcale のアプリに git push します。push 先 URL の <eXcaleのアプリ名> は、eXcale で作成したアプリ名に置き換えてください。

1分程待ってから、ブラウザで http://<eXcaleのアプリ名>.excale.net にアクセスします。
以下の画面が出ればアプリにアクセスできています。

アクセス後、HipChat のルームを確認します。
以下の画像のように、HipChatにメッセージが通知されていれば成功です。

Node.js のアプリによる HipChat への通知の例は以上になります。

今回作成したアプリは、以下のコマンドで GitHub のリポジトリからクローンすることもできます。クローンした後、routes/index.js で HipChat の API KEY と Room ID を設定すれば、eXcale にすぐにデプロイすることが可能です。


最後に

今回は、Node.js のアプリケーションで HipChat にメッセージを通知する方法をご紹介しました。
HipChat への通知を利用して、必要なタイミングでメッセージを通知するようにし、すぐに気付けるようにすると良いでしょう。

エンジニア採用中!私たちと一緒に働いてみませんか?