本日は弊社のもくもく会で進めていた内容を自分なりに覚え書きしながら、共有していこうと思います。
背景
オズビジョンではコミュニケーションツールのメインはチャットになっています。Slack派とHipChat派がありますが、全社のスタンダードは今のところHipChatです。
普通のやりとりをするほか、定期イベントの通知や積み残しの課題数なども流していますが、ここに課題あり。
定刻通知用のある程度汎用的なスクリプトはあるのですが:
- HipChatのAPI v1を利用している
- EC2内のBashスクリプト+Cronの仕組みのため、追加削除が大変
という欠点がありました。
なので今日は、API v2を使いつつ、Google Apps Scriptを利用し、Google Spreadsheetに書くだけで、誰でも定刻通知を仕込めるように、というのをもくもく会の時間でやろうと思います。
作業記録
まずv2用のtokenを取得
http://qiita.com/takky/items/51f8b2942437c9897ee1
メッセージを送りたいので、Send Notification を選びます。
Expireがついた。
v2APIの使い方を調べる
- https://developer.atlassian.com/hipchat/getting-started?_ga=1.229999900.142403523.1446020867
- https://developer.atlassian.com/hipchat/guide/hipchat-rest-api/api-rate-limits
- https://developer.atlassian.com/hipchat/guide/sending-messages
-
https://developer.atlassian.com/hipchat/guide/hipchat-rest-api?_ga=1.226247834.142403523.1446020867
- Example: sending a notification message
はまりメモ
- とりあえずまずPOSTしないといけない
- tokenはbearerに入れないとダメぽい
- とりあえず Advanced Rest Clientを使ってここまででメッセージが投げられた
どうでもいいメモ
- v2だと個人にtokenが紐づくので差出人が自分になる…w
GASからPOST
POSTしたい。あと、ヘッダも独自につけないといけない
意外とあっさりできたコード (tokenは伏せる)
- 日本語送信できるかまだ確認していない
code.gs
/**
* HipChatに送信する
* API v2
*/
function noticeHipChat(roomid, color, message, notify)
{
// token
token = 'dummydummy';
// url
var url = 'https://api.hipchat.com/v2/room/' + roomid + '/notification';
// POSTデータ
var payload = {
"color" : color,
"message" : message,
"notify" : notify,
"message_format" : "text",
}
// 認証ヘッダ設定
var headers = {
"Authorization" : "Bearer " + token,
}
// option
var options = {
"method" : "POST",
"payload" : payload,
"headers" : headers,
}
// POST通信
UrlFetchApp.fetch(url, options);
}