GAS+YOLPでSlackBotを作ったので紹介してみます。
せっかくなので時事ネタをぶっこみました。
qiitaというが技術ブログみたいなの書くの初めてなのでお手柔らかに。
#GAS?YOLP?Slack?
GASはgoogle Apps Scriptの略です。詳細はググれ。
googleが提供するJavaScriptで無料でサーバのお世話もなく動作し、
定刻起動などが出来、web公開してwebhookから叩けたりするのでとても楽しいものです。
YOLPはYahoo! Open Local Platformの略で、Yahoo! JAPANが提供している地図・地域情報のAPI・SDKです。
これのうち今回は気象情報APIを利用します。
気象情報という名前のくせに降水量の現在値と予報値しか返してこない。
名前負けしてません?
Slackに関しては説明いらないよね?
こんな感じで代々木会館(原作で晴らしたとこのモデル)の雨が止むと教えてくれます。
これで何時でも晴れるよ!って言うタイミングが計れますね!
#スクリプト
スクリプトは以下のような感じです。参考urlとかから頂いたコードが9割です。
function imahare(){
var ima = 0;
var gofungo = 0;
var message="ねぇ、今から晴れるよ:sunny:";
//経度、緯度@代々木会館
var keido = "139.7016769";
var ido = "35.6832461";
//yolpのAPPID
var appId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
//YOLPをコールする。位置情報と降水情報の粒度を指定
var url = "https://map.yahooapis.jp/weather/V1/place?coordinates=" + keido + "," + ido + "&output=json&appid=" + appId + "&interval=5";
var response = UrlFetchApp.fetch(url);
var js = JSON.parse(response.getContentText());
//YOLPの結果から今の降水量と5分後の降水量を取得
ima = js.Feature[0].Property.WeatherList.Weather[0].Rainfall;
gofungo = js.Feature[0].Property.WeatherList.Weather[1].Rainfall;
//現在降水量があって5分後予報が0だったら晴れるよっていう
if(ima > 0){
if(gofungo == 0){
//SlackのincomingWebhookのurl
var postUrl = 'https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXX/xxxxxxxxxxxxxxxxxxxxxxxxx';
var jsonData =
{
"username" : "陽菜",
"icon_url" : "https://xxxxxx",//適当な画像url
"text" : message
};
var payload = JSON.stringify(jsonData);
var options =
{
"method" : "post",
"contentType" : "application/json",
"link_names": 1,
"payload" : payload
};
UrlFetchApp.fetch(postUrl, options);
}
}
}
#参考URL
SlackとGoogleAppsScript(GAS)を連携する手順・事例
初心者がGASでSlack Botをつくってみた
Yahooが提供する気象情報API(YOLP) を使ってbotにお天気(降水情報)を教えてもらう~pythonでslack bot開発④~
Google Apps Script試行錯誤Blog
#あとがき
動作イメージ後半で陽菜に呼び掛けてなんやかんや陽菜が答えてくれてるやつは、
元々こっちを先にやってて今晴れが副産物な感じです。
GAS+YOLP(気象情報)+DarkSky+YAHOO日本語形態素解析API+Googlegiocoding API+google reverse geocodingで動いてますが、気が向いたら紹介します。