概要
HipChatでは、Integrationsを使って色々なサービスと連携できます。
既にいろんなサービスと連携できますが、自分で独自にWebサーバーを立ててIntegrationを独自で作ることもできます。
ここではその仕組みと簡単な例を紹介します。
仕組み
HipChatでは特定のスラッシュコマンドをチャットした場合に、指定のWebサーバーに決まったフォーマットをPOSTするように設定することができます。
WebサーバーはそのPOSTされた値を受け取り、決まったjsonフォーマットのレスポンスを返してあげれば、HipChatがBOTぽい感じで投稿してくれます。
やり方
ルームのIntegration設定画面から、Build your own integrationより設定できます。
設定項目は以下の3つ
- Integrationの名前
- 対応させるスラッシュコマンド
- スラッシュコマンドを検知したらPOSTするURL
簡単ですね!
HipChatは指定したスラッシュコマンドを検知すると、指定したURLに以下をPOSTします。
{
"oauth_client_id": "example_id",
"item": {
"message": {
"from": {
"mention_name": "hoge_name",
"version": "00000000",
"id": 1,
"links": {
"self": "https://api.hipchat.com/v2/user/hoge"
},
"name": "hoge"
},
"date": "2016-03-02T14:51:19.525602+00:00",
"mentions": [],
"message": "/hogehoge test",
"type": "message",
"id": "1"
},
"room": {
"name": "hoge-room",
"links": {
"webhooks": "https://api.hipchat.com/v2/room/hoge/webhook",
"participants": "https://api.hipchat.com/v2/room/hoge/participant",
"self": "https://api.hipchat.com/v2/room/hoge"
},
"privacy": "public",
"is_archived": False,
"version": "00000000",
"id": 1
}
},
"event": "room_message",
"webhook_id": 1
}
スラッシュコマンド後の特定の文字列で何か操作をしたい場合はmessageの部分を取り出して解析する感じになります。
そこ以外は基本的に使わないはずなので、見なくても大丈夫だと思います。
このjsonを受け取ってサーバー側で以下の形式のjsonのresponse返してあげると、
HipChatにmessageの文言をチャットしてくれます。
{
"color": "green",
"message": "It's going to be sunny tomorrow! (yey)",
"notify": false,
"message_format": "text"
}
message_formatはtextとhtmlが使えるみたいです。
textの場合改行とかがうまくできない(?)ぽいので、ちょっと返り値を凝りたい場合はhtml推奨。
まとめ
デフォルトで用意されているIntegrationが充実しているので、あまり使うことはないと思いますが、割りと簡単に実装できるのでちょっとした作業の簡略化に便利です。
Build your own integration!
サンプルコード
PHPフレームワークLumenで実装したサンプル
https://github.com/wrbss/hipchat-totsuzen